次の方法で共有


Azure Blob Storage ライフサイクル管理ポリシーの構造

ライフサイクル管理ポリシーを使用して、BLOB を使用パターンに基づいてコスト効率の高いアクセス層に移行できます。 また、ライフサイクルの最後に BLOB を完全に削除することもできます。 ポリシーは現在のバージョン、以前のバージョン、スナップショットで動作できますが、ポリシーは、$logsコンテナーや $web コンテナーなどのシステム コンテナー内 BLOB では動作しません。 一般的な情報については、「 Azure Blob Storage ライフサイクル管理の概要」を参照してください。

この記事では、ライフサイクル管理ポリシーの要素について説明します。 ポリシーの例については、次の記事を参照してください。

ヒント

ライフサイクル管理は 1 つのアカウントのコストを最適化するのに役立ちますが、 Azure Storage Actions を 使用して、複数のアカウント間で大規模な複数のデータ操作を実行できます。

準則

ライフサイクル管理ポリシーは、JSON ドキュメントに記述されたルールのコレクションです。 次のサンプル JSON に、完全なルール定義を示します。

{
  "rules": [
    {
      "name": "rule1",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {...}
    },
    {
      "name": "rule2",
      "type": "Lifecycle",
      "definition": {...}
    }
  ]
}
パラメーター名 パラメーターのタイプ 注記
準則 ルール オブジェクトの配列 ポリシーには少なくとも 1 つのルールが必要です。 ポリシーでは最大 100 のルールを定義できます。

ポリシー内の各ルールには、次の表で説明するように、いくつかのパラメーターがあります。

パラメーター名 タイプ 注記 必須
名前 ルール名には最大 256 の英数字を含めることができます。 ルール名は大文字と小文字が区別されます。 名前は、ポリシー内で一意にする必要があります。 イエス
有効 ボーリアン ルールを一時的に無効にすることを許可する省略可能なブール値。 これは既定値は true です。 いいえ
タイプ 列挙型の値 現在の有効な種類は Lifecycle です。 イエス
定義 ライフサイクル ルールを定義するオブジェクト 各定義は、フィルター セットとアクション セットで構成されます。 イエス

フィルター

フィルターは、ストレージ アカウント内の BLOB のサブセットにアクションを制限します。 フィルターを使用して、含める BLOB を指定できます。 フィルターでは、除外する BLOB を指定する手段はありません。 複数のフィルターが定義されている場合、論理 AND はすべてのフィルターに適用されます。 次の表では、各パラメーターについて説明します。

フィルター名 タイプ 説明 必須
blobTypes 定義済みの列挙型の値の配列 BLOB の種類 ( blockblob または appendBlob) イエス
prefixMatch 文字列の配列 これらの文字列は、一致するプレフィックスです。 いいえ
blobIndexMatch ディクショナリ値の配列 これらの値は、一致する BLOB インデックス タグ キーと値の条件で構成されます。 いいえ

プレフィックス一致フィルター

prefixMatch フィルターを適用すると、各ルールで最大 10 個の大文字と小文字を区別するプレフィックスを定義できます。 プレフィックス文字列はコンテナー名で始まる必要があります。 たとえば、パス https://myaccount.blob.core.windows.net/sample-container/blob1/...の下にあるすべての BLOB を照合する場合は、 prefixMatchsample-container/blob1として指定します。

このフィルターは、名前が sample-container で始まるblob1内のすべての BLOB と一致します。 プレフィックスの一致を定義しない場合、ルールはストレージ アカウント内のすべての BLOB に適用されます。 プレフィックス文字列では、ワイルドカード一致はサポートされていません。 *? などの文字は、文字列リテラルとして扱われます。

BLOB インデックス一致フィルター

blobIndexMatch フィルターを適用すると、各ルールで最大 10 個の BLOB インデックス タグ条件を定義できます。 たとえば、Project = Contoso の下にあるすべての BLOB を https://myaccount.blob.core.windows.net/ と照合する場合、blobIndexMatch フィルターは {"name": "Project","op": "==","value": "Contoso"} となります。 blobIndexMatch フィルターの値を定義しない場合、ルールはストレージ アカウント内のすべての BLOB に適用されます。

アクション

ルールごとに少なくとも 1 つのアクションを定義する必要があります。 実行条件が満たされている場合、アクションはフィルター処理された BLOB に適用されます。 実行条件の詳細については、この記事の 「アクションの実行条件」 セクションを参照してください。 次の表では、ポリシー定義で使用できる各アクションについて説明します。

アクション 説明
TierToCool BLOB をクール アクセス層に設定します。

追加 BLOB、ページ BLOB、または Premium ブロック BLOB ストレージ アカウントの BLOB ではサポートされていません。
TierToCold BLOB をコールド アクセス層に設定します。

追加 BLOB、ページ BLOB、または Premium ブロック BLOB ストレージ アカウントの BLOB ではサポートされていません。
TierToArchive BLOB をアーカイブ アクセス層に設定します。

BLOB をリハイドレートしても、BLOB の最終変更または最終アクセス時刻プロパティは更新されません。 その結果、このアクションによって、リハイドレートされた BLOB がアーカイブ層に戻される可能性があります。 この問題が発生しないようにするには、このアクションに daysAfterLastTierChangeGreaterThan 条件を追加します。

このアクションは、追加 BLOB、ページ BLOB、または Premium ブロック BLOB ストレージ アカウントの BLOB ではサポートされていません。 また、暗号化スコープを使用する BLOB や、ゾーン冗長ストレージ (ZRS)、geo ゾーン冗長ストレージ (GZRS)、読み取りアクセス geo ゾーン冗長ストレージ (RA-GZRS) 用に構成されているアカウント内の BLOB ではサポートされません。
クールからホットへの自動階層化を有効にする BLOB がクール層に設定されている場合、このアクションでは、BLOB にアクセスすると、その BLOB がホット層に自動的に移動されます。

このアクションは、 daysAfterLastAccessTimeGreaterThan 実行条件で使用する場合にのみ使用できます。

このアクションは、ルールでこのアクションを有効にする前にクール層に設定された BLOB には影響しません。

このアクションにより、BLOB は 30 日間で 1 回だけクールからホットに移動されます。 このセーフガードは、アカウントに課金される複数の早期削除ペナルティから保護するために実施されます。

以前のバージョンまたはスナップショットではサポートされていません。
削除 BLOB を削除します。

ページ BLOB、または不変コンテナー内の BLOB ではサポートされていません。

同じ BLOB に複数のアクションを定義すると、ライフサイクル管理によって最もコストの低いアクションが BLOB に適用されます。 たとえば、 削除 アクションは tierToArchive アクションよりも低く、 tierToArchive アクションは tierToCool アクションよりも安価です。

階層型名前空間があるアカウントでの削除アクション

階層型名前空間が有効になっているアカウントに適用すると、削除アクションによって空のディレクトリが削除されます。 ディレクトリが空でない場合、削除アクションでは、最初のライフサイクル ポリシー実行サイクル内のポリシー条件を満たすオブジェクトが削除されます。 そのアクションの結果、空のディレクトリになり、ポリシー条件も満たされる場合、そのディレクトリは次の実行サイクル内で削除される、というように続きます。

バージョンとスナップショットを持つ BLOB に対する削除アクション

ライフサイクル管理ポリシーでは、その BLOB に関連付けられている以前のバージョンまたはスナップショットが削除されるまで、BLOB の現在のバージョンは削除されません。 ストレージ アカウント内の BLOB に以前のバージョンまたはスナップショットがある場合は、ポリシーの一部として削除アクションを指定するときに、以前のバージョンとスナップショットを含める必要があります。

アクションの実行条件

すべての実行条件は時間ベースです。 経過した日数が条件に指定された数を超えた場合は、関連するアクションが実行されます。 ポリシー条件は、ポリシーの実行中に各オブジェクトで 1 回だけ評価されます。 場合によっては、実行によって既に評価された後に、オブジェクトが条件を満たす場合があります。 このようなオブジェクトは、後続の実行時に処理されます。

現在のバージョンでは、最終変更時刻または最終アクセス時刻を使用し、以前の BLOB バージョンではバージョン作成時刻を使用し、BLOB スナップショットでは、スナップショットの作成時刻を使用して古さが追跡されます。

次の表では、各アクションの実行条件について説明します。

条件名 タイプ 説明
daysAfterModificationGreaterThan 整数 最終変更時刻 BLOB 後の期間 (日数)。 現在のバージョンの BLOB に対するアクションに適用されます。
daysAfterCreationGreaterThan 整数 作成時刻後の期間 (日数)。 BLOBの現在のバージョン、以前のバージョン、またはBLOBスナップショットへのアクションに適用されます。
daysAfterLastAccessTimeGreaterThan 整数 最終アクセス時刻、または場合によってはポリシーが有効になった日付以降の期間 (日数)。 詳細については、以下の 「アクセス時間の追跡」 セクションを参照してください。 アクセス追跡が有効になっている場合に、BLOB の現在のバージョンのアクションに適用されます。
daysAfterLastTierChangeGreaterThan 整数 BLOB 層の最終変更時刻後の期間 (日数)。 リハイドレートされた BLOB が、アーカイブ アクセス層に戻される前に、ホット、クール、またはコールドのアクセス層に保持される最小期間 (日数)。 tierToArchive アクションにのみ適用されます。

アクセス時間の追跡

アクセス時間の追跡を有効にして、BLOB が最後に読み取られたり書き込まれたりした日時の記録を保持したり、BLOB データの階層化と保持を管理するためのフィルターとして使用することができます。

アクセス時間の追跡を有効にすると、 LastAccessTime と呼ばれる BLOB プロパティは、BLOB の読み取りまたは書き込み時に更新されます。 BLOB の取得操作と Put BLOB 操作はアクセス操作であり、BLOB のアクセス時間が更新されます。 ただし、 BLOB プロパティの取得BLOB メタデータの取得および BLOB タグの取得 はアクセス操作ではありません。 これらの操作では、BLOB のアクセス時間は更新されません。

daysAfterLastAccessTimeGreaterThan 実行条件をポリシーに適用すると、その条件が満たされているかどうかを判断するためにLastAccessTimeが使用されます。

daysAfterLastAccessTimeGreaterThan 実行条件をポリシーに適用しても、アクセス時間の追跡を有効にしなかった場合、LastAccessTimeは使用されません。 代わりに、ライフサイクル ポリシーが有効になった日付が使用されます。 実際、ライフサイクル ポリシーが有効になった日付は、BLOB の LastAccessTime プロパティが null 値である場合に使用されます。 これは、追跡が有効になってから BLOB にアクセスされていない場合に、アクセス時間の追跡を有効にした場合でも発生する可能性があります。

読み取りアクセス待ち時間への影響を最小限に抑えるために、過去 24 時間の最初の読み取りのみが最終アクセス時刻を更新します。 同じ 24 時間内のその後の読み取りでは、最終アクセス時刻は更新されません。 読み取り間で BLOB が変更された場合、最終アクセス時刻は 2 つの値のうち新しい方になります。

アクセス時間の追跡を有効にする方法については、「 オプションでアクセス時間の追跡を有効にする」を参照してください。

次のステップ