Amazon-Web-Services

如何使用命令行在不同 aws 帳戶的 s3 儲存桶之間傳輸數據

  • March 8, 2016

如何使用 s3cmd 在不同 aws 帳戶的 s3 儲存桶之間傳輸數據?

command will be like this: s3cmd rsync s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive 

但是那麼它將如何辨識第二個儲存桶環境呢?這樣做的正確方法是什麼?

您只需在 S3 儲存桶策略中授權您的 IAM 使用者訪問 buvket,如下所示:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "whatever",
           "Effect": "Allow",
           "Principal": {
               "AWS": [
                   "<ARN OF YOUR IAM USER>"
               ]
           },
           "Action": [
               "s3:ListBucket",
               "s3:GetBucketLocation",
               "s3:GetObject"
           ],
           "Resource": [
               "arn:aws:s3:::<YOUR BUCKET NAME>", 
               "arn:aws:s3:::<YOUR BUCKET NAME>/*"
           ]
       }
   ]
}

然後,由於這是跨賬戶,您還必須允許您的 IAM 使用者執行 S3 呼叫,方法是將策略附加到您的 IAM 使用者,如下所示:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "whateveryoulike",
           "Effect": "Allow",
           "Action": [
               "s3:*"
           ],
           "Resource": [
               "arn:aws:s3:::<BUCKET_NAME>",
               "arn:aws:s3:::<BUCKET_NAME>/*"
           ]
       }
   ]
}

只需配置您的 cli,您就可以訪問您的儲存桶跨帳戶。

引用自:https://serverfault.com/questions/715553