可以使用一个 .jar,但 lambda 不可能共享一个 .jar。您需要上传 jar 文件或提供与 s3 位置相同的 lambda,位置可以相同。
当然,lambda 只是一小段代码,因此如果您希望一个 lambda 共享一个 .jar,它可以根据事件有效负载内的值调用不同的函数。
下面是如何在多个 lambda 中使用一个 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";
}
}