如何公开s3-log-service拥有的下载文件?

时间:2017-03-23 04:41:15

标签: amazon-s3

我已经创建了一个存储桶来保存由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"
    }
  ]
}

当对象(日志文件)归其他人所有时,我收集这样的策略不起作用。

那么,我需要将哪些其他权限应用于存储桶内容以使其可以公开访问?

1 个答案:

答案 0 :(得分:0)

您说存储桶策略不适用于不属于 AWS 账户的对象是正确的。您有 2 个选择:

  1. 您需要将对象复制到自身上,将 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
  1. 将 ACL 标志设置为 bucket-owner-full-control。从那里,存储桶策略接管对象的权限。

我发现执行任一选项的唯一方法(不会出现访问被拒绝错误)是使用 AWS 账户根用户的凭据。