>我创建了一个存储桶来保存由 s3-log-service 创建的日志文件,并且我已经设置了权限,以便可以列出存储桶并公开访问内容。 我可以列出存储桶的内容,但对日志的 Web 访问被拒绝,并出现 403 错误。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
},
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::mybucket"
}
]
}
我收集这样的策略在对象(日志文件(归其他人所有时不起作用。
那么,我需要对存储桶内容应用哪些其他权限才能使其可公开访问?
您说存储桶策略不适用于不属于 AWS 账户的对象是正确的。您有 2 个选项:
- 您需要将对象复制到自身上,将 ACL 标志设置为
public-read
:
AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXX
aws s3 cp
s3://BUCKET/OBJECT_PATH
s3://BUCKET/OBJECT_PATH
--acl public-read
- 将 ACL 标志设置为
bucket-owner-full-control
。从那里,存储桶策略接管对象的权限。
我发现执行任一选项(不会收到拒绝访问错误(的唯一方法是使用 AWS 账户根用户的凭证。