具有服務受管許可的 Create AWS CloudFormation StackSets - AWS CloudFormation

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

具有服務受管許可的 Create AWS CloudFormation StackSets

透過服務受管許可,您可以將堆疊部署到 AWS Organizations 特定區域中由 管理的帳戶。使用此模型,您不需要建立必要的 IAM 角色;CloudFormation 會代表您建立 IAM 角色。如需詳細資訊,請參閱啟用受信任的存取

考量事項

在建立具有服務受管許可的 StackSet 之前,請考慮下列事項:

  • 具有服務受管許可的 StackSets 會在管理帳戶中建立,包括委派管理員建立的 StackSets。

  • 您的 StackSet 可以鎖定整個組織 (包括所有帳戶) 或指定的組織單位 OUs)。如果您的 StackSet 以父 OU 為目標,它也會以任何子 OUs 為目標。當您的 StackSet 以特定 OUs 為目標時,這些 OUs 中的所有帳戶預設都會包含在內。不過,您可以使用帳戶篩選選項將特定帳戶設為目標。

  • 多個 StackSets 可以鎖定相同的組織或 OU。

  • 您的 StackSet 無法以組織以外的帳戶為目標。

  • 您的 StackSet 無法部署巢狀堆疊。

  • CloudFormation 不會將堆疊部署到組織的管理帳戶,即使管理帳戶位於您的組織或組織中的 OU 中。

  • 自動部署是在 StackSet 層級設定。您無法特別針對 OU、帳戶或區域來調整自動部署。

  • 您用來登入管理帳戶之 IAM 主體實體 (使用者、角色或群組) 的許可,決定您是否有權使用 StackSets 進行部署。關於授與許可部署至組織的 IAM 政策範例,請參閱根據區域和資源類型限制堆疊集操作

  • 委派管理員具有部署至組織中帳戶的完整許可。管理帳戶無法限制委派管理員部署至特定 OUs或執行特定 StackSet 操作的許可。

建立具有服務受管許可的 StackSet (主控台)

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

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

  3. 從導覽窗格選擇 StackSets

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

  5. Permissions (許可) 下,選擇 Service-managed permissions (服務管理許可)

    注意

    如果 AWS Organizations 停用 的受信任存取,則會顯示橫幅。建立或更新具有服務受管許可的 StackSet 需要信任的存取權。只有組織管理帳戶中的管理員,才具有 使用 啟用 StackSets 的受信任存取 AWS Organizations 的許可。

  6. 先決條件 - 準備範本下,選擇範本已就緒

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

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

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

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

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

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

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

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

  12. 選擇下一步以繼續,並啟用受信任存取 (如果尚未啟用)。

  13. 設定部署選項頁面的部署目標下,執行下列其中一項操作:

    • 若要部署到組織中的所有帳戶,請選擇部署到組織

    • 若要部署到特定 OUs 中的所有帳戶,請選擇部署到組織單位 OUs)。選擇 Add an OU (新增 OU),然後將目標 OU ID 貼到文字方塊中。針對每個新的目標 OU 重複上述步驟。

    如果您選擇部署到組織單位 (OUs),對於帳戶篩選類型,您可以選擇下列其中一個選項並提供帳戶號碼,將部署目標設定為特定個別帳戶。

    • (預設) – 將堆疊部署到指定 OUs 中的所有帳戶。

    • 交集 – 將堆疊部署到所選 OUs 中的特定個別帳戶。

    • 差異 – 將堆疊部署到所選 OUs 中的所有帳戶,但特定帳戶除外。

    • 聯集 – 將堆疊部署到指定的 OUs和其他個別帳戶。

  14. 自動部署下,選擇是否自動部署到未來新增至目標組織或 OUs 的帳戶。如需詳細資訊,請參閱在 中啟用或停用 StackSets 的自動部署 AWS Organizations

  15. 如果您已啟用自動部署,請在 Account removal behavior (帳戶移除行為) 下,選擇在從目標組織或 OU 移除帳戶時,是否保留或刪除堆疊資源。

    注意

    選取保留堆疊後,堆疊會從 StackSet 中移除,但堆疊及其相關資源會保留。資源會保持在目前的狀態,但不再是 StackSet 的一部分。

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

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

    • 針對最大並行帳戶,指定同時處理的帳戶數量。

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

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

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

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

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

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

  19. 檢閱頁面上,確認您的 StackSet 將部署到正確區域中的正確帳戶,然後選擇建立 StackSet

    StackSet details (StackSet 詳細資訊) 頁面隨即開啟。您可以在 StackSet 中檢視堆疊建立的進度和狀態。

建立具有服務受管許可的 StackSet (AWS CLI)

請依照本節中的步驟使用 AWS CLI 來:

  • 建立 StackSet 容器。

  • 部署堆疊執行個體。

注意

做為委派管理員時,您必須在 命令--call-as DELEGATED_ADMIN中包含 。

Deploy to your organization
建立 StackSet
  1. 使用 create-stack-set命令來建立新的 StackSet,名為 my-stackset。下列範例使用存放在 S3 儲存貯體中的範本,啟用自動部署,並在移除帳戶時保留堆疊。如需詳細資訊,請參閱在 中啟用或停用 StackSets 的自動部署 AWS Organizations

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
  2. 使用 list-stack-sets命令確認您的 StackSet 已建立。您的新 StackSet 會列在結果中。

    aws cloudformation list-stack-sets
    • 如果您在登入您的成員帳戶DELEGATED_ADMIN時將 --call-as選項設定為 , 會list-stack-sets傳回組織管理帳戶中具有服務管理許可的所有 StackSets。

    • 如果您在登入 SELF時將 --call-as選項設定為 AWS 帳戶, 會list-stack-sets傳回 中的所有自我管理 StackSets AWS 帳戶。

    • 如果您在登入組織的管理帳戶SELF時將 --call-as選項設定為 , 會list-stack-sets傳回組織管理帳戶中的所有 StackSets。

  3. 使用 create-stack-instances命令將堆疊新增至 StackSet。針對 --deployment-targets選項,指定要部署到組織中所有帳戶的組織根 ID。

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

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=r-a1b2c3d4e5 \ --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-stackset \ --operation-id operation_ID
Deploy to organizational units (OUs)
建立 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 \ --permission-model SERVICE_MANAGED \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. 使用 list-stack-sets命令確認您的 StackSet 已建立。您的新 StackSet 會列在結果中。

    aws cloudformation list-stack-sets
    • 如果您在登入您的成員帳戶DELEGATED_ADMIN時將 --call-as選項設定為 , 會list-stack-sets傳回組織管理帳戶中具有服務管理許可的所有 StackSets。

    • 如果您在登入 SELF時將 --call-as選項設定為 AWS 帳戶, 會list-stack-sets傳回 中的所有自我管理 StackSets AWS 帳戶。

    • 如果您在登入組織的管理帳戶SELF時將 --call-as選項設定為 , 會list-stack-sets傳回組織管理帳戶中的所有 StackSets。

  3. 使用 create-stack-instances命令將堆疊新增至 StackSet。針對 --deployment-targets選項,指定要部署的 OU IDs。

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

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5j1lwo,ou-rcuk-slr5lh0a \ --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-stackset \ --operation-id operation_ID
Deploy to specific accounts in OUs

您可以鎖定特定組織單位 (OUs並使用帳戶篩選來精確控制哪些帳戶接收堆疊部署。根據預設,如果未指定帳戶篩選,堆疊會部署到指定 OUs 中的所有帳戶。

在 中 AWS CLI,您可以使用 --deployment-targets選項指定帳戶篩選。如需詳細資訊,請參閱 DeploymentTargets

使用 create-stack-set命令建立 StackSet 容器之後,請使用下列其中一個範例,將堆疊部署至特定帳戶。

以 OU 中的特定帳戶為目標

下列範例只會將堆疊部署到 OU1A1 中的帳戶 A1 和 A2。

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=INTERSECTION \ --regions us-west-2 us-east-1
從 OU 排除帳戶

下列範例會將堆疊部署到 OU1 中的所有帳戶,帳戶 A1 和 A2 除外。

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=DIFFERENCE \ --regions us-west-2 us-east-1
包含其他帳戶

下列範例會將堆疊部署到 OU1 中的所有帳戶,以及來自另一個 OU 的額外帳戶 A4。

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A4,AccountFilterType=UNION \ --regions us-west-2 us-east-1