建立具有自我管理許可的 CloudFormation StackSets - AWS CloudFormation

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

建立具有自我管理許可的 CloudFormation StackSets

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

注意

繼續之前,建立 StackSets 所需 IAM 服務角色,才能在您用來管理 StackSet 的帳戶與堆疊部署目的地帳戶之間建立信任關係。如需更多詳細資訊,請參閱 授與自我管理許可

建立具有自我管理許可的 StackSet (主控台)

建立 StackSet
  1. 請登入 AWS 管理主控台,開啟位於 https://console.aws.amazon.com/cloudformation 的 CloudFormation 主控台。

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

  3. 從導覽窗格選擇 StackSets

  4. StackSets 頁面上方選擇建立 StackSet

  5. 許可下,選擇自助服務許可,然後選擇您建立的 IAM 角色。

  6. 準備範本下,請選擇範本已準備就緒

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

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

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

  10. Configure StackSet options (設定 StackSet 選項) 頁面的 Tags (標籤) 下,指定任何標籤以套用至堆疊中的資源。如需 AWS 中如何使用標籤的詳細資訊,請參閱《AWS 帳單與成本管理 使用者指南》中的使用 AWS 成本配置標籤組織及追蹤成本

  11. 對於執行組態,選擇作用中,以啟用 CloudFormation 的最佳化操作處理:

    • 非衝突操作會同時執行,以便加快部署時間。

    • 衝突操作會根據請求的順序,自動排入佇列和處理。

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

  12. 如果範本包含 IAM 資源,在功能中選擇我知道此範本可建立 IAM 資源,以指定您要使用此範本中的 IAM 資源。如需更多詳細資訊,請參閱 認可 CloudFormation 範本中的 IAM 資源

  13. 選擇下一步

  14. 設定部署選項頁面上,對於將堆疊新增至 StackSet,選擇部署新堆疊

  15. 針對 Accounts (帳戶),選擇 Deploy stacks in accounts (在帳戶中部署堆疊)。在文字方塊中貼上您的目標 AWS 帳戶號碼,並以逗號分隔多個號碼。

    注意

    若想要在該帳戶中部署堆疊,也可包含您的管理員帳戶 ID。

  16. 指定區域下,選擇要部署堆疊的區域。

  17. 對於部署選項,執行下列動作:

    • 針對並行帳戶數目上限,指定並行處理的帳戶數量。

    • 針對容錯能力,指定每個區域允許的帳戶失敗數目上限。達到此限制後,操作將停止,且不會繼續前往其他區域。

    • 對於區域並行,選擇如何處理區域:循序 (一次處理一個區域) 或平行 (同時處理多個區域)。

    • 針對並行模式,選擇並行在操作執行期間的行為方式。

      • 嚴格容錯能力 – 降低發生故障時的帳戶並行層級,保持在容錯能力 +1 的範圍內。

      • 軟性容錯能力 – 無論失敗為何,維持您指定的並行層級 (最大並行帳戶的值)。

  18. 選擇下一步

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

  20. 當您準備好建立 StackSet 時,請選擇提交

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

建立具有自我管理許可的 StackSet (AWS CLI)

請依照本節中的步驟,使用 AWS CLI 執行下列操作:

  • 建立 StackSet 容器。

  • 部署堆疊執行個體。

建立 StackSet
  1. 使用 create-stack-set 命令來建立新的 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
  2. 在您的 create-stack-set 命令完成後,請執行 list-stack-sets 命令以查看已建立的 StackSet。您應該會在結果中看到新 StackSet。

    aws cloudformation list-stack-sets
  3. 使用 create-stack-instances 命令在 StackSet 中部署堆疊。下列範例在兩個 AWS 帳戶 (account_ID_1account_ID_2) 中,跨兩個區域 (us-west-2us-east-1) 部署堆疊。

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

    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

  4. 使用 describe-stack-set-operation 命令來確認您的堆疊已成功建立。對於 --operation-id 選項,指定作為 create-stack-instances 輸出一部分傳回的操作 ID。

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