【问题标题】:Make uploaded files to S3 public by default默认情况下将上传的文件公开到 S3
【发布时间】:2015-03-11 00:13:15
【问题描述】:

我从 Stack Overflow 和其他网站尝试了一堆建议的解决方案,但无济于事。

我有一个存储桶,我使用我创建的一个 IAM 帐户从网页上传文件。这些上传的文件位于我的父存储桶中动态创建的文件夹中。

我需要确保创建的任何文件夹以及新创建的文件夹中保存的任何上传文件都是公开的,以便任何用户都可以看到并下载它们。

目前我正在使用“S3 浏览器”应用程序,但它不允许我下载任何上传的文件(尽管我实际上可以看到它们)。

非常感谢任何帮助!

【问题讨论】:

    标签: amazon-web-services amazon-s3 permissions


    【解决方案1】:

    在该特定存储桶上创建存储桶策略,为匿名用户授予 GetObject 权限。将“examplebucket”替换为存储桶的名称。您可以在 Amazon S3 管理控制台的权限部分添加Bucket Policy

    {
      "Version":"2012-10-17",
      "Statement":[{
        "Sid":"AddPerm",
            "Effect":"Allow",
          "Principal": "*",
          "Action":["s3:GetObject"],
          "Resource":["arn:aws:s3:::examplebucket/*"
          ]
        }
      ]
    }
    

    【讨论】:

    • 供以后的搜索者使用 - 另请注意版本号是亚马逊的版本号 - 不要更改它。如果您尝试更改它,您将得到 - “策略必须包含有效的版本字符串 - 未定义”
    • S3 控制台上还有一个“策略生成器”,您可以在其中使用此策略作为指导,为主体提供 *,为资源 ARN 中的键提供 *,并生成新策略。这样,即使版本过时,您也会获得有效的政策
    • 不再有效。看起来他们已经弃用了“Principal”字段。错误:This policy contains the following error: Has prohibited field Principal For more information about the IAM policy grammar, see AWS IAM Policies
    • @Vineeth 上述策略是放置在存储桶上的存储桶策略。如果在 IAM 策略中使用它,则应删除委托人,因为它会自动应用于放置它的 IAM 实体。
    • 知道了。谢谢马恩
    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2013-10-11
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多