

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

# 具有自我管理許可的 Create CloudFormation StackSets
<a name="stacksets-getting-started-create-self-managed"></a>

本主題說明如何建立具有*自我管理*許可的 StackSets，以跨 AWS 帳戶 和區域部署堆疊。

**注意**  
繼續之前，建立 StackSets 所需 IAM 服務角色，才能在您用來管理 StackSet 的帳戶與堆疊部署目的地帳戶之間建立信任關係。如需詳細資訊，請參閱[授與自我管理許可](stacksets-prereqs-self-managed.md)。

**Topics**
+ [建立具有自我管理許可的 StackSet (主控台)](#stacksets-getting-started-create-self-managed-console)
+ [建立具有自我管理許可的 StackSet (AWS CLI)](#stacksets-getting-started-self-managed-cli)

## 建立具有自我管理許可的 StackSet (主控台)
<a name="stacksets-getting-started-create-self-managed-console"></a>

**建立 StackSet**

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

1. 在畫面頂端的導覽列上，選擇您要從中管理 StackSet 的 AWS 區域 。

1. 從導覽窗格選擇 **StackSets**。

1. 從 **StackSets** 頁面上方選擇**建立 StackSet**。

1. 在**許可**下，選擇**自助服務許可**，然後選擇您建立的 IAM 角色。

1. 在**準備範本**下，請選擇**範本已準備就緒**。

1. 在 **Specify template (指定範本)** 下，選擇指定堆疊範本所在 S3 儲存貯體的 URL，或上傳堆疊範本檔案。然後選擇**下一步**。

1. 在**指定 StackSet 詳細資訊**頁面上，提供 StackSet 的名稱、指定任何參數，然後選擇**下一步**。

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

1. 在 **Configure StackSet options (設定 StackSet 選項)** 頁面的 **Tags (標籤)** 下，指定任何標籤以套用至堆疊中的資源。如需如何在 中使用標籤的詳細資訊 AWS，請參閱*AWS 帳單與成本管理 《 使用者指南*》中的[使用成本分配標籤組織和追蹤 AWS 成本](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。

1. 對於**執行組態**，選擇**作用中**，以啟用 CloudFormation 的最佳化操作處理：
   + 非衝突操作會同時執行，以便加快部署時間。
   + 衝突操作會根據請求的順序，自動排入佇列和處理。

   在有執行中或排入佇列的操作時，CloudFormation 會將所有傳入操作排入佇列，即使這些操作沒有衝突也一樣。在此期間，您無法變更執行設定。

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

1. 選擇**下一步**。

1. 在**設定部署選項**頁面上，對於**將堆疊新增至 StackSet**，選擇**部署新堆疊**。

1. 針對 **Accounts (帳戶)**，選擇 **Deploy stacks in accounts (在帳戶中部署堆疊)**。在文字方塊中貼上您的目標 AWS 帳戶 號碼，以逗號分隔多個號碼。
**注意**  
若想要在該帳戶中部署堆疊，也可包含您的管理員帳戶 ID。

1. 在**指定區域**下，選擇要部署堆疊的區域。

1. 對於**部署選項**，執行下列動作：
   + 針對**並行帳戶數目上限**，指定並行處理的帳戶數量。
   + 針對**容錯能力**，指定每個區域允許的帳戶失敗數目上限。達到此限制後，操作將停止，且不會繼續前往其他區域。
   + 對於**區域並行**，選擇如何處理區域：**循序** (一次處理一個區域) 或**平行** (同時處理多個區域)。
   + 針對**並行模式**，選擇並行在操作執行期間的行為方式。
     + **嚴格容錯能力** – 降低發生故障時的帳戶並行層級，保持在**容錯能力** \$11 的範圍內。
     + **軟性容錯能力** – 無論失敗為何，維持您指定的並行層級 (**最大並行帳戶**的值)。

1. 選擇**下一步**。

1. 在 **Review (檢閱)** 頁面上，檢視您的選擇。選擇**編輯**以對相關區段進行變更。

1. 當您準備好建立 StackSet 時，請選擇**提交**。

   CloudFormation 開始建立 StackSet。在您選擇**提交**時開啟的“StackSet 詳細資訊”頁面中，查看 StackSet 中的堆疊建立進度和狀態。

## 建立具有自我管理許可的 StackSet (AWS CLI)
<a name="stacksets-getting-started-self-managed-cli"></a>

請依照本節中的步驟使用 AWS CLI 來：
+ 建立 StackSet 容器。
+ 部署堆疊執行個體。

**建立 StackSet**

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html) 命令來建立新的 StackSet，並命名為 `my-stackset`。下列範例使用儲存於 S3 儲存貯體中的範本，並包含一個參數，該參數會將 `KeyPairName` 設定為數值 `TestKey`。

   ```
   aws cloudformation create-stack-set \
     --stack-set-name my-stackset \
     --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \
     --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
   ```

1. 在您的 **create-stack-set** 命令完成後，請執行 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html) 命令以查看已建立的 StackSet。您應該會在結果中看到新 StackSet。

   ```
   aws cloudformation list-stack-sets
   ```

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html) 命令在 StackSet 中部署堆疊。下列範例在兩個 AWS 帳戶 (`account_ID_1` 和 `account_ID_2`) 中，跨兩個區域 (`us-west-2` 和 `us-east-1`) 部署堆疊。

   使用 `--operation-preferences` 選項，設定並行帳戶處理和其他部署偏好設定。此範例使用基於數量的設定。請注意，`MaxConcurrentCount` 不得超過 `FailureToleranceCount` \$1 1。對於以百分比為基礎的設定，請使用 `FailureTolerancePercentage` 或 `MaxConcurrentPercentage`。

   ```
   aws cloudformation create-stack-instances \
     --stack-set-name my-stackset \
     --accounts account_ID_1 account_ID_2 \
     --regions us-west-2 us-east-1 \
     --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0
   ```

   如需詳細資訊，請參閱《*AWS CloudFormation API 參考*》中的 [CreateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html)。

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html) 命令來確認您的堆疊已成功建立。對於 `--operation-id` 選項，指定作為 **create-stack-instances** 輸出一部分傳回的操作 ID。

   ```
   aws cloudformation describe-stack-set-operation \
     --stack-set-name my-stackset \
     --operation-id operation_ID
   ```