{Azure Storage}ライフサイクル管理ポリシーを構成する

 

https://learn.microsoft.com/ja-jp/azure/storage/blobs/lifecycle-management-policy-configure?tabs=azure-cli

https://learn.microsoft.com/ja-jp/azure/storage/blobs/lifecycle-management-overview

https://www.tama-negi.com/2021/10/09/azure-storage-lifecycle-management/


次のいずれかの条件をチェックすることを選択できます。

BLOB が作成された後の日数。
BLOB が最後に変更された後の日数。
BLOB が最後にアクセスされた後の日数。 (アクセス時間の追跡を有効にする必要があります。)

ポリシーの構成後、有効になるまでに最大 24 時間かかることがあります。
ポリシーの有効化後、アクションが最初に実行されるまでに最大で 24 時間かかることがあります。


最後のアクセスから1日後に削除されるポリシーを作成


-- 1. 前作業

az login --use-device-code
az account show

az version

az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults

az group create \
--name rg9999999 \
--location japaneast


az group list
az upgrade


-- 2. ストレージアカウントの作成

az storage account create \
--resource-group rg9999999 \
--name st123 \
--access-tier Hot \
--kind StorageV2 \
--sku Standard_LRS


az storage account list \
--resource-group rg9999999


-- 3. アクセス時間の追跡を有効にする

az storage account blob-service-properties update \
--resource-group rg9999999 \
--account-name st123 \
--enable-last-access-tracking true

az storage account blob-service-properties show \
--resource-group rg9999999 \
--account-name st123

 

-- 4. コンテナーの作成

key=$(az storage account keys list \
--account-name st123 \
--resource-group rg9999999 \
--output json \
--query [0].value | tr -d '"')

echo $key

az storage container create \
--name container01 \
--account-name st123 \
--public-access off \
--account-key $key


az storage container list \
--account-name st123 \
--account-key $key

-- 5. コンテナーにオブジェクトをアップロード

echo test > test.txt

az storage blob upload \
--account-name st123 \
--container-name container01 \
--name test.txt \
--file test.txt \
--account-key $key

az storage blob list \
--account-name st123 \
--container-name container01 \
--output table \
--account-key $key


az storage blob download \
--account-name st123 \
--container-name container01 \
--name test.txt \
--file test.txt \
--account-key $key

 

az storage blob show \
--account-name st123 \
--container-name container01 \
--name test.txt \
--account-key $key

lastAccessedOnを確認


-- 6. ライフサイクル管理ポリシーを作成

vim policy.json

{
  "rules": [
     {
        "name": "policy01",
        "type": "Lifecycle",
        "enabled": true,
        "definition": {
          "filters": {
            "blobTypes": [ "blockBlob" ]
          },
          "actions": {
            "baseBlob": {
              "delete": {
                "daysAfterLastAccessTimeGreaterThan": 1
              }
            }
          }
        }
     }
   ]
}


cat policy.json

 

az storage account management-policy create \
--resource-group rg9999999 \
--account-name st123 \
--policy @policy.json

 

az storage account management-policy show \
--resource-group rg9999999 \
--account-name st123

 

 


-- 7. 動作確認

1-2日待つ。BLOBが削除されていることを確認

 

key=$(az storage account keys list \
--account-name st123 \
--resource-group rg9999999 \
--output json \
--query [0].value | tr -d '"')

echo $key

az storage blob list \
--account-name st123 \
--container-name container01 \
--output table \
--account-key $key


-- 8. クリーンアップ

az storage account delete \
--resource-group rg9999999 \
--name st123 \
--yes


az group list
az group delete \
--name rg9999999 \
--yes