2016-08-13 2 views
0

DynamoDBLocal отвергает мои полномочия, несмотря на documentation о том, что действительные учетные данные не нужны:DynamoDBLocal Сбой по проверке полномочий

В SDKs AWS для DynamoDB требуют, чтобы конфигурация приложения указать значение ключа доступа и значение AWS региона ... они не должны быть действительными значениями AWS для локального запуска.

В этом случае, я создал свои полномочия ~/.aws/credentials как:

[default] 
aws_access_key_id = BogusAwsAccessKeyId 
aws_secret_access_key = BogusAwsSecretAccessKey 

выполнения DynamoDBLocal с помощью:

java -Djava.library.path=./DynamoDBLoc_lib -jar DynamoDBLocal.jar 

проверили, что он работает, нажав http://localhost:8000/shell/

затем запустите мое тестовое приложение Java:

DefaultAWSCredentialsProviderChain credentialProvider = new DefaultAWSCredentialsProviderChain(); 
    AWSCredentials awsCredentials = credentialProvider.getCredentials(); 
    log.info("creds \"{}\", \"{}\"", awsCredentials.getAWSAccessKeyId(), awsCredentials.getAWSSecretKey()); 

    AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentialProvider); 
    client.withEndpoint("http://localhost:8000"); 
    client.withRegion(Regions.US_WEST_2); 
    dynamoDB = new DynamoDB(client); 

    try { 
     TableCollection<ListTablesResult> tables = dynamoDB.listTables(); 
     while (tables.iterator().hasNext()) { // <-- exception thrown here 
      log.info(tables.iterator().next().getTableName()); 
     } 
    } catch (Exception e) { 
     log.error("", e); 
    } 

, что приводит к этому выходу:

кредитки "BogusAwsAccessKeyId", "BogusAwsSecretAccessKey" com.amazonaws.AmazonServiceException: Маркер безопасности включен в запрос недействителен. (Service: AmazonDynamoDBv2; Код состояния: 400; Код ошибки: UnrecognizedClientException

Любые мысли о том, почему это касается достоверности учетных данных

ответ

3

В вашем коде, вы призывающих withRegion() после вызова setEndpoint()?. Вызов withRegion() устанавливает конечную точку на конечную точку us-west-2 DynamoDB, поэтому ваша аутентификация не работает (потому что она фактически идет в область DynamoDB us-west-2). Удалите строку withRegion().

+0

Вы правы Я прокомментировал 'withRegion()', и он продолжал работать thly. Интересно, что DynamoDBLocal.UsageNotes говорит, что «файл базы данных будет называться myaccesskeyid_region.db с идентификатором ключа доступа и регистром AWS, как они появляются в конфигурации вашего приложения», поэтому я его установил (а также позже когда я перехожу к фактическому AWS, я хочу быть в этом регионе). Во всяком случае, хороший улов, спасибо! :) – Bex

Смежные вопросы