AWS将启动JVM并在第一个请求时实例化您的代码实例. AWS具有未记录的停机时间,如果您在此时间限制内未再次调用Lambda,则会关闭JVM.您会注意到这些初始请求可能会花费更长的时间,但是一旦您的功能“预热”,它就会快得多.
因此,要直接回答您的问题,如果下一个请求足够快,您的实例将被重用.否则,将会出现一个新实例.
一个简单的Lambda函数可以说明这一点:
/**
* A Lambda handler to see where this runs and when instances are reused.
*/
public class LambdaStatus {
private String hostname;
private AtomicLong counter;
public LambdaStatus() throws UnknownHostException {
this.counter = new AtomicLong(0L);
this.hostname = InetAddress.getLocalHost().getCanonicalHostName();
}
public void handle(Context context) {
counter.getAndIncrement();
context.getLogger().log("hostname=" + hostname + ",counter=" + counter.get());
}
}
从调用上面的日志.
22:49:20 hostname=ip-10-12-169-156.ec2.internal,counter=1
22:49:27 hostname=ip-10-12-169-156.ec2.internal,counter=2
22:49:39 hostname=ip-10-12-169-156.ec2.internal,counter=3
01:19:05 hostname=ip-10-33-101-18.ec2.internal,counter=1