使用 Python 构建 Lambda 函数
您可以在 AWS Lambda 中运行 Python。Lambda 为 Python 提供运行时运行您的代码来处理事件。您的代码在包含 SDK for Python (Boto3) 的环境中运行,其中包含来自您管理的 AWS Identity and Access Management (IAM) 角色的凭证。要了解有关 Python 运行时随附的 SDK 版本的更多信息,请参阅 包含运行时的 SDK 版本。
Lambda 支持以下 Python 运行时。
名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 |
---|---|---|---|---|---|
Python 3.13 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Python 3.12 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Python 3.11 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Python 3.10 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Python 3.9 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
创建 Python 函数
-
打开 Lambda 控制台
。 -
选择 Create function(创建函数)。
-
配置以下设置:
-
函数名称:输入函数名称。
-
运行时:选择 Python 3.13。
-
-
选择 Create function (创建函数)。
控制台将使用名为 lambda_function
的源文件创建一个 Lambda 函数。您可以在内置代码编辑器中编辑此文件并添加更多文件。在部署部分,选择部署以更新函数的代码。然后,要运行您的代码,请在测试事件部分中选择创建测试事件。
您的 Lambda 函数附带了 CloudWatch Logs 日志组。函数运行时会将每次调用的详细信息发送到 CloudWatch Logs。该运行时会中继调用期间函数输出的任何日志。如果您的函数返回错误,则 Lambda 将为错误设置格式,并将其返回给调用方。
主题
包含运行时的 SDK 版本
Python 运行时中包含的 AWS SDK 版本取决于运行时版本和您的 AWS 区域。要查找您正在使用的运行时中包含的 SDK 的版本,请使用以下代码创建 Lambda 函数。
import boto3 import botocore def lambda_handler(event, context): print(f'boto3 version: {boto3.__version__}') print(f'botocore version: {botocore.__version__}')
Python 3.13 中的实验性功能
Python 3.13 托管式运行时和基础映像不支持以下实验性功能。您无法使用运行时标志来启用这些功能。要在 Lambda 函数中使用这些功能,您必须部署包含您自己的 Python 3.13 版本的自定义运行时或容器映像。
-
自由线程 CPython
:您无法禁用全局解释器锁定。 -
即时(JIT)编译器
:您无法启用 JIT 编译器。
响应格式
在 Python 3.12 及更高版本的 Python 运行时系统中,函数作为其 JSON 响应的一部分返回 Unicode 字符。早期的 Python 运行时系统在响应中返回 Unicode 字符的转义序列。例如,在 Python 3.11 中,如果您返回诸如“こんにちは”之类的 Unicode 字符串,它会转义 Unicode 字符并返回“\u3053\u3093\u306b\u3061\u306f”。Python 3.12 运行时系统会返回原始的“こんにちは”。
使用 Unicode 响应可以减小 Lambda 响应的大小,从而更轻松地将较大的响应容纳到同步函数 6MB 的最大有效负载大小中。在前面的示例中,转义后的版本为 32 个字节,而 Unicode 字符串的转义版本为 17 个字节。
升级到 Python 3.12 或更高版本 Python 运行时后,可能需要调整代码以适应新的响应格式。如果调用方期望使用转义 Unicode,则必须在返回函数中添加代码以手动转义 Unicode,或者调整调用方以处理 Unicode 返回。
顺利关闭扩展程序
Python 3.12 及更高版本的 Python 运行时系统为带有外部扩展程序的函数提供了改进的顺利关闭功能。当 Lambda 关闭执行环境时,它会向运行时系统发送 SIGTERM
信号,然后将一个 SHUTDOWN
事件发送给每个注册的外部扩展。您可以在 Lambda 函数中捕获 SIGTERM
信号,并清理该函数创建的资源,例如数据库连接。
要了解有关执行环境生命周期的更多信息,请参阅 了解 Lambda 执行环境生命周期。有关如何顺利关闭扩展程序的示例,请参阅 AWS Samples GitHub Repository