13

AWS CLI を使用して、AWS アカウント間で S3 バケットの内容をコピーすることはできますか? 同じアカウント内のバケット間でコピー/同期できることはわかっていますが、古い AWS アカウントの内容を新しいアカウントに取得する必要があります。AWS CLI に 2 つのプロファイルを設定しましたが、1 つのコピー/同期コマンドで両方のプロファイルを使用する方法がわかりません。

4

4 に答える 4

20

とてもシンプル。まあ言ってみれば:

古い AWS アカウント = old@aws.com

新しい AWS アカウント = new@aws.com

次のように AWS コンソールにログインします。old@aws.com

選択したバケットに移動し、以下のバケット ポリシーを適用します。

{
  "Statement": [
    {
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket_name",
      "Principal": {
        "AWS": [
          "account-id-of-new@aws.com-account"
        ]
      }
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket_name/*",
      "Principal": {
        "AWS": [
          "account-id-of-new@aws.com-account"
        ]
      }
    }
  ]
}

私はそれを推測しbucket_nameaccount-id-of-new@aws.com-account1上記のポリシーであなたに明らかです

AWS-CLIここで、次の資格情報で実行していることを確認してくださいnew@aws.com

以下のコマンドを実行すると、コピーが魔法のように行われます。

aws s3 cp s3://bucket_name/some_folder/some_file.txt  s3://bucket_in_new@aws.com_acount/fromold_account.txt

もちろん、上記のコマンドでバケットからコピーしたものを保存するために使用されるnew@aws.com自分のバケットへの書き込み権限があることを確認してください。bucket_in_new@aws.com_acountold@aws.com

お役に立てれば。

于 2014-03-09T13:44:02.980 に答える
1

はい、できます。最初に 2 番目のアカウントで IAM ユーザーを作成し、特定の S3 バケットの読み取り/書き込み/一覧表示のアクセス許可を委任する必要があります。これを行ったら、この IAM ユーザーの資格情報を CLI に提供すると、機能します。

権限を委任する方法: IAM ユーザーへのクロスアカウント権限の委任 - AWS Identity and Access Management : http://docs.aws.amazon.com/IAM/latest/UserGuide/DelegatingAccess.html#example-delegate-xaccount-roles

Sample S3 policy for delegation:

{
   "Version": "2012-10-17",
   "Statement" : {
      "Effect":"Allow",
      "Sid":"AccountBAccess1",
      "Principal" : {
          "AWS":"111122223333"
      },
      "Action":"s3:*",
      "Resource":"arn:aws:s3:::mybucket/*"
   }
}

本番環境でこれを行う場合は、権限をより制限してください。バケットから別のバケットにコピーする必要がある場合。一方では、List と Get (Put ではなく) のみを指定する必要があります。

于 2014-03-08T02:52:38.637 に答える