Lambda SnapStart 的运行时挂钩

您所在的位置:网站首页 lambda的使用 Lambda SnapStart 的运行时挂钩

Lambda SnapStart 的运行时挂钩

#Lambda SnapStart 的运行时挂钩| 来源: 网络整理| 查看: 265

Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。 Lambda SnapStart 的运行时挂钩

在 Lambda 创建快照之前或 Lambda 还原快照后,使用运行时挂钩实施代码。运行时挂钩作为开源检查点协调还原(CRaC)项目的一部分提供。CRaC 正在开发开放 Java 开发工具包(OpenJDK)。有关如何将 CRaC 与参考应用程序结合使用的示例,请参阅 GitHub 上的 CRaC 存储库。CRaC 使用三个主要元素:

Resource – 具有两种方法的接口,beforeCheckpoint() 和 afterRestore()。使用这些方法实施要在快照之前和还原之后运行的代码。

Context – 若要接收检查点和还原的通知,Resource 必须注册到 Context。

Core – 协调服务,该服务通过静态方法 Core.getGlobalContext() 提供默认全局 Context。

有关 Context 和 Resource 的更多信息,请参阅 CRaC 文档中的 Package org.crac(程序包 org.crac)。

使用以下步骤通过 org.crac 程序包实施运行时挂钩。Lambda 运行时包含自定义的 CRaC 上下文实施现,该实施会在检查点检查之前和还原后调用运行时挂钩。

步骤 1:更新构建配置

将 org.crac 依赖项添加到构建配置中。下面的示例使用了 Gradle。有关其他构建系统的示例,请参阅 Apache Maven 文档。

dependencies { compile group: 'com.amazonaws', name: 'aws-lambda-java-core', version: '1.2.1' # All other project dependecies go here: # ... # Then, add the org.crac dependency: implementation group: 'io.github.crac', name: 'org-crac', version: '0.1.3' } 第 2 步:更新 Lambda 处理程序

Lambda 函数处理程序是函数代码中处理事件的方法。当调用函数时,Lambda 运行处理程序方法。当该处理程序退出或返回一个响应时,它便可用于处理另一个事件。

有关更多信息,请参阅Java 中的 Amazon Lambda 函数处理程序。

以下示例处理程序介绍如何在检查点检查(beforeCheckpoint())之前和还原(afterRestore())之后运行代码。该处理程序还将 Resource 注册到运行时管理的全局 Context 中。

注意

Lambda 创建快照时,初始化代码最多可以运行 15 分钟。beforeCheckpoint() 运行时挂钩计入 15 分钟。Lambda 还原快照时,运行时(JVM)必须加载,afterRestore() 运行时挂钩必须在超时限制(2 秒)内完成。否则,您将收到 SnapStartTimeoutException。

... import org.crac.Resource; import org.crac.Core; ... public class CRaCDemo implements RequestStreamHandler, Resource { public CRaCDemo() { Core.getGlobalContext().register(this); } public String handleRequest(String name, Context context) throws IOException { System.out.println("Handler execution"); return "Hello " + name; } @Override public void beforeCheckpoint(org.crac.Context


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3