

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

# 管理 Amazon DocumentDB 子網路群組
<a name="document-db-subnet-groups"></a>

虛擬私有雲端 (VPC) 是您的專用虛擬網路 AWS 帳戶。它在邏輯上與 AWS 雲端中的其他虛擬網路隔離。您可以在 Amazon VPC 中啟動 AWS 資源，例如 Amazon DocumentDB 叢集。 Amazon DocumentDB 您可以為 VPC 指定 IP 地址範圍、新增子網路、與安全群組建立關聯，以及設定路由表。

子網路是 Amazon VPC 中的 IP 地址範圍。您可以在指定的子網路中啟動 AWS 資源。針對必須連接到網際網路的資源使用「公有」**子網路。針對不會連線至網際網路的資源使用*私有*子網路。如需公有和私有子網路的詳細資訊，請參閱《*Amazon Virtual Private Cloud 使用者指南*》中的 [VPC 和子網路基本概念](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-subnet-basics)。

資料庫子網路群組是您在 VPC 中建立，然後指定給叢集之子網路的集合。子網路群組可讓您在建立叢集時指定特定的 VPC。如果您使用 `default` 子網路群組，它將橫跨 VPC 中的所有子網路。

各個資料庫子網路群組在指定 區域中，都應在至少兩個可用區域中設有子網路。在 VPC 中建立資料庫叢集時，您必須選取資料庫子網路群組。Amazon DocumentDB 使用該資料庫子網路群組和您偏好的可用區域來選取子網路和該子網路內的 IP 地址，以與您的叢集建立關聯。如果主要執行個體失敗，Amazon DocumentDB 可以將對應的複本執行個體提升為新的主要執行個體。然後，它可以使用前一個主要執行個體所在之子網路的 IP 地址，建立新的複本執行個體。

當 Amazon DocumentDB 在 VPC 中建立執行個體時，它會使用從您的資料庫子網路群組中選取的 IP 地址，將網路介面指派給您的叢集。我們強烈建議您使用 DNS 名稱，因為基本的 IP 地址可能會在容錯移轉期間有所變動。如需詳細資訊，請參閱[Amazon DocumentDB 端點](how-it-works.md#how-it-works.endpoints)。

如需建立自己的 VPC 和子網路的相關資訊，請參閱《*Amazon Virtual Private Cloud 使用者指南*》中的[使用 VPCs 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。

**Topics**
+ [建立 Amazon DocumentDB 子網路群組](document-db-subnet-group-create.md)
+ [描述 Amazon DocumentDB 子網路群組](document-db-subnet-group-describe.md)
+ [修改 Amazon DocumentDB 子網路群組](document-db-subnet-group-modify.md)
+ [刪除 Amazon DocumentDB 子網路群組](document-db-subnet-group-delete.md)

# 建立 Amazon DocumentDB 子網路群組
<a name="document-db-subnet-group-create"></a>

建立 Amazon DocumentDB 叢集時，您必須選擇該 Amazon VPC 內的 Amazon VPC 和對應的子網路群組，才能啟動叢集。子網路會決定您要用來啟動執行個體的可用區域內的可用區域和 IP 範圍。

子網路群組是一組具名的子網路 （或 AZs)，可讓您指定要用來啟動 Amazon DocumentDB 執行個體的可用區域。例如，在具有三個執行個體的叢集中，建議將每個執行個體佈建在不同的 AZs 中，因此 會針對高可用性進行最佳化。因此，如果單一 AZ 失敗，它只會影響單一執行個體。

目前，Amazon DocumentDB 執行個體最多可佈建三個 AZs。即使子網路群組有三個以上的子網路，您仍然只能使用三個子網路來建立 Amazon DocumentDB 叢集。因此，我們建議您在建立子網路群組時，只選擇您要部署執行個體的三個子網路。

例如：建立叢集，Amazon DocumentDB 選擇 AZs \$11A、1B 和 1C\$1。如果您嘗試在 AZ 建立執行個體 \$11D\$1 API 呼叫將會失敗。不過，如果您選擇建立執行個體，但不指定特定 AZ，Amazon DocumentDB 會代表您選擇 AZ。Amazon DocumentDB 使用演算法在 AZs 之間負載平衡執行個體，以協助您實現高可用性。如果佈建三個執行個體，預設會佈建到三個 AZs，而且不會在單一 AZ 中佈建全部。

最佳實務
+ 除非有特定的原因，否則一律使用三個子網路建立子網路群組。這可確保具有三個或更多執行個體的叢集將能夠實現更高的可用性，因為執行個體將佈建到三個 AZs。
+ 一律將執行個體分散在多個可用區域以達到高可用性。請勿將叢集的所有執行個體放置在單一可用區。
+ 由於隨時都會發生容錯移轉事件，您不應假設主執行個體或複本執行個體會在特定的可用區域。

## 如何建立子網路群組
<a name="document-db-subnet-group-how-create"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來建立 Amazon DocumentDB 子網路群組：

------
#### [ Using the AWS 管理主控台 ]

使用下列步驟來建立 Amazon DocumentDB 子網路群組。

**建立 Amazon DocumentDB 子網路群組**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb) 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中，選擇 **Subnet groups (子網路群組)**，然後選擇 **Create (建立)**。
**提示**  
如果畫面左側沒有出現導覽窗格，請選擇頁面左上角的功能表圖示 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 在 **Create subnet group (建立子網路群組)** 頁面上：

   1. 在 **Subnet group details (子網路群組詳細資訊)** 區段中：

      1. **Name** - 輸入子網路群組的有意義的名稱。

      1. **Description** (描述)：輸入子網路群組的描述。

   1. 在 **Add subnets (新增子網路)** 區段中：

      1. **VPC** - 在清單中，為此子網路群組選擇 VPC。

      1. 執行以下任意一項：
         + 若要將所有子網路包含在所選的 VPC 中，請選擇 **Add all the subnets related to this VPC (新增與此 VPC 相關的所有子網路)**。
         + 若要指定此子網路群組的子網路，請在想要包含子網路的每個可用區域中執行下列動作。您必須至少包含兩個可用區域。

           1. **可用區域** - 在清單中，選擇可用區域。

           1. **子網路** — 在清單中，從為此子網路群組選擇的可用區域選擇子網路。

           1. 選擇 **Add subnet (新增子網路)**。

1. 選擇 **Create** (建立)。建立子網路群組時，其會與您其他的子網路群組一起列出。  
![\[螢幕擷取畫面：顯示子網路群組的詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-subnet-groups-list.png)

------
#### [ Using the AWS CLI ]

您必須先判斷可用的子網路 AWS CLI，才能使用 建立子網路群組。執行下列 AWS CLI 操作以列出可用區域及其子網路。

**參數：**
+ **--db-subnet-group**- 選用。指定特定的子網路群組，會列出該群組的可用區域和子網路。略過此參數，會列出您所有子網路群組的可用區域和子網路。指定 `default` 子網路群組，會列出所有 VPC 的子網路。

**Example**  
若為 Linux、macOS 或 Unix：  

```
aws docdb describe-db-subnet-groups \
    --db-subnet-group-name default \
    --query 'DBSubnetGroups[*].[DBSubnetGroupName,Subnets[*].[SubnetAvailabilityZone.Name,SubnetIdentifier]]'
```
針對 Windows：  

```
aws docdb describe-db-subnet-groups ^
    --db-subnet-group-name default ^
    --query 'DBSubnetGroups[*].[DBSubnetGroupName,Subnets[*].[SubnetAvailabilityZone.Name,SubnetIdentifier]]'
```
此操作的輸出將會如下所示 (JSON 格式)。  

```
[
    [
        "default",
        [
            [
                "us-east-1a",
                "subnet-4e26d263"
            ],
            [
                "us-east-1c",
                "subnet-afc329f4"
            ],
            [
                "us-east-1e",
                "subnet-b3806e8f"
            ],
            [
                "us-east-1d",
                "subnet-53ab3636"
            ],
            [
                "us-east-1b",
                "subnet-991cb8d0"
            ],
            [
                "us-east-1f",
                "subnet-29ab1025"
            ]
        ]
    ]
]
```
使用先前操作的輸出可建立新的子網路群組。新的子網路群組必須包含至少兩個可用區域的子網路。  

**參數：**
+ **--db-subnet-group-name** - 必要項目。此子網路群組的名稱。
+ **--db-subnet-group-description** - 必要項目。此子網路群組的描述。
+ **--subnet-ids** - 必要項目。要包含在此子網路群組中之所有子網路的清單。範例：`subnet-53ab3636`。
+ --Tags ****- 選用。要連接到此子網路群組的標籤 (金鑰值對) 清單。
以下程式碼會建立子網路群組 `sample-subnet-group`，其含有三個子網路 `subnet-4e26d263`、`subnet-afc329f4` 和 `subnet-b3806e8f`。  
若為 Linux、macOS 或 Unix：  

```
aws docdb create-db-subnet-group \
    --db-subnet-group-name sample-subnet-group \
    --db-subnet-group-description "A sample subnet group" \
    --subnet-ids subnet-4e26d263 subnet-afc329f4 subnet-b3806e8f \
    --tags Key=tag1,Value=One Key=tag2,Value=2
```
針對 Windows：  

```
aws docdb create-db-subnet-group ^
    --db-subnet-group-name sample-subnet-group ^
    --db-subnet-group-description "A sample subnet group" ^
    --subnet-ids subnet-4e26d263 subnet-afc329f4 subnet-b3806e8f ^
    --tags Key=tag1,Value=One Key=tag2,Value=2
```
此操作的輸出將會如下所示 (JSON 格式)。  

```
{
    "DBSubnetGroup": {
        "DBSubnetGroupDescription": "A sample subnet group",
        "DBSubnetGroupName": "sample-subnet-group",
        "Subnets": [
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1a"
                },
                "SubnetIdentifier": "subnet-4e26d263",
                "SubnetStatus": "Active"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1c"
                },
                "SubnetIdentifier": "subnet-afc329f4",
                "SubnetStatus": "Active"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1e"
                },
                "SubnetIdentifier": "subnet-b3806e8f",
                "SubnetStatus": "Active"
            }
        ],
        "VpcId": "vpc-91280df6",
        "DBSubnetGroupArn": "arn:aws:rds:us-east-1:123SAMPLE012:subgrp:sample-subnet-group",
        "SubnetGroupStatus": "Complete"
    }
}
```

------

# 描述 Amazon DocumentDB 子網路群組
<a name="document-db-subnet-group-describe"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來取得 Amazon DocumentDB 子網路群組的詳細資訊。

------
#### [ Using the AWS 管理主控台 ]

下列程序說明如何取得 Amazon DocumentDB 子網路群組的詳細資訊。

**找出子網路群組的詳細資訊**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)：// 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。
**提示**  
如果畫面左側沒有出現導覽窗格，請選擇頁面左上角的功能表圖示 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 若要查看子網路群組的詳細資訊，請選擇該子網路群組的名稱。  
![\[螢幕擷取畫面：顯示子網路群組的詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-subnet-group-details.png)

------
#### [ Using the AWS CLI ]

若要尋找 Amazon DocumentDB 子網路群組的詳細資訊，請使用 `describe-db-subnet-groups`操作搭配下列參數。

**參數**
+ `--db-subnet=group-name`- 選用。如果包含，將列出指名子網路群組的詳細資訊。如果省略，將列出最多 100 個子網路群組的詳細資訊。

**Example**  
以下程式碼將列出我們在第 [建立 Amazon DocumentDB 子網路群組](document-db-subnet-group-create.md) 節中建立的 `sample-subnet-group` 子網路群組的詳細資訊。  
若為 Linux、macOS 或 Unix：  

```
aws docdb describe-db-subnet-groups \
    --db-subnet-group-name sample-subnet-group
```
針對 Windows：  

```
aws docdb describe-db-subnet-groups ^
    --db-subnet-group-name sample-subnet-group
```
此操作的輸出將會如下所示 (JSON 格式)。  

```
{
    "DBSubnetGroup": {
        "DBSubnetGroupArn": "arn:aws:rds:us-east-1:123SAMPLE012:subgrp:sample-subnet-group",
        "VpcId": "vpc-91280df6",
        "SubnetGroupStatus": "Complete",
        "DBSubnetGroupName": "sample-subnet-group",
        "Subnets": [
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1a"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-4e26d263"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1c"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-afc329f4"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1e"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-b3806e8f"
            }
        ],
        "DBSubnetGroupDescription": "A sample subnet group"
    }
}
```

------

# 修改 Amazon DocumentDB 子網路群組
<a name="document-db-subnet-group-modify"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來修改子網路群組的描述，或從 Amazon DocumentDB 子網路群組新增或移除子網路。不過，您無法修改 `default` 子網路群組。

------
#### [ Using the AWS 管理主控台 ]

您可以使用 AWS 管理主控台 來變更子網路群組的描述，或新增和移除子網路。請記住，完成後，您必須至少有兩個可用區域與子網路群組關聯。

**修改子網路群組**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)：// 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。然後，選擇子網路群組名稱左側的按鈕。請記住，您無法修改 `default` 子網路群組。
**提示**  
如果畫面左側沒有出現導覽窗格，請選擇頁面左上角的功能表圖示 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 選擇 **Actions (動作)**，然後選擇 **Modify (修改)**。

1. **Description** - 若要變更子網路群組的描述，請輸入新的描述。

1. 若要變更與子網路群組相關聯的子網路，請在 **Add subnets (新增子網路)** 區段中執行下列其中一個或多個動作：
   + 若要移除此子網路群組中的所有子網路，選擇 **Remove all (全部移除)**。
   + 若要從此子網路群組中移除特定的子網路，請為每個想要移除的子網路選擇 **Remove (移除)**。
   + 若要新增與此 VPC 相關的所有子網路，請選擇 **Add all the subnets related to this VPC (新增與此 VPC 相關的所有子網路)**。
   + 若要新增特定子網路至子網路群組，請為想要新增子網路的每個可用區域執行下列動作。

     1. **可用區域** - 在清單中，選擇新的可用區域。

     1. **Subnet** - 在清單中，從為此子網路群組選擇的可用區域選擇子網路。

     1. 選擇 **Add subnet (新增子網路)**。

1. 在確認對話方塊中：
   + 若要對子網路群組進行這些變更，請選擇 **Modify (修改)**。
   + 若要保持子網路群組不變，請選擇 **Cancel (取消)**。

------
#### [ Using the AWS CLI ]

您可以使用 AWS CLI 來變更子網路群組的描述，或新增和移除子網路。請記住，完成後，您必須至少有兩個可用區域與子網路群組關聯。您無法修改 `default` 子網路群組。

**參數：**
+ `--db-subnet-group-name` - 必要項目。您正在修改的 Amazon DocumentDB 子網路群組名稱。
+ `--subnet-ids` - 必要項目。完成此變更之後，您想要包含在子網路群組內的所有子網路的清單。
**重要**  
目前在子網路群組中但未包含在此清單內任何子網路將從子網路群組移除。如果您想要保留目前在子網路群組中的任何子網路，您必須將其加入到清單內。
+ `--db-subnet-group-description`- 選用。子網路群組的描述。

**Example**  
以下程式碼將修改描述並用子網路 `subnet-991cb8d0`、`subnet-53ab3636` 及 `subnet-29ab1025` 取代現有的子網路。  
若為 Linux、macOS 或 Unix：  

```
aws docdb modify-db-subnet-group \
    --db-subnet-group-name sample-subnet-group \
    --subnet-ids subnet-991cb8d0 subnet-53ab3636 subnet-29ab1025 \
    --db-subnet-group-description "Modified subnet group"
```
針對 Windows：  

```
aws docdb modify-db-subnet-group ^
    --db-subnet-group-name sample-subnet-group ^
    --subnet-ids subnet-991cb8d0 subnet-53ab3636 subnet-29ab1025 ^
    --db-subnet-group-description "Modified subnet group"
```
此操作的輸出將會如下所示 (JSON 格式)。請注意，這是已在[建立 Amazon DocumentDB 子網路群組](document-db-subnet-group-create.md)一節中建立的同一個子網路群組。不過，子網路群組的子網路會取代為 `modify-db-subnet-group` 操作中列出的子網路。  

```
{
    "DBSubnetGroup": {
        "DBSubnetGroupArn": "arn:aws:rds:us-east-1:123SAMPLE012:subgrp:sample-subnet-group",
        "DBSubnetGroupDescription": "Modified subnet group",
        "SubnetGroupStatus": "Complete",
        "Subnets": [
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1d"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-53ab3636"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1b"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-991cb8d0"
            },
            {
                "SubnetAvailabilityZone": {
                    "Name": "us-east-1f"
                },
                "SubnetStatus": "Active",
                "SubnetIdentifier": "subnet-29ab1025"
            }
        ],
        "VpcId": "vpc-91280df6",
        "DBSubnetGroupName": "sample-subnet-group"
    }
}
```

------

# 刪除 Amazon DocumentDB 子網路群組
<a name="document-db-subnet-group-delete"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來刪除 Amazon DocumentDB 子網路群組。不過，您無法刪除 `default` 子網路群組。

------
#### [ Using the AWS 管理主控台 ]

您可以使用 AWS 管理主控台 刪除子網路群組。但是，您無法刪除 `default` 子網路群組。

**刪除子網路群組**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)：// 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。然後，選擇子網路群組名稱左側的按鈕。請注意，您無法刪除 `default` 子網路群組。
**提示**  
如果畫面左側沒有出現導覽窗格，請選擇頁面左上角的功能表圖示 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 選擇**動作**，然後選擇**刪除**。

1. 在確認對話方塊中：
   + 若要刪除子網路群組，請選擇 **Delete (刪除)**。
   + 若要保留子網路群組，請選擇 **Cancel (取消)**。

------
#### [ Using the AWS CLI ]

若要使用 刪除 Amazon DocumentDB 子網路群組 AWS CLI，請使用 `delete-db-subnet-group`操作搭配下列參數。

**參數**
+ `--db-subnet-group-name` - 必要項目。要刪除的 Amazon DocumentDB 子網路群組名稱。請注意，您無法刪除 `default` 子網路群組。

**Example**  
以下程式碼會刪除 `sample-subnet-group`。  
若為 Linux、macOS 或 Unix：  

```
aws docdb delete-db-subnet-group \
    --db-subnet-group-name sample-subnet-group
```
針對 Windows：  

```
aws docdb delete-db-subnet-group ^
    --db-subnet-group-name sample-subnet-group
```
此操作不會產生輸出。

------