Azure Blobストレージにて、「論理的な削除」と「ライフサイクル管理」を併用すると問題が発生するケースがありましたので共有します。
再現条件
なるべく細かくかきましたが、基本的には太字部分が影響していると思われます。
Blobストレージ側の設定
- Storage V2
- 東日本リージョン
- 読み取りアクセス地理冗長
- [データ保護]で[Blobの論理的な削除を有効にする]を7日に設定
- [ライフサイクル管理]で3日後にクール層、14日後にアーカイブ層に移動する
SDK側
- Azure.Storage.Blobs 12.7.0
- 主に数十GB以上の大きなファイルを取り扱った場合
再現手順
- ファイルをBlobにアップロードする
- 14日以上経過し、ライフサイクル管理機能でアーカイブ層に移行される
- ファイルをBlobから削除する
- 直後、同じパスにファイルを再アップロードしようとすると下記の様なエラーが発生し、失敗する
Azure.RequestFailedException: One of the request inputs is not valid.
Status: 400 (One of the request inputs is not valid.)
ErrorCode: InvalidInput
なお、数バイト~数キロバイトのダミーファイルで一旦上書きすると、事象が解消します。
エラー原因
Blobの論理的な削除を無効にすると再現しなくなることから、なんらか干渉しているのは間違いないと思います。
マイクロソフトのサポートにも調査を依頼していますが、半年以上経過しても解消には至っていません。
何か進展があったら記事を更新しようと思います。