本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Lambda 函数VPC、Amazon 和无服务器架构生成静态出站 IP 地址
由托马斯·斯科特创作 (AWS)
摘要
此模式描述了如何使用无服务器架构在 Amazon Web Services (AWS) 云中生成静态出站 IP 地址。如果您的组织想使用安全文件传输协议 (SFTP) 将文件发送到单独的业务实体,则可以从这种方法中受益。这意味着业务实体必须有权访问允许文件通过防火墙的 IP 地址。
该模式的方法可以帮助您创建使用弹性 IP 地址作为出站 IP 地址的 AWS Lambda 函数。按照此模式中的步骤操作,您可以创建 Lambda 函数和虚拟私有云 (VPC),通过具有静态 IP 地址的 Internet 网关路由出站流量。要使用静态 IP 地址,您需要将 Lambda 函数附加到VPC及其子网。
先决条件和限制
先决条件
一个活动的 AWS 账户。
AWSIdentity and Access Management (IAM) 权限,用于创建和部署 Lambda 函数,以及创建VPC及其子网。有关这方面的更多信息,请参阅 AWS Lambda 文档中的执行角色和用户权限。
如果您计划使用基础设施即代码 (IaC) 来实现此模式的方法,则需要一个集成开发环境 (IDE),例如 Cloud AWS 9。有关这方面的更多信息,请参阅什么是 AWS Cloud9? 在 AWS Cloud9 文档中。
架构
下图显示此模式的无服务器架构。
图表显示了以下工作流:
出站流量离开 Public subnet 1
中的 NAT gateway 1
。
出站流量离开 Public subnet 2
中的 NAT gateway 2
。
Lambda 函数可在 Private subnet 1
或 Private subnet 2
中运行。
Private subnet 1
并将流量Private subnet 2
路由到公有子NAT网中的网关。
NAT网关将出站流量从公有子网发送到互联网网关。
出站数据从互联网网关传输至外部服务器。
技术堆栈
自动化和扩缩
您可以通过在不同的可用区使用两个公有子网和两个私有子网,确保高可用性 (HA)。即使一个可用区不可用,该模式的解决方案仍能继续发挥作用。
AWSLambda — Lam AWS bda 是一项计算服务,它支持在不预置或管理服务器的情况下运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。您只需为消耗的计算时间付费 - 代码未运行时不产生费用。
亚马逊 VPC — Amazon Virtual Private Cloud(AmazonVPC)提供了AWS云中逻辑隔离的部分,您可以在其中启动您定义的虚拟网络中的AWS资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS 的可扩展基础设施的优势。
操作说明
任务 | 描述 | 所需技能 |
---|
创建新的 VPC。 | 登录AWS管理控制台,打开 Amazon VPC 控制台Lambda VPC ,然后创建一个VPC名称10.0.0.0/25 作为IPv4CIDR范围。 有关创建的更多信息VPC,请参阅亚马逊VPC文档VPC中的亚马逊入门。 | AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
创建第一个公有子网。 | 在 Amazon VPC 控制台上,选择子网,然后选择创建子网。 对于名称标签,输入 public-one 。 对于 VPC,选择 Lambda VPC 。 选择一个可用区并记录它。 对于IPv4CIDR区块,输入,10.0.0.0/28 然后选择创建子网。
| AWS 管理员 |
创建第二个公有子网。 | 在 Amazon VPC 控制台上,选择子网,然后选择创建子网。 对于名称标签,输入 public-two 。 对于 VPC,选择 Lambda VPC 。 选择一个可用区并记录它。:您不能使用包含public-one 子网的可用区。 对于IPv4CIDR区块,输入,10.0.0.16/28 然后选择创建子网。
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
创建第一个私有子网。 | 在 Amazon VPC 控制台上,选择子网,然后选择创建子网。 对于名称标签,输入 private-one 。 对于 VPC,选择 Lambda VPC 。 选择包含您之前创建的 public-one 子网的可用区。 对于IPv4CIDR区块,输入,10.0.0.32/28 然后选择创建子网。
| AWS 管理员 |
创建第二个私有子网。 | 在 Amazon VPC 控制台上,选择子网,然后选择创建子网。 对于名称标签,输入 private-two 。 对于 VPC,选择 Lambda VPC 。 选择包含您之前创建的 public-two 子网的相同可用区。 对于IPv4CIDR区块,输入,10.0.0.64/28 然后选择创建子网。
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
创建第一个弹性 IP 地址。 | 在 Amazon VPC 控制台上,选择 Elastic,IPs然后选择分配新地址。 选择分配并为您新创建的弹性 IP 地址记录分配 ID。
| AWS 管理员 |
创建第二个弹性 IP 地址。 | 在 Amazon VPC 控制台上,选择 Elastic,IPs然后选择分配新地址。 选择分配,并为第二个弹性 IP 地址记录分配 ID。
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
创建互联网网关。 | 在 Amazon VPC 控制台上,选择互联网网关,然后选择创建互联网网关。 输入 Lambda internet gateway 作为名称,然后选择创建互联网网关。务必记录互联网网关 ID。
| AWS 管理员 |
将互联网网关连接到VPC. | 选择您刚刚创建的互联网网关,然后选择操作,连接到VPC。 | AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
创建第一个NAT网关。 | 在 Amazon VPC 控制台上,选择NAT网关,然后选择创建NAT网关。 输入nat-one 作为网NAT关名称。 选择public-one 作为创建网NAT关的子网。 对于连接类型,选择公共。 对于弹性 IP 分配 ID,请选择您之前创建的第一个弹性 IP 地址并将其与NAT网关关联。 选择创建NAT网关。
| AWS 管理员 |
创建第二个NAT网关。 | 在 Amazon VPC 控制台上,选择NAT网关,然后选择创建NAT网关。 输入nat-two 作为网NAT关名称。 选择public-two 作为创建网NAT关的子网。 对于连接类型,选择公共。 对于弹性 IP 分配 ID,请选择您之前创建的第二个弹性 IP 地址并将其与NAT网关关联。 选择创建NAT网关。
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
为公有子网创建路由表。 | 在 Amazon VPC 控制台上,选择路由表,然后选择创建路由表。 输入 public-one-subnet 作为路由表名称,然后选择创建路由表。 选择 public-one-subnet 路由表,选择编辑路由,然后选择添加路由。 在目的地框中指定 0.0.0.0 ,然后在目标列表中选择互联网网关 ID。 在 “子网关联” 选项卡上,选择 “编辑子网关联”,选择包含该10.0.0.0/28 CIDR范围的public-one 子网,然后选择 “保存关联”。 选择 Save Changes(保存更改)。
| AWS 管理员 |
为 public-two 子网创建路由表。 | 在 Amazon VPC 控制台上,选择路由表,然后选择创建路由表。 输入 public-two-subnet 作为路由表名称,然后选择创建路由表。 选择 public-two-subnet 路由表,选择编辑路由,然后选择添加路由。 在目的地框中指定 0.0.0.0 ,然后在目标列表中选择互联网网关 ID。 在 “子网关联” 选项卡上,选择 “编辑子网关联”,选择包含该10.0.0.16/28 CIDR范围的public-two 子网,然后选择 “保存关联”。 选择 Save Changes(保存更改)。
| AWS 管理员 |
为 private-one 子网创建路由表。 | 在 Amazon VPC 控制台上,选择路由表,然后选择创建路由表。 输入 private-one-subnet 作为路由表名称,然后选择创建路由表。 选择 private-one-subnet 路由表,选择编辑路由,然后选择添加路由。 在 “目标” 框0.0.0.0 中指定,然后在 “目标” 列表中选择public-one 子网中的网NAT关。 在 “子网关联” 选项卡上,选择 “编辑子网关联”,选择包含该10.0.0.32/28 CIDR范围的private-one 子网,然后选择 “保存关联”。 选择 Save Changes(保存更改)。
| AWS 管理员 |
为 private-two 子网创建路由表。 | 在 Amazon VPC 控制台上,选择路由表,然后选择创建路由表。 输入 private-two-subnet 作为路由表名称,然后选择创建路由表。 选择 private-two-subnet 路由表,选择编辑路由,然后选择添加路由。 在 “目标” 框0.0.0.0 中指定,然后在 “目标” 列表中选择public-two 子网中的网NAT关。 在 “子网关联” 选项卡上,选择 “编辑子网关联”,选择包含该10.0.0.64/28 CIDR范围的private-two 子网,然后选择 “保存关联”。 选择 Save Changes(保存更改)。
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|
新建 Lambda 函数。 | 打开 AWS Lambda 控制台并选择创建函数。 在基本信息下方,在函数名称下输入 Lambda test ,然后在运行时系统下选择所选语言。 选择 Create function (创建函数)。
| AWS 管理员 |
将 Lambda 函数添加到您的。VPC | 在 AWS Lambda 控制台上,选择函数,然后选择您之前创建的函数。 选择 “配置”,然后选择VPC。 选择编辑,然后选择 Lambda VPC 和两个私有子网。 选择用于测试的默认安全组,然后选择保存。
| AWS 管理员 |
编写代码来调用外部服务。 | 使用您选择的编程语言编写代码,调用返回您的 IP 地址的外部服务。 验证返回的 IP 地址是否与您的一个弹性 IP 地址相匹配。
| AWS 管理员 |
相关资源