Java使用本地DynamoDB时出现无法加载AWS凭证错误是什么原因?
错误原因
- 即使连接的是本地部署的DynamoDB实例,AWS Java SDK初始化客户端时仍然会默认按照凭证提供链的顺序查找有效AWS凭证,你当前的代码没有为DynamoDB客户端配置任何凭证,SDK遍历完所有凭证提供方都找不到有效凭证,就会抛出该异常。
- 本地DynamoDB本身不需要真实的AWS账号凭证,只需要传入任意非空的凭证字符串即可通过SDK的校验。
解决方案
修改初始化DynamoDB客户端的initDB方法,在构造客户端时手动传入静态虚拟凭证即可,修改后的代码如下:
public static void initDB() { // 构造虚拟凭证,本地DynamoDB对凭证内容无校验,随便填写非空字符串即可 AWSCredentials fakeCredentials = new BasicAWSCredentials("fakeAccessKey", "fakeSecretKey"); amazonDynamoDBClient = AmazonDynamoDBClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(fakeCredentials)) .withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", aws_region) ).build(); dynamoDB = new DynamoDB(amazonDynamoDBClient); }
注意事项
- 该配置仅适用于本地测试场景,不要将硬编码凭证的逻辑带到生产环境,生产环境请使用默认的凭证链加载逻辑(比如IAM角色、环境变量、
~/.aws/credentials文件等方式获取凭证)。
内容的提问来源于stack exchange,提问作者N.Rajal
相关产品推荐
相关产品推荐

