我创建了一个IAM角色,该角色提供对S3 Bucket的完全访问权限,并将其附加到EC2实例。但是,当我尝试从EC2托管网站查看图像时,无法查看该图像。我一直收到403禁用码。
下面是IAM角色和附加的策略:

可以看到GetObject已启用:

但是错误仍然存在:

对如何解决这个问题有什么建议吗?感谢您的阅读。
发布于 2021-04-30 06:21:08
您用来访问对象的URL似乎不包含任何安全信息(bucket.s3.amazonaws.com/cat1.jpg)。因此,这只是一个对S3的“匿名”请求,而且由于该对象是私有的,S3将拒绝该请求。
仅从分配了IAM角色的Amazon实例发送请求这一事实不足以通过匿名EC2访问该对象。
要允许浏览器访问私有亚马逊S3对象,您的应用程序应该生成一个Amazon S3 pre-signed URLs。这是一个有时间限制的URL,其中包含将您标识为请求者的安全信息,并包含允许访问私有对象的签名。
或者,运行在实例上的代码可以使用AWS SDK对S3进行API调用以访问对象(例如GetObject())。这将成功,因为AWS SDK将使用IAM角色提供的凭据。
https://stackoverflow.com/questions/67318790
复制相似问题