使用自我管理許可建立 CloudFormation StackSets - AWS CloudFormation

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

使用自我管理許可建立 CloudFormation StackSets

使用自我管理許可,您可以將堆疊部署到 AWS 帳戶 特定區域中的特定 。若要這樣做,您必須先建立必要的 IAM 角色,以在您管理堆疊集的帳戶與您要部署堆疊的目標帳戶之間建立信任關係。如需詳細資訊,請參閱授與自我管理許可

注意

在完成下列其中一個程序之前,請確認 IAM 角色AWSCloudFormationStackSetExecutionRoleAWSCloudFormationStackSetAdministrationRole存在於您的管理員帳戶中。若要在管理員帳戶以外的帳戶中啟動堆疊,請確認目標帳戶中AWSCloudFormationStackSetExecutionRole存在 IAM 角色。如需詳細資訊,請參閱授予管理員帳戶所有使用者管理所有目標帳戶中堆疊的許可

本主題中參考的範本 AWS Config 在美國西部 (奧勒岡) 區域 (us-west-2) 和美國東部 (維吉尼亞北部) 區域 () 內的目標帳戶中啟用 us-east-1啟用 AWS Config範本位於以下 S3 儲存貯體:https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml。您也可以在 StackSets 主控台中選擇此範例範本。

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

  1. 登入 AWS Management Console 並在 https://https://console.aws.amazon.com/cloudformation 開啟 AWS CloudFormation 主控台。

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

  3. 從導覽窗格選擇 StackSets

  4. StackSets 頁面頂端,選擇建立 StackSet

  5. 略過許可,以使用您先前建立且名為 AWSCloudFormationStackSetExecutionRoleAWSCloudFormationStackSetAdministrationRole的 IAM 角色。

  6. 選擇 Prerequisite - Prepare template (事前準備 - 準備範本) 下的 Use a sample template (使用範例範本)

  7. 選取範例範本下,從下拉式功能表中選擇啟用 AWS Config範本。然後選擇下一步

  8. 指定 StackSet 詳細資訊頁面上,針對 StackSet 名稱,提供堆疊集的名稱。堆疊集名稱必須以字母字元開頭,且僅包含字母、數字和連字號。在此演練中,請使用名稱 my-awsconfig-stackset

  9. 針對 StackSet 描述,提供堆疊集的描述。

  10. 參數下,執行下列動作:

    1. 設定 所使用的記錄器組態參數 AWS Config。如需這些參數的詳細資訊,請參閱《 AWS Config 開發人員指南》中的手動設定 AWS Config

      1. 對於支援所有資源類型,請保留預設值 true,以記錄所有支援的資源類型。

      2. 對於包含全域資源類型,請保留預設值 false,以排除 IAM 角色等全域資源。

      3. 如果並非所有支援設定為 <All>,請保留資源類型清單只有在您為支援所有資源類型選取 false 時才新增特定資源類型。

      4. 對於包含 Config 服務連結角色資源的區域,請將 <DeployToAnyRegion> 取代為 us-west-2。這表示只有在堆疊部署到美國西部 (奧勒岡) 區域時,AWSServiceRoleForConfig才會建立名為 的服務連結角色。您將在此程序稍後選擇部署區域。

      5. 針對組態記錄器記錄頻率,選擇 CONTINUOUSDAILY 記錄。

    2. (選用) 在交付管道組態下,設定更新和通知的交付管道。如需 中交付管道的詳細資訊 AWS Config,請參閱《 AWS Config 開發人員指南》中的管理交付管道

    3. (選用) 在交付通知下,設定 Amazon Simple Notification Service (SNS) 通知。

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

  12. Configure StackSet options (設定 StackSet 選項) 頁面中,透過指定鍵/值對來新增標籤。在此逐步教學中,我們建立名為 Stage (階段) 的標籤,其值為 Test (測試)。您套用至 StackSets 的標籤會套用至堆疊建立的所有資源。如需如何在 中使用標籤的詳細資訊 AWS,請參閱AWS 帳單與成本管理 《 使用者指南》中的使用成本分配標籤組織和追蹤 AWS 成本

  13. 對於 Execution configuration (執行組態),選擇 Active (作用中),以便 StackSets 會同時執行無衝突的操作,並將衝突操作排入佇列。衝突操作完成後,StackSets 會依請求順序啟動排入佇列的操作。

    注意

    當操作正在執行或排入佇列時,StackSets 會將所有傳入操作排入佇列,即使它們沒有衝突。您無法在此期間變更執行設定。

  14. 如果您的範本包含 IAM 資源,對於功能,請選擇我確認此範本可能會建立 IAM 資源,以指定您想要在範本中使用 IAM 資源。如需詳細資訊,請參閱確認 CloudFormation 範本中的 IAM 資源

  15. 選擇下一步

  16. 設定部署選項頁面上,針對將堆疊新增至堆疊集,選擇部署新的堆疊

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

  18. 針對 Specify regions (指定區域),選擇美國東部 (維吉尼亞北部) 區域。針對美國西部 (奧勒岡) 區域重複上述步驟。選取 美國西部 (奧勒岡) 區域 旁邊的向上箭頭,將它上移成清單中的第一個項目。Specify regions (指定區域) 下的區域順序決定其部署順序。

    根據預設,只要區域的部署失敗不超過指定的容錯能力,CloudFormation 就會在第一個區域內的指定帳戶中部署堆疊,然後移至下一個帳戶,以此類推。

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

    • 對於 Maximum concurrent accounts (同時使用的帳戶上限),保留 Number (數值) 和 1 的預設值。

      這表示 CloudFormation 一次只能在一個帳戶中部署您的堆疊。

    • 針對 Failure tolerance (容錯能力),保留預設值 Number (數字)0

      這表示在 CloudFormation 停止目前區域中的部署,並取消剩餘區域中的部署之前,最多一個堆疊部署可能會在其中一個指定區域中失敗。

    • 對於區域並行,請選擇序列 (預設) 或平行,以判斷指定區域的 StackSets 部署順序。

    • 對於並行模式,視需要更新並行模式,或跳至下一個步驟。

  20. 選擇下一步

  21. Review (檢閱) 頁面上,檢視您的選擇。若要進行變更,請在相關區段上選擇編輯

  22. 當您準備好建立堆疊集時,請選擇 Submit (提交)。

    CloudFormation 會開始建立您的堆疊集。在您選擇 Submit (提交) 時開啟的 stack set details (堆疊設定詳細資訊) 頁面中,查看堆疊集中的堆疊建立進度和狀態。

建立具有自我管理許可的堆疊集 (AWS CLI)

當您使用 AWS CLI 命令建立 StackSets 時,您會執行兩個不同的命令:create-stack-set上傳範本並建立堆疊集容器,以及在堆疊集內create-stack-instances建立堆疊。

  1. 首先執行下列create-stack-set命令,上傳 啟用的範例範本 AWS Config。對於 --template-url選項,請提供範本所在的 Amazon S3 儲存貯體 URL。在此範例中,我們使用 my-awsconfig-stackset做為 --stack-set-name選項的值。包含 --parameters選項,以使用我們包含的EnableAWSConfig.yml範本。如果您使用自己的範本,請根據您的需求調整 命令。

    aws cloudformation create-stack-set \ --stack-set-name my-awsconfig-stackset \ --template-url https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml \ --parameters ParameterKey=ServiceLinkedRoleRegion,ParameterValue="us-west-2" ParameterKey=RecordingFrequency,ParameterValue="DAILY"
  2. 在您的 create-stack-set 命令完成後,請執行 list-stack-sets 命令以查看已建立的堆疊集。您應該會在結果中看到新堆疊集。

    aws cloudformation list-stack-sets
  3. 使用 create-stack-instances命令將堆疊新增至您的堆疊集。在此演練中,我們使用 us-west-2us-east-1作為 --regions選項的值。

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

    aws cloudformation create-stack-instances \ --stack-set-name my-awsconfig-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. 使用operation-idcreate-stack-instances輸出中傳回的 ,使用以下describe-stack-set-operation命令來確認您的堆疊已成功建立。

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