はじめに
S3 のデータを別リージョンの S3 バケットへ転送する方法の 1 つとして、AWS DataSync を利用できます。
S3 のクロスリージョンレプリケーション機能でもデータの同期は可能ですが、
- 大量データを転送したい場合
- 一部のデータのみを別リージョンに保管したい場合
- 一度だけのデータ転送を行いたい場合
等には、AWS DataSync を利用する方が効率的です。
本ブログでは、AWS DataSync を使った S3 のクロスリージョン間データ転送の設定方法について解説します。
構成
今回は、下記の構成図のように 東京リージョンのS3 から 大阪リージョンのS3 へデータ転送を行います。

作成するリソース一覧
作成するリソースは下記です。
- S3バケット
- 東京リージョン(送信元)
- 大阪リージョン(送信先)
- IAMロール、IAMポリシー
- DataSyncロケーション
- 東京リージョン(送信元)
- 大阪リージョン(送信先)
- DataSyncタスク
設定方法
1.S3バケットを作成
東京リージョンと大阪リージョンにS3バケットを一つづつ作成します。
東京リージョンで作成

大阪リージョンで作成

2.IAMロールを作成
S3に対して、DataSyncから読み書きなどの操作をするため、必要なIAMポリシーを作成し、IAMロールにアタッチします。
IAMポリシー
- IAMポリシー名は
datasync-test-policyとしています。


ポリシーの詳細
Resource: には 作成したS3バケット名を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::datasync-test-tokyo-bucket",
"arn:aws:s3:::datasync-test-osaka-bucket"
],
"Effect": "Allow"
},
{
"Action": [
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:DeleteObject",
"s3:GetObjectTagging"
],
"Resource": [
"arn:aws:s3:::datasync-test-tokyo-bucket/*",
"arn:aws:s3:::datasync-test-osaka-bucket/*"
],
"Effect": "Allow"
}
]
}
【参考】
Amazon S3 を使用した AWS DataSync 転送の設定
https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/create-s3-location.html
IAMロール
カスタム信頼ポリシーを選択し、信頼関係を入力

先に作成したIAMポリシーをアタッチ

IAMロール名を設定
- IAMロール名は
datasync-test-roleとしています。

IAMロールの信頼関係
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "datasync.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
3.DataSyncロケーションを作成
「送信元」または「送信先」となるストレージの場所を定義します。
東京リージョン側で作成
- ロケーションタイプ:Simple Storage Service (Amazon S3)
- S3 URI:東京リージョンで作成したS3のURI
- S3ストレージクラス:標準
- IAMロール:先に作成したIAMロール

大阪リージョン側で作成
- ロケーションタイプ:Simple Storage Service (Amazon S3)
- S3 URI:大阪リージョンで作成したS3のURI
- S3ストレージクラス:標準
- IAMロール:先に作成したIAMロール

4.DataSyncタスクを作成
「どのロケーションからどのロケーションへデータを転送するか」の実際の処理設定を行います。
送信元ロケーションの設定
- データ送信元ロケーション:既存のロケーションを選択する
- リージョン:Asia Pacific(Tokyo)
- ロケーション:先に作成した東京リージョンのロケーションを選択

送信先ロケーションの設定
- データ転送先ロケーション:既存のロケーションを選択する
- リージョン:Asia Pacific(Osaka)
- ロケーション:先に作成した大阪リージョンのロケーションを選択

設定を構成
- タスクモード:拡張
- 名前:任意のタスク名
で設定し、そのほかはデフォルトで設定します。
ここでは、転送対象ファイルの除外設定や、定期実行するためのスケジュール設定など使用用途にあわせてカスタマイズすることが可能です。

動作確認
設定が完了したので、データ転送の動作確認を行います。
東京リージョンのS3にテストデータを配置
- 東京リージョンのS3にtest.txt をアップロードします。

DataSyncタスクを実行
- DataSyncタスクの右上に開始 > デフォルトから開始する を押下します。

大阪リージョンのS3を確認
- 大阪リージョンのS3に test.txt が転送されたことが確認できました。

まとめ
AWS DataSyncを利用したクロスリージョン間のS3のデータ転送の設定方法をご紹介しました。
容易に、データ転送が実現できるため、災害対策としてのバックアップの用途で利用することも可能です。