使用 Python 构建 Lambda 函数 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Python 构建 Lambda 函数

您可以在 Amazon Lambda 中运行 Python。Lambda 为 Python 提供运行时运行您的代码来处理事件。您的代码在包含 SDK for Python (Boto3) 的环境中运行,其中包含来自您管理的 Amazon Identity and Access Management (IAM) 角色的凭证。

Lambda 支持以下 Python 运行时。

Python
名称 标识符 SDK 操作系统 弃用日期 阻止函数创建 阻止函数更新

Python 3.12

python3.12

boto3-1.28.72 botocore-1.31.72

Amazon Linux 2023

Python 3.11

python3.11

boto3-1.27.1 botocore-1.30.1

Amazon Linux 2

Python 3.10

python3.10

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

Python 3.9

python3.9

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

Python 3.8

python3.8

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

2024 年 10 月 14 日

2024 年 11 月 13 日

2025 年 1 月 7 日

注意

此表中的运行时信息会持续更新。有关在 Lambda 中使用 Amazon SDK 的更多信息,请参阅 Serverless Land 中的 Managing Amazon SDKs in Lambda functions

创建 Python 函数
  1. 打开 Lambda 控制台

  2. 选择 Create function(创建函数)。

  3. 配置以下设置:

    • 函数名称:输入函数名称。

    • 运行时系统:选择 Python 3.12

  4. 选择 Create function(创建函数)。

  5. 要配置测试事件,请选择测试

  6. 对于事件名称,输入 test

  7. 选择 Save changes(保存更改)。

  8. 要调用该函数,请选择 Test(测试)。

控制台将使用名为 lambda_function 的源文件创建一个 Lambda 函数。您可以在内置代码编辑器中编辑此文件并添加更多文件。要保存您的更改,请选择 Save(保存)。然后,要运行代码,请选择 Test(测试)。

注意

Lambda 控制台使用 Amazon Cloud9 在浏览器中提供集成开发环境。您还可以使用 Amazon Cloud9 在您自己的环境中开发 Lambda 函数。有关更多信息,请参阅《Amazon Cloud9 用户指南》中的通过 Amazon Toolkit 使用 Amazon Lambda 函数

注意

要开始在本地环境中开发应用程序,请部署本指南 GitHub 存储库中提供的示例应用程序之一。

Python 中的 Lambda 应用程序示例
  • blank-python – 一个 Python 函数,用于显示日志记录、环境变量、Amazon X-Ray 跟踪、层、单元测试和Amazon开发工具包的使用情况。

您的 Lambda 函数自带一个 CloudWatch 日志组。函数运行时会将有关每次调用的详细信息发送到 CloudWatch Logs。该运行时会中继调用期间函数输出的任何日志。如果您的函数返回错误,则 Lambda 将为错误设置格式,并将其返回给调用方。

响应格式

在 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 后,可能需要调整代码以适应新的响应格式。如果调用方期望使用转义 Unicode,则必须在返回函数中添加代码以手动转义 Unicode,或者调整调用方以处理 Unicode 返回。

顺利关闭扩展程序

Python 3.12 及更高版本的 Python 运行时系统为带有外部扩展程序的函数提供了改进的顺利关闭功能。当 Lambda 关闭执行环境时,它会向运行时系统发送 SIGTERM 信号,然后将一个 SHUTDOWN 事件发送给每个注册的外部扩展。您可以在 Lambda 函数中捕获 SIGTERM 信号,并清理该函数创建的资源,例如数据库连接。

要了解有关执行环境生命周期的更多信息,请参阅 Lambda 执行环境。有关如何对扩展使用优雅关闭的示例,请参阅Amazon示例 GitHub 存储库