AWS CloudFormation 勾點堆疊層級篩選條件 - AWS CloudFormation

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

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 (選用)

StackNamesStackRoles 屬性是選用的。但是,您必須指定這些屬性中至少其中一種屬性。

如果您建立鎖定 Cloud Control API 操作的勾點,則會忽略所有堆疊層級篩選條件。

FilteringCriteria

FilteringCriteria 是指定篩選行為的必要參數。它可以設定為 ALLANY

  • ALL 如果所有篩選條件都相符, 會叫用勾點。

  • ANY 如果符合任何一個篩選條件, 會叫用勾點。

StackNames

若要在勾點組態中指定一或多個堆疊名稱做為篩選條件,請使用下列 JSON 結構:

"StackNames": { "Include": [ "string" ], "Exclude": [ "string" ] }

您必須指定下列其中一項:

  • Include:要包含的堆疊名稱清單。只有此清單中指定的堆疊會叫用勾點。

    • 類型:字串陣列

    • 項目上限:50

    • 最小項目:1

  • Exclude:要排除的堆疊名稱清單。除了此處列出的堆疊之外,所有堆疊都會叫用勾點。

    • 類型:字串陣列

    • 項目上限:50

    • 最小項目:1

IncludeExclude陣列中的每個堆疊名稱必須遵循下列模式和長度要求:

  • 模式:^[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

IncludeExclude陣列中的每個堆疊角色都必須遵守下列模式和長度要求:

  • 模式:arn:.+:iam::[0-9]{12}:role/.+

  • 長度上限:256

StackRoles 在下列 ARN 語法區段中允許萬用字元:

  • partition

  • account-id

  • resource-id

若要在 ARN 語法區段中查看使用萬用字元的範例,請參閱 搭配 Hook 目標名稱使用萬用字元

IncludeExclude

每個篩選條件 (StackNamesStackRoles) 都有一個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-1stack-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-1stack-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:合併包含和排除

如果未指定 IncludeExclude清單,則只會在不在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"] } } } } }