为什么我会看到此异常?

问题描述 投票:0回答:1
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "software.amazon.awssdk.identity.spi.IdentityProviders.toBuilder()" because the return value of "software.amazon.awssdk.core.client.config.SdkClientConfiguration.option(software.amazon.awssdk.core.client.config.ClientOption)" is null
    at software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder.finalizeChildConfiguration(AwsDefaultClientBuilder.java:215)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:188)
    at software.amazon.awssdk.services.dynamodb.DefaultDynamoDbClientBuilder.buildClient(DefaultDynamoDbClientBuilder.java:55)
    at software.amazon.awssdk.services.dynamodb.DefaultDynamoDbClientBuilder.buildClient(DefaultDynamoDbClientBuilder.java:27)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:155)
    at org.mattei.service.DynamoDbService.<init>(DynamoDbService.java:25)
    at org.mattei.Main.main(Main.java:20)

我收到此异常,我无法弄清楚为什么..我正在尝试使用DynamoDbEnhancedAsyncClient并收到此异常,我不确定调试后缺少哪个选项..检查了许多aws文档,yt等..tia

    static String tableName = "rules";
   static final TableSchema<Rule> TABLE_SCHEMA = TableSchema.fromBean(Rule.class);
DynamoDbAsyncClient dynamoDbAsyncClient = DynamoDbAsyncClient.create();
    DynamoDbEnhancedAsyncClient enhancedClient =
            DynamoDbEnhancedAsyncClient.builder()
                    .dynamoDbClient(dynamoDbAsyncClient)
                    .build();
       DynamoDbAsyncTable<Rule> TABLE = enhancedClient.table(tableName, TABLE_SCHEMA);
java amazon-web-services amazon-dynamodb
1个回答
0
投票

您从

AwsDefaultClientBuilder
返回 null 中得到一个空指针异常。这是由于 SDK 尝试获取访问密钥以允许您的代码执行其需要执行的操作而导致的。但您在权限链中没有任何访问密钥,因此它返回 null。

按以下顺序查找凭证的 AWS 凭证提供商链:

  • 环境变量 - AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY(推荐,因为它们可以被除 .NET 之外的所有 AWS 开发工具包和 CLI 识别),或 AWS_ACCESS_KEY 和 AWS_SECRET_KEY(仅可以被 Java SDK 识别)

  • Java 系统属性 - aws.accessKeyId 和 aws.secretKey

  • 来自环境或容器的 Web 身份令牌凭据

  • 所有 AWS 开发工具包和 AWS CLI 共享的默认位置 (~/.aws/credentials) 中的凭证配置文件文件

  • 如果设置了“AWS_CONTAINER_CREDENTIALS_RELATIVE_URI”环境变量并且安全管理器有权访问该变量,则通过 Amazon EC2 容器服务传递凭证,

  • 通过 Amazon EC2 元数据服务传递的实例配置文件凭证

© www.soinside.com 2019 - 2024. All rights reserved.