概要
Azure Storage の停止が発生した場合の対処方法の「オプション 2: セカンダリ リージョンからデータをコピーする」をPowerShellで実現する。
前提条件
- 複製元ストレージアカウントがRA-GRS構成
- 複製先ストレージアカウントは事前に作成
動作確認環境
項目 | バージョン |
---|---|
PowerShell | 5.1.14409.1005 |
AzurePowerShell | 5.1.1 |
スクリプト
# 変数定義
$SrcStorageName = "複製元ストレージアカウント名"
$SrcStorageSubName = "複製元ストレージアカウントが所属するサブスクリプション名"
$SrcStorageRgName = "複製元ストレージアカウントが所属するリソースグループ名"
$DestStorageName = "複製先ストレージアカウント名"
$DestStorageSubName = "複製先ストレージアカウントが所属するサブスクリプション名"
$DestStorageRgName = "複製先ストレージアカウントが所属するリソースグループ名"
# Azure ログイン
Login-AzureRmAccount
# 複製元(セカンダリ)コンテキスト作成
Select-AzureRmSubscription -SubscriptionName $SrcStorageSubName | Out-Null
$SrcStorageKey = (Get-AzureRmStorageAccountKey -storageaccountname $SrcStorageName -ResourceGroupName $SrcStorageRgName).Value[0]
$SrcContextString = "AccountName=" + $SrcStorageName + ";AccountKey=" + $SrcStorageKey + ";BlobEndpoint=https://" + $SrcStorageName + "-secondary.blob.core.windows.net;"
$SrcContext = New-AzureStorageContext -ConnectionString $SrcContextString
# 複製先コンテキスト作成
Select-AzureRmSubscription -SubscriptionName $DestStorageSubName | Out-Null
$DestStorageKey = (Get-AzureRmStorageAccountKey -storageaccountname $DestStorageName -ResourceGroupName $DestStorageRgName).Value[0]
$DestContext = New-AzureStorageContext -StorageAccountName $DestStorageName -StorageAccountKey $DestStorageKey
# 複製元と同名のコンテナを複製先ストレージに作成
Get-AzureStorageContainer -Context $SrcContext | New-AzureStorageContainer -Context $DestContext | Out-Null
# データ複製
$Containar = Get-AzureStorageContainer -Context $SrcContext
foreach($c in $Containar.name){
Get-AzureStorageBlob -Container $c -Context $SrcContext | Start-AzureStorageBlobCopy -DestContainer $c -DestContext $DestContext | Get-AzureStorageBlobCopyState -WaitForComplete | Out-Null
}
参考
Azure Storage:概要
Azure Storage:リージョン障害が発生した場合の対処方法
Azure Storage:地理冗長 (GRS) のリージョン障害時の挙動について
Azure Storage での AzurePowerShell の使用