

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

# 使用萬用字元搭配勾點目標名稱
<a name="wildcard-hook-targets"></a>

您可以使用萬用字元做為目標名稱的一部分。您可以在 Hook 目標名稱中使用萬用字元 (`*` 和 `?`)。星號 (`*`) 代表字元的任意組合。問號 (`?`) 代表任何單一字元。您可以在目標名稱中使用多個 `*`和 `?` 字元。

**Example ：Hook 結構描述中目標名稱萬用字元的範例**  
下列範例以 Amazon S3 支援的所有資源類型為目標。  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::S3::*"
            ],
            "permissions": []
       }
    }
...
}
```
下列範例符合名稱中具有「Bucket」的所有資源類型。  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::*::Bucket*"
            ],
            "permissions": []
       }
    }
...
}
```
`AWS::*::Bucket*` 可能會解析為下列任何具體資源類型：  
+ `AWS::Lightsail::Bucket`
+ `AWS::S3::Bucket`
+ `AWS::S3::BucketPolicy`
+ `AWS::S3Outpost::Bucket`
+ `AWS::S3Outpost::BucketPolicy`

**Example ：Hook 組態結構描述中目標名稱萬用字元的範例**  
下列範例組態會叫用勾點，用於所有 Amazon S3 資源類型的`CREATE`操作，以及所有具名資料表資源類型的`UPDATE`操作，例如 `AWS::DynamobDB::Table`或 `AWS::Glue::Table`。  

```
{
   "CloudFormationConfiguration": {
        "HookConfiguration": {
            "TargetStacks": "ALL",
            "FailureMode": "FAIL",
            "Properties": {},
            "TargetFilters":{
                 "Targets": [
                    {
                        "TargetName": "AWS::S3::*",
                        "Action": "CREATE",
                        "InvocationPoint": "PRE_PROVISION"
                    },
                    {
                        "TargetName": "AWS::*::Table",
                        "Action": "UPDATE",
                        "InvocationPoint": "PRE_PROVISION"
                    }
                 ]               
            }
        }
   }
}
```
下列範例組態會叫用所有 Amazon S3 資源類型的 和 `CREATE``UPDATE`操作的勾點，以及所有具名資料表資源類型的 `CREATE`和 `UPDATE`操作，例如 `AWS::DynamobDB::Table`或 `AWS::Glue::Table`。  

```
{
   "CloudFormationConfiguration": {
        "HookConfiguration": {
            "TargetStacks": "ALL",
            "FailureMode": "FAIL",
            "Properties": {},
            "TargetFilters":{
                "TargetNames": [
                    "AWS::S3::*",
                    "AWS::*::Table"
                ],
                "Actions": [
                    "CREATE",
                    "UPDATE"
                ],
                "InvocationPoints": [
                    "PRE_PROVISION"
                ]
            }
        }
   }
}
```

**Example ：`Include`特定堆疊**  
下列範例指定 `Include`清單。只有在堆疊名稱以 開頭時，才會叫用勾點`stack-test-`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackNames": {
          "Include": [
            "stack-test-*"
          ]
        }
      }
    }
  }
}
```

**Example ：`Exclude`特定堆疊**  
下列範例指定 `Exclude`清單。在未以 開頭的任何堆疊上叫用勾點`stack-test-`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackNames": {
          "Exclude": [
            "stack-test-*"
          ]
        }
      }
    }
  }
}
```

**Example ：`Exclude`針對特定堆疊結合 `Include`和**  
如果指定 `Include`和 `Exclude` 清單，則只會在清單中不相符`Include`的 中符合的堆疊上叫用勾點`Exclude`。在下列範例中，除了名為 `stack-test-1`、 和 的堆疊`stack-test-`之外`stack-test-2`，在開頭為 的所有堆疊上叫用勾點`stack-test-3`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackNames": {
          "Include": [
            "stack-test-*"
          ],
          "Exclude": [
            "stack-test-1",
            "stack-test-2",
            "stack-test-3"
          ]
        }
      }
    }
  }
}
```

**Example ：`Include`特定角色**  
下列範例會指定具有兩種萬用字元模式的`Include`清單。第一個項目將針對任何 `partition`和 `hook-role`中開頭為 的任何角色執行勾點`account-id`。第二個項目將為`partition`屬於 的任何 `account-id` 中的任何角色執行 `123456789012`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackRoles": {
          "Include": [
            "arn:*:iam::*:role/hook-role*",
            "arn:*:iam::123456789012:role/*
          ]
        }
      }
    }
  }
}
```

**Example ：`Exclude`特定角色**  
下列範例會指定具有兩種萬用字元模式的`Exclude`清單。第一個項目會在角色`exempt`名稱中包含任何 `partition`和任何 時略過勾點執行`account-id`。當屬於 的角色與堆疊操作`account-id``123456789012`搭配使用時，第二個項目會略過勾點執行。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackRoles": {
          "Exclude": [
            "arn:*:iam::*:role/*exempt*",
            "arn:*:iam::123456789012:role/*
          ]
        }
      }
    }
  }
}
```

**Example ：結合特定角色 ARN 模式`Exclude`的 `Include`和**  
如果指定 `Include`和 `Exclude` 清單，則只會在與`Exclude`清單中不相符的角色相符`Include`的堆疊上使用勾點。在下列範例中，使用任何 `partition`、 `account-id`和 `role`名稱在堆疊操作上叫用勾點，除非角色屬於 `account-id` `123456789012`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackRoles": {
          "Include": [
            "arn:*:iam::*:role/*"
          ],
          "Exclude": [
            "arn:*:iam::123456789012:role/*"
          ]
        }
      }
    }
  }
}
```

**Example ：結合堆疊名稱和角色與所有條件**  
下列勾點包含一個堆疊名稱萬用字元和一個堆疊角色萬用字元。由於 `FilteringCriteria` 指定為 `ALL`，因此只會針對同時具有相符`StackName`和相符 的堆疊叫用勾點`StackRoles`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ALL",
        "StackNames": {
          "Include": [
            "stack-test-*"
          ]
        },
        "StackRoles": {
          "Include": ["arn:*:iam::*:role/hook-role*"]
        }
      }
    }
  }
}
```

**Example ：結合 `StackNames`和 `StackRoles`與任何條件**  
下列勾點包含一個堆疊名稱萬用字元和一個堆疊角色萬用字元。由於 `FilteringCriteria` 指定為 `ANY`，因此會針對具有相符`StackNames`或相符 的堆疊叫用 勾點`StackRoles`。  

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "StackFilters": {
        "FilteringCriteria": "ANY",
        "StackNames": {
          "Include": [
            "stack-test-*"
          ]
        },
        "StackRoles": {
            "Include": ["arn:*:iam::*:role/hook-role*"]
        }
      }
    }
  }
}
```