チュートリアル: Amazon S3 から Amazon S3 にデータを転送するAWS アカウント - AWS DataSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Amazon S3 から Amazon S3 にデータを転送するAWS アカウント

WihAWS DataSyncでは、異なるに属する Amazon S3 バケット間でデータを移動できます。AWS アカウント。

重要

をまたがるデータのコピーAWS アカウントこのチュートリアルのメソッドの使用は Amazon S3 でのみ機能します。

概要

このチュートリアルでは、その方法を説明しています。AWS Identity and Access Management(IAM) とAWS Command Line Interface(AWS CLI) の作成を手伝ってくれる DataSync Amazon S3 から別のバケットにデータを転送するタスクAWS アカウント。

ヒント

S3 バケットも異なる場合は、このチュートリアルに従ってください。AWS リージョン。このプロセスは、いくつかの追加手順を除いて、ほとんど同じです。ただし、そのことを念頭に置いておいてください。 DataSync は、これらの種類の転送をサポートしていませんリージョンはデフォルトで無効になっています

この種のシナリオは次のようになります。

  • アカウント A: -AWS アカウントこれは、データをコピーする S3 バケットの管理に使用します。

  • アカウント B: -AWS アカウントこれは、データをコピーする S3 バケットの管理に使用します。

Transfers across accounts

次の図は、S3 バケットから別の S3 バケットにある別の S3 バケットにデータをコピーするシナリオを示しています。AWS アカウント。


                            例から始めることができます DataSync S3 バケットから 1 つのデータ移動シナリオAWS アカウント(アカウント A) 別のバケット内の S3 バケットにする前にAWS アカウント(アカウント B)。
Transfers across accounts and Regions

次の図は、S3 バケットから別の S3 バケットにある別の S3 バケットにデータをコピーするシナリオを示しています。AWS アカウントおよび地域。


                            例から始めることができます DataSync S3 バケットから 1 つのデータ移動シナリオAWS アカウント(アカウント A) とリージョンを別の S3 バケットにする前のリージョンAWS アカウント(アカウント B) とリージョン。

前提条件

クロスアカウント転送を容易にするための IAM 作業を開始する前に、まだ行っていない場合は、次の手順を実行します。

  1. コピーするオブジェクトの数を決定します。を使用するAmazon S3 Storage Lensをクリックして、バケット内のオブジェクトの数を調べます。

    ヒント

    S3 バケット間で転送する場合、 DataSync 1 タスクあたり 2,500 万個を超えるオブジェクトをコピーできません。バケットに 2,500 万を超えるオブジェクトがある場合は、いくつかのオプションをお勧めします。

  2. の作成 DataSync 送信元の場所データをコピーする S3 バケットのアカウント A を使用します。

  3. をセットアップするAWS CLIアカウント A では、AWS CLIアカウント B で S3 バケットの DataSync の送信先の場所を作成します。

ステップ 1: 用の IAM ロールを作成する DataSync アカウント A

提供する IAM ロールが必要です DataSync アカウント B で S3 バケットに書き込むアクセス許可。

バケットの場所を作成するときは、 DataSync は、そのバケットにアクセスするための適切な権限を持つロールを自動的に作成し、引き受けます。アカウント間で転送するため、ロールを手動で作成する必要があります。

詳細については、次を参照してください。向けのロールの作成AWS のサービス(コンソール)IAM ユーザーガイド

IAM ロールの作成

[] でロールの作成 DataSync 信頼されたエンティティとして。

IAM ロールを作成するには

  1. にログインします。AWS Management Consoleアカウント A

  2. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  3. 左のナビゲーションペインの [] のアクセス管理で、ロールとし、選ぶ ロールの作成

  4. リポジトリの []信頼されたエンティティを選択するページ、信頼されたエンティティタイプで、AWS のサービス

  5. を使用する場合ユースケースで、DataSyncドロップダウンリストで、[] を選択します。DataSync。[次へ] を選択します。

  6. [Add permissions] (アクセス許可を追加する) ページで Next (次へ) を選択します。

  7. ロールに名前を付けて、ロールの作成

IAM ロールにカスタムポリシーをアタッチします。

IAM ロールには、許可するポリシーが必要です。 DataSync アカウント B の S3 バケットに書き込むには、

IAM ロールにカスタムポリシーを添付するには

  1. リポジトリの []ロールIAM コンソールで、先ほど作成したロールを検索して名前を選択します。

  2. ロールの詳細ページで、アクセス許可[] タブ。選択アクセス許可を追加するそれからインラインポリシーの作成

  3. [JSON[] タブで、次の操作を行います。

    1. 次の JSON をポリシーエディタに貼り付けます。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::account-b-bucket" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::account-b-bucket/*" } ] }
    2. 置換account-b-bucketアカウント B の S3 バケットの名前を指定します。

  4. [Review policy] (ポリシーの確認) を選択します。

  5. ポリシーに名前を付けて、ポリシーの作成

ステップ 2: アカウント B で S3 バケットの ACL を無効にする

S3 バケットにコピーするすべてのデータがアカウント B に属していることは重要です。アカウント B がデータの所有者であることを確認するには、バケットのアクセス制御リスト (ACL) を無効にします。詳細については、Simple Storage Service (Amazon S3) ユーザーガイドオブジェクトの所有権のコントロールとバケットに対する ACL の無効化を参照してください。

S3 バケットの ACL を無効にするには

  1. 左AWS Management Consoleで、アカウント B に切り替えます。

  2. https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

  3. 左側のナビゲーションペインで、[Buckets] (バケット) を選択します。

  4. バケットリストで、データの転送先となる S3 バケットを選択します。

  5. バケットの詳細ページで、アクセス許可[] タブ。

  6. オブジェクトの所有者で [編集] を選択します。

  7. まだ選択されていない場合は、ACL 無効 (推奨)オプション。

  8. [Save changes] (変更の保存) を選択します。

ステップ 3: アカウント B の S3 バケットポリシーを更新します。

アカウント B で、S3 バケットポリシーを変更して、用に作成した IAM ロールへのアクセスを許可します。 DataSync アカウント A で

更新されたポリシー (次の手順で提供) には、2 つのプリンシパルが含まれます。

  • 最初のプリンシパルは、アカウント A で作成した IAM ロールを指定します。 DataSync S3 バケットに書き込む必要があります。

  • 2 番目のプリンシパルは、アカウント A の IAM ユーザー名を指定します。これにより、 DataSync を使用して S3 バケットの宛先AWS CLI(この手順はステップ 4 で行います)。

    注記

    コンソールにログインし、AWS CLIIAM ロールを使用して、2 番目のプリンシパルのユーザー名の代わりにそのロールを指定します。

S3 バケットポリシーを更新するには

  1. S3 コンソールでアカウント B を使用している間に、データのコピー先となる S3 バケットを選択します。

  2. バケットの詳細ページで、アクセス許可[] タブ。

  3. []バケットポリシーで、編集および次の手順を実行して S3 バケットポリシーを変更します。

    1. エディタの内容を更新して、次のポリシーステートメントを含めます。

      { "Version": "2008-10-17", "Statement": [ { "Sid": "DataSyncCreateS3LocationAndTaskAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-a-id:role/name-of-role" }, "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:::account-b-bucket", "arn:aws:s3:::account-b-bucket/*" ] }, { "Sid": "DataSyncCreateS3Location", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-a-id:user/name-of-user" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::account-b-bucket" } ] }
    2. 置換account-a-idとAWS アカウントアカウント A の数

    3. 置換name-of-role用に作成した IAM ロールを使用する DataSync アカウント A (ステップ 1 に戻って)。

    4. 置換account-b-bucketアカウント B の S3 バケットの名前を指定します。

    5. 置換name-of-userコンソールへのログインに使用する IAM ユーザー名を使用してアカウント A。

      代わりに IAM ロールを指定する場合は、Amazon リソースネーム (ARN) の形式を更新します。

      "arn:aws:iam::account-a-id:role/name-of-role"

  4. [Save changes] (変更の保存) を選択します。

ステップ 4: の作成 DataSync S3 バケットのデスティネーションロケーション

S3 バケットの場所を作成した後、 DataSync タスク。ただし、DataSync コンソールは、異なるアカウントでのロケーションの作成をサポートしていません。ロケーションを作成するには、AWS CLIタスクを実行する前に。

を作成するには DataSync CLI を使用した場所

  1. ターミナルを開きます。

  2. CLI プロファイルがアカウント A を使用するように設定されていることを確認してください。

  3. 次のコマンドをコピーします。

    aws datasync create-location-s3 --s3-bucket-arn arn:aws:s3:::account-b-bucket --s3-config '{"BucketAccessRoleArn":"arn:aws:iam::account-a-id:role/name-of-role"}'
  4. 置換account-b-bucketアカウント B の S3 バケットの名前を指定します。

  5. 置換account-a-idとAWS アカウントアカウント A の数

  6. 置換name-of-role用に作成した IAM ロールを使用する DataSync アカウント A (ステップ 1 に戻って)。

  7. アカウント B のバケットがアカウント A のバケットとは異なるリージョンにある場合は、--regionコマンド末尾にあるオプションを使用して、アカウント B バケットが存在するリージョンを指定します。例えば、--region us-west-1です。

  8. コマンドを実行します。

    コマンドが DataSync ロケーション ARN これと同様に、ロケーションを正常に作成しました。

    { "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890" }
  9. で、アカウント A に戻ります。AWS Management Console。

  10. を開く DataSync コンソールでhttps://console.aws.amazon.com/datasync/

  11. 左のナビゲーションペインで、[] を選択します。Locations

    CLI で作成したアカウント B の S3 バケットの場所を確認できます。

ステップ 5: 作成して開始する DataSync 仕事

データを移動する前に、これまでに行ったことを要約しましょう。

  • アカウント A に IAM ロールを作成し、 DataSync アカウント B の S3 バケットにデータを書き込むことができます。

  • アカウント B で S3 バケットを設定して、 DataSync タスクは動作します。

  • を作成した DataSync アカウント A の送信元と送信先の場所

を作成し、起動するには DataSync 仕事

  1. まだ使用中 DataSync アカウント A のコンソールで、タスク左のナビゲーションペインで、タスクの作成

    注記

    ステップ 3 で S3 バケットポリシーで指定したアカウント A の同じ IAM ユーザー名 (またはロール) を使用してコンソールにログインする必要があります。

  2. アカウント B のバケットがアカウント A のバケットとは異なるリージョンにある場合、ナビゲーションペインでアカウント B バケットのリージョンを選択します。

    開始する必要があります DataSync 接続エラーを回避するために、宛先ロケーションのリージョン(この場合はアカウント B バケット)からタスクを実行します。

  3. リポジトリの []送信元の場所を設定する[] ページで、[]既存の場所を選択する

  4. リージョン間の転送の場合は、アカウント A バケットが存在するリージョンを選択します。

  5. データのコピー元の場所 (アカウント A の S3 バケット) を選択し、

  6. リポジトリの []送信先の場所を設定する[] ページで、[]既存の場所を選択する。データをコピーするコピー先の場所 (アカウント B の S3 バケット) を選択し、

  7. リポジトリの []設定の構成[] ページで、タスクに名前を付けます。必要に応じて、Amazon の指定などの追加設定を構成します。 CloudWatch ロググループ。[次へ] を選択します。

  8. リポジトリの []確認[] ページで、設定を確認し、[] を選択しますタスクの作成

  9. タスクの詳細ページで、[] を選択します。スタート[] を選択し、以下のいずれかを選択します。

    • 変更せずにタスクを実行するには、デフォルトから始める

    • タスクを実行する前に変更するには、オプションを上書きすることから始める

タスクが終了したら、アカウント B の S3 バケットを確認します。アカウント A バケットのデータが表示されます。

関連リソース

このチュートリアルで行った内容の詳細については、次のトピックを参照してください。