【问题标题】:Do I have to get a signed URL for every image on AWS S3?我是否必须为 AWS S3 上的每个图像获取签名 URL?
【发布时间】:2021-11-28 13:44:44
【问题描述】:

假设我有一个像 Instagram 这样的社交媒体应用。我是否必须为每张图片获取签名 URL? 每个用户看到 100 张图片,这是否意味着它必须为每个用户获取 100 个 singed URL?

【问题讨论】:

  • 是的,没错
  • 您的用例是什么?这些图像是公开的,还是除了授权用户外,它们是保密的?
  • 他们是公开的。 @JohnRotenstein
  • 如果图像是公开的,那么您不需要使用预签名的 URL。您可以直接指向它们。 “公共”是指任何人都可以访问,无需进行身份验证。
  • 如何将其指定为公开?即使我有 ACL:'public-read' ,它也会说未经授权。 @JohnRotenstein

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


【解决方案1】:

要使整个 Amazon S3 存储桶“公开”(或存储桶内的路径),请使用存储桶策略

来自Bucket policy examples - Amazon Simple Storage Service

以下示例策略将s3:GetObject 权限授予任何公共匿名用户。此权限允许任何人读取对象数据,这对于您将存储桶配置为网站并希望每个人都能够读取存储桶中的对象时非常有用。

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

在您使用存储桶策略向匿名用户授予只读权限之前,您必须为您的存储桶禁用阻止公共访问设置

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-07-28
    • 2016-10-21
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2023-04-09
    相关资源
    最近更新 更多