

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

# 示例：使用 Amazon RDS 启动 VPC 中的 Elastic Beanstalk
<a name="vpc-rds"></a>

此部分演示了使用 NAT 网关在 VPC 中部署带 Amazon RDS 的 Elastic Beanstalk 应用程序的任务。

您的基础设施与下图类似。

![\[使用 Amazon RDS 的 Elastic Beanstalk 和 VPC 拓扑图。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vpc-rds-topo-ngw.png)


**注意**  
如果您之前从未和应用程序同时使用数据库实例，请在添加 VPC 配置至组合之前，尝试[添加至测试环境](using-features.managing.db.md)和[连接到外部数据库实例](AWSHowTo.RDS.md)。

## 创建带有公有子网和私有子网的 VPC
<a name="vpc-rds-create"></a>

您可使用 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/)创建 VPC。

**创建 VPC**

1. 登录 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **VPC Dashboard (VPC 控制面板)**。然后选择 **Create VPC (创建 VPC)**。

1. 选择 **VPC with Public and Private Subnets (带有公有子网和私有子网的 VPC)**，然后选择 **Select (选择)**。  
![\[选择“VPC with Public and Private Subnets (带有公有子网和私有子网的 VPC)”，然后选择“Select (选择)”。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/Case2_Wizard_Page2.png)

1. 您的 Elastic Load Balancing 负载均衡器和您的 Amazon EC2 实例必须位于同一个可用区，这样它们才能相互通信。从每个 **Availability Zone (可用区)** 列表中选择相同的可用区。  
![\[为私有子网和公有子网选择同一个可用区。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/Case2_Wizard_Confirmation2.png)

1. 为您的 NAT 网关选择弹性 IP 地址。

1. 选择**创建 VPC**。

   向导将开始创建 VPC、子网和 Internet 网关。它还将更新主路由表并创建自定义路由表。最后，向导将在公有子网中创建 NAT 网关。
**注意**  
您可以选择在公有子网而非 NAT 网关中启动 NAT 实例。有关更多信息，请参阅《*Amazon VPC 用户指南*》中的[场景 2：带有公有子网和私有子网的 VPC（NAT）](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html)。

1. 在成功创建 VPC 后，您会获得一个 VPC ID。在下一个步骤中，您需要用到此值。要查看您的 VPC ID，请在[亚马逊 VPC 控制台](https://console.aws.amazon.com/vpc/)的左侧窗格中选择**您 VPCs**的。  
![\[Amazon VPC 控制台显示您的 VPC ID。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vpc-id.png)

## 创建数据库子网组
<a name="vpc-rds-subnet"></a>

VPC 的数据库子网组是可为后端 RDS 数据库实例指定的子网（通常为私有子网）集合。每个数据库子网组应为给定 AWS 区域中的每个可用区至少有一个子网。要了解更多信息，请参阅[在 VPC 中创建子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

**创建数据库子网组**

1. 打开 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**子网组**。

1. 选择**创建数据库子网组**。

1. 选择**名称**，然后键入数据库子网组的名称。

1. 选择**描述**，然后描述数据库子网组。

1. 对于 **VPC**，选择您之前创建的 VPC 的 ID。

1. 在**添加子网**中，选择**添加与此 VPC 相关的所有子网**。  
![\[添加与您的 VPC 相关的所有子网。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vpc-rds-addsubnets.png)

1. 完成后，选择 **Create**。

   您的新数据库子网组显示在 Amazon RDS 控制台的子网组列表中。在此页面底部的详细信息窗格中，您可以选择它以查看详细信息，例如与此组关联的所有子网。

## 部署到 Elastic Beanstalk
<a name="vpc-rds-create-env"></a>

设置 VPC 后，您可在其中创建您的环境并将应用程序部署到 Elastic Beanstalk。你可以使用 Elastic Beanstalk 控制台来做到这一点，也可以 AWS 使用工具包 AWS CLI、、EB CLI 或 Elastic Beanstalk API。如果您使用 Elastic Beanstalk 控制台，则只需上传 `.war` 或 `.zip` 文件并在向导中选择 VPC 设置。Elastic Beanstalk 随后会在 VPC 中创建环境并部署应用程序。或者，您可以使用 AWS 工具包 AWS CLI、EB CLI 或 Elastic Beanstalk API 来部署您的应用程序。为此，您需要在配置文件中定义 VPC 选项设置并使用源捆绑部署此文件。本主题提供了这两种方法的说明。

### 使用 Elastic Beanstalk 控制台来部署
<a name="vpc-rds-new-console"></a>

Elastic Beanstalk 控制台将指导您在您的 VPC 内创建新环境。您需要提供 `.war` 文件 (对于 Java 应用程序) 或 `.zip` 文件 (对于所有其他应用程序)。在 Elastic Beanstalk 环境向导的 **VPC Configuration (VPC 配置)** 页面上，您必须做出以下选择：

**VPC**  
选择您的 VPC。

**VPC 安全组**  
选择您上面创建的实例安全组。

**ELB visibility (ELB 可见性)**  
选择 `External` (如果您的负载均衡器应公开可用)，或选择 `Internal` (如果负载均衡器应仅在您的 VPC 内可用)。

为您的负载均衡器和 EC2 实例选择子网。请务必为负载均衡器选择公有子网，为 Amazon EC2 实例选择私有子网。默认情况下，VPC 创建向导将创建 `10.0.0.0/24` 形式的公有子网，并创建 `10.0.1.0/24` 形式的私有子网。

您可以 IDs 通过在 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/)中选择**子网**来查看您的子网。

![\[您的 VPC IDs 的子网\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vpc-subnets.png)


### 使用 AWS 工具包、EB CLI 或 API 进行部署 AWS CLI
<a name="vpc-rds-new-options"></a>

使用工具包、EB CLI 或 AP AWS CLI I 将应用程序部署到 Elastic Beanstalk AWS 时，您可以在文件中指定 VPC 选项设置，然后将其与源包一起部署。请参阅[使用配置文件 (`.ebextensions`) 进行高级环境自定义](ebextensions.md)了解更多信息。

更新选项设置时，至少需要指定以下内容：
+ **VPCId**—包含 VPC 的 ID。
+ **Subnets (子网)** – 包含 Auto Scaling 组子网的 ID。在此示例中，这是私有子网的 ID。
+ **ELBSubnets**—包含负载均衡器子网的 ID。在此示例中，这是公有子网的 ID。
+ **SecurityGroups**— 包含安全组的 ID。
+ **DBSubnets**—包含数据库子网的 ID。
**注意**  
使用数据库子网时，您需要在 VPC 中创建其他子网以覆盖该区域的所有可用区。 AWS 

另外，您还可以指定以下信息：
+ **ELBScheme**— 指定`internal`在您的 VPC 内创建内部负载均衡器，这样就无法从您的 VPC 外部访问您的 Elastic Beanstalk 应用程序。

以下是在 VPC 内部署 Elastic Beanstalk 应用程序时可以使用的选项设置的示例。有关 VPC 选项设置的更多信息（包括有关如何指定这些设置、默认值和有效值的示例），请参阅[配置选项](command-options.md)中的 **aws:ec2:vpc** 命名空间表。

```
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: EC2KeyName
    value: ec2keypair
    
  - namespace: aws:ec2:vpc
    option_name: VPCId
    value: vpc-170647c
    
  - namespace: aws:ec2:vpc
    option_name: Subnets
    value: subnet-4f195024
    
  - namespace: aws:ec2:vpc
    option_name: ELBSubnets
    value: subnet-fe064f95
    
  - namespace: aws:ec2:vpc
    option_name: DBSubnets
    value: subnet-fg148g78
    
  - namespace: aws:autoscaling:launchconfiguration
    option_name: InstanceType
    value: m1.small
    
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: sg-7f1ef110
```

**注意**  
使用数据库子网时，请确保您的 VPC 中有覆盖该区域所有可用区的子网。 AWS 