Spring Boot DynamoDB AWS 异常

标签 spring amazon-ec2 amazon-dynamodb aws-sdk

我在 AWS DynamoDB 上遇到错误,内容如下:

[Request processing failed; nested exception is com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The security token included in the request is invalid. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: UnrecognizedClientException; Request ID: VJ8R07B81ANC1047P1ANEDS4CRVV4KQNSO5AEMVJF66Q9ASUAAJG)] with root causecom.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The security token included in the request is invalid. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: UnrecognizedClientException; Request ID: VJ8R07B81ANC1047P1ANEDS4CRVV4KQNSO5AEMVJF66Q9ASUAAJG)

具有在 EC2 实例中运行的实际 DynamoDB 端点。但是,当我运行该应用程序并将其指向本地 DynamoDB 时,它就可以工作。

有人能解决这个问题吗?谢谢。

这是我在 DynamoDB 上的配置

@Configuration
@EnableDynamoDBRepositories(basePackages = "**.****.***.repository")
public class DynamoConfig {

    @Value("${aws.secret.key}")
    private String awsSecretKey;

    @Value("${aws.access.key}")
    private String awsAccessKey;

    @Value("${aws.dynamodb.endpoint}")
    private String awsDynamoDBEndpoint;

    @Value("${aws.region}")
    private String awsRegion;

    @Bean
    public AmazonDynamoDB amazonDynamoDB() {
        AmazonDynamoDBClientBuilder amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(amazonAWSCredentials()))
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(awsDynamoDBEndpoint, awsRegion));

//        amazonDynamoDB.setSignerRegionOverride(Regions.fromName(awsRegion).getName());
//        if (!StringUtils.isEmpty(awsDynamoDBEndpoint)) {
//            amazonDynamoDB.setEndpoint(awsDynamoDBEndpoint);
//        }
        return amazonDynamoDB.build();
    }

    @Bean
    public AWSCredentials amazonAWSCredentials() {
        return new BasicAWSCredentials(awsAccessKey, awsSecretKey);
    }
}

P.S 我还尝试运行指向实际 DynamoDB 端点的应用程序,但遇到了相同的错误。

最佳答案

如果您为 ec2 实例配置了角色,则可以删除 withCredentials 方法调用。

凭据按以下顺序处理:

  1. 代码定义
  2. AWS 客户端配置
  3. 如果未找到先例,它将不使用任何凭据,并且仅当实例附加了授予正确权限的 iam 角色时才会对其进行授权

关于Spring Boot DynamoDB AWS 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48008892/

相关文章:

amazon-dynamodb - 使用vogels js实现分页

GoLang 更新 DynamoDB

java - 当我使用异步 servlet (spring 3.2) 时,spring 的 ETag 过滤器无效

java - 如何在远程weblogic服务器上热部署Web应用程序?

linux - 在 22 以外的端口上的 AWS EC2 实例上运行 SSH,但对于 Centos

amazon-ec2 - 从 EC2 实例内查找区域

java - 如何通过 ELB 将 HTTPS 流量路由到运行 Java JHipster webApp 的 EC2 容器

python - 相当于 DynamoDB 中不传递主键的选择查询?

java - Hibernate、Spring 和 HSQL : Table not Found Exception

java - 如何在 Spring HandlerInterceptorAdapter 中将 header 添加到 http 响应?