AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 运行时接口

AWS Lambda 提供了用于自定义运行时的 HTTP API 来接收来自 Lambda 的调用事件并在 Lambda 执行环境中发送回响应数据。

运行时 API 版本 2018-06-01 的 OpenAPI 规范在此处提供:runtime-api.zip

运行时将从 AWS_LAMBDA_RUNTIME_API 环境变量获取终端节点,添加 API 版本,并使用以下资源路径与 API 进行交互。

例 请求

curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"

下一个调用

路径/runtime/invocation/next

方法GET

检索调用事件。响应主体包含来自调用的有效负载,该负载是包含来自函数触发器的事件数据的 JSON 文档。响应标头包含有关调用的额外数据。

响应标头

  • Lambda-Runtime-Aws-Request-Id – 请求 ID,用于标识触发了函数调用的请求。

    例如:8476a536-e9f4-11e8-9739-2dfe598c3fcd

  • Lambda-Runtime-Deadline-Ms – 函数超时的日期(Unix 时间形式,以毫秒为单位)。

    例如:1542409706888

  • Lambda-Runtime-Invoked-Function-Arn – Lambda 函数的 ARN、版本或在调用中指定的别名。

    例如:arn:aws:lambda:us-east-2:123456789012:function:custom-runtime

  • Lambda-Runtime-Trace-IdAWS X-Ray 跟踪标头

    例如:Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1

  • Lambda-Runtime-Client-Context – 对于来自 AWS 移动开发工具包的调用,为有关客户端应用程序和设备的数据。

  • Lambda-Runtime-Cognito-Identity – 对于来自 AWS 移动开发工具包的调用,为有关 Amazon Cognito 身份提供商的数据。

请求 ID 用于跟踪 Lambda 中的调用。使用它可在您发送响应时指定调用。

跟踪标头包含跟踪 ID、父 ID 和采样决策。如果对请求进行采样,则由 Lambda 或某个上游服务对请求进行采样。运行时应设置具有标头的值的 _X_AMZN_TRACE_ID。X-Ray 开发工具包将读取此项以获取 ID 并确定是否要跟踪请求。

调用响应

路径/runtime/invocation/AwsRequestId/response

方法POST

将调用响应发送到 Lambda。在运行时调用函数处理程序后,它会将来自函数的响应发布到调用响应路径。对于同步调用,Lambda 随后会将响应发送回客户端。

例 成功请求

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"

调用错误

路径/runtime/invocation/AwsRequestId/error

方法POST

如果函数返回了错误,则运行时会将错误格式化到一个 JSON 文档中,并将它发布到调用错误路径。

例 请求正文

{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException" }

例 错误请求

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"

初始化错误

路径/runtime/init/error

方法POST

如果运行时在初始化期间遇到错误,它会将错误消息发布到初始化错误路径。

例 初始化错误请求

ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"