【问题标题】:Hide S3 download source隐藏 S3 下载源
【发布时间】:2020-08-12 06:57:08
【问题描述】:

我正在使用带有下载应用程序的 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 等),但似乎没有任何效果。

【问题讨论】:

    标签: amazon-web-services amazon-s3 pre-signed-url


    【解决方案1】:

    对于此部分的第一部分,您可以使用 CloudFront distribution,这实际上允许您通过 DNS 配置使用 custom name

    这仍会返回 x-amz 标头,因此如果您想删除这些标头,则需要将 Lambda@Edge 添加到您的 CloudFront 分配中。如果您对这种方法感兴趣,这里有一些example functions

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

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

    为此建议的存储桶策略如下。

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

    【讨论】:

    • 非常感谢您的回答。对于第二部分,我是否需要在策略的 Resource 部分中在我的存储桶名称之后添加一个键?
    • 您只需将 awsexamplebucket1 替换为您的存储桶名称
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多