web-dev-qa-db-ja.com

AWS DynamoDBリクエストされたリソースが見つかりません

アプリを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)

解決策は何でしょうか?

24

追加する必要があるようです。

ddbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));  
// Add correct Region. In my case its EU_WEST_1

次の行の後:

AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);

今では動作します。テーブルが正常に作成されました。よい一日を。そしてありがとう!

36

接続しようとしているテーブルが存在しないようです。コード内のテーブル名をもう一度確認して、作成したテーブルの名前を確認します。

テーブル名は大文字と小文字が区別されることに注意してください。

10
0x90

Springブートを使用している場合は、アプリケーションのプロパティを使用してリージョンを構成できます。

src/main/resources/application.yaml

cloud:
  aws:
    region:
      static: eu-west-1
0

@Yuliia Ashomokの回答とともに

AWS C++ SDK 1.7.25

Aws::Client::ClientConfiguration clientConfig;
clientConfig.region = Aws::Region::US_WEST_2;
0
chmoder

あなたはいくつかのことを確認する必要があります:

コードで資格情報を確認します。

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コンソールから取得できます。 詳細

enter image description here

リージョンの下にDynamoDBテーブルとインデックスがすでに作成されていることを確認してください。

いいえの場合、コードを確認してください

@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

0
Yuliia Ashomok