Ich versuche, eine AWS-Lambda-Funktion zu entwickeln, die ausgelöst wird, wenn eine Datei in einem bestimmten S3-Bucket angezeigt wird. Ich versuche, den Beispielen von AWS Lambda documentation zu folgen, mit aws-java-sdk-lambda 1.11.192, aws-java-sdk-s3 1.11.192. Aber leider verwenden diese Beispiele RequestHandler, das in der neuesten Version des Jar veraltet ist.AWS Lambda und S3 Integration mit AWS Java Sdk
Mein Code ist ähnlich 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";
}
}
}
Die aktuelle Version des aws sdk für Lambda enthält nicht -
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
Was meine Alternativen? Wie erreiche ich ähnliche Funktionalität mit den neueren Versionen ihrer SDK?