问题描述
我正在将invisioncommunity论坛软件与下载应用程序一起使用。 我通过Amazon S3为访客提供下载。
下载文件时,下载源链接到我的S3存储桶(https://s3.eu-central-1.amazonaws.com/my.bucket.net/file),我不想要那样。 我希望它看起来像:https://my.bucket.net/file
我可以使用签名的URL还是仅隐藏下载源?还是最好的选择是什么?
此外,当我在浏览器中导航到存储桶URL(未登录S3)时,我看到一个XML列表,其中列出了存储桶中列出的所有文件。我可以藏起来吗?
我在Google上发现了很多内容(创建CNAME等),但似乎没有任何效果。
解决方法
为此,您可以使用CloudFront distribution,它实际上将允许您通过DNS配置使用custom name。
这仍将返回x-amz
标头,因此,如果要删除标头,则需要向CloudFront发行版中添加Lambda@Edge。如果您对此方法感兴趣,请参考以下example functions。
此外,如果客户在地理位置上与您的S3存储桶AWS区域相距较远,则他们将从延迟减少中受益。
关于选项(文件列表),它来自ListObjects
权限,请确保唯一的公共权限是GetObject
。
为此,建议使用以下存储桶策略。
{
"Version":"2012-10-17","Statement":[
{
"Sid":"PublicRead","Effect":"Allow","Principal": "*","Action":["s3:GetObject"],"Resource":["arn:aws:s3:::awsexamplebucket1/*"]
}
]
}