AWS Lambda
开发人员指南

将 AWS Lambda 与其他服务结合使用

AWS Lambda 与其他 AWS 服务集成以调用函数。您可以配置触发器调用函数来响应资源生命周期事件、响应传入的 HTTP 请求、使用队列中的事件或按计划运行

与 Lambda 集成的每个服务都将数据作为事件以 JSON 形式发送给您的函数。对于每种事件类型,事件文档的结构各不相同,并且包含关于触发函数的资源或请求的数据。Lambda 运行时将事件转换为对象并将其传递给您的函数。

以下示例显示了一个来自应用程序负载均衡器的测试事件,该事件表示对 /lambda?query=1234ABCD 的 GET 请求。

例 来自应用程序负载均衡器的事件

{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-279XGJDqGZ5rsrHC2Fjr/49e9d65c45c6791a" } }, "httpMethod": "GET", "path": "/lambda", "queryStringParameters": { "query": "1234ABCD" }, "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding": "gzip", "accept-language": "en-US,en;q=0.9", "connection": "keep-alive", "host": "lambda-alb-123578498.us-east-2.elb.amazonaws.com", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "x-amzn-trace-id": "Root=1-5c536348-3d683b8b04734faae651f476", "x-forwarded-for": "72.12.164.125", "x-forwarded-port": "80", "x-forwarded-proto": "http", "x-imforwards": "20" }, "body": "", "isBase64Encoded": false }

注意

Lambda 运行时将事件文档转换为对象并将其传递给函数处理程序。对于编译型语言,Lambda 在库中提供事件类型的定义。请参阅以下主题了解更多信息。

对于生成队列或数据流的服务,您可以在 Lambda 中创建事件源映射,并授予 Lambda 权限来访问执行角色中其他服务。Lambda 从其他服务读取数据、创建事件和调用您的函数。

Lambda 从其读取事件的服务

其他服务直接调用您的函数。您在函数的基于资源的策略中授予其他服务权限,并配置其他服务来生成事件和调用您的函数。取决于服务,调用可以是同步的,也可以是异步的。对于同步调用,其他服务等待来自您的函数的响应,并可能在遇到错误时重试

对于异步调用,Lambda 先将事件排队,然后再将事件传递给您的函数。一旦事件进入队列,其他服务就会获得成功响应,它们不知道之后会发生什么。如果出现错误,Lambda 负责重试,并可能将失败的事件发送到您配置的死信队列

有关每项服务的详细信息以及可用于测试函数的示例事件,请参阅本章中的主题。