簡體   English   中英

如何使用AWS SDK for Java 2.0創建Lambda函數

[英]How to create a Lambda function using AWS SDK for Java 2.0

如何使用AWS SDK for Java 2.0創建Lambda函數? Usinx SDK 1.x,我可以使用以下方法:

public String handleRequest(S3Event s3event, Context context) {
System.out.println("do stuff");
return "success";
}

使用java SDK 2.x,我似乎無法找到S3Event和Context對象的等效依賴項? 如果有人能指出我的例子,我真的很感激。 或者我應該堅持使用SDK 1.x如果2.x還不夠成熟以處理lambda?

S3EventAWS Lambda Java事件庫的一部分,其中ContextAWS Lambda Java Core的一部分 當您包含事件庫時,您需要引入1.x Java SDK。 但是,如果您使用Lambda處理程序的Java Stream版本,則可以刪除對事件庫的依賴性,從而消除對1.x SDK的需求。 您的代碼看起來像:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.jayway.jsonpath.JsonPath;


public class S3EventLambdaHandler implements RequestStreamHandler {
    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) {

        try {
            List<String> keys = JsonPath.read(inputStream, "$.Records[*].s3.object.key");

            for( String nextKey: keys )
                System.out.println(nextKey);
        }
        catch( IOException ioe ) {
            context.getLogger().log("caught IOException reading input stream");
        }
    }
}

那么你可以自己閱讀S3Event中的JSON。 實際上,您正在代碼中對S3Event進行序列化,而不是讓Amazon庫執行此操作。

顯然最大的缺點是你必須自己序列化事件。 可以在此處找到JSON中的示例S3事件。

上面的示例使用JsonPath在這種情況下從事件中提取鍵。 刪除Lambda事件庫后,您會驚訝地發現Lambda代碼的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM