Я хотел получить доступ к DynamoDB (реальному, а не локальному) из приложения Java, работающего на моей локальной машине.
Я устанавливаю переменные среды: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_DEFAULT_PROFILE.
Несмотря на это, я получаю сообщение об ошибке:
"com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: маркер безопасности, включенный в запрос, недействителен (Сервис: AmazonDynamoDBv2; Код состояния: 400; Код ошибки: UnrecognizedClientException"
Вот код (это Котлин):
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()
Можно ли получить доступ к AWS DynamoDB из локального Java-приложения (JVM), как это? Чего здесь не хватает?
P.S:.
Я могу получить доступ к DynamoDB из интерфейса командной строки AWS, он работает, проблема связана с доступом из моего приложения.
Обновление:
Нашел, как установить учетные данные, но это не помогло.
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()
Ошибка та же.