

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 範例：透過 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_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-rds-topo-ngw.png)


**注意**  
若您尚未搭配應用程式使用資料庫執行個體，請嘗試[將資料庫執行個體新增至測試環境](using-features.managing.db.md)，然後[連線至外部資料庫執行個體](AWSHowTo.RDS.md)，之後再將 VPC 組態新增至組合。

## 建立包含公有和私有子網路的 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_tw/elasticbeanstalk/latest/dg/images/Case2_Wizard_Page2.png)

1. 您的 Elastic Load Balancing 負載平衡器及您的 Amazon EC2 執行個體必須在同一個可用區域中，才能互相通訊。從各 **Availability Zone (可用區域)** 清單中選擇同一個可用區域。  
![\[為公有及私有子網路選擇相同的可用區域。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/Case2_Wizard_Confirmation2.png)

1. 為您的 NAT 閘道選擇彈性 IP 地址。

1. 選擇**建立 VPC**。

   精靈便會開始建立您的 VPC、子網路及網際網路閘道。同時它也會更新主路由表及建立自訂路由表。最後，精靈會在公有子網路中建立 NAT 閘道。
**注意**  
您可以選擇在公有子網路中啟動 NAT 執行個體，而非 NAT 閘道。如需詳細資訊，請參閱《Amazon [VPC 使用者指南》中的案例 2：具有公有和私有子網路 (NAT)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html) 的 VPC。 **

1. 在 VPC 成功建立後，您便會取得 VPC ID。您在下一個步驟中需要使用到此數值。若要檢視您的 VPC ID，請在 ** VPCs** [主控台的左側窗格中選擇您的 VPC](https://console.aws.amazon.com/vpc/)。  
![\[Amazon VPC 主控台會顯示您的 VPC ID。\]](http://docs.aws.amazon.com/zh_tw/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. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

1. 選擇 **Create DB Subnet Group** (建立資料庫子網路群組)。

1. 選擇 **Name (名稱)**，然後輸入您資料庫子網路群組的名稱。

1. 選擇 **Description (描述)**，然後說明您的資料庫子網路群組。

1. 對於 **VPC (VPC)**，選擇先前建立的 VPC 的 ID。

1. 在 **Add subnets (新增子網路)** 中，選擇 **Add all the subnets related to this VPC (新增與此 VPC 相關的所有子網路)**。  
![\[新增所有與您的 VPC 相關的子網路。\]](http://docs.aws.amazon.com/zh_tw/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`；若您的負載平衡器僅需可在您的 VPC 中使用，請選取 `Internal`。

選取您負載平衡器及 EC2 執行個體的子網路。請確認您已為您的負載平衡器選取公有子網路，並為您的 Amazon EC2 執行個體選取了私有子網路。根據預設，VPC 建立精靈會在 `10.0.0.0/24` 中建立公有子網路，並在 `10.0.1.0/24` 中建立私有子網路。

您可以在 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)中選擇**子網路**，以檢視子網路 IDs。

![\[您 VPC 的子網路 ID\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-subnets.png)


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

使用 AWS 工具組 AWS CLI、EB CLI 或 API 將應用程式部署至 Elastic Beanstalk 時，您可以在檔案中指定 VPC 選項設定，並將其與原始碼套件一起部署。如需詳細資訊，請參閱[使用組態檔案 (`.ebextensions`) 來進行進階的環境自訂](ebextensions.md)。

更新選項設定時，您至少需要指定下列項目：
+ **VPCId** ‒ 內含 VPC 的 ID。
+ **Subnets (子網路)** ‒ 內含 Auto Scaling 群組子網路的 ID。此範例為私有子網路的 ID。
+ **ELBSubnets** ‒ 內含負載平衡器的子網路 ID。此範例為公有子網路的 ID。
+ **SecurityGroups** ‒ 內含安全群組的 ID。
+ **DBSubnets** ‒ 內含資料庫子網路的 ID。
**注意**  
使用資料庫子網路時，您需要在 VPC 中建立其他子網路，以涵蓋 AWS 區域中的所有可用區域。

您亦可選擇指定下列資訊：
+ **ELBScheme** ‒ 如要在您的 VPC 內部建立內部負載平衡器，讓您的 Elastic Beanstalk 應用程式無法從 VPC 外部存取，請指定 `internal`。

下列範例是在 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 區域中的所有可用區域。