2017-10-12 3 views
3

J'ai installé la version locale de dynamoDB et configuré un projet maven java pour accéder à la base de données. Quand je cours le code j'obtiens l'erreur ci-dessous. Depuis que j'ai installé le serveur en local (il tourne son fils localhost: 8000), je n'ai pas d'informations d'identification à fournir ... Une idée de comment le résoudre?Impossible de charger les informations d'identification AWS Erreur lors de l'accès à dynamoDB (local) avec java

import java.util.Iterator; 

import org.apache.commons.cli.ParseException; 

import com.amazonaws.ClientConfiguration; 
import com.amazonaws.client.builder.AwsClientBuilder; 
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; 
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; 
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; 
import com.amazonaws.services.dynamodbv2.document.DynamoDB; 
import com.amazonaws.services.dynamodbv2.document.Table; 
import com.amazonaws.services.dynamodbv2.document.TableCollection; 
import com.amazonaws.services.dynamodbv2.exceptions.DynamoDBLocalServiceException; 
import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded; 
import com.amazonaws.services.dynamodbv2.local.main.ServerRunner; 
import com.amazonaws.services.dynamodbv2.local.server.DynamoDBProxyServer; 
import com.amazonaws.services.dynamodbv2.model.ListTablesResult; 

public class Test { 

    public static void main(String[] args) { 

     AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
        // we can use any region here 
        new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "us-west-2")) 
        .build(); 
     DynamoDB dynamoDB = new DynamoDB(client); 
     //dynamoDB.listTables(); 
     TableCollection<ListTablesResult> list = dynamoDB.listTables(); 

     Iterator<Table> iterator = list.iterator(); 

      System.out.println("Listing table names"); 

      while (iterator.hasNext()) { 
       Table table = iterator.next(); 
       System.out.println(table.getTableName()); 
      } 


     System.out.println("over"); 
    } 



} 

erreur est

Exception in thread "main" com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain 
    at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:131) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1115) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:764) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:728) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:721) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:704) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:672) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:654) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:518) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:1831) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1807) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.listTables(AmazonDynamoDBClient.java:1123) 
    at com.amazonaws.services.dynamodbv2.document.internal.ListTablesCollection.firstPage(ListTablesCollection.java:46) 
    at com.amazonaws.services.dynamodbv2.document.internal.PageIterator.next(PageIterator.java:45) 
    at com.amazonaws.services.dynamodbv2.document.internal.IteratorSupport.nextResource(IteratorSupport.java:87) 
    at com.amazonaws.services.dynamodbv2.document.internal.IteratorSupport.hasNext(IteratorSupport.java:55) 

Répondre

1

Nous sommes tombés sur ce que je cherchais le même problème. Après une demi-journée de perte de temps, a réussi à résoudre le problème. Poster ici au cas où quelqu'un tomberait sur une telle situation à nouveau.

Et le pire? La solution que j'ai eu à traverser et expérimenter après avoir parcouru des milliers de pages, vous vous attendez à ce qu'il y ait quelques informations sur le problème. Au minimum, la documentation aurait dû mentionner une note!

La solution:

Configuring AWS Credentials: passer par là pour mettre en place une accréditation. Configurez-le comme n'importe quelle chose aléatoire, cela n'a pas vraiment d'importance.

Ouais, c'était ça !!


Et pour les ppl qui sont toujours paresseux (comme moi ;-)) à passer par là, il suffit de suivre le plus facile des méthodes:

  1. Ouvrez le fichier de configuration par défaut: ~/aws/credentials
  2. Modifiez les valeurs dans ce à quoi que ce soit (comme une chaîne vide ici)

    [default] 
    aws_access_key_id='' 
    aws_secret_access_key='' 
    
  3. exécuter le programme. Vous pouvez me remercier plus tard: D