我是AWS Lambda的新手,我使用AWS Eclipse插件开发Lambda函数。
问题:是否可以对所有不同的Lambda函数使用单个.jar。在这个单独的.jar文件中,我可以拥有不同Lambda函数的类。
否则,我应该为每个Lambda函数创建单独的.jar文件,并为每个Lambda函数单独上传.jars。
答案 0 :(得分:4)
可以使用一个.jar,但lambdas不可能共享一个.jar。您需要上传jar文件或提供与s3位置相同的lambda,位置可以相同。
当然lambda只是一些代码,所以如果你想让一个lambda共享一个.jar,它可以根据事件有效负载内的值调用不同的函数。
下面是一个如何在多个lambdas中使用一个jar的示例:
Lambda#1处理程序:
example.Hello::myHandler
Lambda#2处理程序:
example.Hello::mySecondHandler
示例代码:
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);
}
}
下面是一个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";
}
}