问题描述
想知道是否可以通过 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 函数来实现基本认证、列表和排序功能。
希望这些信息对你有所帮助!
正文完