当前位置: 首页 > 面试题库 >

com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问

佴英奕
2023-03-14
问题内容

这是我的Java代码:

        AmazonS3 conn = new AmazonS3Client();
        AmazonS3URI uri = new AmazonS3URI(s3uri);
        ObjectListing objects = conn.listObjects(uri.getBucket(), uri.getKey());

一个非常简单的任务,我尝试使用AmazonS3 Java客户端访问S3,但是此行conn.listObjects不断失败,并给了我以下异常:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXX), S3 Extended Request ID: xxxxxxxxx
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1389)
    at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:902)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607)
    at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376)
    at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3778)
    at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:610)
    at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:588)
  1. 一个非常明显的错误代码:403,它表示我的AWS凭证是错误的,但是,这与我的同事用来访问同一s3存储桶的凭证完全相同,以排除我在某处出现错字的可能性,因此我确实删除了我以前的一个,并使用了我同事发送给我的那个,并将其放在〜/ .aws /下

  2. 我还研究了其他可能的原因,可能是该S3存储桶未授予我的IAM角色权限,显然也不是我的情况。

有什么帮助吗?可能是罪魁祸首?


问题答案:

适用于Java的AWS开发工具包具有一个DefaultAWSCredentialsProviderChain按以下顺序检查凭证的方式:

  • 环境变量 -AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(建议使用,因为除了.NET以外,所有AWS开发工具包和CLI都可以识别它们,或者AWS_ACCESS_KEY和AWS_SECRET_KEY(仅Java SDK可以识别)
  • Java系统属性 -aws.accessKeyId和aws.secretKey
  • *~/.aws/credentials 所有AWS开发工具包和AWS CLI共享的默认位置()的 *凭证配置文件
  • 如果设置了环境变量并且安全管理器有权访问该变量,则通过 Amazon EC2容器服务 传递的凭证AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
  • 通过 Amazon EC2元数据服务* 提供的实例配置文件凭证 *

在查询所需的配置文件之前,可能已经设置了凭据。

检查正在使用哪些凭据的一种方法是使用aws iam get- user命令显示当前用户。您还可以通过GetUser()调用在Java中尝试。



 类似资料:
  • 我实际上能够检查我的桶是否正确存在,也就是我的s3Client是否正确更新。有没有人可以帮助我。提前道谢!

  • 当我创建新用户或授予现有特权,我得到了这个错误: 授予所有表上的权限ok(信息\u架构除外),在此表上我得到了拒绝访问错误。我怎么能修理?转储所有数据库,删除所有数据库,然后从转储还原?

  • 为什么当我试图创建InputStream时,下面的代码会给我一个File Not Found异常?我的inputdirectory定义为一个文件,其值为“D:\general\images\small_images”(不带引号),我的用户对该文件具有完全的写权限。我正在使用Windows7,并以管理员的身份运行eclipse IDE。 如有任何帮助,不胜感激。

  • 我找到了商店定位器的谷歌教程:https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql MySQL表完成了,它在我的服务器上工作。我可以在phpmyadmin中正确地写入地址和执行操作 但是在“用PHP输出XML”的教程中,我不能继续了。 我已经创建了文件phpsqlsearch_dbinfo.php,把我的数据

  • 问题内容: 我有以下代码: 当我尝试保存文件时,出现以下错误 原因可能是什么,我该如何解决?我确实对此文件夹具有读写权限。 问题答案: 当创建一个new时,应该提供文件名,而不仅是要放置文件的目录。 尝试类似的东西

  • 问题内容: 这是我的编辑从第27行到第39行的代码: 我认为我的问题可能与Win7教授有关:(访问被拒绝) 如何解决这个问题,或者我需要做些什么或阅读才能使它起作用? 谢谢你不燃烧。 我只是更改了文件夹选项,使我获得完整的(Access …),现在我只需要弄清楚为什么在运行javac VendingMachine.java时为什么没有得到任何输出,我想是有一个新问题。 问题答案: 您的工作目录为。