仕事でAzure Blob Storageをいじってるのだけど、ポータル画面からだとスナップショットの取得ができなそうなので、PowerShellから取ってみる事にした。

残念ながら、コンテナ単位でSnapshotを取得する事は出来ないようで、オブジェクト単位での取得をする必要があるようだ。

# Blob Storageに関する情報
# StorageAccountName: Blobアカウント名
# StorageAccountKey : Blobアクセスキー
# ContainerName : Blobコンテナ名
# BlobName : Blob名
$StorageAccountName = "Blobアカウント名"
$StorageAccountKey = "Blobアクセスキー=="
$ContainerName = "コンテナ名"
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

# コンテナ情報を取得する
$BlobsContainer = Get-AzureStorageBlob -Context $Ctx -Container $ContainerName

# foreachでコンテナ内の必要なBlob(今回はvhd)に対しスナップショットを取得する
foreach($Blob in $BlobsContainer) {
    if((!$Blob.ICloudBlob.IsSnapshot) -and ($Blob.Name.EndsWith("vhd"))){
        # スナップショットの取得を行う
        $snap = $blob.ICloudBlob.CreateSnapshot()
        # 指定したBlobのスナップショットを確認する
        Get-AzureStorageBlob –Context $Ctx -Prefix $Blob.Name -Container $ContainerName  | Where-Object  { $_.ICloudBlob.IsSnapshot -and $_.Name -eq $Blob.Name }
    }
}

スナップショットの取得条件は環境に合わせて書き換えてもらえれば良いだろう。