

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

# 將資料庫新增至您的 Elastic Beanstalk 環境
<a name="using-features.managing.db"></a>

Elastic Beanstalk 提供與 [Amazon Relational Database Service (Amazon RDS) ](https://aws.amazon.com/rds/)的*耦合*資料庫整合。您可以使用 Elastic Beanstalk 在現有環境中新增 MySQL、PostgreSQL、Oracle 或 SQL Server 資料庫，或在您建立時新增新的資料庫。當您新增與環境耦合的資料庫執行個體時，Elastic Beanstalk 會將連線資訊提供給應用程式。系統會藉由設定資料庫主機名稱、連接埠、使用者名稱、密碼和資料庫名稱的環境屬性來執行此動作。

**使用耦合資料庫的優點**  
若您未曾搭配應用程式使用資料庫執行個體，建議您先使用本主題所述的程序，以使用 Elastic Beanstalk 服務將資料庫新增至測試環境。如此一來，您便可確認應用程式即使不需要 Elastic Beanstalk 外部資料庫的其他組態工作，也能讀取環境屬性、建構連線字串，以及連線至資料庫執行個體。

**進入生產環境時的考量事項**  
在您確認應用程式可與資料庫搭配正常運作後，您可以考慮移向生產環境。此時，您可以選擇將資料庫從 Elastic Beanstalk 環境解耦，以便移向可提供更多靈活性的組態。已解耦的資料庫仍能作為外部 Amazon RDS 資料庫執行個體運作。解耦資料庫不會影響環境的正常運作狀態。如果您需要終止環境便可如此操作，也可選擇讓資料庫在 Elastic Beanstalk 之外維持可用且持續運作。

**移至解耦資料庫的優點**  
使用外部資料庫有幾個優點。您可以從多個環境連線至外部資料庫環境、使用整合資料庫不支援的資料庫類型，以及執行藍/綠部署。您也可以在 Elastic Beanstalk 環境之外建立資料庫執行個體，以作為使用 Elastic Beanstalk 所建立解耦資料庫的替代方案。兩個選項都會造成位於您 Elastic Beanstalk 環境外部的資料庫執行個體，且需要額外的安全群組和連線字串組態。如需詳細資訊，請參閱[搭配 Amazon RDS 使用 Elastic Beanstalk](AWSHowTo.RDS.md)。

**Topics**
+ [資料庫生命週期](#environments-cfg-rds-lifecycle)
+ [使用主控台將 Amazon RDS 資料庫執行個體新增至您的環境](#environments-cfg-rds-create)
+ [連線到資料庫](#environments-cfg-rds-connect)
+ [利用主控台設定整合的 RDS 資料庫執行個體](#using-features.managing.db.CON)
+ [利用組態檔案設定整合的 RDS 資料庫執行個體](#using-features.managing.db.namespace)
+ [使用主控台解耦 RDS 資料庫執行個體](#using-features.decoupling.db)
+ [使用主控台檔案解耦 RDS 資料庫執行個體](#using-features.decoupling-config-files.db)

## 資料庫生命週期
<a name="environments-cfg-rds-lifecycle"></a>

將資料庫從 Elastic Beanstalk 環境中解耦後，您可以選擇要對資料庫執行的動作。您可以從中進行選擇的選項統稱為*刪除政策*。[將資料庫從 Elastic Beanstalk 環境中解耦](#using-features.decoupling.db)或終止 Elastic Beanstalk 環境後，以下刪除政策便會套用至資料庫。
+ *Snapshot* (快照) - 在 Elastic Beanstalk 終止資料庫之前，其會儲存資料庫的快照。在您將資料庫執行個體新增至 Elastic Beanstalk 環境或建立獨立資料庫時，可以從快照還原資料庫。如需有關透過快照建立新獨立資料庫執行個體的詳細資訊，請參閱《Amazon RDS 使用者指南》**中的[從資料庫快照還原](https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html)。存放資料庫快照可能需要支付費用。如需詳細資訊，請參閱 [Amazon RDS 定價](https://aws.amazon.com/rds/pricing/)中的*備份儲存*一節。
+ *Delete* (刪除) - Elastic Beanstalk 會終止資料庫。在其終止後，資料庫執行個體就不可再用於任何操作。
+ *Retain* (保留) - 資料庫執行個體未終止。雖然與 Elastic Beanstalk 解耦，但其仍可以使用和運作。然後，您可以設定一個或多個環境，以作為外部 Amazon RDS 資料庫執行個體，藉此連線至資料庫。如需詳細資訊，請參閱[搭配 Amazon RDS 使用 Elastic Beanstalk](AWSHowTo.RDS.md)。

## 使用主控台將 Amazon RDS 資料庫執行個體新增至您的環境
<a name="environments-cfg-rds-create"></a>

您可以藉由使用 Elastic Beanstalk 主控台，將資料庫執行個體新增到您的環境。

**欲將資料庫執行個體新增到您的環境**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration (組態)**。

1. 在 **Database (資料庫)** 組態類別中，選擇 **Edit (編輯)**。

1. 選擇資料庫引擎，並輸入使用者名稱和密碼。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

您可以設定下列選項：
+ **Snapshot (快照)** – 選擇現有的資料庫快照。Elastic Beanstalk 還原快照，並將其新增到您的環境。預設值為 **None (無)**。當值是 **None** (無) 時，您可使用此頁面上的其他設定來設定新的資料庫。
+ **Engine (引擎)** – 選擇資料庫引擎。
+ **Engine version (引擎版本)** – 選擇特定的資料庫引擎版本。
+ **Instance class (執行個體類別)** – 選擇資料庫執行個體類別。如需有關資料庫執行個體類別的詳細資訊，請參閱 [https://aws.amazon.com/rds/](https://aws.amazon.com/rds/)。
+ **Storage (儲存)** – 選擇要為您的資料庫所佈建的儲存容量。您可以在日後增加配置的儲存容量，但不能縮減。如需關於儲存容量分配的資訊，請參閱[功能](https://aws.amazon.com/rds/#features)相關文章。
+ **Username** (使用者名稱) - 僅使用包含數字和字母的組合來輸入所選擇的使用者名稱。
+ **Password (密碼)** – 輸入包含 8–16 個可列印的 ASCII 字元 (不含 `/`、`\` 和 `@`) 選用密碼。
+ **Availability (可用性)** – 選擇 **High (Multi-AZ) (高 (異地同步備份))**，在第二個可用區域中執行暖備份，以維持高可用性。
+ **Database deletion policy** (資料庫刪除政策) - 刪除政策會決定資料庫在從您的環境[解耦](#using-features.decoupling.db)後的情況。系統可以將其設定為下列其中一個值：`Create Snapshot`、`Retain` 或 `Delete`。這些值會在此相同主題的 [資料庫生命週期](#environments-cfg-rds-lifecycle) 中加以說明。

**注意**  
Elastic Beanstalk 使用您提供的使用者名稱和密碼建立資料庫的主要使用者。若要進一步了解主要使用者及其權限，請參閱[主要使用者帳戶權限](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html)。

新增資料庫執行個體約需要 10 分鐘。在更新完成時，系統會將新資料庫*耦合*至您的環境。資料庫執行個體的主機名稱和其他連線資訊，會透過下列環境屬性提供給您的應用程式：


| 屬性名稱 | 描述 | 屬性值 | 
| --- | --- | --- | 
| `RDS_HOSTNAME` | 資料庫執行個體的主機名稱。 | 在 Amazon RDS 主控台：**端點**的**連線能力和安全性**索引標籤上。 | 
| `RDS_PORT` | 資料庫執行個體接受連線的連接埠。預設值在不同資料庫引擎中有所差異。 | 在 Amazon RDS 主控台：**連接埠**的**連線能力和安全性**索引標籤上。 | 
| `RDS_DB_NAME` | 資料庫名稱，**ebdb**。 | 在 Amazon RDS 主控台：**資料庫名稱**的**組態**索引標籤上。 | 
| `RDS_USERNAME` | 您為資料庫設定的使用者名稱。 | 在 Amazon RDS 主控台：**主要使用者名稱**的**組態**索引標籤上。 | 
| `RDS_PASSWORD` | 您為資料庫設定的密碼。 | 無法在 Amazon RDS 主控台中提供參考。 | 

## 連線到資料庫
<a name="environments-cfg-rds-connect"></a>

使用連線資訊，從您的應用程式中利用環境變數來連線到您的資料庫。關於搭配您的應用程式使用 Amazon RDS，詳細資訊請參閱下列主題。
+ Java SE – [連線至資料庫 (Java SE 平台)](java-rds.md#java-rds-javase)
+ Java 搭配 Tomcat – [連線至資料庫 (Tomcat 平台)](java-rds.md#java-rds-tomcat)
+ Node.js – [連線至資料庫](create-deploy-nodejs.rds.md#nodejs-rds-connect)
+ .NET – [連線至資料庫](create_deploy_NET.rds.md#dotnet-rds-connect)
+ PHP – [使用 PDO 或 MySQLi 連接至資料庫](create_deploy_PHP.rds.md#php-rds-connect)
+ Python – [連線至資料庫](create-deploy-python-rds.md#python-rds-connect)
+ Ruby – [連線至資料庫](create_deploy_Ruby.rds.md#ruby-rds-connect)

## 利用主控台設定整合的 RDS 資料庫執行個體
<a name="using-features.managing.db.CON"></a>

您可以在 [Elastic Beanstalk 主控台](environments-console.md)中，從環境 **Configuration** (組態) 頁面的 **Database** (資料庫) 區段，來檢視和修改您資料庫執行個體的組態設定。

**在 Elastic Beanstalk 主控台中設定環境的資料庫執行個體**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration (組態)**。

1. 在 **Database (資料庫)** 組態類別中，選擇 **Edit (編輯)**。

在建立資料庫之後，您可以修改 **Instance class**(執行個體類別)、**Storage** (儲存)、**Password** (密碼)、**Availability** (可用性) 和 **Database deletion policy** (資料庫刪除政策) 設定。如果您變更執行個體類別，Elastic Beanstalk 會重新佈建資料庫執行個體。

如果您不再需要 Elastic Beanstalk 為資料庫與環境建立關聯，可以選擇將資料庫解耦，方法是選取 **Decouple database** (解耦資料庫)。請務必了解此操作所涉及的選項和考量。如需詳細資訊，請參閱[使用主控台解耦 RDS 資料庫執行個體](#using-features.decoupling.db)。

**警告**  
請勿修改耦合的資料庫執行個體上 Elastic Beanstalk 所提供功能以外的設定 (例如，在 Amazon RDS 主控台中)。如果這麼做，您的 Amazon RDS 資料庫組態可能與您環境的定義不同步。當您更新或重新啟動您的環境，環境中指定的設定會覆寫在 Elastic Beanstalk 外的任何設定。  
如果您需要修改 Elastic Beanstalk 未直接支援的設定，請使用 Elastic Beanstalk [組態檔案](#using-features.managing.db.namespace)。

## 利用組態檔案設定整合的 RDS 資料庫執行個體
<a name="using-features.managing.db.namespace"></a>

您可以使用[組態檔案](ebextensions.md)設定您環境的資料庫執行個體。使用[`aws:rds:dbinstance`](command-options-general.md#command-options-general-rdsdbinstance)命名空間中的選項。以下範例修改配置的資料庫儲存大小為 100 GB。

**Example .ebextensions/db-instance-options.config**  

```
option_settings:
  aws:rds:dbinstance:
    DBAllocatedStorage: 100
```

如果您要設定 Elastic Beanstalk 不支援的資料庫執行個體屬性，您仍可使用組態檔案，並使用 `resources` 金鑰指定您的設定。以下範例設定值至 `StorageType` 和 `Iops` Amazon RDS 屬性。

**Example .ebextensions/db-instance-properties.config**  

```
Resources:
  AWSEBRDSDatabase:
    Type: AWS::RDS::DBInstance
    Properties:
      StorageType:io1
      Iops: 1000
```

## 使用主控台解耦 RDS 資料庫執行個體
<a name="using-features.decoupling.db"></a>

您可以將資料庫從 Elastic Beanstalk 環境解耦，而不會影響環境的正常運作狀態。在解耦資料庫之前，請考慮下列要求：
+ *將資料庫解耦後可能會發生哪些情況？*

  您可以選擇建立資料庫的快照然後終止資料庫、將資料庫獨立於 Elastic Beanstalk 外持續運作，或永久刪除資料庫。**Database deletion policy** (資料庫刪除政策) 設定會決定此結果。如需有關刪除政策的詳細說明，請參閱此相同主題中的 [資料庫生命週期](#environments-cfg-rds-lifecycle)。
+ *在解耦之前是否需要變更任何資料庫組態設定？*

  如果您需要變更資料庫的任何組態，應在*解耦資料庫前*，將其套用至資料庫。這包括變更 **Database deletion policy** (資料庫刪除政策)。系統將忽略任何與 **Decouple database** (解耦資料庫) 設定同時提交的待處理變更項目，同時僅會套用解耦設定。

  

**將資料庫執行個體從環境解耦**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration (組態)**。

1. 在 **Database (資料庫)** 組態類別中，選擇 **Edit (編輯)**。

1. 檢閱 **Database settings** (資料庫設定) 區段中的所有組態值，尤其是 **Database deletion policy** (資料庫刪除政策)，其會決定資料庫解耦後的情況。

     
![資料庫設定頁面顯示引擎、執行個體類別、儲存體、登入資料和刪除政策選項。](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-rds-options-w-db-deletion-policies.png)

   

   如果所有其他組態設定皆正確，請跳至**步驟 6** 來解耦資料庫。
**警告**  
請務必將 **Database deletion policy** (資料庫刪除政策) 設定與 **Decouple database** (解耦資料庫) *分開**套用*。如果您選取 **Apply** (套用) 且欲同時保存 **Decouple database** (解耦資料庫) 和新選取的 **Database deletion policy** (資料庫刪除政策)，則系統會忽略您選擇的新刪除政策。Elastic Beanstalk 會依照先前設定的刪除政策來解耦資料庫。如果先前設定的刪除政策為 `Delete` 或 `Create Snapshot`，您可能會有遺失資料庫的風險，而非遵循預期的待處理政策。

   如果有任何組態設定需要更新，請執行下列動作：

   1. 在 **Database settings** (資料庫設定) 面板中進行必要的修改。

   1. 選擇**套用**。需要幾分鐘的時間來儲存資料庫的組態變更。

   1. 回到**步驟 3**，然後透過導覽窗格選擇 **Configuration** (組態)。

1. 前往窗格上的 **Database connection** (資料庫連線) 區段。

     
![資料庫連線選項顯示 Couple 資料庫和 Decouple 資料庫選項按鈕。](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-rds-couple-decouple-db.png)

   

1. 選擇 **Decouple database** (解耦資料庫)。

1. 選擇 **Apply** (套用) 來啟動資料庫解耦操作。

刪除政策設定會決定資料庫的結果，以及解耦資料庫所需的時間長度。
+ 如果刪除政策設定為 `Delete`，則系統會刪除資料庫。作業時間可能需要大約 10-20 分鐘，視資料庫的大小而定。
+ 如果刪除政策設定為 `Snapshot`，系統會建立資料庫的快照。之後，系統會刪除資料庫。此處理程序所需的時間長度依資料庫的大小而定。
+ 如果刪除政策設定為 `Retain`，則資料庫會在 Elastic Beanstalk 環境外部保持運作。解耦資料庫通常需要不到五分鐘的時間。

 如果您決定將資料庫保留在 Elastic Beanstalk 環境之外，則需要採取其他步驟來加以設定。如需詳細資訊，請參閱[搭配 Amazon RDS 使用 Elastic Beanstalk](AWSHowTo.RDS.md)。如果您計劃為生產環境使用解耦的資料庫，請確認該資料庫使用的儲存類型是否適合您的工作負載。如需詳細資訊，請參閱《Amazon RDS 使用者指南》**中的[資料庫執行個體儲存體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)和[修改資料庫執行個體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html)。

## 使用主控台檔案解耦 RDS 資料庫執行個體
<a name="using-features.decoupling-config-files.db"></a>

您可以將資料庫執行個體從 Elastic Beanstalk 環境解耦，而不會影響環境的正常運作狀態。資料庫執行個體會遵循在資料庫受到解耦時套用的*資料庫刪除政策*。

解耦資料庫所需的兩個選項都位於 [aws:rds:dbinstance](command-options-general.md#command-options-general-rdsdbinstance) 命名空間中。如下所示：
+ `DBDeletionPolicy` 選項會設定刪除政策。系統可以將其設定為下列其中一個值：`Snapshot`、`Delete` 或 `Retain`。這些值會在此相同主題的 [資料庫生命週期](#environments-cfg-rds-lifecycle) 中加以說明。
+ `HasCoupledDatabase` 選項會決定您的環境是否具有耦合的資料庫。
  + 如果切換為 `true`，Elastic Beanstalk 會建立與您環境耦合的新資料庫執行個體。
  + 如果切換為 `false`，Elastic Beanstalk 會開始從您的環境中解耦資料庫執行個體。

如果您想要在解耦資料庫之前變更資料庫組態，請先在個別操作中套用任何組態變更。這包括變更 `DBDeletionPolicy` 組態。套用變更後，請執行個別命令以設定解耦選項。如果您同時提交其他組態設定和解耦設定，則系統會在套用解耦設定時會忽略其他組態選項設定。

**警告**  
請務必以兩個獨立操作執行命令，來套用 `DBDeletionPolicy` 和 `HasCoupledDatabase` 設定。如果啟用中的刪除政策已設定為 `Delete` 或 `Snapshot`，您可能會有遺失資料庫的風險。資料庫會遵循目前啟用中的刪除政策，而非您指示的待處理刪除政策。

**將資料庫執行個體從環境解耦**

依照下列步驟將資料庫從您的 Elastic Beanstalk 環境解耦。您可以使用 EB CLI 或 AWS CLI 來完成步驟。如需詳細資訊，請參閱[使用組態檔案來進行進階的環境自訂](ebextensions.md)。

1. 如果您要變更刪除政策，請以下列格式來設定組態檔案。在此範例中，刪除政策會設為保留。  
**Example**  

   ```
   option_settings:
     aws:rds:dbinstance:
       DBDeletionPolicy: {{Retain}}
   ```

1. 使用您偏好的工具來執行命令，以完成組態更新。

1. 設定組態檔案，以將 `HasCoupledDatabase` 設定為 `false`。  
**Example**  

   ```
   option_settings:
     aws:rds:dbinstance:
       HasCoupledDatabase: {{false}}
   ```

1. 使用您偏好的工具來執行命令，以完成組態更新。

刪除政策設定會決定資料庫的結果，以及解耦資料庫所需的時間長度。
+ 如果刪除政策設定為 `Delete`，則系統會刪除資料庫。作業時間可能需要大約 10-20 分鐘，視資料庫的大小而定。
+ 如果刪除政策設定為 `Snapshot`，系統會建立資料庫的快照。之後，系統會刪除資料庫。此處理程序所需的時間長度依資料庫的大小而定。
+ 如果刪除政策設定為 `Retain`，則資料庫會在 Elastic Beanstalk 環境外部保持運作。解耦資料庫通常需要不到五分鐘的時間。

 如果您決定將資料庫保留在 Elastic Beanstalk 環境之外，則需要採取其他步驟來加以設定。如需詳細資訊，請參閱[搭配 Amazon RDS 使用 Elastic Beanstalk](AWSHowTo.RDS.md)。如果您計劃為生產環境使用解耦的資料庫，請確認該資料庫使用的儲存類型是否適合您的工作負載。如需詳細資訊，請參閱《Amazon RDS 使用者指南》**中的[資料庫執行個體儲存體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)和[修改資料庫執行個體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html)。