Amazon web services AWS boto-将文件上载到S3导致S3ResponseError:403被禁止
我在爱尔兰(s3.eu-west-1.amazonaws.com) 我正在尝试使用以下策略上载文件:Amazon web services AWS boto-将文件上载到S3导致S3ResponseError:403被禁止,amazon-web-services,amazon-s3,boto,Amazon Web Services,Amazon S3,Boto,我在爱尔兰(s3.eu-west-1.amazonaws.com) 我正在尝试使用以下策略上载文件: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::db-backup-production/*" } ]
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::db-backup-production/*"
}
]
}
我一直都有以下错误
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
使用此策略上载时:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
上传工作正常。我做错了什么?如果你只做s3“看跌期权”,你的保单应该给你足够的权利。但是,如果要通过sdk、cli调用等列出或获取bucket对象,还需要对bucket本身拥有权限 要提供这些权限,请将策略的“资源”部分用作数组,并在此数组中添加“arn:aws:s3:::db backup production”作为资源。我是这样想的:
"Resource": ["arn:aws:s3:::db-backup-production/*", "arn:aws:s3:::db-backup-production" ]
当指定S3桶权限时,需要考虑桶本身的权限,并单独考虑桶内容的权限。
一种方法是要求为同一个bucket指定两个资源:"Resource": ["arn:aws:s3:::db-backup-production","arn:aws:s3:::db-backup-production/*"]
第一个资源指定bucket级别的范围,db backup production/*将用于对象级别的范围
但是,您可以在以下两个语句中考虑单独的对象和桶级权限:
"Version": "2012-10-17", "Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::db-backup-production"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::db-backup-production/*"]
} ] }
此表单为您提供了对资源的更细粒度控制,包括bucket级和对象级
请参见您是否有任何技术参考/理由说明您为什么需要这样的双资源参考?不,实际上第一个策略应该可以放置对象。我现在无法测试,但我很确定我也遇到了类似的情况,我不得不添加bucket资源。值得一试,但没有以这种方式链接到文档。Asaf,你是否只执行boto的putObject,或者你是否也启动了任何其他s3操作?你是否得到了这些建议?是的,实际上@Tom的回答很有帮助