我一直在尝试按照以下说明将存储桶内容从S3复制到另一个存储桶:
http://blog.vizuri.com/how-to-copy/move-objects-from-one-s3-bucket-to-another-between-aws-accounts
我有一个目标存储桶(我想复制内容)和源存储桶。
在目的地,我使用以下用户的政策创建了一个新用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:GetObject"
],
"Resource":[
"arn:aws:s3:::to-destination/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::to-destination"
]
}
]
}
并创建了目标存储桶。
在源端,我对存储桶有以下策略:
{
"Version": "2008-10-17",
"Id": "Policy****",
"Statement": [
{
"Sid": "Stmt****",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "*****"
}
]
}
当我尝试使用aws cli复制源的内容到目的地时:
aws s3 sync s3://source-bucket-name s3://destination-bucket-name
我总是收到此错误
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
Completed 1 part(s) with ... file(s) remaining
我做错了什么?我的政策起草方式是否存在问题?
更新
我也尝试过这篇文章,建议更新源存储桶策略和目标存储区策略:
但我在命令行上仍然遇到同样的错误
答案 0 :(得分:0)
您是否使用$ aws configure从CLI配置了帐户? 您可以使用策略生成器来验证上面提到的自定义策略是否构建正确。
答案 1 :(得分:0)
此错误归因于SSL验证。使用此代码无需经过SSL验证即可将对象传输到新存储桶。
aws s3 sync s3://source-bucket-name s3://destination-bucket-name --no-verify-ssl
使用-no-verify-ssl