

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

# 從 CloudFormation 主控台建立堆疊
<a name="cfn-console-create-stack"></a>

可以建立堆疊範本，然後使用它透過 CloudFormation 主控台或命令列工具建立堆疊。主控台提供精靈驅動的介面與預先定義的選項，可簡化堆疊建立程序。

**Topics**
+ [建立堆疊](#create-stack)
+ [設定堆疊選項](#configure-stack-options)
+ [預覽堆疊的組態](#cfn-console-create-stacks-changesets)

## 建立堆疊
<a name="create-stack"></a>

請依照本節中的步驟來部署範本並建立堆疊。

**先決條件**
+ 您必須已經建立堆疊範本。如需詳細資訊，請參閱[使用 CloudFormation 範本](template-guide.md)。

**若要建立堆疊 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在畫面頂端的導覽列上，選擇要在其中 AWS 區域 建立堆疊的 。

1. 在**堆疊**頁面的右上角，選擇**建立堆疊**，並選擇**使用新資源 (標準)**。

   或者，您可以選擇**使用現有資源 （匯入資源）** 選項，以匯入範本中描述的現有 AWS 資源。如需有關此選項的詳細資訊，請參閱 [將 AWS 資源匯入 CloudFormation 堆疊](import-resources.md)。

1. 在**建立堆疊**頁面中，執行下列動作：
   + 若要使用現有範本，請在**先決條件 - 準備範本**中選取**選擇現有範本**。然後，在**指定範本**下，根據範本的位置選擇 **Amazon S3 URL** 或**上傳範本檔案**。
     + 如果選擇 **Amazon S3 URL**，請將 URL 提供給 S3 儲存貯體中的範本檔案。

       如果範本包含巢狀堆疊 (例如，子目錄中其他範本文件中所述的堆疊)，請確保 S3 儲存貯體包含必要的檔案和目錄。

       如果您擁有已啟用版本控制的儲存貯體中的範本，則可以指定範本的特定版本，方法是將 `?versionId=version-id` 附加到 URL。如需有關已啟用版本控制的儲存貯體詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》中的[使用已啟用版本控制之儲存貯體中的物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-objects-versioned-bucket.html)。**

       URL 必須指向大小上限為 1 MB 的範本，該範本存放在您具有讀取許可的 S3 儲存貯體內。URL 長度上限為 1024 個字元。部分資源可能要求在堆疊所在的相同區域內有儲存貯體。
     + 如果您選擇**上傳範本檔案**，請選取**選擇檔案**以從本機電腦中選擇範本檔案。範本檔案大小必須為 1 MB 或以下。

       一旦選擇範本，CloudFormation 就會上傳該檔案，並顯示 S3 URL。CloudFormation 會將其上傳至 AWS 帳戶中的 Amazon S3 儲存貯體。如果您已有 CloudFormation 在 中建立的 S3 儲存貯體 AWS 帳戶，CloudFormation 會將範本新增至該儲存貯體。如果您還沒有現有的 CloudFormation 建立的 S3 儲存貯體，它會針對您上傳範本檔案的每個區域建立唯一儲存貯體。

       以下是使用 CloudFormation 建立的 S3 儲存貯體時的考量：
       + 擁有 Amazon S3 許可的任何人都可以存取儲存貯體 AWS 帳戶。
       + CloudFormation 建立儲存貯體時，伺服器端加密預設為啟用，藉此加密所有儲存貯體中存放的物件。

         您可以直接管理 CloudFormation 已建立的儲存貯體之加密選項，例如，使用位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台或使用 AWS CLI。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》中的[設定 Amazon S3 儲存貯體的預設伺服器端加密行為](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)。**
       + 您可以使用自己的儲存貯體，並手動上傳範本至 Amazon S3 以管理其許可。當您建立或更新堆疊時，請指定範本檔的 Amazon S3 URL。
   + 如果尚未準備好範本，可以選擇**從 Infrastructure Composer 建置**，以使用 Infrastructure Composer 建立範本。如需詳細資訊，請參閱[Infrastructure Composer](infrastructure-composer-for-cloudformation.md)。

1. 選擇**下一步**以繼續並驗證範本。

   在繼續之前，CloudFormation 會驗證您的範本以捕捉語法和語意錯誤，例如循環參考。在驗證期間，CloudFormation 會先檢查範本是否為有效的 JSON。如果不是，CloudFormation 會檢查範本是否為有效的 YAML。如果兩種檢查都失敗，則 CloudFormation 會傳回範本驗證錯誤。

1. 在 **Specify stack details (指定堆疊詳細資訊)** 頁面的 **Stack name (堆疊名稱)** 方塊中，輸入堆疊名稱。

   堆疊名稱是一個識別碼，可協助您從堆疊清單中找到特定堆疊。堆疊名稱只能包含英數字元 (區分大小寫) 和連字號。必須以字母字元開頭，且長度不可超過 128 個字元。

1. 在**參數**區段中，指定範本中定義的參數值。

1. 請選擇**下一步**，繼續建立堆疊。

1. (選用) 在**配置堆疊選項**頁面中，變更預設堆疊選項。如需詳細資訊，請參閱[設定堆疊選項](#configure-stack-options)。

1. 如果範本包含 IAM 資源，在**功能**中選擇**我知道此範本可建立 IAM 資源**，以指定您要使用此範本中的 IAM 資源。如需詳細資訊，請參閱[認可 CloudFormation 範本中的 IAM 資源](control-access-with-iam.md#using-iam-capabilities)。

1. 選擇 **Next** (下一步) 繼續。

1. 在**檢閱並建立**頁面中，檢閱堆疊詳細資訊。

   若要在啟動堆疊之前變更任何值，請在具有要變更之設定的區段中選擇**編輯**。

1. (選用) 您可以建立變更集，以在建立之前預覽堆疊的組態。在**檢閱並建立**頁面中，選擇**建立變更集**並遵循指示。如需詳細資訊，請參閱[預覽堆疊的組態](#cfn-console-create-stacks-changesets)。

1. 選擇**提交**以啟動堆疊。

CloudFormation 接著會繼續建立範本中定義的所有資源。

可以在新堆疊的**事件**索引標籤中監控堆疊建立的進度和狀態。如需詳細資訊，請參閱[監控堆疊進度](monitor-stack-progress.md)。

**若要使用命令列來建立堆疊**  
您可以使用下列其中一項命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) (AWS CLI)
+ [https://docs.aws.amazon.com/powershell/latest/reference/items/New-CFNStack.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-CFNStack.html) (AWS Tools for Windows PowerShell)

如需使用命令列建立堆疊的範例，請參閱 [AWS CLI 和 PowerShell 的 CloudFormation 堆疊操作命令範例](service_code_examples.md)。

## 設定堆疊選項
<a name="configure-stack-options"></a>

在**設定堆疊選項**頁面中，可以為 CloudFormation 堆疊設定選項，例如標籤、堆疊事件通知或堆疊政策。

您可以設定下列堆疊選項：

**Tags** (標籤)  <a name="configure-stack-options-tags"></a>
最多可以將 50 個標籤金鑰對新增至堆疊以及 CloudFormation 支援標記的任何資源。標籤是客戶定義的金鑰和值，可以指派給 AWS 資源，用於成本追蹤等目的。  
**Key (金鑰)** 會包含任何英數字元或空格。而標籤金鑰的長度最多可達 127 個字元。  
**Value (數值)** 會包含任何英數字元或空格。而標籤值的長度最多可達 255 個字元。  
建立堆疊後，新增、更新或移除堆疊層級標籤會啟動堆疊更新。支援堆疊層級標籤傳播的所有資源都會相應更新。

**許可**  <a name="configure-stack-options-permissions"></a>
CloudFormation 可以擔任的現有 IAM 服務角色。CloudFormation 會使用該角色的憑證來建立堆疊，而非採用您帳戶的憑證。如需詳細資訊，請參閱[CloudFormation 服務角色](using-iam-servicerole.md)。

**堆疊失敗選項**  <a name="configure-stack-options-rollback"></a>
為所有堆疊部署和變更集操作指定佈建失敗選項。如需詳細資訊，請參閱[選擇佈建資源時的失敗處理方式](stack-failure-options.md)。  
堆疊狀態為 `CREATE_FAILED` 或 `UPDATE_FAILED` 時，**Roll back all stack resources** (復原所有堆疊資源) 選項將復原範本中指定的所有資源。  
針對建立操作，**Preserve successfully provisioned resources** (保留已成功佈建的資源) 選項可保留成功資源的狀態，而失敗的資源會保持失敗狀態，直到執行下一次更新操作為止。  
針對更新與變更集操作，**Preserve successfully provisioned resources** (保留已成功佈建的資源) 選項可保留成功資源的狀態，同時將失敗資源復原到上一個已知穩定狀態。失敗的資源將處於 `UPDATE_FAILED` 狀態。沒有上一個已知穩定狀態的資源將在下一次堆疊操作時遭刪除。

您也可以針對堆疊建立設定以下進階選項：

**Stack policy (堆疊政策)**  <a name="configure-stack-options-stack-policy"></a>
可藉由此選項來定義堆疊更新期間，您欲避免意外更新的資源。在預設情況下，系統可以在堆疊更新期間將所有資源進行更新。  
您可以直接輸入堆疊政策作為 JSON，或上傳包含堆疊政策的 JSON 檔案。如需詳細資訊，請參閱[避免更新堆疊資源](protect-stack-resources.md)。

**復原組態**  <a name="configure-stack-options-rollback-configuration"></a>
可讓 CloudFormation 監控堆疊在堆疊建立和更新期間的狀態，如果堆疊超過您指定的任何警示閾值，也可復原該操作。指定 CloudFormation 應該監控的 Cloudwatch 警示。如有任何警示在堆疊操作或監控期間進入 `ALARM` 狀態，CloudFormation 將會復原整個堆疊操作。如需詳細資訊，請參閱[透過復原觸發條件，在警示違規時復原您的 CloudFormation 堆疊](using-cfn-rollback-triggers.md)。

**通知選項**  <a name="configure-stack-options-notification"></a>
您可指定新的或現有 Amazon Simple Notification Service 主題，其為系統傳送堆疊事件通知的目標位置。  
建立 Amazon SNS 主題時，您必須指定名稱與電子郵件地址，以便接收堆疊事件通知。

**堆疊建立選項**  <a name="configure-stack-options-creation-options"></a>
堆疊建立包含以下選項，但不提供為堆疊更新的一部分。    
**Timeout (逾時)**  <a name="configure-stack-options-creation-timeout"></a>
指定在堆疊建立操作逾時之前 CloudFormation 應分配的時間量 (以分鐘為單位)。如果 CloudFormation 無法在分配的時間內建立整個堆疊，操作便會因為逾時而失敗，並復原堆疊。  
依預設，堆疊建立沒有逾時。不過，個別資源可能會因其實作的服務性質而有自己的逾時。例如，如果堆疊中的個別資源逾時，堆疊建立也會逾時，即使尚未達到您指定的堆疊建立逾時。  
**終止保護**  
此選項可防止堆疊遭意外刪除。如果使用者嘗試刪除啟用終止保護的堆疊，則刪除會失敗，且堆疊及其狀態保持不變。如需詳細資訊，請參閱[防止 CloudFormation 堆疊遭到刪除](using-cfn-protect-stacks.md)。  
根據預設，終止保護為 **Disabled (已停用)**。

## 預覽堆疊的組態
<a name="cfn-console-create-stacks-changesets"></a>

如需在建立堆疊前，預覽 CloudFormation 堆疊的設定方式，則請建立變更集。本功能可以讓您在執行變更集前檢查各種組態，並針對堆疊進行修正與更改。如需變更集的詳細資訊，請參閱[透過變更集更新 CloudFormation 堆疊](using-cfn-updating-stacks-changesets.md)。

### 建立新堆疊的變更集
<a name="cfn-console-create-stacks-changesets-create-new-stack"></a>

若要建立新堆疊的變更集，請選取您的堆疊範本並指定堆疊組態，就像建立新堆疊一樣，然後選擇建立新的變更集，而不是建立新的堆疊。

**若要建立新堆疊的變更集**

1. 在**檢閱並建立**頁面中，選取**建立變更集**。

1. 在**建立變更集**對話方塊中，輸入變更集的名稱，並視需要輸入描述。選擇 **Create change set (建立變更集)**。

   當您建立新堆疊的變更集時，CloudFormation 會執行下列動作：
   + 啟動狀態為 `REVIEW_IN_PROGRESS` (正在檢閱) 的新堆疊。
   + 建立新堆疊的變更集，此堆疊會反映您在前列步驟中指定的堆疊組態。

   CloudFormation 會顯示提議堆疊的 **Change sets (變更集)** 頁面。當 CloudFormation 建立變更集時，其狀態為 `CREATE_IN_PROGRESS` (正在建立)，執行狀態為 `UNAVAILABLE` (無法使用)。CloudFormation 成功建立變更集時，其會將變更集狀態設定為 `CREATE_COMPLETE`，並將執行狀態設定為 `AVAILABLE`。堆疊狀態更新為 `REVIEW_IN_PROGRESS` (正在檢閱)。此時，您可以執行變更集來完成建立新堆疊。

   在 **Changes (變更)** 窗格中，CloudFormation 會顯示堆疊的建議組態。

   如果 CloudFormation 無法建立變更集，它會將變更集狀態設為 `CREATE_FAILED` (建立失敗)。修正 **Status reason (狀態原因)** 欄位中顯示的錯誤，然後建立新的變更集。在此階段，您可以嘗試在執行下一個變更集前檢查各種組態，並針對堆疊進行修正與更改。

1. 若要根據變更集完成建立新堆疊，請選擇 **Execute** (執行)，指定復原組態，然後選擇 **Execute change set** (執行變更集)。