

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

# チュートリアル: オンプレミスストレージから 間で Amazon S3 にデータを転送する AWS アカウント
<a name="s3-cross-account-transfer"></a>

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

**重要**  
このチュートリアルのメソッド AWS アカウント を使用して 間でデータを転送するのは、Amazon S3 が DataSync 転送場所の 1 つである場合にのみ機能します。

## 概要:
<a name="s3-cross-account-overview"></a>

特に組織のリソースを管理する個別のチームがいる場合は AWS アカウント、異なる 間でデータを転送する必要があることは珍しくありません。DataSync を使ったクロスアカウント転送は次のようになります。
+ **ソースアカウント**: ネットワークリソースを管理する AWS アカウント ための 。これは、DataSync エージェントを有効化するアカウントです。
+ **送信先アカウント**: データ転送先の S3 バケットを管理する AWS アカウント ための 。

このようなシナリオを以下に図表で示します。

![\[オンプレミスストレージシステムからインターネット経由で Direct Connect に接続するデータの移動に関する DataSync シナリオの例 AWS。データは最初に 1 つ AWS アカウント (ソースアカウント) に転送され、最後に別の AWS アカウント (送信先アカウント) の Amazon S3 バケットに転送されます。\]](http://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/images/s3-cross-account-diagram.png)


## 前提条件: ソースアカウントに必要なアクセス許可
<a name="onprem-s3-cross-account-required-permissions-source"></a>

ソースには AWS アカウント、この種のクロスアカウント転送で考慮すべきアクセス許可のセットが 2 つあります。
+ ユーザーに DataSync の使用を許可する*ユーザーのアクセス許可* (ユーザーまたはストレージの管理者である場合があります)。このアクセス許可があると、DataSync のロケーションとタスクを作成できます。
+ DataSync に送信先アカウントのバケットにデータを転送することを許可する *DataSync のサービスのアクセス許可*。

------
#### [ User permissions ]

DataSync のロケーションとタスクを作成するには、送信元アカウントで少なくとも次のアクセス許可を IAM ロールに追加します。ロールにアクセス許可を追加する方法については、「[creating](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) or [modifying](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) an IAM role」を参照してください。

****  

```
{
    "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",
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMPermissions",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:ListRoles",
                "iam:CreatePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:role/DataSync-*"
        },
        {
            "Sid": "IAMAttachRolePermissions",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:role/DataSync-*",
            "Condition": {
            "ArnLike": {
                "iam:PolicyARN": [
                   "arn:aws:iam::111122223333:policy/DataSync-*",
                   "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess",
                   "arn:aws:iam::aws:policy/service-role/AWSDataSyncFullAccess"
                ]
            }
          }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "datasync.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

**ヒント**  
*ユーザーのアクセス許可* を設定するときは、[AWSDataSyncFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-awsdatasyncfullaccess) の使用を検討します。これは、ユーザーに DataSync へのフルアクセスと依存関係への最小限のアクセスを提供する AWS マネージドポリシーです。

------
#### [ DataSync service permissions ]

DataSync サービスでは、送信先アカウントのバケットにデータを転送するには、ソースアカウントに次のアクセス許可が必要です。

[IAM ロールを作成する](#s3-cross-account-create-iam-role-source-account)場合に、DataSync にこれらのアクセス許可を追加する手順については、このチュートリアルの後半で説明します。また、このロール (`source-datasync-role`) は、[送信先バケットのポリシー](#s3-cross-account-update-s3-policy-destination-account)内や [DataSync の送信先ロケーションの作成](#s3-cross-account-create-datasync-destination)時にも指定します。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject",
        "s3:GetObjectTagging",
        "s3:PutObjectTagging"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    }
  ]
}
```

------

## 前提条件: 必要な送信先アカウントのアクセス許可
<a name="onprem-s3-cross-account-required-permissions-destination"></a>

送信先アカウントでは、*ユーザーのアクセス許可*により、ユーザーが送信先バケットのポリシーを更新でき、そのアクセスコントロールリスト (ACL) を無効にできる必要があります。これらの特定のアクセス許可の詳細については、「[https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)[https://docs.aws.amazon.com/AmazonS3/latest/userguide/](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)」を参照してください。

## ステップ 1: ソースアカウントで DataSync エージェントを作成する
<a name="s3-cross-account-deploy-agent"></a>

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

**注記**  
このチュートリアルの手順は、使用するすべてのタイプのエージェントとサービスエンドポイントに適用できます。

**DataSync エージェントを作成するには**

1. オンプレミスのストレージ環境に [DataSync エージェントをデプロイ](deploy-agents.md)します。

1. エージェントが通信に使用する[サービスエンドポイントを選択します](choose-service-endpoint.md) AWS。

1. ソースアカウントで[エージェントを有効化](activate-agent.md)します。

## ステップ 2: ソースアカウントで送信先バケットへのアクセス用に DataSync IAM ロールを作成する
<a name="s3-cross-account-create-iam-role-source-account"></a>

ソースアカウントには、送信先アカウントのバケットにデータを転送するためのアクセス許可を DataSync に付与する IAM ロールが必要です。

データはアカウント間で転送されるため、このロールは手動で作成する必要があります (DataSync は同じアカウント内で転送する場合はコンソールでこのロールを作成できます)。

### DataSync の IAM ロールを作成する
<a name="s3-cross-account-create-iam-role"></a>

DataSync を使用して、IAM ロールを信頼できるエンティティとして作成します。

**IAM ロールを作成するには**

1. ソースアカウント AWS マネジメントコンソール で にログインします。

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

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

1. **[信頼されたエンティティを選択]** ページで、**[信頼されたエンティティタイプ]** に **[AWS のサービス]** を選択します。

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

1. **[アクセス許可を追加]** ページで **[次へ]** を選択してください。

1. ロール名を入力し、**[ロールの作成]** を選択します。

詳細については、*IAM* [ユーザーガイドの AWS のサービス 「 (コンソール) のロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)の作成」を参照してください。

### DataSync IAM ロールにアクセス許可を追加する
<a name="s3-cross-account-attach-custom-policy"></a>

作成した IAM ロールには、送信先アカウントにある S3 バケットへのデータ転送を DataSync に許可するアクセス許可が必要です。

**IAM ロールにアクセス許可を追加するには**

1. IAM コンソールの [**ロール**] ページで、作成したロールを検索して、その名前を選択します。

1. [データセットの詳細] ページが開くので、**[アクセス許可]** タブを選択します。**[アクセス許可の追加]** を選択し、次いで **[インラインポリシーの作成]** を選択します。

1. **[JSON]** タブを選択し、次の操作を行います。

   1. 以下の JSON をポリシーエディタに貼り付けます。
**注記**  
`aws:ResourceAccount` の値は、ポリシーで指定された Amazon S3 バケットを所有するアカウント ID である必要があります。

------
#### [ JSON ]

****  

      ```
      {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket",
                   "s3:ListBucketMultipartUploads"
               ],
               "Effect": "Allow",
               "Resource": "arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-destination-bucket/*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "123456789012"
                   }
               }
           }
       ]
      }
      ```

------

   1. `amzn-s3-demo-destination-bucket` の各インスタンスを、転送先アカウントの S3 バケットの名前に置き換えます。

1. **[次へ]** をクリックします。ポリシーの名前を入力し、**[ポリシーの作成]** を選択します。

## ステップ 3: 送信先アカウントで S3 バケットポリシーを更新する
<a name="s3-cross-account-update-s3-policy-destination-account"></a>

送信先アカウントで、ソースアカウントに作成した [DataSync IAM ロール](#s3-cross-account-create-iam-role-source-account)を含めるように送信先 S3 バケットポリシーを変更します。

**開始する前に**: 自分が[送信先アカウントに必要なアクセス許可](#onprem-s3-cross-account-required-permissions-destination)を持っていることを確認します。

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

1. で AWS マネジメントコンソール、送信先アカウントに切り替えます。

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

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

1. バケットの詳細ページで、[**アクセス許可**] タブを選択します。

1. **[バケットポリシー]** で **[編集]** を選択し、次の操作を行って S3 バケットポリシーを変更します。

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

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "DataSyncCreateS3LocationAndTaskAccess",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::111122223333: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:::amzn-s3-demo-destination-bucket",
              "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
          }
        ]
      }
      ```

------

   1. `source-account`の各インスタンスを、転送元の AWS アカウント ID に置き換えます。

   1. `source-datasync-role` を、[ソースアカウントで DataSync 用に作成した IAM ロール](#s3-cross-account-create-iam-role-source-account)に置き換えます。

   1. `amzn-s3-demo-destination-bucket` の各インスタンスを、転送先アカウントの S3 バケットの名前に置き換えます。

1. **[Save changes]** (変更の保存) をクリックします。

## ステップ 4: 転送先アカウントで、S3 バケットの ACL を無効化する
<a name="s3-cross-account-disable-acls-destination-account"></a>

S3 バケットにコピーするデータはすべて転送先アカウントに属していることが重要です。このアカウントがデータを所有していることを確認するには、バケットのアクセスコントロールリスト (ACL) を無効化します。詳細については、「*Amazon S3 ユーザーガイド*」の「[オブジェクトの所有権のコントロールとバケットに対する ACL の無効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)」を参照してください。

**送信先バケットの ACL を無効にするには**

1. 転送先アカウントで S3 コンソールにログインしたまま、データの転送先の S3 バケットを選択します。

1. バケットの詳細ページで、[**アクセス許可**] タブを選択します。

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

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

1. **[Save changes]** (変更の保存) をクリックします。

## ステップ 5: ソースアカウントで、オンプレミスストレージ用の DataSync 送信元ロケーションを作成する
<a name="s3-on-prem-cross-account-create-source-location"></a>

ソースアカウントで、データ転送元のオンプレミスストレージシステムの [DataSync ソースロケーション](working-with-locations.md)を作成します。このロケーションでは、ソースアカウントで[有効化したエージェント](#s3-cross-account-deploy-agent)を使用します。

## ステップ 6: ソースアカウントで、S3 バケットの DataSync 転送先ロケーションを作成する
<a name="s3-cross-account-create-datasync-destination"></a>

ソースアカウントにいる間に、データの転送先となる S3 バケット用のロケーションを作成します。

**開始する前に**: 自分が[ソースアカウントに必要なアクセス許可](#onprem-s3-cross-account-required-permissions-source)を持っていることを確認します。

DataSync のコンソールインターフェイスからはクロスアカウントのロケーションを作成できないため、これらの手順では、`create-location-s3` コマンドを実行して送信先ロケーションを作成する必要があります。コンソールから直接起動するブラウザベースの事前認証済みシェルを使用して AWS CloudShell、 コマンドを実行することをお勧めします。CloudShell では、 AWS CLI コマンドラインツールをダウンロードまたはインストール`create-location-s3`することなく、 のようなコマンドを実行できます。

**注記**  
CloudShell 以外のコマンドラインツールを使用して次の手順を実行するときは、[AWS CLI プロファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) が同じ IAM ロールを使用しており、それにはソースアカウントで DataSync を使用するときに[必要なユーザーのアクセス許可](#onprem-s3-cross-account-required-permissions-source)が含まれていることを確認します。

**CloudShell を使用して DataSync 転送先の場所を作成するには**

1. ソースアカウントにいる間に、次のいずれかを実行してコンソールから CloudShell を起動します。
   + コンソールナビゲーションバーで、CloudShell アイコンを選択します。これは検索ボックスの右側にあります。
   + コンソールのナビゲーションバーにある検索ボックスを使用して **CloudShell** を検索し、**[CloudShell]** オプションを選択します。

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

   ```
   aws datasync create-location-s3 \
     --s3-bucket-arn arn:aws:s3:::amzn-s3-demo-destination-bucket \
     --s3-config '{
       "BucketAccessRoleArn":"arn:aws:iam::source-user-account:role/source-datasync-role"
     }'
   ```

1. `amzn-s3-demo-destination-bucket` を、転送先アカウントの S3 バケットの名前に置き換えます。

1. `source-user-account` を転送元アカウントの AWS アカウント ID に置き換えます。

1. `source-datasync-role` を、[ソースアカウントで作成した DataSync IAM ロール](#s3-cross-account-create-iam-role-source-account)に置き換えます。

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

   コマンドが次のような DataSync 場所 ARN を返せば、場所は正常に作成されました。

   ```
   {
     "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890"
   }
   ```

1. 左側のナビゲーションペインで **[データ転送]** を展開し、**[ロケーション]** を選択します。

ソースアカウントから、送信先アカウントのバケット用に作成した S3 ロケーションを確認できます。

## ステップ 7: ソースアカウントで DataSync タスクを作成して開始する
<a name="s3-cross-account-create-start-datasync-task"></a>

DataSync タスクを開始してデータを転送する前に、これまでに実行した手順をおさらいしましょう。
+ ソースアカウントで DataSync エージェントを作成しました。このエージェントはオンプレミスのストレージシステムから読み取ることができ、DataSync サービスと通信することができます。
+ ソースアカウントで、DataSync が送信先アカウントの S3 バケットにデータを転送することを許可する IAM ロールを作成しました。
+ 送信先アカウントで、DataSync が S3 バケットにデータを転送できるようにバケットを設定しました。
+ 転送元アカウントで、転送用の DataSync 転送元と転送先の場所を作成しました。

**DataSync タスクを作成して開始するには**

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

1. **[転送元ロケーションの設定]** ページで、**[既存のロケーションを選択]** を選択します。データのコピー元である転送元ロケーション (オンプレミスストレージ) を選択し、**[次へ]** を選択します

1. **[転送先ロケーションの設定]** ページで **[既存のロケーションを選択]** を選択します。データのコピー先である転送先ロケーション (転送先アカウントの S3 バケット) を選択し、**[次へ]** を選択します。

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

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

1. タスクの詳細ページで、**[開始]** を選択し、次のいずれかを選択します。
   + 変更せずにタスクを実行するには、**[デフォルトで開始]** を選択します
   + 実行前にタスクを変更するには、[**優先オプションで開始**] を選択します。

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

## 関連リソース
<a name="s3-cross-account-create-start-datasync-task"></a>

このチュートリアルで行った内容の詳細については、以下を参照してください。
+ [のロールの作成 AWS のサービス (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)
+ [ロールの信頼ポリシーの変更 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)
+ [Amazon S3 コンソールを使用したバケットポリシーの追加](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)
+ [を使用して S3 の場所を作成する AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-location-s3.html)