📦

Azure Filesにおけるライフサイクル管理のためのタイムスタンプ取得

2023/04/17に公開

モチベ

  • 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
  • ストレージコンテキストの指定には幾つかパターンがある

https://learn.microsoft.com/ja-jp/powershell/module/servicemanagement/azure.storage/new-azurestoragecontext?view=azuresmps-4.0.0

  • 「ファイル共有」レベルでのタイムスタンプの取得
# 適宜名前は変更してください
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で編集を提案
Microsoft (有志)

Discussion