

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

# 使用 Lambda 函数、Amazon VPC 和无服务器架构生成静态出站 IP 地址
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture"></a>

*Thomas Scott，Amazon Web Services*

## Summary
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-summary"></a>

此模式描述如何使用无服务器架构在 Amazon Web Services (AWS) Cloud 中生成静态出站 IP 地址。如果您的组织想要使用安全文件传输协议 (SFTP) 将文件发送到单独的业务实体，则可以从此方法中受益。这意味着业务实体必须有权访问允许文件通过防火墙的 IP 地址。 

该模式的方法可以帮助您创建使用[弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)作为出站 IP 地址的 AWS Lambda 函数。通过遵循此模式中的步骤，您可以创建 Lambda 函数和虚拟私有云（VPC），通过具有静态 IP 地址的互联网网关路由出站流量。要使用静态 IP 地址，您可将 Lambda 函数附加到 VPC 及其子网。 

## 先决条件和限制
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account。 
+ AWS Identity and Access Management (IAM) 权限，用于创建和部署 Lambda 函数，以创建 VPC 及其子网。有关这方面的更多信息，请参阅 AWS Lambda 文档中的[执行角色和用户权限](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-permissions)。
+ 如果您计划使用基础设施即代码（IaC）实施此模式的方法，则需要集成式开发环境（IDE），例如 AWS Cloud9。有关这方面的更多信息，请参阅 AWS Cloud9 文档中的 [AWS Cloud9 是什么？](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html)。

## 架构
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-architecture"></a>

下图显示此模式的无服务器架构。

![\[AWS Cloud VPC architecture with two availability zones, public and private subnets, NAT gateways, and a Lambda function.\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/eb1d0b05-df33-45ae-b27e-36090055b300/images/c15cc6da-ce4e-4ea0-9feb-de1c845d3ce8.png)


下图显示了如下工作流：

1. 出站流量离开 `Public subnet 1` 中的 `NAT gateway 1`。

1. 出站流量离开 `Public subnet 2` 中的 `NAT gateway 2`。

1. Lambda 函数可在 `Private subnet 1` 或 `Private subnet 2` 中运行。

1. `Private subnet 1` 和 `Private subnet 2` 将流量路由到公有子网中的 NAT 网关。

1. NAT 网关将出站流量从公共子网发送至互联网网关。

1. 出站数据从互联网网关传输至外部服务器。



**技术堆栈**
+ Lambda
+ Amazon Virtual Private Cloud (Amazon VPC)

 

**自动化和扩缩**

您可以通过在不同的可用区使用两个公有子网和两个私有子网，确保高可用性 (HA)。即使一个可用区不可用，该模式的解决方案仍能继续发挥作用。

## 工具
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-tools"></a>
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) – AWS Lambda 是一项计算服务，支持无需预置或管理服务器即可运行代码。只有在需要时 Lambda 才运行您的代码，并且能自动扩缩，从每天几个请求扩展到每秒数千个请求。您只需为消耗的计算时间付费 - 代码未运行时不产生费用。
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/) – Amazon Virtual Private Cloud (Amazon VPC) 预调配 Amazon Web Services Cloud 的逻辑隔离部分，您可以在其中启动您定义的虚拟网络中的 AWS 资源。此虚拟网络与您在自己的数据中心中运营的传统网络极其相似，您将获得使用 AWS 可扩展基础设施的优势。

## 操作说明
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-epics"></a>

### 创建新的 VPC
<a name="create-a-new-vpc"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建新的 VPC。 | 登录 AWS 管理控制台，打开 Amazon VPC 控制台，然后创建一个名为 `Lambda VPC` IPv4 CIDR 范围的 VPC。`10.0.0.0/25`****有关创建 VPC 的更多信息，请参阅 Amazon VPC 文档中的 [Amazon VPC 入门](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html#getting-started-create-vpc)。  | AWS 管理员 | 

### 创建两个公有子网
<a name="create-two-public-subnets"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建第一个公有子网。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 创建第二个公有子网。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 

### 创建两个私有子网
<a name="create-two-private-subnets"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建第一个私有子网。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 创建第二个私有子网。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 

### 为您的 NAT 网关创建两个弹性 IP 地址
<a name="create-two-elastic-ip-addresses-for-your-nat-gateways"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
|  创建第一个弹性 IP 地址。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html)此弹性 IP 地址用于您的第一个 NAT 网关。  | AWS 管理员 | 
| 创建第二个弹性 IP 地址。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html)此弹性 IP 地址用于您的第二个 NAT 网关。 | AWS 管理员 | 

### 创建互联网网关
<a name="create-an-internet-gateway"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建互联网网关。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 将互联网网关连接到 VPC。 | 选择刚刚创建的 Internet 网关，然后选择 **Actions, Attach to VPC (操作，附加到 VPC)**。 | AWS 管理员 | 

### 创建两个 NAT 网关
<a name="create-two-nat-gateways"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建第一个 NAT 网关。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 创建第二个 NAT 网关。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 

### 为您的公有子网与私有子网创建路由表
<a name="create-route-tables-for-your-public-and-private-subnets"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为公有子网创建路由表。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 为 public-two 子网创建路由表。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 为 private-one 子网创建路由表。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 为 private-two 子网创建路由表。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 

### 创建 Lambda 函数，将其添加至 VPC，然后测试解决方案
<a name="create-the-lambda-function-add-it-to-the-vpc-and-test-the-solution"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 新建 Lambda 函数。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 将 Lambda 函数添加到您的 VPC。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 
| 编写代码来调用外部服务。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS 管理员 | 

## 相关资源
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-resources"></a>
+ [配置 Lambda 函数以访问 VPC 中的资源](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html)