2

Je tente de développer une fonction AWS lambda qui est déclenchée lorsqu'un fichier apparaît dans un compartiment s3 spécifique. J'essaie de suivre les exemples de AWS Lambda documentation, en utilisant aws-java-sdk-lambda 1.11.192, aws-java-sdk-s3 1.11.192. Mais, malheureusement, ces exemples utilisent RequestHandler qui est obsolète dans la dernière version du jar.Intégration AWS Lambda et S3 avec AWS Java Sdk

Mon code est similaire à this example

package example; 

import java.net.URLDecoder; 

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler; 
import com.amazonaws.services.lambda.runtime.events.S3Event; 
import com.amazonaws.services.s3.AmazonS3; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.amazonaws.services.s3.event.S3EventNotification.S3EventNotificationRecord; 

public class S3GetTextBody implements RequestHandler<S3Event, String> { 

public String handleRequest(S3Event s3event, Context context) { 
    try { 
     S3EventNotificationRecord record = s3event.getRecords().get(0); 

     // Retrieve the bucket & key for the uploaded S3 object that 
     // caused this Lambda function to be triggered 
     String bkt = record.getS3().getBucket().getName(); 
     String key = record.getS3().getObject().getKey().replace('+', ' '); 
     key = URLDecoder.decode(key, "UTF-8"); 

     // Read the source file as text 
     AmazonS3 s3Client = new AmazonS3Client(); 
     String body = s3Client.getObjectAsString(bkt, key); 
     System.out.println("Body: " + body); 
     return "ok"; 
    } catch (Exception e) { 
     System.err.println("Exception: " + e); 
     return "error"; 
    } 

    } 
} 

La version actuelle du lambda pour sdk aws ne contient pas -

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler; 
import com.amazonaws.services.lambda.runtime.events.S3Event; 

Quelles sont les alternatives? Comment puis-je obtenir des fonctionnalités similaires en utilisant les nouvelles versions de leur SDK.

Répondre

2

Vous n'avez pas besoin d'implémenter l'interface RequestHandler fournie dans leur bibliothèque auxiliaire. Toute méthode fonctionnera à condition que les paramètres d'entrée et de sortie puissent être sérialisés correctement. Pour plus de détails, voir pour plus de détails.

Si vous souhaitez utiliser la bibliothèque d'aide, utilisez les coordonnées dépendances suivantes:

<groupId>com.amazonaws</groupId> 
<artifactId>aws-lambda-java-core</artifactId> 
<version>1.1.0</version> 

Et pour l'aide de l'événement S3:

<groupId>com.amazonaws</groupId> 
<artifactId>aws-lambda-java-events</artifactId> 
<version>1.3.0</version> 

Ce n'est pas situé dans leur principale aws-java-sdk mais a son référentiel own.