如何使 AWS S3 存储桶通过 HTTP 访问?

125次阅读
没有评论

问题描述

想知道是否可以通过 AWS S3 来使存储桶的文件通过 HTTP 进行访问,最好还能使用 BASIC_AUTH 进行保护。具体来说,用户希望能够列出文件(索引),并且能够通过 HTTP 下载这些文件。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

下载 – 是的

如果你想要通过 HTTP 下载文件,可以将每个对象的访问控制列表(ACL)设置为公开可读。这将允许任何人都能够访问这些文件。

列表 – 有点

如果你将存储桶的访问控制列表(ACL)设置为公开可读,任何人都可以列出存储桶中的内容。然而,默认的列表是以人类不友好的 XML 形式呈现的。你可以通过外部处理过程生成一些 index.html 文件作为目录列表,并配置存储桶以提供这些文件。

基本认证 – 不行

目前 AWS S3 并不支持直接使用 BASIC_AUTH 进行基本认证。但你可以考虑使用 S3 预签名 URL 来保护内容的访问。

方案2

还有一种可能性是,将存储桶挂载为 s3fs,然后通过像 Nginx 这样的服务器将根文件夹提供给用户。这种方式可以使你在服务器上以正常的方式访问存储桶的内容。

方案3

除了上述方案,你还可以将 CloudFront 配置在存储桶前面,使用 Lambda@Edge 函数来实现基本认证、列表和排序功能。

希望这些信息对你有所帮助!

正文完