

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

# StackSets 概念
<a name="stacksets-concepts"></a>

下列術語和概念是您了解和使用 StackSets 的核心。

**Topics**
+ [管理員和目標帳戶](#stacksets-concepts-accts)
+ [CloudFormation StackSets](#stacksets-concepts-stackset)
+ [StackSets 的許可模型](#stacksets-concepts-stackset-permission-models)
+ [堆疊執行個體](#stacksets-concepts-stackinstances)
+ [StackSet 操作](#stacksets-concepts-ops)
+ [StackSet 操作選項](#stackset-ops-options)
+ [Tags (標籤)](#stackset-concepts-tags)
+ [StackSets 狀態碼](#stackset-status-codes)
+ [堆疊執行個體狀態碼](#stack-instance-status-codes)

## 管理員和目標帳戶
<a name="stacksets-concepts-accts"></a>

*管理員帳戶*是您 AWS 帳戶 建立 StackSets 的 。對於具有服務受管許可的 StackSets，管理員帳戶是組織的 管理帳戶 或委派管理員帳戶。您可以登入建立 StackSet 的 AWS 管理員帳戶來管理 StackSet。

「目標帳戶」**是您建立、更新或刪除 StackSet 中一或多個堆疊的帳戶。先要設定管理員和目標帳戶之間的信任關係，才可以使用 StackSet 在目標帳戶中建立堆疊。

## CloudFormation StackSets
<a name="stacksets-concepts-stackset"></a>

*StackSet* 可做為跨指定 AWS 帳戶 和 區域部署之多個堆疊的容器。每個堆疊都基於相同的 CloudFormation 範本，但您可以使用參數自訂個別堆疊。

定義 StackSet 之後，您可以在目標帳戶中建立、更新或刪除堆疊 AWS 區域 並指定堆疊。當您建立、更新或刪除堆疊時，您也可以指定操作偏好設定。例如，包括您要執行操作的區域順序、堆疊操作停止前的失敗容錯閾值，以及同時執行堆疊操作的帳戶數目。

StackSet 是區域性資源。如果您在其中建立 StackSet AWS 區域，您只能在檢視該區域時查看或變更它。

## StackSets 的許可模型
<a name="stacksets-concepts-stackset-permission-models"></a>

您可以使用*自我管理*許可或*服務受管*許可來建立 StackSets。

透過*自我管理*許可，您可以建立跨帳戶和區域部署時 StackSets 所需的 IAM 角色。需要這些角色，才能在您用來管理 StackSet 的帳戶與堆疊執行個體部署目的地帳戶之間建立信任關係。使用此許可模型，StackSets 可以部署到 AWS 帳戶 您擁有建立 IAM 角色許可的任何 。

透過*服務受管*許可，您可以將堆疊執行個體部署到 AWS Organizations所管理的帳戶。使用此許可模型時，您不必建立需要的 IAM 角色；StackSets 會代表您建立 IAM 角色。使用此模型時，您也可以自動部署到未來您新增至組織的帳戶。

AWS Organizations 與 CloudFormation 整合，可協助您在擴展和擴展 AWS 資源時集中管理和控管您的環境。
+ 管理帳戶 – 您用於建立組織的帳戶。如需詳細資訊，請參閱 [AWS Organizations的術語與概念](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)。
+ 委派管理員 – 相容 AWS 服務可以將組織中的成員帳戶註冊 AWS 為該服務中組織帳戶的管理員。如需詳細資訊，請參閱[AWS 可與 搭配使用的 服務 AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html)。

如需使用服務受管許可建立和管理 StackSets 的詳細資訊，請參閱下列主題：
+ [使用 啟用 StackSets 的受信任存取 AWS Organizations](stacksets-orgs-activate-trusted-access.md)
+ [註冊委派管理員會員帳戶](stacksets-orgs-delegated-admin.md)
+ [具有服務受管許可的 Create CloudFormation StackSets](stacksets-orgs-associate-stackset-with-org.md)

## 堆疊執行個體
<a name="stacksets-concepts-stackinstances"></a>

「堆疊執行個體」**是針對區域內某個目標帳戶中的堆疊所做的參考。堆疊執行個體可以在沒有堆疊的情況下存在。例如，如果因為某種原因而無法建立堆疊，則堆疊執行個體會顯示堆疊建立失敗的原因。堆疊執行個體僅與一個 StackSet 相關聯。

下圖顯示 StackSets、堆疊操作和堆疊之間的邏輯關係。當您更新 StackSet 時，所有帳戶和區域中*所有*相關聯的堆疊執行個體都會更新。

![StackSet 可以跨多個帳戶和區域建立、更新或刪除堆疊執行個體和堆疊。](http://docs.aws.amazon.com/zh_tw/AWSCloudFormation/latest/UserGuide/images/stack_sets_operations_stacks_sv.png)


## StackSet 操作
<a name="stacksets-concepts-ops"></a>

您可以對 StackSets 執行下列操作。

建立 StackSet  
建立新的 StackSet 包括指定您要用來建立堆疊的 CloudFormation 範本、指定您要在其中建立堆疊的目標帳戶，以及識別您要在目標帳戶中部署堆疊 AWS 區域 的 。StackSet 可確保在您選擇區域內的所有指定目標帳戶，相同的堆疊資源皆有一致的部署及相同的設定。

更新 StackSet  
當您更新 StackSet 時，是將變更推送到 StackSet 中的堆疊。您可使用下列其中一種方法來更新 StackSet。您的範本更新一律影響所有堆疊；您無法選擇性更新 StackSet 中某些堆疊的範本，讓其他範本不受影響。  
+ 變更範本中的現有設定或新增新的資源，例如更新特定服務的參數設定，或者新增新的 Amazon EC2 執行個體。
+ 使用不同的範本來取代範本。
+ 跨現有或其他的區域，在現有或其他目標帳戶中新增堆疊。

刪除堆疊  
當您刪除堆疊時，是從您指定區域內的指定目標帳戶，移除堆疊及其所有相關聯的資源。您可採用下列方式來刪除堆疊。  
+ 從某些目標帳戶刪除堆疊，同時讓其他目標帳戶中的其他堆疊繼續執行。
+ 從某些區域刪除堆疊，同時讓其他區域中的堆疊繼續執行。
+ 從您的 StackSet 刪除堆疊，但選擇**保留堆疊**選項，將其儲存，以繼續獨立執行您的 StackSet。隨後您可在 CloudFormation 中、StackSet 外，管理保留的堆疊。
+ 刪除您 StackSet 中所有堆疊，準備刪除您的整個 StackSet。

刪除 StackSet  
只有當 StackSet 中沒有任何堆疊執行個體時才可以刪除它。

## StackSet 操作選項
<a name="stackset-ops-options"></a>

本節所述的這些選項，有助於控制為成功執行 StackSet 操作所允許的故障時間和次數，並可防止您遺失堆疊資源。

同時帳戶上限  
可用於建立、更新和刪除工作流程的此項設定，能讓您指定目標帳戶一次可執行之操作的數目或百分比上限。較低的數目或百分比，表示一次在較少的目標帳戶中執行某項操作。操作依 **Deployment order** (部署順序) 方塊中指定的順序，一次在一個區域中執行。例如，如果您要將堆疊部署到兩個區域內的 10 個目標帳戶，則 **Maximum concurrent accounts** (同時帳戶上限) 設定為 **50** 和 **By percentage** (依百分比) 就會將堆疊部署到第一個區域中的前五個帳戶，接著是第一個區域中的後五個帳戶，然後才會移至下一個區域並開始部署到前五個目標帳戶。  
當您選擇 **By percentage (依百分比)** 時，如果指定的百分比不能代表您指定的帳戶整數，CloudFormation 會無條件捨去。例如，如果您要將堆疊部署到 10 個目標帳戶，而您將 **Maximum concurrent accounts (同時帳戶上限)** 設為 **25** 及 **By percentage (依百分比)**，CloudFormation 就會將同時部署 2.5 個堆疊 (這不可能) 無條件捨去為同時部署兩個堆疊。  
請注意，此設定可讓您指定操作的「上限」**。針對大型的部署，因為服務調節之故，在某些情況下實際同時執行的帳戶數目會略低。  
根據**並行模式**，**並行帳戶上限**取決於**容錯能力**的值。若您的**並行模式**設定為**嚴格容錯能力**，則**並行帳戶上限**最多可比**容錯能力**設定多一個。

並行模式  
此設定可用於建立、更新和刪除工作流程，讓您能夠選擇 StackSet 操作期間並行層級的運作方式。如需詳細資訊，請參閱[選擇 CloudFormation StackSets 的並行模式](concurrency-mode.md)。

容錯能力  
可用於建立、更新和刪除工作流程的此項設定，能讓您指定每區域可發生之堆疊操作故障的數目或百分比上限，超過此值，CloudFormation 就會自動停止操作。較低的數目或百分比表示此操作在較少的堆疊上執行，但您能夠更快開始對失敗的操作進行疑難排解。例如，如果您要更新三個區域內 10 個目標帳戶中的 10 個堆疊，將**容錯能力**設定為 **20** 和**依百分比**，表示操作若要繼續，一個區域最多只能有兩個堆疊更新失敗。如果同一區域中發生第三個堆疊失敗，CloudFormation 就會停止操作。如果第一個區域中的堆疊無法更新，則該區域會繼續更新操作，然後移至下一個區域。如果第二個區域有兩個堆疊無法更新，即達到 20% 的容錯能力；如果該區域發生第三個堆疊更新失敗，CloudFormation 就會停止更新操作，不會推進到後續的區域。  
當您選擇 **By percentage (依百分比)** 時，如果指定的百分比不能代表各個區域內您的堆疊整數，CloudFormation 會無條件捨去。例如，如果您要將堆疊部署到三個區域中的 10 個目標帳戶，而且您將**容錯能力**值設定為 **25** 和**依百分比**，CloudFormation 會將 2.5 個堆疊的容錯能力 (這不可能) 無條件捨去到每區域兩個堆疊的容錯能力。

保留堆疊  
可用於刪除堆疊工作流程的此項設定，讓堆疊及其資源即使從 StackSet 移除後，仍能繼續執行。當您保留堆疊時， CloudFormation 會將堆疊留存在個別帳戶和區域中，保持不變。堆疊與 StackSet 會取消關聯，但堆疊及其資源仍儲存。完成刪除堆疊操作後，您可以在建立堆疊的目標帳戶 (非管理員帳戶) 中使用 CloudFormation 管理保留的堆疊。

區域並行  
可用於建立、更新和刪除工作流程的此項設定，能讓您選擇如何將 StackSets 部署到區域內。  
*循序* – 只要一個區域的部署故障不超過指定的容錯能力，就可以依區域**部署順序**方塊中指定的，一次在一個區域中部署 StackSets 操作。順序部署是預設選項。  
*平行* – 只要一個區域的部署故障不超過指定的容錯能力，就可以平行在所有指定區域同步部署 StackSets 操作。

## Tags (標籤)
<a name="stackset-concepts-tags"></a>

您可以在 StackSet 的建立和更新操作期間，透過指定金鑰值對來新增標籤。標籤有助於排序和篩選 StackSet 資源，處理帳單和成本分配。如需如何在 中使用標籤的詳細資訊 AWS，請參閱*AWS 帳單與成本管理 《 使用者指南*》中的[使用成本分配標籤組織和追蹤 AWS 成本](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。在您指定索引鍵/值組之後，請選擇 **\+** 以儲存標籤。您可以選擇標籤右邊的紅色 **X** 來刪除您不再適用的標籤。

您套用至 StackSets 的標籤會套用至所有堆疊及您堆疊建立的資源。您還可以在 CloudFormation 中在僅限堆疊的層級新增標籤，但這些標籤可能不會出現在 StackSets 中。

雖然 StackSets 不會新增任何系統定義的標籤，但任何標籤的金鑰名稱都不應該以字串 `aws:` 開頭。

## StackSets 狀態碼
<a name="stackset-status-codes"></a>

CloudFormation StackSets 會產生 StackSet 操作的狀態碼。

下表說明 StackSet 操作狀態碼。

`RUNNING`  
操作正在進行中。

`SUCCEEDED`  
操作已完成，未超過操作的容錯能力。

`FAILED`  
操作無法完成的堆疊數目已超出使用者定義的容錯能力。在堆疊建立和更新操作期間，您設定的操作容錯能力適用於每個區域。如果某個區域內失敗的堆疊數目超過容錯能力，則區域中的操作狀態會變更為 `FAILED`。操作的整體狀態也會設為 `FAILED`，CloudFormation 會取消任何剩餘區域的操作。

`QUEUED`  
[`Service-managed permissions`] 對於需要一系列操作的自動部署，操作會進入佇列中等待執行。例如：  
+ 將帳戶從一個組織單位 (OU) `OU1` 移至另一個組織單位 `OU2` 會觸發自動部署。StackSets 會執行刪除操作，以從目標區域中的目標 `OU1` 帳戶刪除堆疊執行個體，並將建立操作排入佇列，以將堆疊執行個體新增至目標區域中的目標 `OU2` 帳戶。
+ 將帳戶 `AccountA` 新增至 OU 會觸發自動部署。StackSets 會執行建立操作，以將堆疊執行個體新增至目標區域中的 `AccountA`。如果您在此建立操作執行時將另一個帳戶 `AccountB` 新增至 OU，StackSets 會將第二個建立操作排入佇列。當第一個建立操作完成時，StackSets 會執行第二個建立操作，以將堆疊執行個體新增至目標區域中的 `AccountB`。

`STOPPING`  
應使用者請求，正在停止操作。

`STOPPED`  
應使用者請求，已停止操作。

## 堆疊執行個體狀態碼
<a name="stack-instance-status-codes"></a>

CloudFormation StackSets 會產生堆疊執行個體的狀態碼。

下表說明 StackSets 內堆疊執行個體的狀態碼。

`CURRENT`  
StackSet 的堆疊現為最新。

`OUTDATED`  
因為下列其中一個原因，StackSet 的堆疊不是最新。  
+ 相關聯堆疊上的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html) 或 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html) 操作失敗。
+ 屬於 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html) 或 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html) 操作的堆疊，在堆疊建立或更新前即已失敗或停止。

`INOPERABLE`  
[https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html) 操作失敗，且堆疊的狀態不穩定。後續的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html) 操作會排除此狀態的堆疊。您可能需要將 `RetainStacks` 設定為 `true` 來執行 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html) 操作，以刪除堆疊執行個體，然後手動刪除堆疊。

`CANCELLED`  
指定帳戶和區域中的操作已被取消。這可能是因為使用者已停止 StackSet 操作，或是因為 StackSet 操作超過了容錯能力。

`FAILED`  
指定帳戶和區域中的操作失敗。如果區域內足夠多帳戶中的 StackSet 操作失敗，則可能會超過 StackSet 操作整體的容錯能力。

`FAILED_IMPORT`  
在指定帳戶和區域匯入堆疊執行個體失敗，並使堆疊處於不穩定狀態。一旦修正造成失敗的問題，可重試匯入操作。如果區域內足夠多帳戶中的足夠 StackSet 操作失敗，則可能會超過 StackSet 操作整體的容錯能力。

`PENDING`  
指定帳戶和區域中的操作尚未開始。

`RUNNING`  
指定帳戶和區域中的操作目前正在進行中。

`SKIPPED_SUSPENDED_ACCOUNT`  
已跳過指定帳戶和區域中的操作，因為帳戶在操作時被暫停。

`SUCCEEDED`  
指定帳戶和區域中的操作已順利完成。