AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
DataSync を使用してクロスアカウントの Amazon S3 ロケーションとの間でデータを転送する方法を教えてください。
AWS DataSync を使用してクロスアカウント Amazon Simple Storage Service (Amazon S3) バケットとの間でデータを転送しようとしています。
簡単な説明
AWS DataSync は、クロスアカウントでの S3 転送を完全にサポートしています。DataSync コンソールでタスクの実行を監視できます。
注: バケットが暗号化されており、AWS Key Management Service (AWS KMS) キー (SSE-KMS) とカスタマーマネージドキーによるサーバー側の暗号化を使用している場合は、追加の設定が必要です。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
ソースアカウントに IAM ロールを作成します。
クロスアカウント転送を実行するには、ソースアカウントには次の 2 セットのアクセス許可が必要です。
- DataSync を操作し、DataSync のロケーション、ロール、タスクを作成することをユーザーに許可するユーザーアクセス許可。
- DataSync が宛先アカウントバケットにデータを転送することを許可する DataSync アクセス許可。
IAM ロールを作成するソースアカウントにユーザーアクセス許可を付与するには、IAM ロールに次のポリシーをアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SourceUserRolePermissions", "Effect": "Allow", "Action": [ "datasync:CreateLocationS3", "datasync:CreateTask", "datasync:DescribeLocation*", "datasync:DescribeTaskExecution", "datasync:ListLocations", "datasync:ListTaskExecutions", "datasync:DescribeTask", "datasync:CancelTaskExecution", "datasync:ListTasks", "datasync:StartTaskExecution", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "datasync.amazonaws.com" ] } } } ] }
必要なアクセス許可を持つ DataSync IAM ロールをソースアカウントに作成するには、IAM ロールに次のポリシーをアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::destination-bucket" "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::destination-bucket/*" "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
注: ResourceAccount は、ポリシーで指定した Amazon S3 バケットを所有するアカウントのアカウント ID に置き換えます。
DataSync IAM ロールに次の信頼関係を追加します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
宛先のバケットポリシーを更新する
ソースアカウントから IAM ロールへのアクセスを許可するには、宛先アカウントの S3 バケットポリシーを変更します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DataSyncCreateS3LocationAndTaskAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:role/datasync-role-name" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::destination-bucket", "arn:aws:s3:::destination-bucket/*" ] } ] }
宛先バケットで ACL を無効にする
宛先アカウントで次の手順を実行します。
- Amazon S3 コンソールを開きます。
- 宛先バケットを選択します。
- [アクセス許可] タブの [オブジェクト所有権] で [編集] を選択します。
- [ACL 無効 (推奨)] を選択します。
- [変更を保存] を選択します。
DataSync のロケーションを作成する
ソースアカウントで次の手順を実行します。
- DataSync コンソールを開きます。
- ナビゲーションペインで [データ転送] を展開します。
- [ロケーション] を選択し、[ロケーションの作成] を選択します。
- [ロケーションタイプ] で [Amazon S3] を選択し、次に [汎用バケット] を選択します。
- [S3 URI] には、ロケーションに使用するバケットとプレフィックスを入力するか、選択します。
- [宛先に使用する S3 ストレージクラス] では、Amazon S3 が転送先である場合にオブジェクトが使用するストレージクラスを選択します。
- 作成したカスタム IAM ロールを選択します。
- (オプション) [新しいタグを追加] を選択し、Amazon S3 ロケーションにタグを付けます。
注: 使用するロケーション用のネームタグを作成することをおすすめします。 - [ロケーションを作成] を選択します。
- AWS CloudShell または AWS CLI で次のコマンドを実行し、宛先バケットの場所を作成します。
aws datasync create-location-s3 \ --s3-bucket-arn arn:aws:s3:::destination-bucket \ --s3-config BucketAccessRoleArn=arn:aws:iam::source-account-id:role/datasync-role-name \ --region destination-bucket-region
注: AWS DataSync コンソールでは、クロスアカウントロケーションを作成することはできません。
DataSync タスクを作成して実行する
注: クロスリージョン転送では、宛先バケットと同じ AWS リージョンのソースアカウントにタスクを作成します。
次の手順を実行します。
- ソースアカウントで DataSync コンソールを開きます。
- ナビゲーションペインで [データ転送] を展開します。
- [タスク] を選択し、[タスクの作成] を選択します。
- 宛先アカウントのバケットがソースアカウントのバケットとは異なるリージョンにある場合は、宛先バケットのリージョンを選択します。
- [ソースロケーションの設定] ページで次の操作を行います。
[既存の場所を選択] を選択します。
(複数リージョン間で転送する場合) [リージョン] ドロップダウンでソースバケットが置かれたリージョンを選択します。
[既存のロケーション] でデータの転送元となる S3 バケットのソースロケーションを選択し、[次へ] を選択します。 - [宛先ロケーションの設定] ページで次の操作を行います。
[既存の場所を選択] を選択します。
[既存のロケーション] で、データ転送先の S3 バケットでの宛先ロケーションを選択し、[次へ] を選択します。 - [設定の構成] ページで [タスクモード] を選択します。
注: Enhanced モードの使用をおすすめします。詳細については、「データ転送のタスクモードを選択する」を参照してください。 - タスクの名前を入力し、Amazon CloudWatch ロググループなどの追加設定を行います。
- [次へ] を選択します。
- [レビュー] ページで設定をレビューした後、[タスクを作成] を選択します。
- タスクの詳細ページで [開始] を選択し、次のいずれかを選択します。
変更せずにタスクを実行するには、[デフォルト設定で開始] を選択します。
タスクを実行する前に変更するには、[オプションを上書きして開始] を選択します。
関連情報
チュートリアル: 複数 AWS アカウントで Amazon S3 バケット間のデータを転送する
AWS DataSync を使用してカスタマーマネージド SSE-KMS 暗号化オブジェクトを複数 AWS アカウントとリージョン間で転送する
- 言語
- 日本語
