从 Amazon S3 存储桶中检索图像

Retrieving images from Amazon S3 bucket

我将图像存储在 S3 存储桶中,但无法显示图像的 link。这是我得到的错误:

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>8CAF92C03A75648C</RequestId>
  <HostId>
     ocfqcRiXsJoV0mBom0z+nmV3seEMRpdBMvDddy1sgQrIOq19/UvK6BmurlM8v20zGIvh2ITHjYc=
  </HostId>
</Error>

我需要在各个域上显示图像,但我无法为每个域制定 CORS 规则。

<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

如何打开此存储桶以便公开显示图片?

与CORS无关,是S3 bucket配置。

如果您对整个存储桶 public-read、here's the official AWS guide 和我的粗略步骤感到满意:

  1. 启用虚拟主机,添加 index/error 文档默认值。
  2. 添加 public-read 策略(如下;只需要更改 BUCKETNAME)
  3. 盈利!

政策:

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

请注意,如果您使用 S3 托管静态内容,您应该真正使用 CDN(如 CloudFront)并注意您的 cache-control header.