0

我想从本地机器上运行的 Java 应用程序访问 DynamoDB(真实的,而不是本地的)。我设置了环境变量:AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION、AWS_DEFAULT_PROFILE。

尽管如此,我还是得到了错误:

“com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException:请求中包含的安全令牌无效(服务:AmazonDynamoDBv2;状态代码:400;错误代码:UnrecognizedClientException”

这是代码(它是 Kotlin):

val client = AmazonDynamoDBClientBuilder.standard()
        .withRegion(Regions.EU_WEST_1)
        .build()
val dynamoDB = DynamoDB(client)
val table = dynamoDB.getTable("SomeTable")
val key = "some-key-field"
val spec = GetItemSpec().withPrimaryKey("some-key-value", key)
val result = table.getItem(spec).toJSONPretty().toString()
println(result)
dynamoDB.shutdown()

是否可以像这样从本地 Java (JVM) 应用程序访问 AWS DynamoDB?这里缺少什么?

PS:

我可以从 AWS CLI 访问 DynamoDB,它正在工作,问题出在从我的应用程序访问。

更新:

找到了如何设置凭据,但没有帮助。

val accessKey = System.getenv("AWS_ACCESS_KEY_ID")
val accessSec = System.getenv("AWS_SECRET_ACCESS_KEY")
val client = AmazonDynamoDBClientBuilder.standard()
        .withCredentials(AWSStaticCredentialsProvider(BasicAWSCredentials(accessKey, accessSec)))
        .withRegion(Regions.EU_WEST_1)
        .build()

错误是一样的。

4

0 回答 0