Lambda 调用模式 - AWS Lambda 的安全性概览

Lambda 调用模式

调用 API 可以在两种模式下进行调用:事件 模式和请求-响应 模式。

  • 事件 模式将有效负载排入队列以进行异步调用。

  • 请求-响应 模式使用提供的有效负载同步调用函数并立即返回响应。

在这两种情况下,函数执行始终在 Lambda 执行环境中执行,但有效负载采用不同的路径。有关更多信息,请参阅本文档中的“Lambda 执行环境”。

您还可以使用代表您执行调用的其他 AWS 服务。使用哪种调用模式取决于您使用的 AWS 服务及其配置方式。有关其他 AWS 服务如何与 Lambda 集成的更多信息,请参阅将 AWS Lambda 与其他服务一起使用

当 Lambda 收到请求-响应调用时,会直接将此调用传递给调用服务。如果调用服务不可用,调用方可能会暂时将有效负载客户端排入队列,以按设定的次数重试调用。如果调用服务收到有效负载,则该服务会尝试为请求确定可用的执行环境,并将有效负载传递给该执行环境以完成调用。如果不存在现有或适当的执行环境,则会根据请求动态创建一个执行环境。在传输过程中,发送到调用服务的调用有效负载受到 TLS 1.2+ 的保护。Lambda 服务内的流量(从负载均衡器向下)会通过隔离的内部 Virtual Private Cloud (VPC),此 VPC 归 Lambda 服务拥有且位于请求发送到的 AWS 区域内。

该图显示 AWS Lambda 请求-响应的调用模式。

图 2 – AWS Lambda 请求-响应的调用模式

事件调用 模式有效负载在调用前始终排队等待处理。所有有效负载都在 Amazon Simple Queue Service (Amazon SQS) 队列中排队等待处理。排队的事件在传输过程中始终使用 TLS 1.2+ 进行保护,但它们目前尚未进行静态加密。Lambda 使用的 Amazon SQS 队列由 Lambda 服务管理,对客户不可见。排队的事件可以存储在共享队列中,但可能会根据客户无法直接控制的许多因素(例如,调用速率、事件大小等)迁移或分配到专用队列。

排队的事件由 Lambda 的轮询器机群 分批检索。轮询器机群是一组 EC2 实例,其目的是处理尚未处理的已排队事件调用。当轮询器机群检索到它需要处理的已排队事件时,它通过将其传递给调用服务来进行处理,就像客户使用请求-响应模式的调用一样。

如果无法执行调用,轮询器机群将在主机上的内存中临时存储事件,直到它能够成功完成执行或超过运行重试次数为止。没有有效负载数据会被写入轮询器机群本身的磁盘。轮询机群可以跨 AWS 客户执行任务,从而使调用时间最短。有关哪些服务可能采用事件调用模式的更多信息,请参阅将 AWS Lambda 与其他服务一起使用