繁体   English   中英

403 - 在AWS EC2实例上运行的服务上列出对象时的AccessDenied

[英]403 - AccessDenied when listing objects on service running on AWS EC2 instance

我有一个运行时带有IAM角色的EC2实例。

如果我在该实例的终端上运行以下命令,则会正确列出存储桶的内容。

aws s3 ls --region my-region s3://my-bucket-name

但是,如果我运行我认为是相同的代码,但在Java中,我得到403

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
        .withRegion(my-region)
        .withCredentials(new InstanceProfileCredentialsProvider(false))
        .withPayloadSigningEnabled(true)
        .build();
s3Client.listObjectsV2(my-bucket-name);

生成以下内容

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied

原始listObjects也是如此

s3Client.listObjects(TestArtefactsBucket);

由于我使用的是InstanceProfileCredentialsProvider,因此应使用与CLI使用的相同的配置文件,因此请使用相同的权限?

我正在使用com.amazonaws:aws-java-sdk-s3:1.11.93并且因为它在另一个线程中提到过,我使用的是joda-time:joda-time:2.9.7。

Java的版本是java-1.8.0-openjdk.x86_64。

任何帮助将不胜感激,我确信权限设置正确,但我没有运气获取访问权限。

我还要补充一点,我可以在EC2实例上列出运行以下cli命令的存储桶内容

aws s3api list-objects-v2 --region my-region --bucket my-bucket

谢谢

首先,您必须检查用于API的IAM角色[访问密钥和密钥]。

如果[访问密钥和密钥]正常并且您遇到同样的问题,则需要检查IAM角色策略,设置S3完全访问权限。 此访问权限非常重要,大多数情况下此权限设置解决了访问被拒绝的问题。 希望它能为你效劳。

S3访问权限

还是行不通? 然后检查存储桶策略,谁可以读取和写入存储桶中的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM