

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

# 在 VPC 中執行堆疊
<a name="workingstacks-vpc"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

您可以在 virtual private cloud (VPC) 中建立堆疊的執行個體，以控制使用者對其的存取權。例如，您可能不想讓使用者直接存取您堆疊的應用程式伺服器或資料庫，而要求所有公有流量都經由 Elastic Load Balancer 導引。

在 VPC 中執行堆疊的基本步驟如下：

1. 使用 Amazon VPC 主控台或 API 或 CloudFormation 範本建立適當設定的 VPC。

1. 在建立堆疊時指定 VPC ID。

1. 在適當子網路中，啟動堆疊的執行個體。

下列簡要說明 VPC 在 OpsWorks Stacks 中的運作方式。

**重要**  
如果您使用 VPC 端點功能，請注意堆疊中的每個執行個體都必須能夠從 Amazon Simple Storage Service (Amazon S3) 完成下列動作：  
安裝執行個體代理程式。
安裝 Ruby 這類資產。
上傳 Chef 執行日誌。
擷取堆疊命令。
若要啟用這些動作，您必須確保堆疊的執行個體可以存取下列符合堆疊區域的儲存貯體。否則，上述動作將會失敗。  
對於 Chef 12 Linux 和 Chef 12.2 Windows，儲存貯體如下所示。  


| 代理程式儲存貯體 | 資產儲存貯體 | 日誌儲存貯體 | DNA 儲存貯體 | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  | 
若是 Linux 的 Chef 11.10 和更早版本，儲存貯體如下所示。美國東部 （維吉尼亞北部） 區域以外的區域端點不支援 Chef 11.4 堆疊。  


| 代理程式儲存貯體 | 資產儲存貯體 | 日誌儲存貯體 | DNA 儲存貯體 | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/workingstacks-vpc.html)  | 
如需詳細資訊，請參閱 [VPC 端點](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)。

**注意**  
若要讓 OpsWorks Stacks 連線到您啟用的 VPC 端點，您也必須設定 NAT 或公有 IP 的路由，因為 OpsWorks Stacks 代理程式仍然需要存取公有端點。

**Topics**
+ [VPC 基本概念](#workingstacks-vpc-basics)
+ [為 OpsWorks Stacks Stack 建立 VPC](#workingstacks-vpc-create-vps)

## VPC 基本概念
<a name="workingstacks-vpc-basics"></a>

如需 VPC 的詳細討論，請參閱 [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html)。簡短來說，VPC 包含一或多個「子網路」**，而其中每個都包含一或多個執行個體。每個子網路都有一個相關聯的路由表，以根據其目標 IP 地址指示傳出流量。
+ VPC 中的執行個體預設為可互相通訊，而不管它們的子網路為何。不過，變更網路存取控制清單 (ACL)、安全群組政策，或使用靜態 IP 地址的話，可能會切斷此通訊。
+ 如果子網路的執行個體可以與網際網路通訊，則這種子網路稱為「公有子網路」**。
+ 如果子網路的執行個體只能與 VPC 中的其他執行個體通訊，而無法直接與網際網路通訊，則這種子網路稱為「私有子網路」**。

OpsWorks Stacks 需要設定 VPC，以便堆疊中的每個執行個體都能存取下列端點，包括私有子網路中的執行個體：
+ 列於「區域支援」一節的其中一個 OpsWorks Stacks 服務端點[Stacks OpsWorks 入門](gettingstarted_intro.md)。
+ 下列其中一個執行個體服務端點，由 Stacks OpsWorks 代理程式使用。受管的客戶執行個體上執行的代理程式會與服務交換資料。
  + opsworks-instance-service.us-east-2.amazonaws.com
  + opsworks-instance-service.us-east-1.amazonaws.com
  + opsworks-instance-service.us-west-1.amazonaws.com
  + opsworks-instance-service.us-west-2.amazonaws.com
  + opsworks-instance-service.ap-south-1.amazonaws.com
  + opsworks-instance-service.ap-northeast-1.amazonaws.com
  + opsworks-instance-service.ap-northeast-2.amazonaws.com
  + opsworks-instance-service.ap-southeast-1.amazonaws.com
  + opsworks-instance-service.ap-southeast-2.amazonaws.com
  + opsworks-instance-service.ca-central-1.amazonaws.com
  + opsworks-instance-service.eu-central-1.amazonaws.com
  + opsworks-instance-service.eu-west-1.amazonaws.com
  + opsworks-instance-service.eu-west-2.amazonaws.com
  + opsworks-instance-service.eu-west-3.amazonaws.com
+ Amazon S3
+ 作業系統仰賴的任何套件儲存庫，例如 Amazon Linux 或 Ubuntu Linux 儲存庫。
+ 您的應用程式和自訂技術指南儲存庫。

有多種方法可以將 VPC 設定為提供此連線能力。以下是如何為 Stacks 應用程式伺服器堆疊設定 VPC OpsWorks 的簡單範例。

![\[VPC diagram showing public and private subnets, NAT, load balancing, and connections to external services.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/vpc.png)


此 VPC 有多個元件：

**子網路**  
VPC 有兩個子網路：一個公有子網路和一個私有子網路。  
+ 公有子網路包含一個負載平衡器和網路地址轉譯 (NAT) 裝置，其可與外部地址和私有子網路中的執行個體通訊。
+ 私有子網路包含應用程式伺服器，其可與公有子網路中的 NAT 和負載平衡器通訊，但無法直接與外部地址通訊。

**網際網路閘道**  
網際網路閘道允許含公有 IP 地址的執行個體 (例如負載平衡器) 與 VPC 外部地址通訊。

**負載平衡器**  
Elastic Load Balancing 負載平衡器會接收來自使用者的傳入流量，將它分發至私有子網路中的應用程式伺服器，並將回應傳回給使用者。

**NAT**  
(NAT) 裝置提供的應用程式伺服器只能對網際網路進行有限的存取；通常是用來從外部儲存庫下載軟體更新。所有 OpsWorks Stacks 執行個體都必須能夠與 OpsWorks Stacks 和適當的 Linux 儲存庫進行通訊。其中一種處理此問題的方法是，將含相關聯彈性 IP 地址的 NAT 裝置放在公有子網路中。然後，您就可以將來自私有子網路執行個體的傳出流量透過 NAT 進行路由。  
單一 NAT 執行個體會在私有子網路的傳出流量中建立單一故障點。您可以使用一對 NAT 執行個體來設定 VPC，以在其中一個執行個體發生故障時由另一個接替，藉此提升可靠性。如需詳細資訊，請參閱 [Amazon VPC NAT 執行個體的高可用性](https://aws.amazon.com/articles/6079781443936876)。您也可以使用 NAT 閘道。如需詳細資訊，請參閱《[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)》中的 [NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat.html)。

最佳 VPC 組態取決於您的 Stacks OpsWorks 堆疊。下列的一些範例說明您可能會使用特定 VPC 組態的時機。如需其他 VPC 案例的範例，請參閱 [Amazon VPC 使用情境](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenarios.html)。

**使用公有子網路中的一個執行個體**  
如果您有沒有相關聯私有資源的單一執行個體堆疊，例如不應公開存取的 Amazon RDS 執行個體，您可以建立一個具有一個公有子網路的 VPC，並將執行個體放在該子網路中。如果您不是使用預設 VPC，則必須讓執行個體 layer 指派彈性 IP 地址給該執行個體。如需詳細資訊，請參閱[OpsWorks Layer 基本概念](workinglayers-basics.md)。

**使用私有資源**  
如果您的資源不應公開存取，您可以建立一個 VPC，其中含有一個公有子網路和一個私有子網路。例如，在負載平衡的自動擴展環境中，您可以將所有 Amazon EC2 執行個體放在私有子網路中，並將負載平衡器放在公有子網路中。如此一來，就無法直接從網際網路存取 Amazon EC2 執行個體；所有傳入流量都必須透過負載平衡器路由。  
私有子網路會將執行個體與 Amazon EC2 直接使用者存取隔離，但仍必須將傳出請求傳送至 AWS 和適當的 Linux 套件儲存庫。若要允許這類請求，您可以使用自帶彈性 IP 地址的網路地址轉譯 (NAT) 裝置，然後透過 NAT 路由該執行個體的傳出流量。您可以將 NAT 放在負載平衡器的相同公有子網路中，如上述範例所示。  
+ 如果您使用的是後端資料庫，例如 Amazon RDS 執行個體，您可以將這些執行個體放在私有子網路中。對於 Amazon RDS 執行個體，您必須在不同的可用區域中指定至少兩個不同的子網路。
+ 如果您需要直接存取私有子網路中的執行個體，例如，您想要使用 SSH 登入執行個體，您可以將堡壘主機放在代理網際網路請求的公有子網路中。

**將自己的網路擴展至 AWS**  
若您想要將自己的網路擴展至雲端，並直接從 VPC 存取網際網路，您可以建立 VPN 閘道。如需詳細資訊，請參閱[案例 3：具有公有子網路和私有子網路以及硬體 VPN 存取的 VPC](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario3.html)。

## 為 OpsWorks Stacks Stack 建立 VPC
<a name="workingstacks-vpc-create-vps"></a>

本節說明如何使用範例 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 範本建立 OpsWorks Stacks 堆疊的 VPC。您可以在 [OpsWorksVPCtemplates.zip 檔案](samples/OpsWorksVPCtemplates.zip)中下載範本。如需如何手動建立一個本主題所述 VPC 的詳細資訊，請參閱[案例 2：具有公有子網路和私有子網路的 VPC](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html)。如需如何設定路由表、安全群組等，請參閱範本範例。

**注意**  
根據預設， OpsWorks Stacks 會透過串連其 CIDR 範圍和可用區域來顯示子網路名稱，例如 `10.0.0.1/24 - us-east-1b`。若要讓名稱更易讀，請為每個子網路建立標籤，並將**金鑰**設為 **Name**，並將**值**設為子網路名稱。然後， OpsWorks Stacks 會將子網路名稱附加到預設名稱。例如，下列範例中的私有子網路，其標籤的 **Name (名稱)** 設定為 **Private**，因此 OpsWorks 會顯示為 `10.0.0.1/24 us-east - 1b - Private`。

您可以使用 CloudFormation 主控台啟動 VPC 範本，只需幾個步驟。下列程序使用範例範本在美國東部 （維吉尼亞北部） 區域建立 VPC。如需如何使用範本在其他區域中建立 VPC 的指示說明，請參閱程序之後的[備註](#vpc-note)。

**若要建立 VPC**

1. 開啟 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)，選取 **US East (N. Virginia) (美國東部 (維吉尼亞北部))** 區域，然後選擇 **Create Stack (建立堆疊)**。

1. 在 **Select Template (選取範本)** 頁面上，選取 **Upload a template (上傳範本)**。瀏覽您在 OpsWorksVPCtemplates.zip `OpsWorksinVPC.template` 檔案中下載的檔案。選擇**繼續**。 [OpsWorksVPCtemplates.zip ](samples/OpsWorksVPCtemplates.zip)  
![\[CloudFormation Select Template (選取範本) 頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/vpc_create_vpc.png)

   您也可以開啟 [AWS CloudFormation 範本](https://aws.amazon.com/cloudformation/aws-cloudformation-templates/)、尋找 OpsWorks Stacks VPC 範本，然後選擇**啟動堆疊來啟動此堆疊**。

1. 接受 **Specify Parameters (指定參數)** 頁面中的預設值，然後選擇 **Continue (繼續)**。

1. 在 **Add Tags (新增標籤)** 頁面中，將 **Key (索引鍵)** 設定為 **Name**，將 **Value (值)** 設定為 VPC 名稱，以建立標籤。此標籤可讓您在建立 Stacks OpsWorks 堆疊時更輕鬆地識別 VPC。

1. 選擇 **Continue (繼續)**，然後選擇 **Close (關閉)** 以啟動堆疊。

<a name="vpc-note"></a>**備註：**您可以使用下列任一種方法，在其他區域中建立 VPC。
+ 移至[在不同區域中使用範本](https://aws.amazon.com/cloudformation/aws-cloudformation-templates/#regions)，選擇適當的區域，找到 OpsWorks Stacks VPC 範本，然後選擇**啟動堆疊**。
+ 將範本檔案複製到您的系統中，並在 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)中選取適當的區域，然後使用 **Create Stack (建立堆疊)** 精靈的 **Upload a template to Amazon S3 (上傳範本到 Amazon S3)** 選項，從您的系統上傳範本。

此範例範本包含輸出，可提供建立 Stacks OpsWorks 堆疊所需的 VPC、子網路和負載平衡器 IDs。您可以選擇 CloudFormation 主控台視窗底部的**輸出**索引標籤來查看它們。

![\[Stack outputs table showing VPC, subnet, and load balancer IDs for OpsWorks-in-VPC stack.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/vpc_cfn_outputs.png)
