我想向连接到 Amazon Virtual Private Cloud (Amazon VPC) 的 AWS Lambda 函数授予互联网访问权限。
默认情况下,Lambda 函数在可以访问互联网的 Lambda 托管式 VPC 中运行。要访问您的 AWS 账户的 VPC 中的资源,请向该函数添加 VPC 配置。此配置会限制该函数仅访问 VPC 内的资源,除非 VPC 可以访问互联网。
即使您将 Lambda 函数与公有子网相关联,该函数也无法直接连接到互联网。VPC 中的函数具有私有 IP 地址,需要一个 NAT 网关或 NAT 实例才能使 VPC 访问互联网。
**注意:**您可以使用 VPC 端点从 Amazon VPC 连接内部连接到支持的 AWS 服务,无需访问互联网。
为 Lambda 函数创建一个私有子网,为 NAT 网关创建一个公有子网。在 Name tag(名称标签)字段中,为每个子网输入一个名称,标识子网为公有或私有。例如,使用 Public subnet、Private Lambda 1 和 Private Lambda 2。
**注意:**最佳实践是跨不同的可用区创建多个私有子网。此操作会创建冗余,并允许 Lambda 维持函数的高可用性。
创建互联网网关,然后将其附加到您的 VPC。
创建 NAT 网关。对于 Subnet(子网),选择要设为公有的子网。例如,选择 Public subnet(公有子网)。
(可选)测试 NAT 网关设置。
**注意:**当 VPC 中的 Lambda 函数发出请求时,该函数会随机选择一个关联的子网。如果该函数使用了配置错误的子网,则您会收到错误。为避免出现此问题,请确保对函数使用的所有子网使用相同的配置。
要设置自定义路由表,请针对您的公有子网和私有子网完成以下步骤:
注意:确保通往 NAT 网关的路由处于活动状态。如果 NAT 网关被删除但您没有更新路由,则路由将处于黑洞状态。有关详细信息,请参阅删除 NAT 网关。
您的 VPC 中的默认网络访问控制列表(网络 ACL)允许所有入站和出站流量。如果您更改网络 ACL 规则,请确保仍允许来自您的 Lambda 函数的出站请求。此外,请确保您的网络 ACL 允许以下入站流量:
有关详细信息,请参阅确保 Amazon VPC 中的互联网络流量隐私。
为您的 VPC 创建 Lambda 执行角色。然后,更新 Lambda 函数以使用新的 Lambda 执行角色。
将您的函数连接到 VPC 并配置以下设置:
对于连接到 Amazon VPC 的 Lambda 函数,您可以使用仅限出站的互联网网关来访问互联网。有关详细信息,请参阅 IPv6 支持。
Lambda 中的联网问题疑难解答
如何排查 Amazon VPC 中 Lambda 函数的超时问题?
How do I troubleshoot an ETIMEDOUT error in my Lambda function?
授予 Lambda 函数访问 Amazon VPC 中资源的权限
如何排查 Lambda 函数故障?