ストレージアカウント間でデータのコピーをしよう(AzureCLI) #Azureリレー
2021-04-08
azcopyでsas発行云々をAzureCLIでやろうとするとしんどかったので、他に方法が無いか調べたらよさそうなのがありました。
az storage copy
デフォルトでアクセスキーを使ってストレージアカウントの認識をしてくれます。今回は接続文字列を使用した方法を紹介します。
ストレージアカウントの用意
データコピー元とコピー先でそれぞれ用意します。
ここでは以下の名称で作成しました。名称カッコ悪いですが許して。
コピー元
・リソースグループ: srcstorageaccount
・ストレージアカウント: srcstorageaccount2021
コピー先
・リソースグループ: deststorageaccount
・ストレージアカウント: deststorageaccount2021
次にデータを用意します。コピー元ストレージアカウントにコンテナーを作って適用にファイルを置きます。
後述のコマンド実行で必要な接続文字列は「アクセスキー > 接続文字列」の値を使用します。
コマンド実行
本題のコマンドです。
az storage copy `
-s "コピー元ストレージアカウントのエンドポイント" `
--src-conn "コピー元ストレージアカウントの接続文字列" `
-d "コピー先ストレージアカウントのエンドポイント" `
--connection-string "コピー先ストレージアカウントの接続文字列" `
--recursive `
--only-show-errors
変数を用意します。それぞれ値を置き換えてください。
# コピー元ストレージアカウントのエンドポイント
$srcEndpoint = "https://{コピー元ストレージアカウント名}.blob.core.windows.net/"
# コピー元ストレージアカウントの接続文字列。
$srcAccountConnectionString = "XXX"
# コピー先ストレージアカウントのエンドポイント
$destEndpoint = "https://{コピー先ストレージアカウント名}.blob.core.windows.net/"
# コピー先ストレージアカウントの接続文字列
$destAccountConnectionString = "XXX"
コマンドに上の変数を指定すると以下になります。
az storage copy `
-s $srcEndpoint `
--src-conn $srcAccountConnectionString `
-d $destEndpoint `
--connection-string $destAccountConnectionString `
--recursive `
--only-show-errors
正常にコマンドが完了すればコピー先にデータがあります。
終わり
エンドポイントですが、"https://{ストレージアカウント名}.blob.core.windows.net/{コンテナー名}"と指定することでコンテナーを対象にすることもできます。
スクリプト化すれば複数ストレージアカウントをコピー元にしてデータのバックアップなんかもできます。