连接 Lambda 的入站接口 VPC 端点 - AWS Lambda

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

连接 Lambda 的入站接口 VPC 端点

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

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

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

Lambda 接口端点的注意事项

请务必先查看 Amazon VPC 用户指南中的接口端点属性和限制,然后再为 Lambda 设置接口端点。

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

use1-az3 是支持 Lambda VPC 函数的有限容量区域。您不应将此可用区中的子网与 Lambda 函数一起使用,因为这可能会在发生中断时导致可用区冗余减少。

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

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网络上,不会穿越公有互联网。建立对等 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 创建 VPC 端点。有关更多信息,请参阅 Amazon VPC 用户指南中的创建接口端点

为 Lambda(控制台)创建接口端点
  1. 打开 Amazon VPC 控制台的 Endpoints(端点)页面

  2. 选择 Create Endpoint(创建端点)。

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

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

  5. 创建 VPC 和子网。

  6. 要为接口端点启用私有 DNS,请选中 Enable DNS Name(启用 DNS 名称)复选框。

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

  8. 选择 Create Endpoint(创建端点)。

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

有关更多信息,请参阅 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

注意

资源中需要同时包含限定函数和非限定函数 ARN。

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