チュートリアル:オンプレミスストレージから Amazon S3 へのデータ転送 AWS アカウント - AWS DataSync

2023 年 12 月 7 日より、バージョン 1 DataSync のエージェントは廃止されます。 DataSync コンソールの [エージェント] ページをチェックして、影響を受けるエージェントがいないか確認してください。その場合は、データ転送やストレージ検出の中断を避けるため、その前にそれらのエージェントを交換してください。さらにサポートが必要な場合は、お問い合わせくださいAWS Support

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

チュートリアル:オンプレミスストレージから Amazon S3 へのデータ転送 AWS アカウント

AWS DataSyncオンプレミスストレージで使用する場合、通常、AWSAWS アカウントエージェントと同じストレージサービスにデータをコピーします。 DataSync ただし、別のアカウントに関連付けられている Amazon S3 バケットにデータを転送する必要がある場合もあります。

重要

AWS アカウントこのチュートリアルの方法によるデータのコピーは、Amazon S3 DataSync が転送場所の 1 つである場合にのみ機能します。

概要

異なるチーム間でデータを転送する必要があることは珍しくありません。特にAWS アカウント、組織のリソースを管理するチームが別にある場合はそうです。 DataSync を使用したクロスアカウント転送は次のようになります。

  • ソースアカウント:AWS アカウントネットワークリソースを管理するためのものです。 DataSyncこのアカウントでエージェントをアクティベートします。

  • 送信先アカウント:データ転送先の S3 AWS アカウント バケットを管理するためのものです。

次の図は、このようなシナリオを示しています。

オンプレミスのストレージシステムから、 DataSync AWS Direct ConnectAWSインターネット経由の接続を介してにデータを移動するシナリオの例です。データはまず一方のアカウント AWS アカウント (ソースアカウント) に転送され、最後に別のアカウント AWS アカウント (転送先アカウント) の Amazon S3 バケットに転送されます。

必要なアクセス許可

始める前に、転送元と転送先に S3 AWS アカウント バケットへのクロスアカウント転送を完了するための適切な権限があることを確認してください。

ソースアカウントに必要な権限

AWS アカウントソース側では、この種のクロスアカウント転送で考慮すべき権限セットが 2 つあります。1 つの権限セットは、 DataSync 転送タスクの作成と開始を担当するユーザ (ストレージ管理者など) に対するものです。もう 1 つの権限セットは、 DataSync サービスがユーザーに代わって転送先アカウントの S3 バケットにオブジェクトを転送することを許可します。

User permissions

DataSyncこのチュートリアルを進める際に使用するには、ソースアカウントに以下の権限が必要です。

  • datasync:CancelTaskExecution

  • datasync:CreateLocation*

  • datasync:CreateTask

  • datasync:DescribeLocation*

  • datasync:DescribeTask

  • datasync:DescribeTaskExecution

  • datasync:ListLocations

  • datasync:ListTasks

  • datasync:ListTaskExecutions

  • datasync:StartTaskExecution

  • iam:AttachRolePolicy

  • iam:CreateRole

  • iam:CreatePolicy

  • iam:ListRoles

  • iam:PassRole

  • s3:GetBucketLocation

  • s3:ListAllMyBuckets

  • s3:ListBucket

ヒント

ユーザー権限については、AWSDataSyncFullAccessAWS DataSync 依存関係へのフルアクセスと最小限アクセスを提供する管理ポリシーの使用を検討してください。この管理ポリシーには、デフォルトで転送タスクロギング機能もあります。

DataSync permissions

DataSync ユーザーに代わって宛先アカウントの S3 バケットにデータを書き込む権限が必要です。ソースアカウントに、これを実行できる AWS Identity and Access Management(IAM) ロールを作成します。次に、 DataSync 宛先ロケーションを作成するときに、このロールを指定します。

移行先アカウントに必要な権限

宛先にはAWS アカウント、S3 バケットのアクセスコントロールリスト (ACL) を無効にし、バケットのポリシーを更新する権限が必要です。これらの特定の権限の詳細については、Amazon S3 ユーザーガイドを参照してください

ステップ 1: DataSync ソースアカウントでエージェントを作成する

開始するには、オンプレミスのストレージシステムから読み取り、 DataSync 通信できるエージェントを作成する必要があります。AWSこのプロセスには、オンプレミスストレージ環境へのエージェントのデプロイと、ソースでのエージェントの有効化が含まれます。AWS アカウント

注記

このチュートリアルの手順は、使用するあらゆるタイプのエージェントとサービスエンドポイントに適用されます。

ステップ 2: ソースアカウントで、 DataSync オンプレミスストレージのソースロケーションを作成します。

ソースアカウントで、DataSync データ転送元のオンプレミスストレージシステムのソースロケーションを作成します。このロケーションでは、ソースアカウントでアクティブ化したエージェントを使用する必要があります。

ステップ 3: ソースアカウントで、次の IAM ロールを作成します。 DataSync

ソースアカウントには、ユーザーに代わって移行先アカウントの S3 DataSync バケットに書き込む権限を付与する IAM ロールが必要です。

通常、 DataSync コンソールで S3 バケットの転送場所を作成すると、 DataSync そのバケットに書き込むための適切な権限を持つロールを自動的に作成して引き受けることができます。ただし、転送はアカウント間で行うため、ロールは手動で作成する必要があります。

IAM ロールを作成します。

DataSync 信頼されたエンティティとして IAM ロールを作成します。

IAM ロールを作成するには
  1. AWS Management Consoleソースアカウントでにログインします。

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

  3. 左側のナビゲーションペインの [アクセス管理] で [ロール] を選択し、[ロールの作成] を選択します。

  4. 「信頼されるエンティティの選択」 ページの「信頼されたエンティティタイプ」で、を選択しますAWS のサービス

  5. [ユースケース] DataSyncでは、ドロップダウンリストから選択してを選択しますDataSync[次へ] をクリックします。

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

  7. ロールに名前を付け、[ロールを作成] を選択します。

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

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

作成した IAM ロールには、宛先アカウントの S3 DataSync バケットへの書き込みを許可するポリシーが必要です。

IAM ロールにカスタムポリシーをアタッチするには
  1. IAM コンソールの Roles ページで、作成したロールを検索し、その名前を選択します。

  2. ロールの詳細ページで、「権限」タブを選択します。[権限の追加] を選択し、[インラインポリシーの作成] を選択します。

  3. JSON タブを選択し、次の操作を行います。

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

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::destination-bucket" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::destination-bucket/*" } ] }
    2. destination-bucketの各インスタンスを、移行先アカウントの S3 バケットの名前に置き換えます。

  4. [次へ] をクリックします。ポリシーに名前を付け、[ポリシーの作成] を選択します。

ステップ 4: 移行先アカウントで S3 バケットの ACL を無効にします。

S3 バケットにコピーするデータはすべて宛先アカウントに属していることが重要です。このアカウントがデータを所有していることを確認するには、バケットのアクセスコントロールリスト (ACL) を無効にします。

S3 バケットの ACL を無効にするには
  1. でAWS Management Console、宛先アカウントに切り替えます。

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

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

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

  5. バケットの詳細ページで、[権限] タブを選択します。

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

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

  8. [変更を保存] を選択します。

詳細については、Simple Storage Service (Amazon S3) ユーザーガイドオブジェクトの所有権のコントロールとバケットに対する ACL の無効化を参照してください。

ステップ 5: 移行先アカウントで S3 バケットポリシーを更新します。

移行先アカウントで、移行元アカウントで作成した DataSync IAM ロールが含まれるように、移行先の S3 バケットポリシーを変更します。

更新したバケットポリシー (以下の手順で提供) には 2 つのプリンシパルが含まれています。

デスティネーション S3 バケットポリシーを更新するには
  1. 宛先アカウントで S3 コンソールにログインしたまま、データをコピーする S3 バケットを選択します。

  2. バケットの詳細ページで、[権限] タブを選択します。

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

    1. エディターの内容を更新して、以下のポリシーステートメントを含めてください。

      { "Version": "2008-10-17", "Statement": [ { "Sid": "DataSyncCreateS3LocationAndTaskAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account:role/source-datasync-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:::destination-bucket", "arn:aws:s3:::destination-bucket/*" ] }, { "Sid": "DataSyncCreateS3Location", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account:role/source-user-role" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::destination-bucket" } ] }
    2. source-accountの各インスタンスをソースアカウントの AWS アカウント ID に置き換えます。

    3. source-datasync-role DataSync ソースアカウントで作成した IAM ロールに置き換えます

    4. destination-bucketの各インスタンスを、移行先アカウントの S3 バケットの名前に置き換えます。

    5. DataSync使用に必要なユーザー権限を含む IAM source-user-role ロールに置き換えてください。

  4. [変更を保存] を選択します。

ステップ 6: ソースアカウントで S3 DataSync バケットのデスティネーションロケーションを作成します。

ソースアカウントでは、移行先アカウントに S3 DataSync バケットのロケーションを作成する必要があります。

DataSync コンソールでは、別のストレージリソースのロケーションを作成することはできませんAWS アカウント。ただし、AWS CloudShellコンソールから直接起動するブラウザベースの事前認証済みシェルを使用してこれを行うことができます。 CloudShell コマンドラインツールをダウンロードまたはインストールしなくても、AWS CLIこのチュートリアルを完了するためのコマンドを実行できます。

注記

以外のコマンドラインツールを使用して次の手順を実行する場合は CloudShell、宛先の S3 AWS CLIsource-user-role バケットポリシーで指定したものと同じものがプロファイルで使用されていることを確認してください。詳細については、AWS Command Line Interface ユーザーガイドを参照してください。

DataSync を使用してデスティネーションロケーションを作成するには CloudShell
  1. でAWS Management Console、ソースアカウントに切り替えます。

  2. https://console.aws.amazon.com/datasync/ AWS DataSync でコンソールを開きます。

  3. 以下のいずれかを実行して起動します CloudShell。

    • CloudShell コンソールのナビゲーションバーのアイコンを選択します。これは検索ボックスの右側にあります。

    • CloudShellCloudShellコンソールナビゲーションバーの検索ボックスを使用してオプションを検索し、選択します。

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

    aws datasync create-location-s3 \ --s3-bucket-arn arn:aws:s3:::destination-bucket \ --s3-config '{ "BucketAccessRoleArn":"arn:aws:iam::source-user-account:role/source-datasync-role" }'
  5. 宛先アカウントの S3 destination-bucket バケットの名前に置き換えます。

  6. ソースアカウントの AWS アカウント ID source-user-account に置き換えます。

  7. source-datasync-roleソースアカウントで作成した DataSync IAM ロールに置き換えます

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

    DataSync コマンドが次のようなロケーション ARN を返した場合、ロケーションは正常に作成されました。

    { "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890" }
  9. 左側のナビゲーションペインで [データ転送] を展開し、[Locations] を選択します。

ソースアカウントから、作成した宛先アカウントの S3 バケットの場所を確認できます。

ステップ 6: ソースアカウントで、 DataSync 転送タスクを作成して開始します。

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

  • ソースアカウントでは、 DataSync エージェントをデプロイして有効化しました。エージェントはオンプレミスのストレージシステムから読み取り、AWS通信できます。

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

  • 移行先アカウントで、 DataSync バケットにアクセスしてデータを書き込めるように S3 バケットを設定しました。

  • ソースアカウントで、 DataSync 転送元と転送先のロケーションを作成しました。

DataSync 移管タスクを作成して開始するには
  1. DataSync ソースアカウントでコンソールを使用している状態で、左側のナビゲーションペインで [データ転送] を展開し、[タスク] と [タスクの作成] を選択します。

  2. ソースロケーションの設定」ページで、「既存のロケーションを選択」を選択します。データをコピーするソースの場所 (オンプレミスストレージ) を選択し、[次へ] をクリックします

  3. [コピー先の設定] ページで [既存の場所を選択] を選択します。データのコピー先の場所 (コピー先アカウントの S3 バケット) を選択し、[次へ] をクリックします

  4. [設定] ページで、タスクに名前を付けます。必要に応じて、Amazon CloudWatch ロググループの指定など、その他の設定を行います。[次へ] をクリックします。

  5. 確認ページで設定を確認し、[タスクを作成] を選択します。

  6. タスクの詳細ページで [開始] を選択し、次のいずれかを選択します。

    • 変更せずにタスクを実行するには、[既定で開始] を選択します。

    • 実行前にタスクを変更するには、[優先オプションで開始] を選択します。

タスクが終了したら、移行先アカウントの S3 バケットを確認します。ソースアカウントのバケットから移動されたデータが表示されるはずです。

関連リソース

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