隐藏S3下载源

Hide S3 download source

我正在使用带有下载应用程序的 invisioncommunity 论坛软件。 我通过 Amazon S3 为访问者提供下载服务。

下载文件时,下载源链接到我的 S3 存储桶 (https://s3.eu-central-1.amazonaws.com/my.bucket.net/file),我不想这样。 我希望它看起来像:https://my.bucket.net/file

我可以使用已签名的 URL 还是只是隐藏下载源?或者最好的选择是什么?

此外,当我在浏览器(未登录 S3)中导航到我的存储桶 URL 时,我看到一个 XML 列表,其中列出了我的存储桶中的所有文件。我可以隐藏这个吗?

我在 Google 上找到了很多内容(创建 CNAME 等),但似乎没有什么真正有用。

对于第一部分,您可以通过 DNS 配置使用 CloudFront distribution that will actually allow you to use a custom name

这仍然是 return x-amz headers 因此,如果您想要删除这些内容,并且您对这种方法感兴趣,则需要添加 Lambda@Edge to your CloudFront distribution. Here are some example functions

此外,如果您的客户在地理位置上远离您的 S3 存储桶 AWS 区域,他们将受益于更少的延迟。

关于选项(文件列表),这是来自ListObjects权限,确保唯一的public权限是GetObject.

建议的存储桶策略如下。

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::awsexamplebucket1/*"]
    }
  ]
}