2016-08-13 88 views
0

DynamoDBLocal被拒絕我的憑據儘管documentation的指示有效憑據是多餘的:DynamoDBLocal憑據失敗

的AWS軟件開發工具包爲DynamoDB要求您的應用程序配置指定訪問密鑰值和AWS區域價值...這些不必是有效的AWS值才能在本地運行。使用

[default] 
aws_access_key_id = BogusAwsAccessKeyId 
aws_secret_access_key = BogusAwsSecretAccessKey 

運行DynamoDBLocal:

在這種情況下,我已經設置了我的憑據~/.aws/credentials作爲

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); 
    } 

這導致這樣的輸出:

creds 「BogusAwsAccessKeyId」, 「BogusAwsSecretAccessKey」 com.amazonaws.AmazonServiceException:包括在請求安全令牌無效。 (服務:AmazonDynamoDBv2;狀態代碼:400;錯誤代碼:UnrecognizedClientException

爲什麼它涉及

回答

3

在代碼中,您呼叫setEndpoint()後調用withRegion()證書的有效性,有什麼想法? withRegion()的呼叫是將端點設置爲DynamoDB的us-west-2端點,這就是您的身份驗證失敗的原因(因爲它實際上是要轉到DynamoDB us-west-2區域)刪除withRegion()

+0

You are correct 。我註釋掉了'withRegion()'並且它繼續了smoo thly。 有趣的是,DynamoDBLocal.UsageNotes表示,「數據庫文件將被命名爲myaccesskeyid_region.db,它們出現在您的應用程序配置中時將使用AWS訪問密鑰ID和區域」,這就是我爲什麼設置它(以及後來當我轉向實際的AWS時,我想要在該地區)。無論如何,趕上,謝謝! :) – Bex

相關問題