微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS SDK for Java S3 存储桶访问密钥 ID 问题

如何解决AWS SDK for Java S3 存储桶访问密钥 ID 问题

我正在尝试通过 Java 库以编程方式访问 Amazon S3 存储桶。 (从第三方应用程序进行基本的云管理)。作为第一步,我尝试打印存储桶是否存在(第 3 行)

AWSCredentials credentials=new BasicAWSCredentials("my-Access- Key","My- secret-key");
AmazonS3 s3client = AmazonS3ClientBuilder.standard().withCredentials(new AWsstaticCredentialsProvider(credentials)).withRegion(Regions.AP_EAST_1).build();
String bucketExists=String.valueOf(s3client.doesBucketExistV2("newBucketName"));

当我运行这行代码时,我收到一个异常

com.amazonaws.services.s3.model.AmazonS3Exception: The AWS Access Key Id you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID:RequestId...)

我不想在 .aws 文件夹中为 原因如下:

我正在尝试更改访问凭据 基于来自安全 LDAP 系统的登录用户,所以我可以 只有当我用硬编码测试它时才确认可行性 凭据。

我已经检查过问题不是以下问题之一

  • 我创建了一个具有有效访问 ID 和密钥的 IAM 用户 AWS 控制台,并为用户启用了编程访问。
  • 我还为 IAM 用户应用了 AmazonS3FullAccess 策略
  • 密钥处于活动状态(已通过控制台检查过)
  • 我已将 AWS 开发工具包的依赖项添加到 gradle(实施组:'com.amazonaws',名称:'aws-java-sdk-s3',版本:'1.12.15')

请告诉我可能是什么问题。如果这是业余问题,我深表歉意。

解决方法

如问题评论所示,您的代码看起来不错,应该可以正常工作。

问题的最可能原因是 AWS 从其他地方获取其他凭证。请尝试删除其他凭据,例如存储在主目录中的凭据,以确保 SDK 在联系 S3 时使用正确的凭据。

此外,请验证您是否也根据您的 S3 存储桶提供了正确的区域。

,

您使用的是旧版 V1 API。 V1 的服务客户端名称是 AmazonS3。同样,V2 服务客户端名称为 S3Client。亚马逊强烈建议迁移到 V2:

适用于 Java 2.x 的 AWS 开发工具包是对 1.x 版代码库的主要重写。它构建在 Java 8+ 之上,并添加了几个经常请求的功能。其中包括对非阻塞 I/O 的支持以及在运行时插入不同 HTTP 实现的能力。

尝试按照这组基于 V2 的分步说明进行操作。

Get started with the AWS SDK for Java 2.x

使用 V2 时,您可以将您的凭据放在名为凭据的 .aws 文件夹中的文件中,如本文档中所述。按照本文档中的所有步骤操作后,您就可以以编程方式访问 Amazon S3 存储桶。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?