通过Web浏览器访问存储在Amazon S3上的文件

时间:2013-05-28 04:49:46

标签: amazon-s3

现状

我在Github上有一个项目,它在Travis-CI的每次提交后构建。每次成功构建后,Travis都会将工件上传到S3存储桶。有没有办法让我轻松让任何人访问存储桶中的文件?我知道我可以生成只读访问密钥,但用户通过Web浏览器访问文件会更容易。

我使用“。”的根文档启用了网站托管。组。

Screenshot of website hosting setup

但是,在尝试进入存储桶端点时,我仍然会收到403 Forbidden。

403 Forbidden

问题

如何让用户从Web浏览器轻松浏览和下载存储在Amazon S3上的工件?最好没有第三方客户。

5 个答案:

答案 0 :(得分:22)

我发现了这个相关的问题:Directory Listing in S3 Static Website

事实证明,如果您为整个存储桶启用公共读取,则S3可以提供目录列表。问题是它们是XML而不是HTML,因此不是非常用户友好。

有三种方法可以用来生成列表:

  • 为您自己计算机上的每个目录生成index.html文件,将它们上传到s3,并在将新文件添加到目录时更新它们。非常低技术。既然你说要直接从Travis上传构建文件,这可能不太实际,因为它需要在那里做额外的工作。

  • 使用客户端S3浏览器工具。

  • 使用服务器端浏览器工具。

    • s3browser(PHP)
    • s3index Scala。由于存在Procfile,它可以很容易地部署到Heroku。不确定,因为我对Scala没有任何经验。

答案 1 :(得分:4)

Filestash是实现此目的的完美工具:

  1. https://www.filestash.app/s3-browser.html登录到您的存储桶:

enter image description here

  1. 创建共享链接:

enter image description here

  1. 与世界分享

“ Filestash”也为open source。 (免责声明:我是作者)

答案 2 :(得分:1)

我遇到了同样的问题,我使用

修复了它
  1. 新的上下文菜单"公开"。
  2. 转到https://console.aws.amazon.com/s3/home
  3. 选择存储桶,然后为每个文件夹或文件(或多个选择)右键单击并
  4. "公开"

答案 3 :(得分:0)

您可以使用存储桶策略为匿名用户提供对对象的完全读取权限。根据您是需要它们还是仅执行GET,您需要调整它。 (即列出存储桶内容的权限将操作设置为“s3:ListBucket”)。

http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

您的政策将如下所示。您可以使用http://aws.amazon.com/console上的S3控制台上传它。

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

如果您真正向全世界开放对象,则需要考虑在结算时设置CloudWatch规则,以便在对象过于流行时关闭对象的权限。

答案 4 :(得分:0)

您可以使用  S3 Web Browser

这是使用Laravel创建的服务器端工具。