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?
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!
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.
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;
Vous devez vérifier quelques points:
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));
Vous pouvez obtenir cette valeur depuis votre AWS Web Console. Détails
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