我目前拥有其中一个S3存储桶的公共权限,如下所示:
{
"Version": "2012-10-17",
"Id": "Policy1493660686651",
"Statement": [
{
"Sid": "Stmt1493660682556",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::polodata/*"
}
]
}
当用户导航到特定文件时,如:https://s3-us-west-2.amazonaws.com/polodata/ETHBTC.csv
,它会提示用户下载 - 这很好。但是,当他们导航到:https://s3-us-west-2.amazonaws.com/polodata/
(未指定文件)时,它会返回一个XML页面。
我需要更改什么才能让后者返回目录列表页面?
答案 0 :(得分:2)
访问网址时,您无法从Amazon S3获取目录列表页。最接近的是XML对象列表,您必须为其授予对存储桶策略的ListObjects
权限。它看起来像这样:
此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>my-bucket</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>foo.txt</Key>
<LastModified>2017-05-01T21:07:13.000Z</LastModified>
<ETag>"9311482f31be49fb2f41be9e16097a9c"</ETag>
<Size>213</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>my-folder/</Key>
<LastModified>2017-05-01T21:07:18.000Z</LastModified>
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
<Size>0</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>my-folder/bar.txt</Key>
<LastModified>2017-05-01T21:07:30.000Z</LastModified>
<ETag>"9311482f31be49fb2f41be9e16097a9c"</ETag>
<Size>213</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
有些人想出了模拟目录列表的创造性方法,例如:Directory Listing in S3 Static Website
请记住 - Amazon S3不是传统的Web服务器。它是对象存储服务,也可以向Internet提供内容。因此,它的行为与普通的Web服务器完全不同。
另请参阅:How Do I Configure an S3 Bucket for Static Website Hosting?