我试图在不同的AWS账户上设置两个桶之间的同步。 我得到了CP的工作
@ubuntu:~$ s3cmd cp -v s3://src/dir/ s3://dest/folder --recursive
我是拥有/ src / dir的用户,我已经添加了
{ "Version": "2012-10-17", "Id": "Policy1477299702471", "Statement": [ { "Sid": "Stmt1477299696163", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::awsid:user/name" }, "Action": "s3:*", "Resource": "arn:aws:s3:::bucket/*" } ]}
testing存储桶上的存储桶权限策略。
现在我正在使用同步工作,因为使用s3 cp不推荐使用cron。
我试过了
user@ubuntu:~$ aws s3 sync --dryrun s3://src/ s3://dest/ --region eu-central-1
但我得到访问被拒绝。
fatal error: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
如果这是拥有该存储桶的用户,我如何才能拒绝访问? 并获得同步运行?
您的ListObjects错误的原因是您分配了访问您的存储桶( arn:aws:s3:::bucket/* )内容的权限,但是您没有授予存储桶本身的权限( arn:aws:s3:::bucket )。 ListObjects命令需要访问存储桶。
为了testing这个,我做了以下工作:
bucket-a bucket-b user-a -a,具有访问bucket-a权限 bucket-b添加了桶策略:
{ "Id": "CopyBuckets", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Action": "s3:*", "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-b", "arn:aws:s3:::bucket-b/*" ], "Principal": { "AWS": [ "arn:aws:iam::<account-a-id>:user/user-a" ] } } ] }
然后,我通过在帐户A中使用user-a来触发同步:
aws s3 sync s3://bucket-a s3://bucket-b --profile user-a
它工作成功。