やりたいこと
仕事で Azure を使っていて、Storage に保存したデータを「保存されてからの期間」ではなくて「アクセスされなくなってからの期間」によって、データを Cool Tier に移動させたり Archive したり、削除したりということが必要になった。割りとよく使われそうなユースケースなので、ここに載せておく。
参考
前提
- Azure の Subscription をもっていること
- Azure Portal 上で基本的な操作が行えること
- ここでは操作手順は書いていないけど、調べながらできれば OK!
- Azure CLI を操作できること
- Cloud Shell だったり、ローカルだったり
設定内容
- 任意の Storage アカウントを作成する。
- 作成した Storage アカウントのライフサイクルポリシーの項目に移動する
- Add a rule をクリックして、以下の内容を確認する
- Details タブ
- ルール名: 任意
- その他の項目はデフォルトのままで OK
- Next をクリック
- Base Blobs タブ
- if のブロック内に、この時点では Last-accessed の項目が無いはず
- ルールの作成をキャンセルして、Storage アカウントのページに戻る
- Details タブ
- Azure Portal 上で Cloud Shell を起動する or ローカルの Bash などを起動する
- 以下コマンドで、
--enable-last-access-tracking
に true を設定する (有効化する)-
<resource-group>
と<storage-account>
は自分の環境に合わせて変更すること
az storage account blob-service-properties update \ --resource-group <resource-group> \ --account-name <storage-account> \ --enable-last-access-tracking true
-
- サイドライフサイクルポリシーの項目に移動して、下記内容でルールを作成する
- Details タブ
- ルール名: 任意
- その他の項目はデフォルトのままで OK
- Next をクリック
- Base Blobs タブ
- if のブロック内に今回は Last-accessed の項目が現れているはず
- More than (days ago): 任意の日数
- Then のブロックで任意のアクションを設定する
- Add をクリック
- Details タブ
- 適当なコンテナを作成して、適当なファイルをアップロードする
- ルールで指定した日数が経過するまで待つ。。。🛌
- アップロードしたファイルが削除されている!🎉🎉🎉
これで、最終アクセスからの経過時間でデータを削除したり別の Tier に移動させたりできるようになった。
いつまでデータを保持するかのガバナンスは重要だし、データも増大するので一定期間アクセスの無いデータを Archive するなどはコストの観点からも重要だと思う。
今回の内容が参考になれば嬉しいです。
以上です。
気になること
AWS でも同じことができるかちょっと調べてみたけど無さそう?だった (あれば教えてください)。
AWS の場合はアクセス頻度に合わせて自動でストレージクラスを最適に変更してくれる設定 (Intelligent-Tiering とか) があるからいらないのかな?🤔
逆に Azure は自動でやってくれないんだなーと。どっちが良いのかは時と場合によるけども。
ひとりごと
最近は Azure をメインで使ってるから AWS のリソース名とか忘れてきた。。。