このページの本文へ

FIXER cloud.config Tech Blog

Azureのストレージアカウント間でデータのコピーをしよう

2021年04月13日 11時00分更新

文● 多田 祐一朗/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「ストレージアカウント間でデータのコピーをしよう(AzureCLI) #Azureリレー」を再編集したものです。

 azcopyコマンドでSAS(Shared Access Signature)発行云々を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/{コンテナー名}”と指定することでコンテナーを対象にすることもできます。 スクリプト化すれば複数ストレージアカウントをコピー元にしてデータのバックアップなんかもできます。

  多田 祐一朗/FIXER

 名古屋事業所所属のエンジニア。基盤インフラ経験が少しある。

[転載元]
 ストレージアカウント間でデータのコピーをしよう(AzureCLI) #Azureリレー

カテゴリートップへ