簡體   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