📦
Azure Filesにおけるライフサイクル管理のためのタイムスタンプ取得
モチベ
- Azure FilesにもAzure BLOBと同様にアクセス層の概念がある
- ただし、ストレージアカウントの機能としての"ライフサイクル管理"はあくまでもBLOB用の機能
- Azure Filesで同様のことを行うには多少の作り込みが必要となるはず(タイムスタンプの取得とか)
- 軽く調べた感じ少し複雑だったのでここにまとめたい気持ち
- PowerShellのサンプルスクリプトがあればいいなという感じ
Azure Filesの用意
- 適当に作る
- ディレクトリ、ファイルも適当においておく
Azure Filesのタイムスタンプの取得
- まずは、ストレージコンテキストなるものを作成する
- これを作成し、コマンド実行時にコンテキストを指定することで「どのストレージアカウントへの指示なのか」ということが特定できる
# ストレージアカウント名・キーを入力
ps> $storageAccountName = '<place-holder>'
ps> $storageAccountKey = '<place-holder>'
ps> $ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
- ストレージコンテキストの指定には幾つかパターンがある
- 「ファイル共有」レベルでのタイムスタンプの取得
# 適宜名前は変更してください
ps> $fileShareName = 'testshare'
ps> $share = Get-AzureStorageShare -Name $fileShareName -Context $ctx
ps> $share.LastModified
sample output:
DateTime : 4/17/2023 5:27:30 AM
UtcDateTime : 4/17/2023 5:27:30 AM
LocalDateTime : 4/17/2023 5:27:30 AM
Date : 4/17/2023 12:00:00 AM
Day : 17
DayOfWeek : Monday
DayOfYear : 107
Hour : 5
Millisecond : 0
Microsecond : 0
Nanosecond : 0
Minute : 27
Month : 4
Offset : 00:00:00
Second : 30
Ticks : 638173060500000000
UtcTicks : 638173060500000000
TimeOfDay : 05:27:30
Year : 2023
ps> $share.LastModified.DateTime
sample output:
Monday, April 17, 2023 5:27:30 AM
- 「ファイル」レベルでのタイムスタンプの取得
- Azure Filesではアクセス層の変更はあくまで「ファイル共有」レベルになるため、参考程度に
# 適宜ファイルパスは変更してください
PS> $filePath = '/testdir/_cf3c6e10-441c-4499-8902-597293493074.jfif'
PS> $file = Get-AzureStorageFile -ShareName $fileShareName -Path $filePath -Context $ctx
PS> $file.LastModified
sample output:
DateTime : 4/17/2023 5:28:01 AM
UtcDateTime : 4/17/2023 5:28:01 AM
LocalDateTime : 4/17/2023 5:28:01 AM
Date : 4/17/2023 12:00:00 AM
Day : 17
DayOfWeek : Monday
DayOfYear : 107
Hour : 5
Millisecond : 0
Microsecond : 0
Nanosecond : 0
Minute : 28
Month : 4
Offset : 00:00:00
Second : 1
Ticks : 638173060810000000
UtcTicks : 638173060810000000
TimeOfDay : 05:28:01
Year : 2023
PS> $file.LastModified.DateTime
sample output:
Monday, April 17, 2023 5:28:01 AM
おわり
- あくまでタイムスタンプ取得までの話
- アクセス層を実際に変更する際にはもっと作りこみが必要
- 全体のファイル共有をチェックして現在の日付と比較
- 一定期間以上経っているものに対しては、アクセス層の変更コマンド
Update-AzRmStorageShare
を投げる - 上記をAzure Automation等で定期的に実行する
GitHubで編集を提案
Discussion