AWS CLI を使用して、AWS アカウント間で S3 バケットの内容をコピーすることはできますか? 同じアカウント内のバケット間でコピー/同期できることはわかっていますが、古い AWS アカウントの内容を新しいアカウントに取得する必要があります。AWS CLI に 2 つのプロファイルを設定しましたが、1 つのコピー/同期コマンドで両方のプロファイルを使用する方法がわかりません。
4 に答える
とてもシンプル。まあ言ってみれば:
古い 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_name
、account-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_acount
old@aws.com
お役に立てれば。
はい、できます。最初に 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 ではなく) のみを指定する必要があります。