1

J'ai joué avec la nouvelle API rekognition d'Amazon et j'ai des difficultés à exécuter leur application Java example depuis IntelliJ. J'utilise Maven pour construire le projet et nous avons inclus le SDK AWS dans mon pom.xml comme suit:Impossible de se connecter à AWS rekognition API à partir d'IntelliJ

<dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>aws-java-sdk</artifactId> 
    <version>${aws-java-sdk.version}</version> 
</dependency> 

D'après ce que je peux dire, ma demande semble échouer quelque part ici:

AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(credentials) 
     .withEndpoint("s3-us-west-2.amazonaws.com"); 
rekognitionClient.setSignerRegionOverride("us-west-2"); 
try { 
    DetectFacesResult result = rekognitionClient.detectFaces(request); 
    ObjectMapper objectMapper = new ObjectMapper(); 
    System.out.println("Result = " + objectMapper.writeValueAsString(result)); 
} catch (AmazonRekognitionException e) { 
    e.printStackTrace(); 
} 

... et l'erreur que je reçois est:

com.amazonaws.services.rekognition.model.AmazonRekognitionException: null (Service: AmazonRekognition; Status Code: 400; Error Code: null; Request ID: null) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1545) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1183) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:964) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:676) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:650) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:633) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$300(AmazonHttpClient.java:601) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:583) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:447) 
    at com.amazonaws.services.rekognition.AmazonRekognitionClient.doInvoke(AmazonRekognitionClient.java:1130) 
    at com.amazonaws.services.rekognition.AmazonRekognitionClient.invoke(AmazonRekognitionClient.java:1106) 
    at com.amazonaws.services.rekognition.AmazonRekognitionClient.detectFaces(AmazonRekognitionClient.java:599) 
    at com.github.jhenningsgaard.DetectFaces.main(DetectFaces.java:39) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

Je tiens également à noter que je courais l'opération (voir ci-dessous) dans AWS CLI et a réussi.

aws rekognition detect-faces \ 
--image '{"S3Object":{"Bucket":"Bucketname","Name":"s3ObjectKey"}}' \ 
--attributes "ALL" \ 
--region us-east-1 \ 
--profile adminuser 
+0

Pourriez-vous montrer votre 'request'? –

+0

Ma demande: '{Image: {S3Object: {Bucket: rekognitionexample, Nom: obama.jpg,}}, Attributs: [ALL]}' –

+0

Pourquoi essayez-vous de vous connecter au service de rekognition en utilisant et endpoint S3? Vous devriez utiliser un point de repère de reconnaissance ... Voir http://docs.aws.amazon.com/general/latest/gr/rande.html#rekognition_region – mickzer

Répondre

0

Vous pouvez utiliser le code suivant pour créer une instance du client rekognition:

AWSCredentials credentials; 
try { 
    credentials = new ProfileCredentialsProvider("default").getCredentials(); 
} catch (Exception e) { 
    throw new AmazonClientException("Cannot load the credentials from the credential profiles file. " 
      + "Please make sure that your credentials file is at the correct " 
      + "location (/Users/<userid>/.aws/credentials), and is in a valid format.", e); 
} 
AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(credentials) 
     .withEndpoint("rekognition.eu-west-1.amazonaws.com"); 
rekognitionClient.setSignerRegionOverride("eu-west-1");