从Amazon S3存储桶中检索图像

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

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

我需要在不同的域上显示图像,但是我可以在为每个域创buildCORS规则时处理这些图像。

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

我怎样才能打开这个桶,使图像公开可以显示?

它不需要CORS,这是S3桶的configuration。

如果你对公开阅读的整个桶感到满意, 这里是官方的AWS指南 ,以及我的粗略步骤:

  1. 启用虚拟主机,添加索引/错误文档的默认值。
  2. 添加公开阅读政策(如下;只需要更改BUCKETNAME)
  3. 利润!

政策:

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

作为一个告诫,如果您使用S3来托pipe静态内容,您应该真正使用CDN(如CloudFront)并注意您的caching控制标头。