アプリをDynamoDBに接続しようとしています。 Amazonが推奨する方法ですべてを設定しました。しかし、私はまだ同じエラーを何度も繰り返し続けています:
7-21 11:02:29.856 10027-10081/com.amazonaws.cognito.sync.demo E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: com.amazonaws.cognito.sync.demo, PID: 10027
Java.lang.RuntimeException: An error occured while executing doInBackground()
at Android.os.AsyncTask$3.done(AsyncTask.Java:304)
at Java.util.concurrent.FutureTask.finishCompletion(FutureTask.Java:355)
at Java.util.concurrent.FutureTask.setException(FutureTask.Java:222)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:242)
at Android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.Java:231)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1112)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:587)
at Java.lang.Thread.run(Thread.Java:818)
Caused by: com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException: Requested resource not found (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: GIONOKT7E3AMTC4PO19CPLON93VV4KQNSO5AEMVJF66Q9ASUAAJG)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.Java:710)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.Java:385)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.Java:196)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.Java:2930)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.Java:930)
at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.Java:1173)
at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.Java:873)
at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.Java:1056)
at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.Java:904)
at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.Java:688)
at com.amazonaws.cognito.sync.Utils.FriendsSyncManager.initalize_credentialprovider(FriendsSyncManager.Java:43)
at com.amazonaws.cognito.sync.ValU.FriendListActivity$SyncFriends.doInBackground(FriendListActivity.Java:168)
at com.amazonaws.cognito.sync.ValU.FriendListActivity$SyncFriends.doInBackground(FriendListActivity.Java:160)
at Android.os.AsyncTask$2.call(AsyncTask.Java:292)
解決策は何でしょうか?
追加する必要があるようです。
ddbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));
// Add correct Region. In my case its EU_WEST_1
次の行の後:
AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
今では動作します。テーブルが正常に作成されました。よい一日を。そしてありがとう!
接続しようとしているテーブルが存在しないようです。コード内のテーブル名をもう一度確認して、作成したテーブルの名前を確認します。
テーブル名は大文字と小文字が区別されることに注意してください。
Springブートを使用している場合は、アプリケーションのプロパティを使用してリージョンを構成できます。
src/main/resources/application.yaml
cloud:
aws:
region:
static: eu-west-1
@Yuliia Ashomokの回答とともに
AWS C++ SDK 1.7.25
Aws::Client::ClientConfiguration clientConfig;
clientConfig.region = Aws::Region::US_WEST_2;
あなたはいくつかのことを確認する必要があります:
private static String awsSecretKey = "your_secret_key"; //get it in AWS web UI
private static String awsAccessKey = "your_access_key"; //get it in AWS web UI
client.setRegion(Region.getRegion(Regions.US_EAST_1));
この値はAWS Webコンソールから取得できます。 詳細
いいえの場合、コードを確認してください
@DynamoDBTable(tableName = "Event")
public class Event implements Serializable {
public static final String CITY_INDEX = "City-Index";
public static final String AWAY_TEAM_INDEX = "AwayTeam-Index";
AWSコンソールから手動で作成するか、どういうわけかテーブル(私の場合はイベント)とインデックス(私の場合はCity-Index、AwayTeam-Index)を作成します。注意してください-大文字と小文字を区別する場合のテーブルとインデックスの名前。
良いサンプル- https://github.com/aws-samples/lambda-Java8-dynamodb