

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

# 在 VPC 中啟動您的 Amazon OpenSearch Service 網域
<a name="vpc"></a>

您可以在*虛擬私有雲端* (VPC) 中啟動 AWS 資源，例如 Amazon OpenSearch Service 網域。VPC 是您的專用虛擬網路 AWS 帳戶。它在邏輯上與 AWS 雲端中的其他虛擬網路隔離。在 VPC 中放置 OpenSearch Service 網域可在 VPC 中的 OpenSearch Service 和其他服務之間進行安全通訊，而不需要網際網路閘道、NAT 裝置或 VPN 連接。所有流量都會安全地保留在 AWS 雲端中。

**注意**  
如果您將 OpenSearch Service 網域放置在 VPC 中，您的電腦必須能夠連接到 VPC。此連線通常會採用 VPN、傳輸閘道、受管網路或代理伺服器形式。您無法從 VPC 外部直接存取您的網域。

## VPC 與公有網域
<a name="vpc-comparison"></a>

以下是 VPC 網域不同於公有網域的一些方面。稍後會更詳細地說明各項差異。
+ 因為其邏輯隔離，相較於使用公有端點的網域，位於 VPC 內的網域具有額外的安全層。
+ 雖然可以從任何連接網際網路的裝置存取公有網域，但 VPC 網域需要某種形式的 VPN 或代理。
+ 相較於公有網域，VPC 網域在 主控台中顯示較少的資訊。特別是，**Cluster health** (叢集運作狀態) 索引標籤並不包含碎片資訊，並且 **Indices** (索引) 索引標籤不會出現。
+ 網域端點採用不同的形式 (`https://search-domain-name` 與 `https://vpc-domain-name`)。
+ 由於安全群組已經強制執行 IP 為基礎的存取政策，您無法將 IP 為基礎的存取政策套用到位於 VPC 內的網域。

## 限制
<a name="vpc-limitations"></a>

在 VPC 中操作 OpenSearch Service 網域具有下列限制：
+ 如果您在 VPC 中啟動新的網域，則無法在稍後進行切換以使用公有端點。反之亦然：如果您建立具有公有端點的網域，您稍後無法將其置於 VPC 之中。反之，您必須建立新網域並遷移您的資料。
+ 您可以在 VPC 中啟動您的網域，或者使用公有端點，但是您無法同時進行兩者。您必須在建立網域時選擇其中一個。
+ 您無法在使用專用租用的 VPC 中啟動您的網域。您必須使用租用設定為**預設**的 VPC。
+ 您將網域置於 VPC 後，您無法將其移到不同的 VPC，但您可以變更子網路和安全群組設定。
+ 若要針對位於 VPC 內的網域存取 OpenSearch Dashboards 的預設安裝，使用者必須能夠存取 VPC。此程序會依網路組態而異，但可能需要連線到 VPN 或受管網路或使用代理伺服器或傳輸閘道。如需進一步了解，請參閱 [關於 VPC 網域上的存取政策](#vpc-security)、[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)和 [控制對 Dashboards 的存取](dashboards.md#dashboards-access)。

## Architecture
<a name="vpc-architecture"></a>

為了支援 VPC，OpenSearch Service 會將端點置放到您 VPC 的一個、二個或三個子網路中。如果您為網域啟用了[多個可用區](managedomains-multiaz.md)，每個子網路都必須位於相同區域中的不同可用區域內。如果您只啟用一個可用區域，OpenSearch Service 會僅將端點置於一個子網路中。

下圖顯示一個可用區域的 VPC 架構：

![\[VPC architecture showing subnet with security group connecting to OpenSearch Service data nodes.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/VPCNoZoneAwareness.png)


下圖顯示兩個可用區域的 VPC 架構：

![\[VPC architecture with two 可用區域, showing security groups, data nodes, and master nodes.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/VPCZoneAwareness.png)


對於每個資料節點，OpenSearch Service 也會將*彈性網路介面* (ENI) 放置到 VPC 中。OpenSearch Service 會為每個 ENI 指派一個您的子網路 IPv4 地址範圍中的私有 IP 地址。服務也會為 IP 地址指定公有 DNS 主機名稱 (網域端點)。您必須使用公有 DNS 服務，來解析端點 (DNS 主機名稱) 到資料節點的適當 IP 地址：
+ 如果您的 VPC 透過將 `enableDnsSupport` 選項設定為 `true` (預設值)，來使用 Amazon 提供的 DNS 伺服器，則 OpenSearch Service 端點的解析將會取得成功。
+ 如果您的 VPC 使用私有 DNS 伺服器且伺服器可以連接公有授權的 DNS 伺服器以解析 DNS 主機名稱，則 OpenSearch Service 端點的解析也會取得成功。

由於 IP 地址可能變更，您應該定期解析網域端點，以便您可以隨時存取正確的資料節點。我們建議您設定 DNS 解析間隔為一分鐘。如果您使用的是用戶端，您也應該確保用戶端中的 DNS 快取已清除。

### 從公有存取遷移到 VPC 存取
<a name="migrating-public-to-vpc"></a>

當您建立網域時，可以指定是否應該有公有端點或位於 VPC 中。建立之後，您無法從一個切換到另一個。反之，您必須建立新網域並且手動重新建立索引或遷移您的資料。快照提供方便的方法遷移資料。如需有關拍攝和恢復快照的資訊，請參閱[在 Amazon OpenSearch Service 中建立索引快照](managedomains-snapshots.md)。

### 關於 VPC 網域上的存取政策
<a name="vpc-security"></a>

將 OpenSearch Service 網域置於 VPC 中可提供固有、強大的安全層。當您建立具有公用存取的網域時，端點的格式如下：

```
https://search-domain-name-identifier.region.es.amazonaws.com
```

如「公有」標籤建議，這個端點可從任何連接網際網路的裝置存取，即使您可以 (且應該) [ 控制對其的存取](ac.md)。如果您在 Web 瀏覽器中存取端點，您可能會收到 `Not Authorized` 訊息，但請求會到達網域。

當您建立具 VPC 存取的網域時，端點*看起來*類似公有端點：

```
https://vpc-domain-name-identifier.region.es.amazonaws.com
```

如果您嘗試在 Web 瀏覽器中存取端點，不過您可能會發現請求逾時。若要執行更基本的 `GET` 請求，您的電腦必須能夠連接到 VPC。此連線通常會採用 VPN、傳輸閘道、受管網路或代理伺服器形式。如需有關它可採用的各種形式的詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [VPC 範例](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenarios.html)。關於以開發為中心的範例，請參閱[測試 VPC 網域](#vpc-test)。

除了此連線需求外，VPC 還可讓您透過[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)管理網域的存取。對於許多使用案例，這個安全功能的組合已足夠，而您可能感覺可安心將開放的存取政策套用到網域。

使用開放的存取政策*並不*表示網際網路上的任何人都可以存取 OpenSearch Service 網域。反之，其表示如果請求達到 OpenSearch Service 網域且經關聯之安全群組允許，則網域會接受請求。唯一的例外情況是，您使用精細存取控制或指定 IAM 角色的存取政策。在這些情況下，如果網域要接受請求，安全群組必須允許它，*並且*它必須使用有效的憑證進行簽署。

**注意**  
由於安全群組已經強制執行 IP 為基礎的存取政策，您無法將 IP 為基礎的存取政策套用到位於 VPC 內的 網域。如果您使用公有存取，IP 為基礎的政策仍然可用。

### 在您開始之前：VPC 存取的先決條件
<a name="prerequisites-vpc-endpoints"></a>

在您可以啟用 VPC 和新 OpenSearch Service 網域之間的連線之前，必須執行以下操作：
+ **建立 VPC**

  若要建立 VPC，您可以使用 Amazon VPC 主控台、CLI AWS 或其中一個 AWS SDKs。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[使用 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。如果您已有 VPC，則可以略過此步驟。
+ **預留 IP 地址**

  OpenSearch Service 透過將網路介面置於 VPC 的子網路中來啟用 VPC 到網域的連線。每個網路界面都與 IP 地址關聯。您必須在子網路中保留足夠數量的 IP 地址給網路界面。如需詳細資訊，請參閱[在 VPC 子網路中保留 IP 地址](#reserving-ip-vpc-endpoints)。

### 測試 VPC 網域
<a name="vpc-test"></a>

VPC 的增強安全性使得連線到您的網域以及執行基本測試成為一個挑戰。如果您已經擁有 OpenSearch Service VPC 網域而寧願不建立 VPN 伺服器，請嘗試下列程序：

1. 對於網域的存取政策，請選擇 **Only use fine-grained access control** (僅使用精細存取控制)。完成測試後，您隨時可以更新此設定。

1. 在與 OpenSearch Service 網域相同的 VPC、子網路和安全群組中建立 Amazon Linux Amazon EC2 執行個體。

   由於此執行個體是用於進行測試，只需執行極少的工作，因此請選擇較便宜的執行個體類型，如 `t2.micro`。指派公有 IP 地址給執行個體，然後建立新的金鑰對或選擇現有的金鑰對。如果您建立新的金鑰，請將其下載到您的 `~/.ssh` 目錄。

   若要進一步了解如何建立執行個體，請參閱 [Amazon EC2 Linux 執行個體入門](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。

1. 將[網際網路閘道](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html)新增至您的 VPC。

1. 在 VPC 的[路由表](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)中，新增新的路由。對於 **Destination (目的地)**，指定其中包含您電腦公有 IP 地址的 [CIDR 區塊](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#IPv4_CIDR_blocks)。對於 **Target (目標)**，指定您剛建立的網際網路閘道。

   例如，您可以指定 `123.123.123.123/32` 以只用於您的電腦，或指定 `123.123.123.0/24` 以用於一個範圍的電腦。

1. 對於安全群組，指定兩個傳入規則：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/vpc.html)

   第一個規則可讓您使用 SSH 連接到 EC2 執行個體。第二個規則允許 EC2 執行個體透過 HTTPS 與 OpenSearch Service 網域通訊。

1. 從終端機執行下列命令：

   ```
   ssh -i ~/.ssh/your-key.pem ec2-user@your-ec2-instance-public-ip -N -L 9200:vpc-domain-name-identifier.region.es.amazonaws.com:443
   ```

   此命令會建立一個 SSH 通道，透過 EC2 執行個體將 [https://localhost:9200](https://localhost:9200) 的請求轉送到 OpenSearch Service 網域。在命令中指定連接埠 9200 會模擬本機 OpenSearch 安裝，但您可使用您想要的任何連接埠。OpenSearch Service 只接受透過連接埠 80 (HTTP) 或 443 (HTTPS) 的連接。

   此命令不會提供任何意見回饋，並且無限期地執行。若要停止命令，請按 `Ctrl + C`。

1. 導覽至 Web 瀏覽器中的 [https：//localhost：9200/\$1dashboards/](https://localhost:9200/_plugin/kibana/)。您可能需要認可安全例外狀況。

   或者，您也可以使用 [https://localhost:9200](https://localhost:9200)curl[、](https://curl.haxx.se/)Postman[ 或您愛用的程式設計語言，傳送請求到 ](https://www.getpostman.com/)。
**提示**  
如果因為憑證不相符而遇到 Curl 錯誤，請嘗試 `--insecure`​ 旗標。

### 在 VPC 子網路中保留 IP 地址
<a name="reserving-ip-vpc-endpoints"></a>

OpenSearch Service 會透過將網路介面置放在 VPC (或者如果您啟用了[多個可用區域](managedomains-multiaz.md)，則為 VPC 的多個子網路) 的子網路中，將網域連線到 VPC。每個網路界面都與 IP 地址關聯。在您建立 OpenSearch Service 網域之前，您必須在每個子網路中有足夠數量的 IP 地址，以適應網路介面。

以下是基本公式：OpenSearch Service 在每個子網路預留的 IP 地址數量是資料節點數的三倍，再除以可用區域數量。

**範例**
+ 如果某個網域有 9 個資料節點和 3 個可用區域，則每個子網路的 IP 計數為 9 \$1 3 / 3 = 9。
+ 如果某個網域有 8 個資料節點和 2 個可用區域，則每個子網路的 IP 計數為 8 \$1 3 / 2 = 12。
+ 如果某個網域有 6 個資料節點和 1 個可用區域，則每個子網路的 IP 計數為 6 \$1 3 / 1 = 18。

當您建立網域時，OpenSearch Service 會保留 IP 地址，將某些 IP 地址用於網域，並為[藍/綠部署](managedomains-configuration-changes.md)保留其餘 IP 地址。您可以在 Amazon EC2 主控台的**網路介面**區段中查看網路介面及其關聯的 IP 地址。**Description** (描述) 欄顯示網路介面與哪些 OpenSearch Service 網域相關聯。

**提示**  
我們建議您為 OpenSearch Service 保留 IP 地址建立專用的子網路。透過使用專用的子網路，可避免與其他應用程式和服務重疊，並確保您可以預留額外的 IP 地址供未來若需要擴展叢集時使用。若要進一步了解，請參閱[在您的 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

您也可以考慮佈建專用協調器節點，以減少 VPC 網域所需的私有 IP 地址保留次數。OpenSearch 會將彈性網路界面 (ENI) 連接到您的專用協調器節點，而不是您的資料節點。專用協調器節點通常代表總資料節點的大約 10%。因此，會為 VPC 網域保留較少數量的私有 IP 地址。

### VPC 存取適用的服務連結角色
<a name="enabling-slr"></a>

[服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)是一個唯一的 IAM 角色類型，它將許可委派給服務，以便服務可代表您建立和管理資源。OpenSearch Service 需要服務連結角色來存取您的 VPC、建立網域端點以及將網路介面置於您的 VPC 子網路中。

當您使用 OpenSearch Service 主控台在 VPC 中建立網域時，OpenSearch Service 會自動建立角色。若要讓此自動建立成功，您必須有 `iam:CreateServiceLinkedRole` 動作的許可。如需進一步了解，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

在 OpenSearch Service 建立角色後，您可以使用 IAM 主控台檢視它 (`AWSServiceRoleForAmazonOpenSearchService`)。

如需此角色許可以及如何刪除它的完整資訊，請參閱[使用 Amazon OpenSearch Service 的服務連結角色](slr.md)。