Amazon S3 のオブジェクト所有権を別の AWS アカウントに移行したいです。どのようにすればよいですか?

AWS サポートは Amazon S3 オブジェクトをコピーしたり、AWS アカウントのいかなる設定についても操作したりすることはできません。AWS アカウントを Amazon.com アカウントから分離したり、異なる AWS アカウント間でリソースを移動したりすることもできません。しかし、Resource-based ポリシーを適用し、IAM ユーザー (または、グループ) ポリシーによって AWS アカウント間でリソースへアクセスする権限を委譲することで、手動で Amazon S3 のリソースを新しい AWS アカウントに移行することは可能です。

S3 コピー機能を使うことで Amazon S3 オブジェクトを別のアカウントへコピーすることが可能です。Amazon S3 の アクセスコントロールリスト(ACL) または バケットポリシー を使用して、元 AWS アカウントに、対象 AWS アカウントへのアクセスを与える必要があります。例えば、あるAWS アカウントでバケットポリシーを作成し、別のアカウントにAmazon S3 のリソースへアクセスを付与するには次のようなステップで行います。

注:次の元 AWS アカウントで作成されたバケットポリシーは、対象 AWS アカウントに対して、指定された S3 リソースそれぞれへのフルアクセス許可を付与します。本番環境では、最小限の特権アクセスを原則とする、より制限された アクションパラメータを指定することを考慮してください。対象 AWS アカウントの許可されたリソースセクションにリソースを追加します。複数のリソースを記載する場合には、リソースの後にコンマを入れて次のリソースを記載してください。

まず、権限を付与する対象アカウントの 12 文字のアカウント ID を取得します。アカウント番号の確認方法の一例:

  1. 対象のアカウントにAWS マネジメントコンソールでサインインします。
  2. ナビゲーションバーで、[サポート]、[サポートセンター] の順にクリックします。
    アカウント番号 (例: 222222222222) がサポートセンターの右上に表示されます。

元のアカウントに戻り、コピーしたいバケットに次のバケットポリシーを貼り付けます。手順の詳細については、バケット許可の編集 を参照してください。

#Bucket policy in the source AWS account

{

     "Version":"2012-10-17",

     "Statement": [

          {

               "Sid": "DelegateS3Access",

               "Effect": "Allow",

               "Principal":{ "AWS"},

               "Action":"s3:*",

               "Resource": [

                    "arn:aws:s3:::mybucket/*",

                    "arn:aws:s3:::mybucket"

               ]

          }

     ]

}

権限付与先アカウントのユーザーやグループにポリシーをつけ、元アカウントのバケットへのアクセスできるようにします。ポリシーをグループに付与した場合、IAM ユーザーがそのグループに含まれていることを確認してください。

#User or group policy in the destination AWS account

{

     "Version":"2012-10-17",

     "Statement": {

          "Effect": "Allow",

          "Action":"s3:*",

          "Resource": [

               "arn:aws:s3:::mybucket",

               "arn:aws:s3:::mybucket/*",

               "arn:aws:s3:::mybucket",

               "arn:aws:s3:::mybucket/*"

          ]

     }

}

上記の手順が完了したら、AWS コマンドラインインターフェイス (CLI)cp、または sync コマンドを使用してオブジェクトをコピーできます。たとえば、次の aws s3 sync コマンドは元アカウントのバケットから別アカウントのバケットへコンテンツをコピーするために使用できます。

aws s3 sync s3://sourcebucket s3://destinationbucket

注:このコマンドを実行するためには、権限付与先のアカウントのユーザーに対して AWS CLI が適切に設定されており、かつ権限の付与元と付与先のバケットが同じ リージョンにある必要があります。 (別リージョンで実行するためには、 command-line オプションがあります。) AWS CLI の設定に関する情報は、AWS コマンドラインインターフェイスの設定 を参照してください。権限付与先のアカウントが 、s3://destinationbucket のファイルをコピーするためには、適切に許可されている必要があります。

別のアカウントのバケットに対するアクセス許可に関する詳細については、例: リソースベースのポリシーを使用して他のアカウントの Amazon S3 バケットへのアクセス権を委任する を参照してください。

ロールを使用して他の AWS アカウントのリソースへのアクセス権を委任する方法に関する詳細については、チュートリアル: IAM ロールを使用して AWS アカウント間のリソースへのアクセス権を委任する を参照してください。

クロスアカウントのバケットのアクセス許可を付与する方法の詳しいチュートリアルについては、例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与 を参照してください。

Amazon S3、 transfer、 AWS アカウント、 AWS CLI S3 の同期

Amazon S3 フォーラムの「Transfer ownership」


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。