我在Github上有一个项目,它在Travis-CI的每次提交后构建。每次成功构建后,Travis都会将工件上传到S3存储桶。有没有办法让我轻松让任何人访问存储桶中的文件?我知道我可以生成只读访问密钥,但用户通过Web浏览器访问文件会更容易。
我使用“。”的根文档启用了网站托管。组。
但是,在尝试进入存储桶端点时,我仍然会收到403 Forbidden。
如何让用户从Web浏览器轻松浏览和下载存储在Amazon S3上的工件?最好没有第三方客户。
答案 0 :(得分:22)
我发现了这个相关的问题:Directory Listing in S3 Static Website
事实证明,如果您为整个存储桶启用公共读取,则S3可以提供目录列表。问题是它们是XML而不是HTML,因此不是非常用户友好。
有三种方法可以用来生成列表:
为您自己计算机上的每个目录生成index.html文件,将它们上传到s3,并在将新文件添加到目录时更新它们。非常低技术。既然你说要直接从Travis上传构建文件,这可能不太实际,因为它需要在那里做额外的工作。
使用客户端S3浏览器工具。
使用服务器端浏览器工具。
答案 1 :(得分:4)
答案 2 :(得分:1)
我遇到了同样的问题,我使用
修复了它答案 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创建的服务器端工具。