使用 Lambda 的最佳实践
Amazon Lambda 函数在容器中运行,这是与其他函数隔离的执行环境。在您首次运行某个函数时,Amazon Lambda 创建新容器并开始执行该函数的代码。
Lambda 函数具有对每个调用执行一次的处理程序。该处理程序包含函数的主业务逻辑。例如,显示在 第 4 步:创建并测试一个 Lambda 函数 中的 Lambda 函数具有可处理 DynamoDB 流中记录的处理程序。
您也可以提供仅运行一次的初始化代码,在创建容器之后,但在 Amazon Lambda 首次执行处理程序之前运行。第 4 步:创建并测试一个 Lambda 函数 中显示的 Lambda 函数具有导入适用于 Node.js 中的 JavaScript 的 SDK,然后为 Amazon SNS 创建客户端的初始化代码。这些对象只应在处理程序外部定义一次。
执行函数之后,Amazon Lambda 可选择为后续的函数调用重用容器。在这种情况下,您的函数处理程序可能能够重用您在初始化代码中定义的资源。(请注意,您无法控制 Amazon Lambda 保留容器的时间长度,也根本无法控制是否会重用容器。)
对于使用 Amazon Lambda 的 DynamoDB 触发器,我们建议:
-
Amazon 服务客户端应该在初始化代码而非处理程序中实例化。这样可允许 Amazon Lambda 在容器的整个生命周期中重用现有连接。
-
通常而言,您无需明确管理连接或实施连接池,因为 Amazon Lambda 将为您管理它。
DynamoDB 流的 Lambda 使用者不能保证只传输一次,并且可能导致偶尔出现重复。确保您的 Lambda 函数代码是幂等的,以防止由于重复处理而出现意外问题。
有关更多信息,请参阅 Amazon Lambda 开发人员指南中的使用 Amazon Lambda 函数的最佳实践。