AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Lambda 函数处理程序 (Python)

在创建 Lambda 函数时,需要指定一个处理程序(此处理程序是代码中的函数),AWS Lambda 可在服务执行代码时调用它。在 Python 中创建处理程序函数时,使用以下一般语法结构。

Copy
def handler_name(event, context): ... return some_value

在该语法中,需要注意以下方面:

  • event - AWS Lambda 使用此参数将事件数据传递到处理程序。此参数通常是 Python dict 类型。它也可以是 liststrintfloatNoneType 类型。

  • context - AWS Lambda 使用此参数向您的处理程序提供运行时信息。此参数为 LambdaContext 类型。

  • (可选)处理程序可返回值。返回的值所发生的状况取决于调用 Lambda 函数时使用的调用类型:

    • 如果您使用 RequestResponse 调用类型(同步执行),AWS Lambda 会将 Python 函数调用的结果返回到调用 Lambda 函数的客户端(在对调用请求的 HTTP 响应中,序列化为 JSON)。例如,AWS Lambda 控制台使用 RequestResponse 调用类型,因此当您使用控制台调用函数时,控制台将显示返回的值。

      如果处理程序返回 NONE,AWS Lambda 将返回 null。

    • 如果您使用 Event 调用类型(异步执行),则丢弃该值。

例如,考虑以下 Python 示例代码。

Copy
def my_handler(event, context): message = 'Hello {} {}!'.format(event['first_name'], event['last_name'])  return { 'message' : message }

此示例具有一个名为 my_handler 的函数。此函数从它接收为输入的事件返回包含数据的消息。

将此代码作为 Lambda 函数进行上传并测试

  1. 保存该文件 (例如,保存为 hello_python.py)。

  2. 将该文件和所有依赖项打包到 .zip 文件中。在创建 zip 文件时,仅包含代码及其依赖项,而不包含文件夹。

    有关说明,请参阅创建部署程序包 (Python)

  3. 使用控制台或 AWS CLI 上传 .zip 文件以创建 Lambda 函数。您在 Python 代码中指定创建 Lambda 函数时要用作处理程序的函数名称。有关使用控制台创建 Lambda 函数的说明,请参阅 步骤 2.1:创建 Hello World Lambda 函数。在此示例中,处理程序是 hello_python.my_handler (file-name.function-name)。请注意,入门使用了为 Lambda 函数提供示例代码的蓝图。在这种情况下,您已经有一个部署程序包。因此,在配置函数步骤中,您应选择上传一个 zip 文件。

    以下 create-function AWS CLI 命令创建 Lambda 函数。在其他参数中,它指定 --handler 参数以指定处理程序名称。请注意,--runtime 参数指定 python3.6。您还可以使用 python2.7

    Copy
    aws lambda create-function \ --region us-west-2 \ --function-name HelloPython \ --zip-file fileb://deployment-package.zip \ --role arn:aws:iam::account-id:role/lambda_basic_execution \ --handler hello_python.my_handler \ --runtime python3.6 \ --timeout 15 \ --memory-size 512