ブロブのソフト削除は、削除されたデータを一定期間システム内に保持することで、個々のブロブ、スナップショット、またはバージョンを誤って削除したり上書きしたりすることから保護します。 保持期間中は、論理的に削除されたオブジェクトを削除された時点の状態に復元することができます。 保持期間が終了すると、そのオブジェクトは永久に削除されます。
推奨されるデータ保護の構成
BLOB の論理的な削除は、BLOB データの包括的なアカウント内データ保護戦略の一部です。 Blob データを最適に保護するために、Microsoft は次のデータ保護機能を有効にすることをお勧めします。
Blobソフト削除は、削除したBlobやスナップショット、またはバージョンを復元するためのものです。 BLOB の論理的な削除も有効にする方法については、BLOB の論理的な削除の有効化と管理に関する記事をご覧ください。
コンテナソフトデリットは、削除したコンテナを復元するためのものです。 コンテナーの論理的な削除を有効にする方法については、「コンテナーの論理的な削除を有効にして管理する」をご覧ください。
アカウントの誤削除やランサムウェアなど、より広範なデータ損失シナリオから保護するには、アカウント内機能に加えてAzure Backupを有効にすることを検討してください。 データ保護に関する Microsoft の推奨事項の詳細については、「データ保護の概要」を参照してください。
ヒント
Blobとコンテナのソフト削除をスケールで有効化するには、内蔵のAzure Policy「ストレージアカウント上のBlobとコンテナのソフト削除を構成」を使いましょう。
BLOB の論理的な削除のしくみ
ストレージアカウントでブロブソフト削除を有効にする際は、削除されたオブジェクトの保持期間を1日から365日の範囲で指定してください。 保持期間は、データが削除または上書きされた後で、そのデータを使用できる期間を示します。 オブジェクトが削除または上書きされると、保持期間の有効期限が設定されます。
保持期間が有効な間は、削除されたブロブとそのスナップショットやバージョンを復元するには、削除解除( Undelete Blob )操作を呼び出すことができます。 次の図は、BLOB の論理的な削除が有効になっている場合に、削除されたオブジェクトを復元する方法を示したものです。
設定された保持期間をいつでも更新できます。
ブロブのソフト削除を無効にすれば、ソフト削除の保持期間が経過するまで、ストレージ アカウント内のソフト削除されたオブジェクトに引き続きアクセスして復元できます。
Azure Storage REST APIのバージョン2017-07-29以降は、blobソフト削除をサポートしています。
重要
Blob の論理的な削除を使用して復元できるのは、個々の Blob またはディレクトリ (階層型名前空間の場合) と、それらに関連付けられたすべてのスナップショットおよびバージョン (フラット型名前空間の場合のみ) に限られます。 コンテナとその内容を復元するには、ストレージアカウントのコンテナソフト削除を有効にする必要があります。
Blobソフト削除はコンテナやアカウントレベルでは保護されません。 ワークロードに基づく保護に関する推奨事項については、Data Protection Overviewを参照してください。
論理的な削除が有効になっているときに削除が処理される方法
ブロブソフト削除を有効にすると、ブロブを削除するとそのブロブはソフト削除済みとしてマークされます。 削除プロセス自体はスナップショットを作成しません。 保持期間が終了すると、システムはソフト削除されたブロブを永久に削除します。 階層的な名前空間を持つアカウントでは、ブロブが復元されてもアクセス制御リストはそのまま残ります。
ブロブにスナップショットがある場合、スナップショットも削除しない限りブロブを削除することはできません。 BLOB とそのスナップショットを削除すると、BLOB とスナップショットの両方が論理的に削除済みとしてマークされます。 削除プロセスは新しいスナップショットを作成しません。
ベース BLOB を削除せずに、アクティブなスナップショットを 1 つ以上削除することもできます。 この場合、スナップショットは論理的に削除されます。
階層的な名前空間機能が有効なアカウントのディレクトリを削除すると、そのディレクトリとそのすべての内容はソフト削除としてマークされます。 ソフト削除されたディレクトリのみにアクセスできます。 ソフト削除されたディレクトリの内容にアクセスするには、ソフト削除されたディレクトリの削除を取り消す必要があります。
ソフト削除されたオブジェクトは、明示的に表示またはリスト化しない限り見えません。 論理的に削除されたオブジェクトを一覧表示する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
論理的な削除が有効になっているときに上書きが処理される方法
重要
このセクションは、階層型名前空間を持つアカウントには適用されません。
Put Blob、Put Block List、Copy Blob などの操作を呼び出すと、BLOB 内のデータが上書きされます。 ブロブのソフト削除を有効にすると、ブロブを上書きすると書き込み操作の前のブロブの状態のソフト削除されたスナップショットが自動的に作成されます。 保持期間が終了すると、システムはソフト削除されたスナップショットを永久に削除します。 システムがスナップショットを作成する操作は、Azure MonitorのリソースログやStorage Analyticsのログには現れません。
ソフト削除されたスナップショットは、ソフト削除されたオブジェクトを明示的に表示またはリストしない限り見えません。 論理的に削除されたオブジェクトを一覧表示する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
BLOB の論理的な削除では、BLOB のメタデータまたはプロパティを書き込む操作からは保護されません。 BLOB のメタデータまたはプロパティが更新されても、論理的に削除されたスナップショットは作成されません。 ブロブのメタデータを取得するには、 Blobのバージョン管理を参照してください。
Premium Storage アカウントの場合、論理的に削除されたスナップショットは、BLOB ごとの制限である 100 スナップショットにはカウントされません。
論理的に削除されたオブジェクトの復元
保持期間内に Undelete Blob 操作を呼び出すことで、論理的に削除された BLOB または (階層型名前空間の) ディレクトリを復元できます。 Blob の削除取り消し操作は、blob とそれに関連するソフト削除されたスナップショットやバージョンを復元します。 保持期間中に削除されたスナップショットを復元します。 階層型名前空間を持つアカウントでは、BLOB のアクセス制御リストが BLOB と共に復元されます。
階層的な名前空間を持つアカウントでは、 Undelete Blob 操作を使ってソフト削除されたディレクトリとそのすべての内容を復元することもできます。 論理的に削除された BLOB を含むディレクトリの名前を変更すると、それらの論理的に削除された BLOB はディレクトリから切断されます。 それらのブロブを復元するには、ディレクトリ名を元の名前に戻すか、元のディレクトリ名を使う別のディレクトリを作成する必要があります。 そうしないと、ソフト削除されたブロブを復元しようとしたときにエラーが出ます。 また、すでにその名前のディレクトリやブロブがあるファイルパスにディレクトリやブロブを復元することはできません。 例えば、a.txt(1)を削除し、同じくa.txt(2)という名前の新しいファイルをアップロードした場合、アクティブなa.txt(2)が削除または名前変更されるまでソフト削除されたa.txt(1)を復元できません。 ソフト削除されたディレクトリの内容には、そのディレクトリが復元されるまでアクセスできません。
ソフト削除されていないブロブに対して UndeleteBlob を呼び出すと、そのブロブに関連付けられたすべてのソフト削除済みスナップショットが復元されます。 BLOB にスナップショットがなく、論理的に削除されていない場合、Undelete Blob を呼び出しても何も行われません。
論理的に削除されたスナップショットをベース BLOB にレベル上げするには、最初にベース BLOB で Undelete Blob を呼び出して、BLOB とそのスナップショットを復元します。 次に、目的のスナップショットをベース BLOB に上書きコピーします。 新しい BLOB にスナップショットをコピーすることもできます。
ソフト削除されたブロブやスナップショットのデータは、オブジェクトが復元されるまで読み取れません。
論理的に削除されたオブジェクトを復元する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
ヒント
定義した条件に基づいて複数のストレージアカウントで大規模にブロブを復元するには、 ストレージタスクを使います。 ストレージ タスクは、Azure Storage Actions で利用できるリソースです。Azure Storage Actions は、複数のストレージ アカウントにまたがる数百万ものオブジェクトに対して、一般的なデータ操作を実行できるサーバーレス フレームワークです。 詳細については、「Azure Storage Actions とは」を参照してください。
操作による BLOB の論理的な削除の保護
次の表は、BLOB の論理的な削除が有効にされていて、BLOB のバージョン管理が有効または無効にされている場合の、削除操作と書き込み操作の想定される動作を示しています。 以下の表では、 変更がない とは、ブロブソフト削除が有効かどうかにかかわらず操作が同じ動作をすることを意味します。
ストレージ アカウント (階層型名前空間なし)
| REST API の操作 | 論理的な削除が有効 | 論理的な削除とバージョン管理が有効 |
|---|---|---|
| ストレージ アカウントの削除 | 変更はありません。 削除されたアカウントのコンテナーと BLOB は復旧できません。 | 変更はありません。 削除されたアカウントのコンテナーと BLOB は復旧できません。 |
| コンテナーの削除 | 変更はありません。 削除されたコンテナ内のブロブは、 コンテナソフト削除 が有効でない限り回復できません。 | 変更はありません。 削除されたコンテナーの BLOB は復旧できません。 |
| BLOB の削除 | ブロブを削除するために使うと、そのブロブはソフト削除済みとしてマークされます。 ブロブスナップショットを削除するために使われた場合、そのスナップショットはソフト削除としてマークされます。 |
BLOB を削除するために使用した場合、現在のバージョンが前のバージョンになり、現在のバージョンは削除されます。 この操作は新しいバージョンを作成したり、スナップショットをソフト削除したりしません。 もし Blob バージョンを削除するために使われた場合、そのバージョンはソフト削除としてマークされます。 |
| BLOB の削除の取り消し | 保持期間内に削除された BLOB とすべてのスナップショットが復元されます。 | 保持期間内に削除された BLOB とすべてのバージョンが復元されます。 |
|
Blob を配置 ブロックリストの配置 ブロブをコピー URL から BLOB をコピーする |
アクティブなブロブで呼び出されると、操作は自動的にその操作前のブロブの状態のスナップショットを生成します。 ソフト削除されたブロブに対して呼び出すと、同じタイプのブロブに置き換えられる場合にのみ、そのブロブの前の状態のスナップショットを生成します。 ブロブが異なるタイプの場合、その操作は既存のソフト削除されたすべてのデータを永久に削除します。 |
この操作は自動的に新しいバージョンを生成し、操作前のブロブの状態を捉えます。 |
| ブロックを置く | アクティブな BLOB にブロックをコミットするために使用した場合、変更はありません。 ソフト削除されたブロブにブロックをコミットするために使う場合、この操作は新しいブロブを作成し、ソフト削除されたブロブの状態をキャプチャするスナップショットを自動的に生成します。 |
変更はありません。 |
|
Put ページ URL からページを配置する |
変更はありません。 操作で上書きまたはクリアされたページのブロブデータは保存されず、回復もできません。 | 変更はありません。 操作で上書きまたはクリアされたページのブロブデータは保存されず、回復もできません。 |
|
ブロックの追加 URL からブロックを追加 |
変更はありません。 | 変更はありません。 |
| Blobプロパティを設定する | 変更はありません。 上書きされた BLOB のプロパティは復旧できません。 | 変更はありません。 上書きされた BLOB のプロパティは復旧できません。 |
| BLOB メタデータの設定 | 変更はありません。 上書きされた BLOB のメタデータは復旧できません。 | この操作は自動的に新しいバージョンを生成し、操作前のブロブの状態を捉えます。 |
| Blobの階層を設定する | ベース BLOB は新しい層に移動されます。 アクティブなスナップショットまたは論理的に削除されたスナップショットは、元の層に残ります。 論理的に削除されたスナップショットは作成されません。 | ベース BLOB は新しい層に移動されます。 アクティブなバージョンまたは論理的に削除されたバージョンは、元の層に残ります。 新しいバージョンは作成されません。 |
ストレージ アカウント (階層型名前空間)
| REST API の操作 | ソフト削除有効 |
|---|---|
| ストレージ アカウントの削除 | 変更はありません。 削除されたアカウントのコンテナーと BLOB は復旧できません。 |
| ファイルシステム - 削除 | 変更はありません。 削除されたコンテナーの BLOB は復旧できません。 |
| コンテナーの削除 | 変更はありません。 削除されたコンテナ内のブロブは、 コンテナソフト削除 が有効でない限り回復できません。 |
| パス - 削除 | この操作はソフト削除されたブロブまたはディレクトリを作成します。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 |
| BLOB の削除 | この操作はソフト削除されたオブジェクトを作成します。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 既存のスナップショットがあるブロブは削除できません。 |
| パス - 作成 (BLOB またはディレクトリの名前が変更される) | 既存の宛先ブロブや空のディレクトリはソフト削除され、ソースがそれを置き換えます。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 |
| 既存の BLOB の有効期限を設定する Set Blob Expiry | 変更はありません。 有効期限が切れた BLOB は、有効期限が切れるときに論理的に削除された BLOB になりません。 |
機能のサポート
この機能のサポートは、Data Lake Storage Gen2、ネットワーク ファイルシステム (NFS) 3.0 プロトコル、または SSH ファイル転送プロトコル (SFTP) を有効にすることによって影響を受ける可能性があります。 これらの機能のいずれかを有効にしている場合は、「Azure Storage アカウントでの Blob Storage 機能のサポート」 を参照して、この機能のサポートを評価してください。
作業量の考慮事項
ソフトデリットを有効にしても既存のデータには影響しませんが、削除や上書き操作の動作が変わります。 本番ワークロードでソフト削除を有効にする前に、以下の要素を考慮してください:
すべてのブロブをリストすると、ソフト削除されたブロブが返されます。 この変化が最も大きな影響を与えます。 すべての Blob を対象とするフラグ (従来の SDK では
BlobListingDetails.All、v12 のAzure.Storage.BlobsSDK ではBlobStates.All) を指定して Blob を一覧取得するアプリケーションでは、論理的な削除を有効にすると、論理的に削除された Blob も取得結果に含まれるようになります。 アクティブなブロブだけが返されると仮定するアプリケーションロジックが誤動作したり、バックアップや復元プロセスがソフト削除されたブロブをアクティブなデータとして誤認したりすることがあります。 コード内のすべてのリスティングフラグを確認し、有効化する前にテストしてください。 アクティブなブロブだけをリストアップするにはBlobStates.Noneを使います。 ソフト削除されたブロブを除外しながらバージョンをリストアップするには、BlobStates.Versionedをご利用ください。削除または上書きされたデータも保持されるようになり、その分の課金が継続します。 ソフト削除を有効にすると、blobを削除したり上書きしたりしてもすぐに空き容量が空きません。 前の状態はソフト削除データとして保持され、保持期間が経過するまでアクティブデータと同じ料金で請求されます。 ストレージの回収のために削除や上書き操作に依存するワークロードは、保持期間の長さに応じて追加コストを発生します。
オーバーライトが多いワークロードはソフト削除されたスナップショットを蓄積します。 FNSアカウントでは、バージョン管理が有効でない場合、上書きごとにソフト削除されたスナップショットが作成され、前の状態を記録します。 ログ、チェックポイント、一時ファイルなど、同じブロブを頻繁に上書きするアプリケーションは、大量のソフト削除データや予期せぬコストを生み出します。 BLOB またはスナップショットの層を変更していない場合は、その BLOB、そのスナップショット、およびそれが持つ可能性があるすべてのバージョンにわたるデータの一意のブロックに対して課金されます。 スナップショット 価格と請求 をご覧ください。 データの更新や入れ替わりによって不要なデータが長期間蓄積されないよう、復旧要件に応じた保持期間を設定してください。
フラットな名前空間アカウントのDFSエンドポイントをブロックします。 階層的な名前空間がないアカウントでソフト削除を有効にすると、Data Lake Storage(DFS)エンドポイント(
*.dfs.core.windows.net)を通じた操作がブロックされ、EndpointUnsupportedAccountFeaturesで失敗します。 代わりに Blob エンドポイント (*.blob.core.windows.net) を使うか、ソフト削除を有効にした DFS エンドポイントを使用するには、アカウントを階層型名前空間にアップグレードしてください。
機能間の相互作用
Blob のバージョン管理
重要
階層的な名前空間はバージョン付けではサポートされていません。
上書きはソフト削除スナップショットの代わりにバージョンを作成します: ブロブのバージョン設定とブロブソフト削除の両方を有効にすると、ブロブを上書きすると、その前の状態をキャプチャする新しい以前のバージョンが作成されます。 この操作はソフト削除スナップショットを作成しません。 新しいバージョンは論理的に削除されず、論理的な削除の保持期間が過ぎても削除されません。
以前のバージョンを削除すると、そのバージョンのみがソフト削除されます: 特定の 過去バージョンを削除すると、そのバージョンがソフト削除され、ソフト削除の保持期間が終了するまで保持されます。 保持期間が経過すると、論理削除されたバージョンは完全に削除されます。
削除解除はソフト削除されたすべてのバージョンを復元します: Blob の削除取り消し操作は、Blob のソフト削除されたすべてのバージョンを一度に復元します。1 つだけを選択して復元することはできません。 この操作によって、いずれかのバージョンが現在のバージョンに昇格することはありません。 現在のバージョンを復元するには、まず削除を元に戻し、その後、目的の前のバージョンをベースブローブにコピーします。 詳細は「 特徴の相互作用」を参照してください。
BLOB のスナップショット
バージョン管理が無効化されている場合、上書きはソフト削除スナップショットを作成します: バージョン管理のないフラットな名前空間アカウントでは、ブロブを上書きすると自動的に書き込み前のブロブの状態をキャプチャするソフト削除スナップショットが生成されます。 保持期間が終了すると、スナップショットは永久に削除されます。
ソフト削除は明示的に削除したスナップショットを保護します: アクティブなスナップショットを削除するとソフト削除され、保持期間中は保持されます。 スナップショットがあるベースブロブは、そのスナップショットも削除しない限り削除できません。 両方を削除すると、すべてが論理削除としてマークされます。
プレミアム アカウントでは、ソフト削除されたスナップショットはスナップショットの上限にカウントされません: プレミアム ブロック BLOB アカウントでは、ソフト削除されたスナップショットは BLOB あたり 100 個のスナップショット上限にはカウントされません。
ライフサイクル管理
- ライフサイクル削除アクションはソフト削除オブジェクトを生成します: ライフサイクル管理ポリシーがブロブ、スナップショット、またはバージョンを削除しても、ソフト削除は依然として適用されます。 削除されたオブジェクトはソフト削除状態に移行し、即時に削除されるのではなく、保持期間中は回復可能です。 ストレージの成長を制御するためにライフサイクルルールを使う場合は、追加の保持期間を考慮してください。なぜなら、削除されたデータは保持期間が経過するまで請求が続くからです。
完全削除
- 永久削除はスナップショットやバージョンのソフト削除の保持期間を上書きします: アカウントで永久削除機能を有効にすると、適切な権限を持つ呼び出し元が保持期間の終了前にソフト削除されたスナップショットやバージョンを永久に削除できます。 保持期間全体にわたって完全なソフト削除保護を望むなら、永久削除を無効にしてください。
コンテナーの論理的な削除
Blob のソフト削除とコンテナのソフト削除は、異なるスコープを保護します: Blob のソフト削除では、個々のブロブ、スナップショット、バージョンを復元できますが、削除されたコンテナは復元できません。 コンテナソフトデリットは削除されたコンテナとその内容を復元しますが、ライブコンテナ内の個々のブロブの削除を防ぐことはできません。 この2つの機能は補完的であり、Microsoftは両方を有効にすることを推奨しています。
ソフト削除されたコンテナから個々のブロブを復元することはできません: コンテナのソフト削除では、コンテナ全体が削除時の状態に復元されます。 ソフト削除されたコンテナから個々のブロブを選択的に復元することはできません。 まずコンテナ全体を復元し、その後ブロブを扱います。 詳細については、「コンテナーの論理的な削除」を参照してください。
既知の制限
コンテナやアカウントの削除を防ぐことはできません。 Blobソフト削除は、blob、スナップショット、バージョン、ディレクトリ(階層的な名前空間)レベルでのみ動作します。 削除されたコンテナとその内容を復元するには、コンテナのソフト削除も有効にする必要があります。 誤ってアカウントが削除されたりランサムウェア被害を受けたりするような広範なデータ損失を防ぐために、Azure Backupを有効にしてください。
メタデータやプロパティ書き込みを保護しません。 ブロブのメタデータやプロパティを更新してもソフト削除されたスナップショットは作成されません。 これらの変更はソフトデリットでは復元できません。
階層的な名前空間アカウントを上書きから保護しません。 階層的な名前空間を持つアカウントでは、ソフトデリートは削除に対してのみ保護します。 上書きはソフト削除されたスナップショットとして記録されず、復元もできません。
保持期間は1日から365日で、延長はできません。 保持期間が経過すると延長できず、オブジェクトは永久に削除されます。
完全削除機能が有効な場合は、論理的な削除で設定した保持期間中でもデータを完全に削除できます。 アカウントで永久削除機能を有効にすると、保持期間が切れる前にソフト削除されたスナップショットやバージョンを永久に削除できます。
Set Blob Expiry によって削除された Blob は復元できません。 ADLS専用のSet Blob Expiry操作で削除されたブロブはソフト削除されたブロブにはならず、削除を元に戻すこともできません。
フラットな名前空間アカウントから階層的な名前空間 (ADLS) へのアップグレードをブロックします。 フラットな名前空間アカウントでブロブやコンテナのソフト削除を有効にすると、階層的な名前空間へのアップグレードがブロックされます(例えば
Invoke-AzStorageAccountHierarchicalNamespaceUpgradeやaz storage account hns-migration start経由など)。 移行するには、論理的な削除を一度無効にしてアップグレードを実行し、その後で再び有効にします。 できればアカウント作成時にADLSを有効にしてください。
価格と課金
論理的に削除されたデータはすべて、アクティブなデータと同じレートで課金されます。 ブロブがソフト削除されると、同じティアに残り、同じティアの料金が発生します。 保存期間終了後に永久に削除されたデータについては料金がかかりません。
ソフト削除を有効にする際は、短い保持期間を設けて、その機能が請求書にどのような影響を与えるかをよりよく理解しましょう。 推奨される最小保持期間は 7 日です。
頻繁に上書きされるデータのソフト削除を有効にすると、記憶容量の料金が増加し、ブロブをリストアップする際の遅延が増加する可能性があります。 BLOB が上書きまたは削除されるとき、スナップショットまたはバージョンの自動生成に関連するトランザクションに対しては課金されません。 Undelete Blob 操作の呼び出しについては、書き込み操作のトランザクションのレートで課金されます。
Blob Storage の料金の詳細については、Blob Storage の価格に関するページを参照してください。
BLOB の論理的な削除と仮想マシンのディスク
BLOB の論理的な削除は、内部のページ BLOB である Premium と Standard の両方のアンマネージド ディスクで使用できます。 論理的な削除は、Delete Blob、Put Blob、Put Block List、Copy Blob の各操作についてのみ、削除または上書きされたデータの復旧に役立ちます。
Put Page を呼び出すことで上書きされたデータは復旧できません。 Azureの仮想マシンはPut Pageの呼び出しを使って管理されていないディスクに書き込みを行うため、ソフト削除でAzureのVMから管理されていないディスクへの書き込みを元に戻すのはサポートされていません。
監視とトラブルシューティング
Azureポータルでソフト削除されたブロブを見るには、コンテナビューで「アクティブなブロブと削除されたブロブを表示」を有効にしてください。
プログラムから削除済みの Blob の一覧を取得するには、List Blobs 操作で include=deleted を指定します (Azure.Storage.Blobs v12 SDK では BlobStates.Deleted フラグを使用します)。 ソフト削除データを定量化するには、includeDeletedフィルターをtrueに設定してAzure Storageブロブインベントリレポートを実行し、Content-Lengthフィールドを集計してください。Azure MonitorのBlobCapacityメトリクスはアカウントの総容量を報告しており、ソフト削除データとアクティブデータを分離しません。
私のアプリケーションが削除されたブロブを返し始めたか、ソフト削除を有効にした後に失敗しています:コードが「all」フラグ(レガシーSDKでは
BlobListingDetails.All、v12Azure.Storage.BlobsSDKではBlobStates.All)でブロブを表示している場合、ソフト削除されたブロブは結果に含まれます。 アクティブなブロブだけが返されると仮定するアプリケーションロジックが誤動作したり、バックアップや復元プロセスがソフト削除されたブロブをアクティブなデータとして誤認したりすることがあります。 コードを点検し、一覧取得時に「all」フラグを使用している箇所がないか確認してください。 アクティブなブロブのみをリストアップするにはBlobStates.Noneを使い、ソフト削除されたブロブを除外してバージョンをリストアップするにはBlobStates.Versionedを使います。私のDFSエンドポイント操作がEndpointUnsupportedAccountFeaturesで失敗しています:フラットな名前空間アカウントでは、ソフト削除を有効にするとData Lake Storage(DFS)エンドポイントがブロックされます。
*.dfs.core.windows.netに対する操作はEndpointUnsupportedAccountFeaturesで失敗します。 接続文字列や監視でDFSエンドポイントのリクエストが表示されているか確認してください。 解決するには、ワークロードをBlobエンドポイント(*.blob.core.windows.net)に更新するか、ソフト削除を有効にした状態でDFSエンドポイントが動作するよう、アカウントを階層型名前空間にアップグレードしてください。私の削除されたブロブはコンテナに表示されません: ソフト削除されたブロブは標準的なリスト操作から隠されています。 Azure portal では [削除された Blob を表示] を有効にします。プログラムから取得する場合は、
include=deletedを指定します。 それでもブロブが表示されない場合は、ブロブが削除される 前に ソフト削除が有効になっていて、保持期間が経過していないことを確認してください。ソフト削除が有効になっているにもかかわらず、私のブロブは永久に削除されました: 2つの点を確認してください。 まず、アカウントで完全削除機能が有効になっている場合は、論理的に削除されたスナップショットやバージョンが保持期間の終了前に削除される可能性があります。保持期間中のデータを確実に保護するには、この機能を無効にしてください。 次に、ADLSのみの Set Blob Expiry 操作で削除されたファイルはソフト削除にはならず、元に戻すことはできません。 そうでなければ、保存期間がまだ経過していないか確認してください。一度経過するとデータは永久に削除されます。
ソフト削除を有効にしてからストレージコストが上がりました: ソフト削除されたブロブ、スナップショット、バージョンは、保持期間が終了するまでアクティブデータと同じ料金で請求されます。 オーバーライトが多いワークロードは、バージョン管理が無効な場合、ソフト削除されたスナップショットが急速に蓄積されます。 ブロブインベントリを使ってソフト削除されたデータを特定し、保存期間を短くすることも検討しましょう。
削除されたコンテナをブロブソフトデリットで復元できません: ブロブソフトデリットは個々のブロブを保護し、コンテナ自体は保護しません。 コンテナが削除された場合、そのブロブはブロブのソフト削除では復元できません。 コンテナリカバリーには、事前にコンテナソフト削除が有効になっている必要があります。 詳細は コンテナのソフト削除を参照してください。
有効にした範囲が広すぎたので、大規模に論理的な削除を無効にする必要がある: 各種ツールを使用して論理的な削除を無効にする手順については、コンテナーの論理的な削除の有効化の記事を参照してください。
保持期間を長く設定しすぎてしまい、ブロブをもっと早く永久に削除したい場合: すでにソフト削除されたブロブを永久に削除するには、ソフト削除されたブロブを元に戻し、ブロブの論理削除機能をオフにしてから、ブロブを再度削除します。