为 Lambda 配置 接口 VPC 终端节点 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 Lambda 配置 接口 VPC 终端节点

如果使用 Amazon Virtual Private Cloud (Amazon VPC) 托管 AWS 资源,则可以在 VPC 和 Lambda 之间建立连接。您可以使用此连接来调用您的 Lambda 函数,而无需跨越公共 Internet。

要在 VPC 和 Lambda 之间建立私有连接,请创建 接口 VPC 终端节点。接口终端节点由 AWS PrivateLink 提供支持,该技术支持您通过私有连接访问 Lambda API,而无需采用互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的实例即使没有公有 IP 地址也可与 Lambda API 进行通信。VPC 和 Lambda 之间的流量不会脱离 AWS 网络。

每个接口终端节点均由子网中的一个或多个弹性网络接口表示。网络接口提供一个私有 IP 地址,此地址可用作指向 Lambda 的流量的入口点。

Lambda 接口终端节点的注意事项

在为 Lambda 设置接口终端节点之前,请确保先查看 Amazon VPC 用户指南 中的接口终端节点属性和限制

您可以从 VPC 调用任何 Lambda API 操作。例如,您可以通过在 VPC 内调用 Invoke API 来调用 Lambda 函数。有关 Lambda API 的完整列表,请参阅 Lambda API 参考中的操作

对于持久性连接保持连接状态

Lambda 随时间推移逐渐清除空闲连接,因此您必须使用 keep-alive 指令来维护持久连接。在调用函数时尝试重用空闲连接会导致连接错误。要维护您的持久连接,请使用与运行时关联的 keep-alive 指令。有关示例,请参阅 AWS SDK for JavaScript 开发人员指南 中的在 Node.js 中重复使用具有保持连接功能的连接

计费注意事项

通过接口终端节点访问 Lambda 函数不会产生额外费用。有关 Lambda 定价的更多信息,请参阅 AWS Lambda 定价

AWS PrivateLink 的标准定价适用于 Lambda 的接口终端节点。您的 AWS 账户将按在每个可用区中预置接口终端节点的每小时以及通过 接口终端节点 处理的数据进行计费。有关接口终端节点定价的更多信息,请参阅 AWS PrivateLink 定价

VPC 对等连接注意事项

您可以使用 VPC 对等连接将其他 VPC 连接到具有接口终端节点的 VPC。VPC 对等连接是两个 VPC 之间的网络连接。您可以在自己的两个 VPC 之间建立 VPC 对等连接,或者在自己的 VPC 与其他 AWS 账户中的 VPC 之间建立此连接。VPC 也可以位于两个不同的 AWS 区域中。

对等 VPC 之间的流量保留在 AWS 网络上,不会穿越公共 Internet。在建立对等 VPC 连接之后,两个 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例、Amazon Relational Database Service (Amazon RDS) 实例或启用 VPC 的 Lambda 函数等资源可以通过在其中一个 VPC 中创建的接口终端节点访问 Lambda API。

为 Lambda 创建接口终端节点

您可以使用 Amazon VPC 控制台或 AWS Command Line Interface (AWS CLI) 为 Lambda 创建接口终端节点。有关更多信息,请参阅 Amazon VPC 用户指南 中的创建接口终端节点

为 Lambda 创建接口终端节点(控制台)

  1. 打开 Amazon VPC 控制台的“终端节点”页面

  2. 选择 Create Endpoint

  3. 对于服务类别,请确保选择 AWS 服务

  4. 对于服务名称,选择 com.amazonaws.region.lambda。验证类型接口

  5. 创建 VPC 和子网。

  6. 要为接口终端节点启用专用 DNS,请选中启用 DNS 名称复选框。

  7. 对于安全组,选择一个或多个安全组。

  8. 选择Create endpoint

要使用私有 DNS 选项,您必须设置 VPC 的 enableDnsHostnamesenableDnsSupportattributes。有关更多信息,请参阅 Amazon VPC 用户指南 中的查看和更新您的 VPC 的 DNS 支持。如果为接口终端节点启用私有 DNS,则可以使用其默认 DNS 名称作为区域,向 Lambda 发送 API 请求,例如 lambda.us-east-1.amazonaws.com。有关更多服务终端节点,请参阅 AWS General Reference 中的服务终端节点和配额

有关更多信息,请参阅 Amazon VPC 用户指南中的通过接口终端节点访问服务

有关使用 AWS CloudFormation 创建和配置终端节点的信息,请参阅 AWS CloudFormation 用户指南中的 AWS::EC2::VPCEndpoint 资源。

为 Lambda 创建接口终端节点 (AWS CLI)

使用 create-vpc-endpoint 命令并指定 VPC ID、VPC 终端节点类型(接口)、服务名称、将使用终端节点的子网以及要与终端节点的网络接口关联的安全组。例如:

aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 --vpc-endpoint-type Interface --service-name \ com.amazonaws.us-east-1.lambda --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d

为 Lambda 创建接口终端节点策略

要控制哪些用户可以使用您的接口终端节点以及用户可以访问哪些 Lambda 功能,您可以将终端策略附加到终端节点。该策略指定以下信息:

  • 可执行操作的委托人。

  • 委托人可以执行的操作。

  • 委托人可以对其执行操作的资源。

有关更多信息,请参阅 Amazon VPC 用户指南 中的使用 VPC 终端节点控制对服务的访问

示例:用于 Lambda 操作的接口终端节点策略

下面是用于 Lambda 的终端节点策略示例。当连接到终端节点时,此策略允许 MyUser 用户调用函数 my-function

{ "Statement":[ { "Principal": "arn:aws:iam::123412341234:user/MyUser", "Effect":"Allow", "Action":[ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function” ] } ] }