web-dev-qa-db-fra.com

AWS DynamoDB Ressource demandée introuvable

J'essaie de connecter mon application à DynamoDB. J'ai tout configuré comme le recommande Amazon. Mais je continue à avoir la même erreur encore et encore:

   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)

Quelle pourrait être la solution?

14
Cédric Portmann

Okey, il semble que vous deviez ajouter:

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

après la ligne suivante:

AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);

Maintenant ça marche. La table a été créée avec succès ... Bonne journée et merci!

30
Cédric Portmann

Il semble que la table à laquelle vous essayez de vous connecter n'existe pas. Vérifiez le nom de la table dans votre code par rapport au nom de la table que vous avez créée.

Veuillez noter que le nom de la table est sensible à la casse. 

9
0x90

Avec la réponse de @Yuliia Ashomok

Kit de développement logiciel AWS C++ 1.7.25

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

Vous devez vérifier quelques points:

Vérifiez vos informations d'identification dans votre code:

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

Vérifiez votre code de région et définissez la valeur correcte:

client.setRegion(Region.getRegion(Regions.US_EAST_1));

Vous pouvez obtenir cette valeur depuis votre AWS Web Console. Détails

 enter image description here

Vérifiez que vous avez déjà créé la table et les index DynamoDB sous votre région.

Si non, vérifiez votre code

@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";

Et créez manuellement à partir de AWS Console ou d'une autre manière votre table (Event dans mon cas) et vos index (City-Index, AwayTeam-Index dans mon cas). S'il vous plaît noter - nom de la table et de l'index en cas sensible 

Bon échantillon - https://github.com/aws-samples/lambda-Java8-dynamodb

0
Yuliia Ashomok