Azure Blob Storage のライフサイクル管理にはルールベースのポリシーが用意されており、これを使用すると、最適なアクセス層に BLOB データを移行したり、データ ライフサイクルの最後にデータを期限切れにしたりすることができます。 ライフサイクル ポリシーは、ベース BLOB に対して機能するほか、オプションで、BLOB のバージョンやスナップショットに対して機能します。 ライフサイクル管理ポリシーの詳細については、「データ ライフサイクルを自動管理してコストを最適化する」を参照してください。
ライフサイクル管理ポリシーは、満たされた条件に基づいて実行する一連のアクションを定義する 1 つ以上のルールで構成されます。 ベース BLOB の場合、次のいずれかの条件をチェックすることを選択できます。
注意
BLOB を変更する操作 (BLOB のメタデータまたはプロパティの更新など) を行うと、BLOB の最終更新時刻が変更されます。
選択されている条件が true であると、管理ポリシーにより、指定されているアクションが実行されます。 たとえば、30 日間変更されていない場合に BLOB をホット層からクール層に移動するアクションを定義した場合は、その BLOB に対する最後の書き込み操作から 30 日後に、ライフサイクル管理ポリシーによって BLOB が移動されます。
BLOB のスナップショットまたはバージョンの場合、チェックされる条件は、スナップショットまたはバージョンが作成された後の日数です。
注意
汎用 v2、Premium ブロック BLOB、Blob Storage のアカウントでは、ブロック BLOB と追加 BLOB でライフサイクル管理ポリシーがサポートされています。
ライフサイクル管理ポリシーを構成する前に、BLOB アクセス時間の追跡を有効にすることを選択できます。 アクセス時間の追跡が有効になっていると、ライフサイクル管理ポリシーに、BLOB が読み取りまたは書き込みの操作で最後にアクセスされた時間に基づくアクションを含めることができます。 読み取りアクセス待ち時間への影響を最小限に抑えるために、過去 24 時間の最初の読み取りのみが最終アクセス時刻を更新します。 同じ 24 時間内のその後の読み取りでは、最終アクセス時刻は更新されません。 読み取り間で BLOB が変更された場合、最終アクセス時刻は 2 つの値のうち新しい方になります。
最終アクセス時間の追跡が有効でない場合、daysAfterLastAccessTimeGreaterThan には、BLOB の LastAccessTime
プロパティではなく、ライフサイクル ポリシーが有効になった日付が使われます。 この日付は、LastAccessTime
プロパティが null 値の場合にも使用されます。 最終アクセス時刻の追跡の使用の詳細については、「最終アクセス時刻に基づいてデータを移動する」を参照してください。
Azure portal で最終アクセス時刻の追跡を有効にするには、次の手順に従います。
Azure Portal のストレージ アカウントに移動します。
[データ管理] セクションで、[ライフサイクル管理] を選択します。
[アクセス追跡を有効にする] チェック ボックスをオンにします
PowerShell で最終アクセス時刻の追跡を有効にするには、次の例に示すように、Enable-AzStorageBlobLastAccessTimeTracking コマンドを呼び出します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
Enable-AzStorageBlobLastAccessTimeTracking -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-PassThru
Azure CLI で最終アクセス時刻の追跡を有効にするには、次の例に示すように、az storage account blob-service-properties update コマンドを呼び出します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
az storage account blob-service-properties update \
--resource-group <resource-group> \
--account-name <storage-account> \
--enable-last-access-tracking true
daysAfterLastAccessTimeGreaterThan プロパティを使用して、BLOB に対してアクションを実行する必要がある、最後のアクセスからの日数を指定します。
ライフサイクル管理ポリシーは、Azure portal、PowerShell、Azure CLI、または Azure Resource Manager テンプレートを使用して追加、編集、削除することができます。
Azure portal を通じてポリシーを追加するには、2つの方法があります。
Azure Portal のストレージ アカウントに移動します。
[データ管理] で、 [ライフサイクル管理] を選択してライフサイクル管理ポリシーを表示または変更します。
[リスト ビュー] タブを選択します。
[ルールの追加] を選択し、 [詳細] フォームでルールに名前を付けることができます。 また、 [規則のスコープ] 、 [BLOB の種類] 、 [BLOB のサブタイプ] の各値を設定することもできます。 次の例では、BLOB をフィルター処理するスコープを設定します。 これにより、 [フィルター セット] タブが追加されます。
- [Base blobs](ベース BLOB) を選択して、ルールの条件を設定します。 次の例では、BLOB が 30 日間変更されない場合、BLOB はクール ストレージに移動されます。
[最終アクセス] オプションは、アクセス時間の追跡が有効で、BLOB の種類に [ブロック BLOB] を選んでいる場合にのみ使用できます。 アクセスの追跡を有効にする方法については、「オプションであるアクセス時間の追跡を有効にする」を参照してください。
- [詳細] ページで [フィルターを使用して BLOB を制限する] を選択した場合は、 [フィルター セット] を選択して省略可能なフィルターを追加します。 次の例では、sample-container という名前のコンテナー内の、名前が log で始まる BLOB にフィルターを適用しています。
- [追加] を選択して新しいポリシーを追加します。
ライフサイクル管理ポリシーでは、BLOB の現在のバージョンの削除は、その BLOB に関連付けられている以前のバージョンまたはスナップショットが削除されるまで実行されないことにご注意ください。 ストレージ アカウント内の BLOB に以前のバージョンまたはスナップショットがある場合は、ポリシーの一部として削除アクションを指定するときに、[BLOB のサブタイプ] セクションで [基本 BLOB]、[スナップショット]、[バージョン] を選択する必要があります。
- Azure Portal のストレージ アカウントに移動します。
- [データ管理] で、 [ライフサイクル管理] を選択してライフサイクル管理ポリシーを表示または変更します。
- [コード ビュー] タブを選択します。このタブでは、JSON でライフサイクル管理ポリシーを定義できます。
次のサンプル JSON では、BLOB の変更からの経過時間が 30 日を超えた場合に、名前が log で始まるブロック BLOB をクール層に移動するライフサイクル ポリシーを定義しています。
{
"rules": [
{
"enabled": true,
"name": "move-to-cool",
"type": "Lifecycle",
"definition": {
"actions": {
"baseBlob": {
"tierToCool": {
"daysAfterModificationGreaterThan": 30
}
}
},
"filters": {
"blobTypes": [
"blockBlob"
],
"prefixMatch": [
"sample-container/log"
]
}
}
}
]
}
PowerShell を使用してライフサイクル管理ポリシーを追加するには、以下のコマンドを使用します。
次の例は、これらの各コマンドを使用してライフサイクル ポリシーを作成する方法を示しています。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
# Initialize the following variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
# Create a new action object.
$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete `
-daysAfterModificationGreaterThan 180
Add-AzStorageAccountManagementPolicyAction -InputObject $action `
-BaseBlobAction TierToArchive `
-daysAfterModificationGreaterThan 90
Add-AzStorageAccountManagementPolicyAction -InputObject $action `
-BaseBlobAction TierToCool `
-daysAfterModificationGreaterThan 30
Add-AzStorageAccountManagementPolicyAction -InputObject $action `
-SnapshotAction Delete `
-daysAfterCreationGreaterThan 90
Add-AzStorageAccountManagementPolicyAction -InputObject $action `
-BlobVersionAction TierToArchive `
-daysAfterCreationGreaterThan 90
# Create a new filter object.
$filter = New-AzStorageAccountManagementPolicyFilter -PrefixMatch ab,cd `
-BlobType blockBlob
# Create a new rule object.
$rule1 = New-AzStorageAccountManagementPolicyRule -Name sample-rule `
-Action $action `
-Filter $filter
# Create the policy.
Set-AzStorageAccountManagementPolicy -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-Rule $rule1
Azure CLI を使用してライフサイクル管理ポリシーを追加するには、そのポリシーを JSON ファイルに書き込んでから、az storage account management-policy create コマンドを呼び出してポリシーを作成します。
次の例は、これらの各コマンドを使用してライフサイクル ポリシーを作成する方法を示しています。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
az storage account management-policy create \
--account-name <storage-account> \
--policy @policy.json \
--resource-group <resource-group>