it-swarm.com.ru

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)

Какое может быть решение?

14
Cédric Portmann

Окей, кажется, вам нужно добавить:

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

после следующей строки:

AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);

Теперь это работает. Таблица была успешно создана . Хорошего дня и спасибо!

30
Cédric Portmann

Кажется, что таблица, к которой вы пытаетесь подключиться, не существует. Убедитесь, что имя таблицы в вашем коде совпадает с именем таблицы, которую вы создали.

Обратите внимание, что имя таблицы чувствительно к регистру. 

9
0x90

Вместе с ответом @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. Подробности

 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 Console или как-нибудь еще свою таблицу (Event в моем случае) и индексы (City-Index, AwayTeam-Index в моем случае). Обратите внимание - имя таблицы и индекса в случае чувствительного. 

Хороший пример - https://github.com/aws-samples/lambda-Java8-dynamodb

0
Yuliia Ashomok