2016-08-13 8 views
0

DynamoDBLocalがdocumentationにもかかわらず、私の資格情報を拒否された資格情報で失敗:DynamoDBLocalは、有効な資格情報が不要であることを示す

DynamoDBのためのAWS SDKには、アプリケーションの設定は、アクセスキー値と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); 
    } 

credsを "BogusAwsAccessKeyIdは"、 "BogusAwsSecretAccessKey" com.amazonaws.AmazonServiceException:リクエストに含まれるセキュリティトークンが無効です。 (サービス:AmazonDynamoDBv2;ステータスコード:400;エラーコード:UnrecognizedClientException

それは、あなたがsetEndpoint()を呼び出した後withRegion()を呼び出しているあなたのコードで

答えて

3

資格証明書の有効性に関係している理由は上の任意の考え?。 withRegion()への呼び出しは、エンドポイントをDynamoDBのus-west-2エンドポイントに設定しているため、認証が失敗しています(実際にはDynamoDB us-west-2領域に移動しているため)。

+0

正しい私は 'withRegion()'をコメントアウトし、smooを進めましたthly。 興味深いことに、DynamoDBLocal.UsageNotesによれば、「データベースファイルの名前はmyaccesskeyid_region.dbとなり、AWSアクセスキーIDとリージョンはアプリケーション設定に表示されます」ということになります。私が実際のAWSに移動すると、その地域にいたい)。とにかく、良いキャッチ、ありがとう! :) – Bex

関連する問題