本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 管理帳戶和區域的堆疊 StackSets
AWS CloudFormation StackSets 可讓您在多個帳戶之間建立、更新或刪除堆疊, AWS 區域 並使用單一操作來擴展堆疊的功能。使用管理員帳戶,您可以定義和管理 CloudFormation 範本,並使用範本作為跨指定將堆疊佈建至所選目標帳戶的基礎 AWS 區域。
本節可協助您開始使用 StackSets,並回答有關如何使用堆疊集建立、更新和刪除的常見問題。
主題
StackSets 概念
使用 時 StackSets,您會使用堆疊集、堆疊執行個體和堆疊。
管理員和目標帳戶
管理員帳戶是您建立堆疊集 AWS 帳戶 的 。對於具有服務受管許可的堆疊集,管理員帳戶是組織的 管理帳戶 或委派管理員帳戶。您可以登入建立堆疊集的 AWS 管理員帳戶來管理堆疊集。
「目標帳戶」是您建立、更新或刪除堆疊集中一或多個堆疊的帳戶。先要設定管理員和目標帳戶之間的信任關係,才可以使用堆疊集在目標帳戶中建立堆疊。
AWS CloudFormation StackSets
堆疊集可讓您使用單一 CloudFormation 範本在 AWS 帳戶 跨區域建立堆疊。堆疊集的 CloudFormation 範本會定義每個堆疊中的所有資源。當您建立堆疊集時,指定要使用的範本,以及範本要求的任何參數和功能。
定義堆疊集後,您可以在目標帳戶中建立、更新或刪除堆疊 AWS 區域 ,並指定堆疊。當您建立、更新或刪除堆疊時,您也可以指定操作偏好設定。例如,包括您要執行操作的區域順序、堆疊操作停止前的失敗容錯閾值,以及同時執行堆疊操作的帳戶數目。
堆疊集是區域性資源。如果您建立堆疊集 AWS 區域,則只能在檢視該區域時看到或變更堆疊集。
堆疊集的許可模型
您可以使用自我管理許可或服務受管許可來建立堆疊集。
使用自我管理許可,您可以建立 所需的IAM角色 StackSets ,以在帳戶和區域之間部署 。需要這些角色,才能在您用來管理堆疊集的帳戶與堆疊執行個體部署目的地帳戶之間建立信任關係。使用此許可模型, StackSets 可以部署到 AWS 帳戶 您擁有建立IAM角色許可的任何 。
透過服務受管許可,您可以將堆疊執行個體部署到 AWS Organizations所管理的帳戶。使用此許可模型,您不需要建立必要的IAM角色;代表您 StackSets 建立IAM角色。使用此模型時,您也可以自動部署到未來您新增至組織的帳戶。
AWS Organizations 與 整合, CloudFormation 可協助您在擴展和擴展 AWS 資源時集中管理和管理環境。
-
管理帳戶 – 您用於建立組織的帳戶。如需詳細資訊,請參閱 的術語和概念 AWS Organizations。
-
委派管理員 – 相容 AWS 服務可以將組織中的成員帳戶註冊 AWS 為該服務中組織帳戶的管理員。如需詳細資訊,請參閱AWS 可與 搭配使用的服務 AWS Organizations。
如需使用服務受管許可建立和管理堆疊集的詳細資訊,請參閱下列主題:
堆疊執行個體
「堆疊執行個體」是針對區域內某個目標帳戶中的堆疊所做的參考。堆疊執行個體可以在沒有堆疊的情況下存在。例如,如果因為某種原因而無法建立堆疊,則堆疊執行個體會顯示堆疊建立失敗的原因。堆疊執行個體僅與一個堆疊集相關聯。
下圖顯示堆疊集、堆疊操作和堆疊之間的邏輯關係。當您更新堆疊集時,所有帳戶和區域中所有相關聯的堆疊執行個體都會更新。
堆疊集操作
您可以對堆疊集執行下列操作。
- 建立堆疊集。
-
建立新的堆疊集包括指定您要用來建立堆疊的 CloudFormation 範本、指定您要建立堆疊的目標帳戶,以及識別您要在目標帳戶中部署堆疊 AWS 區域 的 。堆疊集可確保在您選擇區域內的所有指定目標帳戶,相同的堆疊資源皆有一致的部署及相同的設定。
- 更新堆疊集
-
當您更新堆疊集時,是將變更推送到堆疊集中的堆疊。您可使用下列其中一種方法來更新堆疊集。您的範本更新一律影響所有堆疊;您無法選擇性更新堆疊集中某些堆疊的範本,讓其他範本不受影響。
-
變更範本中的現有設定或新增資源,例如更新特定服務的參數設定,或新增新的 Amazon EC2執行個體。
-
使用不同的範本來取代範本。
-
跨現有或其他的區域,在現有或其他目標帳戶中新增堆疊。
-
- 刪除堆疊
-
當您刪除堆疊時,是從您指定區域內的指定目標帳戶,移除堆疊及其所有相關聯的資源。您可採用下列方式來刪除堆疊。
-
從某些目標帳戶刪除堆疊,同時讓其他目標帳戶中的其他堆疊繼續執行。
-
從某些區域刪除堆疊,同時讓其他區域中的堆疊繼續執行。
-
從您的堆疊集刪除堆疊,但選擇 Retain Stacks (保留堆疊) 選項,儲存它們以繼續獨立執行您的堆疊集。隨後您可在 AWS CloudFormation中、堆疊集外,管理保留的堆疊。
-
刪除您堆疊集中所有堆疊,準備刪除您的整個堆疊集。
-
- 刪除堆疊集
-
只有當堆疊集中沒有任何堆疊執行個體時才可以刪除它。
堆疊集操作選項
本節所述的這些選項,有助於控制為成功執行堆疊集操作所允許的故障時間和次數,並可防止您遺失堆疊資源。
- 同時帳戶上限
-
可用於建立、更新和刪除工作流程的此項設定,能讓您指定目標帳戶一次可執行之操作的數目或百分比上限。較低的數目或百分比,表示一次在較少的目標帳戶中執行某項操作。操作依 Deployment order (部署順序) 方塊中指定的順序,一次在一個區域中執行。例如,如果您要將堆疊部署到兩個區域內的 10 個目標帳戶,則 Maximum concurrent accounts (同時帳戶上限) 設定為 50 和 By percentage (依百分比) 就會將堆疊部署到第一個區域中的前五個帳戶,接著是第一個區域中的後五個帳戶,然後才會移至下一個區域並開始部署到前五個目標帳戶。
當您選擇按百分比時,如果指定的百分比不代表指定帳戶的整數, 會向下 CloudFormation 捨去。例如,如果您要將堆疊部署到 10 個目標帳戶,並將並行帳戶上限設定為 25,然後依百分比,從同時部署 2.5 堆疊 (這是不可能的) 到同時部署兩個堆疊 CloudFormation 。
請注意,此設定可讓您指定操作的「上限」。針對大型的部署,因為服務調節之故,在某些情況下實際同時執行的帳戶數目會略低。部署速度上限為每個堆疊集 100 個並行堆疊執行個體。
並行帳戶上限取決於容錯能力的值,視並行模式而定。如果您的並行模式設定為嚴格容錯能力,則並行帳戶上限最多可以比容錯能力設定多一個。
- 並行模式
-
此設定可用於建立、更新和刪除工作流程,讓您能夠選擇堆疊集操作期間並行層級的運作方式。如需詳細資訊,請參閱選擇 的並行模式 CloudFormation StackSets。
- 容錯能力
-
此設定可用於建立、更新和刪除工作流程,可讓您指定堆疊操作失敗的數目上限或百分比,每個區域超過此上限或百分比後會自動 CloudFormation 停止操作。較低的數目或百分比表示此操作在較少的堆疊上執行,但您能夠更快開始對失敗的操作進行疑難排解。例如,如果您要更新三個區域內 10 個目標帳戶中的 10 個堆疊,將容錯能力設定為 20 和依百分比,表示操作若要繼續,一個區域最多只能有兩個堆疊更新失敗。如果同一區域中發生第三個堆疊失敗, CloudFormation 就會停止操作。如果第一個區域中的堆疊無法更新,則該區域會繼續更新操作,然後移至下一個區域。如果兩個堆疊無法在第二個區域中更新,容錯能力會達到 20%;如果區域中的第三個堆疊失敗, 會 CloudFormation 停止更新操作,而且不會繼續前往後續區域。
當您選擇按百分比時,如果指定的百分比不代表每個區域中堆疊的整數, 會 CloudFormation 捨棄。例如,如果您要將堆疊部署到三個區域中的 10 個目標帳戶,而且將容錯能力設定為 25,然後依百分比,從容錯能力 2.5 個堆疊 CloudFormation (這是不可能的) 到每個區域的容錯能力。
- 保留堆疊
-
可用於刪除堆疊工作流程的此項設定,讓堆疊及其資源即使從堆疊集移除後,仍能繼續執行。當您保留堆疊時, AWS CloudFormation 會將堆疊留存在個別帳戶和區域中,保持不變。堆疊與堆疊集會取消關聯,但堆疊及其資源仍儲存。刪除堆疊操作完成後,您可以在建立堆疊的目標帳戶 (而非管理員帳戶) CloudFormation中管理保留的堆疊。
- 區域並行
-
此設定可用於建立、更新和刪除工作流程,可讓您選擇 StackSets 如何部署到 區域。
循序 – 只要區域的部署失敗不超過指定的容錯能力,依區域部署順序方塊指定的時間將 StackSets 操作部署到一個區域。順序部署是預設選項。
平行 – 只要區域的部署失敗不超過指定的容錯能力,即可將 StackSets 操作同時部署到所有指定的區域。
標籤
您可以在堆疊集的建立和更新操作期間,透過指定金鑰值對來新增標籤。標籤有助於排序和篩選堆疊集資源,處理帳單和成本分配。如需如何在 中使用標籤的詳細資訊 AWS,請參閱AWS Billing and Cost Management 《 使用者指南》中的使用成本分配標籤組織和追蹤 AWS 成本。在您指定索引鍵/值組之後,請選擇 + 以儲存標籤。您可以選擇標籤右邊的紅色 X 來刪除您不再適用的標籤。
您套用至堆疊集的標籤會套用至所有堆疊,以及堆疊建立的資源。您也可以在 中新增僅堆疊層級的標籤 CloudFormation,但這些標籤可能不會顯示 StackSets。
雖然 StackSets 不會新增任何系統定義的標籤,但您不應使用字串 來啟動任何標籤的金鑰名稱aws:
。
StackSets 狀態碼
AWS CloudFormation StackSets 會產生堆疊集操作的狀態碼。
下表說明堆疊集操作狀態碼。
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
-
應使用者請求,已停止操作。
堆疊執行個體狀態碼
AWS CloudFormation StackSets 會產生堆疊執行個體的狀態碼。
下表說明 內堆疊執行個體的狀態碼 StackSets。
CURRENT
-
堆疊集的堆疊現為最新。
OUTDATED
-
因為下列其中一個原因,堆疊集的堆疊不是最新。
-
A CreateStackSet 或 UpdateStackSet 相關聯堆疊上的 操作失敗。
-
堆疊是 CreateStackSet 或 UpdateStackSet 在建立或更新堆疊之前失敗或停止的操作。
-
INOPERABLE
-
A DeleteStackInstances 操作失敗,並使堆疊處於不穩定狀態。處於此狀態的堆疊會進一步排除 UpdateStackSet 操作。您可能需要執行 DeleteStackInstances 操作,並將
RetainStacks
設定為true
,以刪除堆疊執行個體,然後手動刪除堆疊。 CANCELLED
-
指定帳戶和區域中的操作已被取消。這可能是因為使用者已停止堆疊集操作,或是因為堆疊集操作超过了容錯能力。
FAILED
-
指定帳戶和區域中的操作失敗。如果區域內足夠多帳戶中的堆疊集操作失敗,則可能會超過堆疊集操作整體的容錯能力。
FAILED_IMPORT
-
指定帳戶和區域中的堆疊執行個體匯入失敗,並使堆疊處於不穩定狀態。修正造成失敗的問題後,即可重試匯入操作。如果區域內的足夠帳戶有足夠堆疊集操作失敗,則整體堆疊集操作的容錯能力可能會超過。
PENDING
-
指定帳戶和區域中的操作尚未開始。
RUNNING
-
指定帳戶和區域中的操作目前正在進行中。
SKIPPED_SUSPENDED_ACCOUNT
-
已跳過指定帳戶和區域中的操作,因為帳戶在操作時被暫停。
SUCCEEDED
-
指定帳戶和區域中的操作已順利完成。