【问题标题】:AWS Local DynamoDB The security token included in the request is invalidAWS Local DynamoDB 请求中包含的安全令牌无效
【发布时间】:2020-04-21 15:10:27
【问题描述】:

我是 AWS 新手,我正在尝试从 Java 程序对本地 DynamoDB 执行 CRUD 操作。 Java 程序是一个 AWS 示例。

我已安装 AWS CLI 并设置了以下配置 - 根据 AWS 文档,我不需要本地 DynamoDB 的真正 AWS 访问权限和密钥。

我通过在 AWS CLI 中运行 aws configure 在 ~/.aws/config 和 ~/.aws/credentials 中设置了以下值。

[default]
aws_access_key_id = ''
aws_secret_access_key = ''
[default]
region = ap-south-1

我有本地 DYnamoDB JAR 与它一起运行。

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

我要运行的代码是这样的。

https://github.com/aws-samples/aws-dynamodb-examples/blob/master/src/main/java/com/amazonaws/codesamples/datamodeling/ObjectPersistenceCRUDExample.java

但是,我遇到了这个异常。

AmazonDynamoDBException:请求中包含的安全令牌是 无效。

完整的堆栈是这样的。

    Exception in thread "main" 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: UPGRD2BRNUN6S1702EN6N6S8RJVV4KQNSO5AEMVJF66Q9ASUAAJG)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1695)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1350)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1101)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:758)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:732)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:714)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:674)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:656)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:520)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:4192)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:4159)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeUpdateItem(AmazonDynamoDBClient.java:3868)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:3835)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:854)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:594)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:733)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:623)
    at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.save(AbstractDynamoDBMapper.java:123)
    at com.stackroute.Main.testCRUDOperations(Main.java:60
    at com.stackroute.Main.main(Main.java:17)

我们将不胜感激任何帮助。提前致谢。

【问题讨论】:

    标签: java amazon-dynamodb dynamodb-queries dynamo-local


    【解决方案1】:

    据我所知,引用的代码中没有任何内容指向 DynamoDB 本地实例。看起来它正指向 DynamoDB。

    您需要将端点更改为本地版本。看看this page。它有一个将端点更改为 localhost:8080 的示例。

    【讨论】:

    【解决方案2】:

    确切地说,问题似乎确实指向 AWS 上的 DynamoDB,而不是本地的,尽管我无法验证原始评论的这一点,因为链接现在已损坏,至少这是发生在我身上的事情。

    解决方案是显式连接到本地 DynamoBD(需要安装) 这是实现它的代码:

    AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
                // we can use any region here
                new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "us-west-2"))
                .build();
    

    这是指向先前 cmets 中提到的示例类的链接,已被删除(您需要单击 DynamoDBLocalFixture.java 类的 Load Diff): https://github.com/aws-samples/aws-dynamodb-examples/commit/461b0e85bfad58f4a62c63f38426c650896fb870#diff-b331539c5e8b0398d9bbb85c5b87a4cdfa32efbefb27f68f3402c223b243b178

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2021-04-23
      • 2018-04-09
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 2021-09-07
      相关资源
      最近更新 更多