LoginSignup
5
4

More than 5 years have passed since last update.

AzCopyがAmazon S3→Azure Blobに対応したので試してみる

Last updated at Posted at 2019-04-18

AzCopy v10(Preview)がリリースされて、Amazon S3からAzure Blobへのデータコピーができるようになったので実際に使ってみたいと思います。

前提

  • Amazon S3バケットが作成されていること
  • Azure Blob Storage コンテナーが作成されていること
  • S3バケットへのRead権限を持ったIAMユーザが作成されていること

環境

  • Microsoft Windows 1o Pro
  • AzCopy 10.0.9-Preview

AzCopyダウンロード

以下の公式ページよりダウンロードします。
Download and install AzCopy

解凍&配置

ダウンロードしてきたzipファイルを解凍し、azcopy.exeをPATHの通ったフォルダに配置します。
v10からはインストールが不要になってますね。

AWSアクセスキー&シークレットキー設定

  • IAMユーザのアクセスキー、シークレットキーを設定します。
set AWS_ACCESS_KEY_ID=<your AWS access key>
set AWS_SECRET_ACCESS_KEY=<AWS secret access key>

S3 to Blob (SASトークン使用)

  • Azureポータルから転送先のBlobストレージを選び、[Shared Access Signature]を選択します。

    image.png

  • 付与する権限を設定して、トークンを発行します。

    image.png

  • SASトークンが発行されるのでメモしておく。

    image.png

  • コマンドプロンプトより以下コマンドを実行します。

azcopy cp "https://s3-ap-northeast-1.amazonaws.com/[バケット名]/[フォルダ名]/[オブジェクト名]" "https://[ストレージアカウント名].blob.core.windows.net/[コンテナー名][SASトークン]"
  • Blobストレージに転送されていればOKです。

S3 to Blob (OAuth認証使用)

  • AzureポータルからBlobストレージのコンテナーにアクセスし、[アクセス制御(IAM)]を選択します。

    image.png

  • [追加]を選択します。

    image.png

  • [ロールの割り当ての追加]を選択します。

    image.png

  • 役割に[ストレージBLOBデータ共同作成者]を選び、Azure ADユーザに権限を与えます。サービスプリンシパルは対応していないので、ADユーザを選択するようにしてください。

    image.png

  • 次にAzure ADのディレクトリIDを調べます。AzureポータルからAzure ADを選択します。

    image.png

  • [プロパティ]を選択し、[ディレクトリID]をメモします。

    image.png

  • AzCopyログインコマンドを実行します。

azcopy login --tenant-id=[テナントID]
  • 以下のようなメッセージが出力されるので、ブラウザでhttps://microsoft.com/deviceloginを開き、コードを入力してAzureユーザでログインします。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ABCDEFGHR to authenticate.
  • コマンドプロンプトより以下コマンドを実行します。今回はSASトークンは不要です。
azcopy cp "https://s3-ap-northeast-1.amazonaws.com/[バケット名]/[フォルダ名]/[オブジェクト名]" "https://[ストレージアカウント名].blob.core.windows.net/[コンテナー名]"
  • Blobストレージに転送されていればOKです。

S3バケット丸ごと転送

  • S3バケットを指定することで、バケット丸ごと転送することもできます。
azcopy cp "https://s3-ap-northeast-1.amazonaws.com/[バケット名]" "https://[ストレージアカウント名].blob.core.windows.net/[コンテナー名][SASトークン]" --recursive=true

Blob to S3

  • 残念ながら現時点では利用できないようです。エラーになりました。
failed to parse user input due to error: the inferred source/destination combination is currently not supported. Please post an issue on Github if support for this scenario is desired

まとめ

まだプレビューですが、コマンドはシンプルで分かりやすいですね。
認証にストレージアカウントキーが使えないのと、OAuth認証は対話型のみ対応で、サービスプリンシパルを使った認証はできないという点に注意が必要です。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4