本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CloudFormation 勾點堆疊層級篩選條件
您可以將堆疊層級篩選條件新增至 CloudFormation Hooks,以根據堆疊名稱和角色將特定堆疊設為目標。當您有多個具有相同資源類型的堆疊,但勾點適用於特定堆疊時,這很有用。
本節說明這些篩選條件的運作方式,並提供您可以遵循的範例。
沒有堆疊層級篩選的勾點組態基本結構如下所示:
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "TargetFilters": { "Actions": [ "CREATE
", "UPDATE
", "DELETE
" ] } } } }
如需HookConfiguration
語法的詳細資訊,請參閱 勾點組態結構描述語法參考。
若要使用堆疊層級篩選條件,請在 下新增StackFilters
金鑰HookConfiguration
。
StackFilters
金鑰有一個必要成員,並且有兩個選用成員。
-
FilteringCriteria
(必要) -
StackNames
(選用) -
StackRoles
(選用)
StackNames
或 StackRoles
屬性是選用的。但是,您必須指定這些屬性中至少其中一種屬性。
如果您建立鎖定 Cloud Control API 操作的勾點,則會忽略所有堆疊層級篩選條件。
FilteringCriteria
FilteringCriteria
是指定篩選行為的必要參數。它可以設定為 ALL
或 ANY
。
-
ALL
如果所有篩選條件都相符, 會叫用勾點。 -
ANY
如果符合任何一個篩選條件, 會叫用勾點。
StackNames
若要在勾點組態中指定一或多個堆疊名稱做為篩選條件,請使用下列 JSON 結構:
"StackNames": { "Include": [ "string" ], "Exclude": [ "string" ] }
您必須指定下列其中一項:
-
Include
:要包含的堆疊名稱清單。只有此清單中指定的堆疊會叫用勾點。-
類型:字串陣列
-
項目上限:50
-
最小項目:1
-
-
Exclude
:要排除的堆疊名稱清單。除了此處列出的堆疊之外,所有堆疊都會叫用勾點。-
類型:字串陣列
-
項目上限:50
-
最小項目:1
-
Include
和 Exclude
陣列中的每個堆疊名稱必須遵循下列模式和長度要求:
-
模式:
^[a-zA-Z][-a-zA-Z0-9]*$
-
長度上限:128
StackNames
支援具體堆疊名稱和完整萬用字元比對。若要查看使用萬用字元的範例,請參閱 搭配 Hook 目標名稱使用萬用字元。
StackRoles
若要在勾點組態中將一或多個 IAM 角色指定為篩選條件,請使用下列 JSON 結構:
"StackRoles": { "Include": [ "string" ], "Exclude": [ "string" ] }
您必須指定下列其中一項:
-
Include
:IAM 角色 ARNs 的清單,指向與這些角色相關聯的目標堆疊。只有這些角色啟動的堆疊操作才會叫用勾點。-
類型:字串陣列
-
項目上限:50
-
最小項目:1
-
-
Exclude
:您要排除之堆疊的 IAM 角色 ARNs 清單。除了由指定角色啟動的堆疊之外,所有堆疊都會叫用勾點。-
類型:字串陣列
-
項目上限:50
-
最小項目:1
-
Include
和 Exclude
陣列中的每個堆疊角色都必須遵守下列模式和長度要求:
-
模式:
arn:.+:iam::[0-9]{12}:role/.+
-
長度上限:256
StackRoles
在下列 ARN 語法區段中允許萬用字元:
-
partition
-
account-id
-
resource-id
若要在 ARN 語法區段中查看使用萬用字元的範例,請參閱 搭配 Hook 目標名稱使用萬用字元。
Include
和 Exclude
每個篩選條件 (StackNames
和 StackRoles
) 都有一個Include
清單和Exclude
清單。使用 StackNames
做為範例,勾點只會在Include
清單中指定的堆疊上調用。如果只指定Exclude
清單中的堆疊名稱,則只會在不在Exclude
清單中的堆疊上叫用掛鉤。如果同時指定 Exclude
Include
和 ,則勾點目標為Include
清單中的內容,而不是Exclude
清單中的內容。
例如,假設您有四個堆疊:A、B、C 和 D。
-
"Include": ["A","B"]
在 A 和 B 上調用勾點。 -
"Exclude": ["B"]
在 A、C 和 D 上調用勾點。 -
"Include": ["A","B","C"], "Exclude": ["A","D"]
在 B 和 C 上調用勾點。 -
"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]
不會在任何堆疊上叫用勾點。
堆疊層級篩選條件的範例
本節提供您可以遵循的範例,以建立 AWS CloudFormation 勾點的堆疊層級篩選條件。
範例 1:包含特定堆疊
下列範例指定 Include
清單。勾點只會在名為 stack-test-1
、 stack-test-2
和 的堆疊上調用stack-test-3
。
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "StackFilters": { "FilteringCriteria":"ALL"
, "StackNames": { "Include": ["stack-test-1", "stack-test-2", "stack-test-3"
] } } } } }
範例 2:排除特定堆疊
如果堆疊名稱改為新增至Exclude
清單,則會在未命名為 stack-test-1
、 stack-test-2
或 的任何堆疊上叫用勾點stack-test-3
。
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "StackFilters": { "FilteringCriteria":"ALL"
, "StackNames": { "Exclude": ["stack-test-1", "stack-test-2", "stack-test-3"
] } } } } }
範例 3:合併包含和排除
如果未指定 Include
和 Exclude
清單,則只會在不在Exclude
清單中Include
的 堆疊上叫用勾點。在下列範例中,僅在 上叫用勾點stack-test-3
。
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "StackFilters": { "FilteringCriteria":"ALL"
, "StackNames": { "Include": ["stack-test-1", "stack-test-2", "stack-test-3"
], "Exclude": ["stack-test-1", "stack-test-2"
] } } } } }
範例 4:結合堆疊名稱和角色與ALL
條件
下列勾點包含三個堆疊名稱,以及一個堆疊角色。由於 FilteringCriteria
指定為 ALL
,因此只會針對同時具有相符堆疊名稱和相符堆疊角色的堆疊叫用勾點。
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "StackFilters": { "FilteringCriteria":"ALL"
, "StackNames": { "Include": ["stack-test-1", "stack-test-2", "stack-test-3"
] }, "StackRoles": { "Include": ["arn:aws:iam::123456789012:role/hook-role"
] } } } } }
範例 5:結合堆疊名稱和角色與ANY
條件
下列勾點包含三個堆疊名稱,以及一個堆疊角色。由於 FilteringCriteria
指定為 ANY
,所以針對具有相符堆疊名稱或相符堆疊角色的堆疊,會叫用勾點。
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":
"ENABLED"
, "TargetOperations": ["STACK", "RESOURCE"
], "FailureMode":"WARN"
, "Properties":{}
, "StackFilters": { "FilteringCriteria":"ANY"
, "StackNames": { "Include": ["stack-test-1", "stack-test-2", "stack-test-3"
] }, "StackRoles": { "Include": ["arn:aws:iam::123456789012:role/hook-role"
] } } } } }