在jar中创建多个Lambda函数(Java)是否可行

Rob*_*ese 3 amazon-web-services aws-lambda

我是AWS Lambda的新手,并且正在使用AWS Eclipse插件来开发Lambda函数。

问题:是否可以对所有不同的Lambda函数使用单个.jar。在此单个.jar文件中,我可以具有用于不同Lambda函数的类。

否则,我应该为每个Lambda函数创建单独的.jar文件,并为每个Lambda函数分别上传.jars。

Die*_*ing 5

可以使用一个.jar,但lambda不能共享一个.jar。您将需要上传jar文件或提供与s3位置相同的lambda,位置可以相同。

当然,lambda只是一些代码,因此,如果您希望一个lambda共享一个.jar,它可以基于事件有效负载中的值调用不同的函数。

下面是一个示例如何在多个lambda中使用一个jar:

Lambda#1处理程序:

example.Hello::myHandler
Run Code Online (Sandbox Code Playgroud)

Lambda#2处理程序:

example.Hello::mySecondHandler
Run Code Online (Sandbox Code Playgroud)

示例代码:

package example;

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

public class Hello implements RequestHandler<Integer, String>{
    public String myHandler(int myCount, Context context) {
        return String.valueOf(myCount);
    }
    public String mySecondHandler(int mySum, Context context) {
        return String.valueOf(mySum);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是一个lambda如何具有两个基本事件的示例:

package example;

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

public class Hello implements RequestHandler<String, String>{

    public String myMainHandler(String event_type, Context context) {

      switch (event_type) {
            case "myHandler": return this.myHandler()
            case "mySecondHandler": return this.mySecondHandler()
            default: return "Good Bye";
        }
    }

    public String myHandler() {
        return "Hello";
    }
    public String mySecondHandler() {
        return "World";
    }
}
Run Code Online (Sandbox Code Playgroud)