【问题标题】:How do I make public for download files owned by the s3-log-service?如何公开 s3-log-service 拥有的下载文件?
【发布时间】:2017-03-23 04:41:14
【问题描述】:

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

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

那么,我还需要对存储桶内容应用哪些其他权限才能公开访问它们?

【问题讨论】:

  • similar question from 2011 在亚马逊论坛上,无人回答。
  • 您为什么要公开您的日志文件?看起来您实际上可能正在尝试解决与您在此处描述的问题不同的问题?

标签: amazon-s3


【解决方案1】:

您说存储桶策略不适用于不属于 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 账户根用户的凭证。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2020-01-06
    • 2011-08-24
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多