持久性函数支持的运行时 - AWS Lambda

持久性函数支持的运行时

持久性函数适用于 Node.js 和 Python 运行时。您可以通过在 Lambda 控制台中使用托管运行时来创建持久性函数,或者使用容器映像来部署这些函数,以获得更灵活的运行时版本选择。

Lambda 托管运行时

当您在 Lambda 控制台中或使用具有 --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}' 参数的 AWS CLI 创建函数时,以下托管运行时将支持持久性函数。有关 Lambda 运行时的完整信息,请参阅 Lambda 运行时

语言 运行时
Node.js nodejs22.x
Node.js nodejs24.x
Python python3.13
Python python3.14
注意

Lambda 运行时包括用于测试和开发的持久执行 SDK。但是,我们建议将 SDK 包含在您的生产部署包中。这样可以确保版本一致性,并且可以避免可能影响函数行为的潜在运行时更新。

Node.js

在 Node.js 项目中安装 SDK:

npm install @aws/durable-execution-sdk-js

SDK 支持 JavaScript 和 TypeScript。对于 TypeScript 项目,SDK 包含类型定义。

Python

在 Python 项目中安装 SDK:

pip install aws-durable-execution-sdk-python

Python SDK 使用同步方法,并且不需要 async/await

容器映像

您可以将持久性函数与容器映像一起使用,以支持其他运行时版本或自定义运行时配置。容器映像使您能够使用并非作为托管运行时提供的运行时版本,或对您的运行时环境进行自定义。

要使用容器映像创建持久性函数:

  1. 基于 Lambda 基础映像创建 Dockerfile

  2. 在您的容器中安装持久执行 SDK

  3. 构建容器映像并将其推送到 Amazon Elastic Container Registry

  4. 在启用持久执行的情况下,从容器映像创建 Lambda 函数

Python 容器示例

为 Python 3.11 创建 Dockerfile:

FROM public.ecr.aws/lambda/python:3.11 # Copy requirements file COPY requirements.txt ${LAMBDA_TASK_ROOT}/ # Install dependencies including durable SDK RUN pip install -r requirements.txt # Copy function code COPY lambda_function.py ${LAMBDA_TASK_ROOT}/ # Set the handler CMD [ "lambda_function.handler" ]

创建 requirements.txt 文件:

aws-durable-execution-sdk-python

构建并推送映像。

# Build the image docker build -t my-durable-function . # Tag for ECR docker tag my-durable-function:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest # Push to ECR docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest

创建启用了持久执行的函数:

aws lambda create-function \ --function-name myDurableFunction \ --package-type Image \ --code ImageUri=123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest \ --role arn:aws:iam::123456789012:role/lambda-execution-role \ --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}'

有关将容器映像与 Lambda 结合使用的更多信息,请参阅《Lambda 开发人员指南》中的创建 Lambda 容器映像

运行时系统注意事项

SDK 版本管理:在您的部署包或容器映像中包含持久执行 SDK。这样可以确保您的函数使用的是特定的 SDK 版本,并且不会受到运行时更新的影响。将 SDK 版本固定在您的 package.jsonrequirements.txt 中以控制升级时间。

运行时更新:AWS 将更新托管运行时,以包括安全补丁和错误修复。这些更新可能包括新的 SDK 版本。为避免发生意外行为,请将 SDK 包含在部署包中,并在部署到生产环境之前进行彻底测试。

容器映像大小:容器映像的最大未压缩大小为 10GB。持久执行 SDK 为映像添加了最小大小。通过采用多阶段构建方式并移除不必要的依赖项来优化您的容器。

冷启动性能:容器映像的冷启动时间可能比托管运行时长。持久执行 SDK 对冷启动性能的影响极小。如果冷启动延迟对您的应用程序至关重要,请使用预置并发。