この記事は セゾン情報システムズ Advent Calendar 2022 ページ2の11日目の記事です。
Azure Blob Storageにはライフサイクル管理という機能があります。
これは例えば90日間変更がないBlobを自動的に削除したり、ホット層からクール層に自動的に移動したりすることができます。
今回このライフサイクル管理で自動削除されたBlobを、ログとして記録することができるのかを確認しました。
ライフサイクル管理
診断設定
-
診断設定を使うことで、Blobの削除操作をログに記録することができます。
-
[StorageDelete]を保存します。保存先はLog Analyticsやストレージアカウントが選べますが、今回はストレージアカウントに保存します。
ログ確認
- 実際にライフサイクル管理で削除された場合、以下のように記録されていることが確認できました。
{
"time": "2022-12-10T11:26:22.8742962Z",
"resourceId": "/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/Microsoft.Storage/storageAccounts/[StorageAccountName]/blobServices/default",
"category": "StorageDelete",
"operationName": "DeleteBlob",
"operationVersion": "2020-02-10",
"schemaVersion": "1.0",
"statusCode": 202,
"statusText": "Success",
"durationMs": 9,
"callerIpAddress": "x.x.x.x:50740",
"correlationId": "xxx",
"identity": {
"type": "SAS",
"tokenHash": "xxx"
},
"location": "Japan East",
"properties": {
"accountName": "[StorageAccountName]",
"userAgentHeader": "xAzure/1.0 AzureStorage/1.0 ObjectLifeCycleScanner/0.50",
"clientRequestId": "xxx",
"serviceType": "blob",
"objectKey": "/[StorageAccountName]/test/test.txt",
"metricResponseType": "Success",
"serverLatencyMs": 9,
"requestHeaderSize": 645,
"responseHeaderSize": 300,
"tlsVersion": "TLS 1.2",
"accessTier": "None"
},
"uri": "xxx",
"protocol": "HTTPS",
"resourceType": "Microsoft.Storage/storageAccounts/blobServices"
}
- 次に気になるのが、手動削除した場合とライフサイクル管理で自動削除された場合で区別することができるのかです。ログを見比べたところ以下の違いがありました。
ライフサイクル管理
"userAgentHeader": "xAzure/1.0 AzureStorage/1.0 ObjectLifeCycleScanner/0.50",
手動削除
"userAgentHeader": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
- ライフサイクル管理と手動削除では[userAgentHeader]の値に違いがありました。これをチェックすることで自動削除されたか確認ができそうです。
以上