将 public-read 对象放在 AWS S3 上所需的最低权限?
Least privileges required to put public-read objects on AWS S3?
我创建了一个新的 AWS IAM 角色,并赋予它以下策略(尽量遵循最小权限原则):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1493050925000",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::avatars-bus-com-development/avatar/*"
]
}
]
}
使用 s3cmd
,我尝试使用以下命令行上传一个公开可读的文件:
s3cmd put --public-acl --access_key AKIA... --secret_key "..." \
spec/fixtures/avatars/large-avatar.jpg \
s3://avatars-bus-com-development/avatar/00-55/inbb7ljt-2017-02-17-09-00-55/original.jpg
当我这样做时,我收到来自 S3 的拒绝访问错误。
使用 AWS CLI 工具时,我也收到 AccessDenied 错误:
$ AWS_ACCESS_KEY_ID="AKIA..." AWS_SECRET_ACCESS_KEY="..." aws s3 cp \
--acl public-read \
--content-type image/png \
spec/fixtures/image.png \
s3://bus-com-avatars-development/avatar/francois.png
upload failed: spec/fixtures/image.png to s3://bus-com-avatars-development/avatar/francois.png An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
为了将公开可读的对象放在 S3 上,必须提供哪些其他操作?
问题是由 --acl public-read
引起的,它需要 PutObjectAcl
权限。 (如果你把它去掉,它就可以正常工作。)
因此,将您的政策更新为:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::avatars-bus-com-development/avatar/*"
]
}
]
}
我创建了一个新的 AWS IAM 角色,并赋予它以下策略(尽量遵循最小权限原则):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1493050925000",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::avatars-bus-com-development/avatar/*"
]
}
]
}
使用 s3cmd
,我尝试使用以下命令行上传一个公开可读的文件:
s3cmd put --public-acl --access_key AKIA... --secret_key "..." \
spec/fixtures/avatars/large-avatar.jpg \
s3://avatars-bus-com-development/avatar/00-55/inbb7ljt-2017-02-17-09-00-55/original.jpg
当我这样做时,我收到来自 S3 的拒绝访问错误。
使用 AWS CLI 工具时,我也收到 AccessDenied 错误:
$ AWS_ACCESS_KEY_ID="AKIA..." AWS_SECRET_ACCESS_KEY="..." aws s3 cp \
--acl public-read \
--content-type image/png \
spec/fixtures/image.png \
s3://bus-com-avatars-development/avatar/francois.png
upload failed: spec/fixtures/image.png to s3://bus-com-avatars-development/avatar/francois.png An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
为了将公开可读的对象放在 S3 上,必须提供哪些其他操作?
问题是由 --acl public-read
引起的,它需要 PutObjectAcl
权限。 (如果你把它去掉,它就可以正常工作。)
因此,将您的政策更新为:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::avatars-bus-com-development/avatar/*"
]
}
]
}