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