如何为连接到 Amazon VPC 的 Lambda 函数提供互联网访问权限?

2 分钟阅读
0

我想向连接到 Amazon Virtual Private Cloud(Amazon VPC)的 AWS Lambda 函数授予互联网访问权限。

简述

从私有子网访问互联网需要网络地址转换(NAT)。若要为连接到 Amazon VPC 的 Lambda 函数提供互联网访问权限,请将其出站流量路由到公有子网中的 NAT 网关NAT 实例

有关更多信息,请参阅使用互联网网关连接到互联网。有关示例设置,请参阅具有 NAT 且服务器位于私有子网中的 VPC

**注意:**您也可以使用 Amazon VPC 端点从 Amazon VPC 内部连接到支持的 AWS 服务,无需访问互联网。

解决方案

(可选)在 AWS 管理控制台中使用 VPC 向导创建一个新 Amazon VPC

**注意:**如果您使用 VPC 向导创建一个新 Amazon VPC,请跳至以下部分: 为您的 VPC 创建一个 Lambda 执行角色。

1.在 AWS 管理控制台中打开 VPC 向导

2.选择带有公有和私有子网的 VPC。新的公有子网私有子网,及其关联的互联网网关和 NAT 网关,将显示在 Amazon VPC 控制台中

在您的 Amazon VPC 中创建一个公有子网和一个或多个私有子网

有关说明,请参阅创建子网以创建各个子网。

创建子网时,在名称标签中,为每个子网输入一个名称,标识子网为公有或私有。例如: Public subnetPrivate lambda 1Private lambda 2

**注意:**最佳实践是跨不同的可用区创建多个私有子网。这种做法会创建冗余,并让 Lambda 服务维持函数的高可用性

创建互联网网关并将其附加到您的 Amazon VPC。

有关说明,请参阅创建和附加互联网网关

创建 NAT 网关

有关说明,请参阅创建 NAT 网关。创建 NAT 网关时,为 Subnet 选择要设为公有的子网。(来自前面的示例: Public subnet。)

**注意:**要测试您的 NAT 网关设置,请参阅测试公共 NAT 网关

创建两个自定义路由表,一个用于您的公有子网,另一个用于您的私有子网

**注意:**当与 Amazon VPC 连接的 Lambda 函数发出请求时,它会随机选择一个关联的子网。如果该函数使用了配置错误的子网,则会出现错误。为防止随机错误,请确保对函数使用的所有子网使用相同的配置。

有关说明,请参阅创建自定义路由表。创建路由表时,在名称标签中,为每个路由表输入一个名称,以帮助您识别与其关联的子网。例如: Public subnetPrivate Lambda

对于每个路由表,请务必完成以下步骤:

对于公有子网的路由表

1.将公有子网的路由表Public subnet)与要设为公有的子网相关联。

2.向路由表中添加一条包含以下配置的新路由

对于 Destination,输入 0.0.0.0/0
对于 Target,选择 Internet Gateway,然后选择您创建的互联网网关的 ID(igw-123example)。选择保存路由

对于私有子网的路由表

1.将私有子网的路由表Private Lambda)与私有子网关联。

2.向路由表中添加一条包含以下配置的新路由

对于 Destination,输入 0.0.0.0/0
对于 Target,选择 NAT 网关。然后,选择您创建的 NAT 网关的 ID(nat-123example)。

重要信息:如果您使用的是 NAT 实例,请改为选择 Network Interface。选择保存路由

注意:确保通往 NAT 网关的路由处于活动状态。如果 NAT 网关被删除但您没有更新路由,则它们处于黑洞状态。有关更多信息,请参阅删除 NAT 网关

验证您的网络 ACL 是否允许来自您的 Lambda 函数的出站请求,并根据需要允许入站流量

您的 Amazon VPC 中的默认网络访问控制列表(网络 ACL)允许所有入站和出站流量。如果您更改网络 ACL 规则,请确保仍允许来自您的 Lambda 函数的出站请求。

此外,根据您的 VPC 配置,请确保您的网络 ACL 允许以下入站流量:

  • 对于使用 NAT 网关的私有子网:允许临时端口 1024-65535 上的入站流量。
  • 对于使用 NAT 实例的私有子网:在 NAT 实例操作系统使用的临时端口上允许入站流量。

**注意:**有关更多信息,请参阅 Amazon VPC 中的互联网流量隐私

为您的 VPC 创建 Lambda 执行角色

1.在 AWS Identity and Access Management(IAM)控制台中打开角色页面

2.选择创建角色创建角色页面将会显示。

3.在创建角色页面上,完成以下步骤:

对于选择受信任实体的类型,选择 AWS 服务
对于常见使用案例,请选择 Lambda
选择下一步: 权限
附加权限策略下,搜索 AWSLambdaVPCAccessExecutionRole
选择具有该名称的策略。然后,选择下一步: 标签
(可选)为您的使用案例添加标签
选择下一步: 审核
角色名称中,输入您的 Lambda 执行角色的名称。例如:lambda_vpc_basic_execution
(可选)在角色描述中,输入角色的描述。选择创建角色

将角色附加到 Lambda 函数

1.在 Lambda 控制台中打开函数页面

2.选择要连接到 Amazon VPC 的函数的名称。

3.选择配置选项卡,然后选择权限

4.在执行角色中,选择编辑

5.选择现有角色下拉列表,然后选择您的角色。例如:lambda_vpc_basic_execution

6.选择保存

有关更多信息,请参阅 Lambda 执行角色在 IAM 控制台中创建执行角色

配置 Lambda 函数以连接到 Amazon VPC

1.在 Lambda 控制台中打开函数页面

2.选择要连接到 Amazon VPC 的函数的名称。

3.选择配置选项卡。

4.从左侧导航栏中选择 VPC,然后选择编辑。然后,输入以下内容:

对于虚拟私有云(VPC),请选择您的 VPC。
对于子网,请选择您创建的私有子网。通过子网 ID(如果您命名了子网,则还有名称)来识别它们。
对于安全组,请选择一个安全组。

注意:默认安全组允许所有出站互联网互联网流量,足以满足大多数使用案例的需求。有关详细信息,请参阅使用安全组控制指向 AWS 资源的流量

5.选择保存

相关信息

将出站联网连接到 VPC 中的资源

Lambda 中的联网问题疑难解答

如何排查 Lambda 函数故障?

AWS 官方
AWS 官方已更新 1 年前