

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Referenz der Syntax des Hook-Konfigurationsschemas
<a name="hook-configuration-schema"></a>

In diesem Abschnitt wird die Schemasyntax beschrieben, die zur Konfiguration von Hooks verwendet wird. CloudFormation verwendet dieses Konfigurationsschema zur Laufzeit, wenn ein Hook in einem AWS-Konto aufgerufen wird. 

Damit Ihr Hook die Konfiguration Ihres Stacks proaktiv überprüfen kann, setzen Sie den Wert `HookInvocationStatus` auf, `ENABLED` nachdem der Hook in Ihrem Konto registriert und aktiviert wurde. 

**Topics**
+ [Eigenschaften des Hook-Konfigurationsschemas](#hook-configuration-schema-properties)
+ [Beispiele für die Hook-Konfiguration](#hook-configuration-examples)
+ [CloudFormation Hooks Filter auf Stapelebene](hooks-stack-level-filtering.md)
+ [CloudFormation Hooks zielen auf Filter ab](hooks-target-filtering.md)
+ [Verwendung von Platzhaltern mit Hook-Zielnamen](wildcard-hook-targets.md)

**Anmerkung**  
Die maximale Datenmenge, die die Konfiguration eines Hooks speichern kann, beträgt 300 KB. Dies gilt zusätzlich zu allen Einschränkungen, die dem `Configuration` Anforderungsparameter des [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)Vorgangs auferlegt werden.

## Eigenschaften des Hook-Konfigurationsschemas
<a name="hook-configuration-schema-properties"></a>

Das folgende Schema ist die Struktur für ein Hook-Konfigurationsschema.

```
{
    "CloudFormationConfiguration": {
        "HookConfiguration": {
            "HookInvocationStatus": "ENABLED",
            "TargetOperations": ["STACK"],
            "FailureMode": "FAIL",
            "EncryptionConfiguration": {
                "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
            },
            "Properties": {
                ...
            }
        }
    }
}
```

`HookConfiguration`  <a name="hooks-hook-configuration"></a>
Die Hook-Konfiguration unterstützt die Aktivierung oder Deaktivierung von Hooks auf Stack-Ebene, Fehlermodi und Hook-Eigenschaftswerte.  
Die Hook-Konfiguration unterstützt die folgenden Eigenschaften.    
`HookInvocationStatus`  <a name="hooks-hookinvocationstatus"></a>
Gibt an, ob der Hook `ENABLED` oder ist`DISABLED`.  
*Gültige Werte*: `ENABLED` \$1 `DISABLED`  
`TargetOperations`  <a name="hooks-targetoperations"></a>
Gibt die Liste der Operationen an, gegen die der Hook ausgeführt wird. Weitere Informationen finden Sie unter [Hook-Ziele](hooks-concepts.md#hook-terms-hook-target).  
*Zulässige Werte*: `STACK` \$1 `RESOURCE` \$1 `CHANGE_SET` \$1 `CLOUD_CONTROL`   
`TargetStacks`  <a name="hooks-targetstacks"></a>
*Aus Gründen der Abwärtskompatibilität verfügbar. Verwenden Sie `HookInvocationStatus` stattdessen.*  
Wenn der Modus auf eingestellt ist`ALL`, gilt der Hook für alle Stacks in Ihrem Konto während eines`CREATE`,`UPDATE`, oder `DELETE` Ressourcenvorgangs.  
Wenn der Modus auf eingestellt ist`NONE`, gilt der Hook nicht für Stacks in deinem Konto.  
*Gültige Werte*: `ALL` \$1 `NONE`  
`FailureMode`  <a name="hooks-failuremode"></a>
In diesem Feld wird dem Dienst mitgeteilt, wie Hook-Fehler behandelt werden sollen.  
+ Wenn der Modus auf `FAIL` eingestellt ist und der Hook fehlschlägt, beendet die Fehlkonfiguration die Bereitstellung von Ressourcen und führt ein Rollback des Stacks durch.
+ Wenn der Modus auf eingestellt ist `WARN` und der Hook fehlschlägt, ermöglicht die Warnkonfiguration die Fortsetzung der Bereitstellung mit einer Warnmeldung.
*Gültige Werte*: `FAIL` \$1 `WARN`  
`EncryptionConfiguration`  <a name="hooks-encryptionconfiguration"></a>
Gibt Verschlüsselungseinstellungen für Hook-Annotationsdaten an.    
`KmsKeyId`  
Der Alias, Alias-ARN, die Schlüssel-ID oder der Schlüssel-ARN des symmetrischen AWS KMS Verschlüsselungsschlüssels, der zur Verschlüsselung von Hook-Annotationsdaten verwendet wird. Weitere Informationen finden Sie [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters)in den Dokumenten. AWS KMS   
Bevor Sie Hooks mit vom Kunden verwalteten AWS KMS Schlüsseln erstellen können, muss Ihr Benutzer oder Ihre Rolle über AWS KMS Berechtigungen für `DescribeKey` und verfügen`GenerateDataKey`. Weitere Informationen finden Sie unter [AWS KMS wichtige Richtlinien und Berechtigungen für die Verschlüsselung von CloudFormation Hooks-Ergebnissen im Ruhezustand](hooks-kms-key-policy.md).   
`Properties`  <a name="hooks-properties"></a>
Gibt die Eigenschaften der Hook-Laufzeit an. Diese sollten der Form der Eigenschaften entsprechen, die vom Hooks-Schema unterstützt werden.

## Beispiele für die Hook-Konfiguration
<a name="hook-configuration-examples"></a>

Beispiele für die Konfiguration von Hooks aus finden Sie in den folgenden Abschnitten: AWS CLI
+ [Aktiviere einen proaktiven, steuerungsbasierten Hook ()AWS CLI](proactive-controls-hooks-activate-hooks.md#proactive-controls-hooks-activate-hooks-cli)
+ [Aktiviere einen Guard Hook (AWS CLI)](guard-hooks-activate-hooks.md#guard-hooks-activate-hooks-cli)
+ [Aktiviere einen Lambda-Hook ()AWS CLI](lambda-hooks-activate-hooks.md#lambda-hooks-activate-hooks-cli)

# CloudFormation Hooks Filter auf Stapelebene
<a name="hooks-stack-level-filtering"></a>

Sie können Ihren CloudFormation Hooks Filter auf Stack-Ebene hinzufügen, um bestimmte Stacks auf der Grundlage von Stacknamen und Rollen als Ziel festzulegen. Dies ist nützlich in Fällen, in denen Sie mehrere Stacks mit denselben Ressourcentypen haben, der Hook jedoch für bestimmte Stacks vorgesehen ist.

Dieser Abschnitt erklärt, wie diese Filter funktionieren, und enthält Beispiele, denen Sie folgen können.

Die Grundstruktur einer Hook-Konfiguration ohne Filterung auf Stack-Ebene sieht wie folgt aus:

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "TargetFilters": {
        "Actions": [
          "CREATE",
          "UPDATE",
          "DELETE"
        ]
      }
    }
  }
}
```

Weitere Informationen zur `HookConfiguration` Syntax finden Sie unter[Referenz der Syntax des Hook-Konfigurationsschemas](hook-configuration-schema.md).

Um Filter auf Stapelebene zu verwenden, fügen Sie einen `StackFilters` Schlüssel unter hinzu`HookConfiguration`. 

Der `StackFilters` Schlüssel hat ein erforderliches Mitglied und zwei optionale Mitglieder.
+ `FilteringCriteria` (Erforderlich)
+ `StackNames` (optional)
+ `StackRoles` (optional)

Die `StackRoles` Eigenschaften `StackNames` oder sind optional. Sie müssen jedoch mindestens eine der Eigenschaften angeben.

Wenn Sie einen Hook erstellen, der auf [Cloud Control-API-Operationen](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) abzielt, werden alle Filter auf Stack-Ebene ignoriert.

## `FilteringCriteria`
<a name="stack-level-filtering-components-filteringcriteria"></a>

`FilteringCriteria`ist ein erforderlicher Parameter, der das Filterverhalten angibt. Er kann entweder auf `ALL` oder gesetzt werden`ANY`.
+ `ALL`ruft den Hook auf, wenn alle Filter übereinstimmen.
+ `ANY`ruft den Hook auf, wenn ein Filter zutrifft.

## `StackNames`
<a name="stack-level-filtering-components-stacknames"></a>

Verwenden Sie die folgende JSON-Struktur, um einen oder mehrere Stacknamen als Filter in Ihrer Hooks-Konfiguration anzugeben:

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

Sie müssen eine der folgenden Eigenschaften angeben:
+ `Include`: Liste der hinzuzufügenden Stack-Namen. Nur die in dieser Liste angegebenen Stacks rufen den Hook auf.
  + Typ: Zeichenfolgen-Array
  + Max. Anzahl Artikel: 50
  + Mindestanzahl Artikel: 1
+ `Exclude`: Liste der auszuschließenden Stack-Namen. Alle Stacks außer den hier aufgeführten rufen den Hook auf.
  + Typ: Zeichenfolgen-Array
  + Max. Anzahl Artikel: 50
  + Mindestanzahl Artikel: 1

Jeder Stackname in den `Exclude` Arrays `Include` und muss die folgenden Muster- und Längenanforderungen erfüllen:
+ Pattern: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Max. Länge: 128 

`StackNames`unterstützt konkrete Stapelnamen und vollständigen Platzhalterabgleich. Beispiele für die Verwendung von Platzhaltern finden Sie unter. [Verwendung von Platzhaltern mit Hook-Zielnamen](wildcard-hook-targets.md)

## `StackRoles`
<a name="stack-level-filtering-components-StackRoles"></a>

Verwenden Sie die folgende JSON-Struktur, um eine oder mehrere [IAM-Rollen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) als Filter in Ihrer Hook-Konfiguration anzugeben:

```
"StackRoles": {
  "Include": [
    "string"
  ],
  "Exclude": [
    "string"
  ]
}
```

Sie müssen eine der folgenden Eigenschaften angeben:
+ `Include`: Liste der IAM-Rollen für ARNs die Zielstapel, die diesen Rollen zugeordnet sind. Nur Stack-Operationen, die von diesen Rollen initiiert wurden, rufen den Hook auf.
  + Typ: Zeichenfolgen-Array
  + Max. Anzahl Artikel: 50
  + Mindestanzahl Artikel: 1
+ `Exclude`: Liste der IAM-Rollen ARNs für Stacks, die Sie ausschließen möchten. Der Hook wird für alle Stacks aufgerufen, mit Ausnahme der Stacks, die von den angegebenen Rollen initiiert wurden.
  + Typ: Zeichenfolgen-Array
  + Max. Anzahl Artikel: 50
  + Mindestanzahl Artikel: 1

Jede Stack-Rolle in den `Exclude` Arrays `Include` und muss die folgenden Muster- und Längenanforderungen erfüllen:
+ Pattern: `arn:.+:iam::[0-9]{12}:role/.+`
+ Max. Länge: 256

`StackRoles`erlaubt Platzhalterzeichen in den folgenden [ARN-Syntaxabschnitten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax):
+ `partition`
+ `account-id`
+ `resource-id`

Beispiele für die Verwendung von Platzhaltern in den Abschnitten zur ARN-Syntax finden Sie unter[Verwendung von Platzhaltern mit Hook-Zielnamen](wildcard-hook-targets.md).

## `Include` und `Exclude`
<a name="stack-level-filtering-components-include-and-exclude"></a>

Jeder Filter (`StackNames`und`StackRoles`) hat eine `Include` Liste und eine `Exclude` Liste. `StackNames`Als Beispiel: Der Hook wird nur für die Stacks aufgerufen, die in `Include` der Liste angegeben sind. Wenn Stacknamen nur in der `Exclude` Liste angegeben sind, wird der Hook nur für Stacks aufgerufen, die *nicht* in der Liste enthalten sind. `Exclude` Wenn `Include` sowohl als auch angegeben `Exclude` sind, zielt der Hook auf das ab, was in der `Include` Liste steht, und nicht auf das, was in der `Exclude` Liste steht.

Nehmen wir zum Beispiel an, Sie haben vier Stapel: A, B, C und D.
+ `"Include": ["A","B"]`Der Hook wird auf A und B aufgerufen.
+ `"Exclude": ["B"]`Der Hook wird auf A, C und D aufgerufen.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`Der Hook wird auf B und C aufgerufen.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`Der Hook wird auf keinem Stack aufgerufen.

## Beispiele für Filter auf Stapelebene
<a name="stack-level-filtering-examples"></a>

Dieser Abschnitt enthält Beispiele, denen Sie folgen können, um Filter auf Stack-Ebene für CloudFormation Hooks zu erstellen.

### Beispiel 1: Fügen Sie bestimmte Stacks hinzu
<a name="stack-level-filtering-example-1"></a>

Das folgende Beispiel spezifiziert eine `Include` Liste. Der Hook wird nur für Stacks mit dem Namen `stack-test-1` und `stack-test-2` aufgerufen. `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"
          ]
        }
      }
    }
  }
}
```

### Beispiel 2: Schließen Sie bestimmte Stacks aus
<a name="stack-level-filtering-example-2"></a>

Wenn die Stack-Namen stattdessen zur `Exclude` Liste hinzugefügt werden, wird der Hook für jeden Stack aufgerufen, der *nicht* benannt ist`stack-test-1`, `stack-test-2` oder. `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"
          ]
        }
      }
    }
  }
}
```

### Beispiel 3: Kombination von Include und Exclude
<a name="stack-level-filtering-example-3"></a>

Wenn `Include` keine `Exclude` Listen angegeben sind, wird der Hook nur für die Stapel in der Liste aufgerufen`Include`, die nicht in der `Exclude` Liste enthalten sind. Im folgenden Beispiel wird der Hook nur bei aufgerufen. `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"
          ]
        }
      }
    }
  }
}
```

### Beispiel 4: Kombinieren von Stacknamen und Rollen mit Kriterien `ALL`
<a name="stack-level-filtering-example-4"></a>

Der folgende Hook enthält drei Stack-Namen und eine Stack-Rolle. *Da der als angegeben `FilteringCriteria` ist`ALL`, wird der Hook nur für Stacks aufgerufen, die *sowohl* einen passenden Stacknamen als auch die passende Stack-Rolle haben.*

```
{
  "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"]
        }
      }
    }
  }
}
```

### Beispiel 5: Kombinieren von Stacknamen und Rollen mit Kriterien `ANY`
<a name="stack-level-filtering-example-5"></a>

Der folgende Hook enthält drei Stack-Namen und eine Stack-Rolle. Da der als angegeben `FilteringCriteria` ist`ANY`, wird der Hook für Stapel aufgerufen, die *entweder* einen passenden Stacknamen *oder* die passende Stack-Rolle haben.

```
{
  "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"]
        }
      }
    }
  }
}
```

# CloudFormation Hooks zielen auf Filter ab
<a name="hooks-target-filtering"></a>

Dieses Thema enthält Anleitungen zur Konfiguration von Zielfiltern für CloudFormation Hooks. Sie können Zielfilter verwenden, um detaillierter zu steuern, wann und auf welchen Ressourcen Ihr Hook aufgerufen wird. Du kannst Filter konfigurieren, die von der einfachen Ausrichtung auf Ressourcentypen bis hin zu komplexeren Kombinationen von Ressourcentypen, Aktionen und Aufrufpunkten reichen.

Um einen oder mehrere Stack-Namen als Filter in Ihrer Hooks-Konfiguration anzugeben, fügen Sie einen `TargetFilters` Schlüssel unter `HookConfiguration` hinzu.

`TargetFilters`unterstützt die folgenden Eigenschaften. 

`Actions`  <a name="hooks-targetfilters-actions"></a>
Ein Zeichenkettenarray, das die Aktionen angibt, auf die abgezielt werden soll. Ein Beispiel finden Sie unter [Beispiel 1: Einfacher Zielfilter](#target-filtering-example-1).  
*Zulässige Werte*: `CREATE` \$1 `UPDATE` \$1 `DELETE`  
Für `RESOURCE``STACK`, und `CLOUD_CONTROL` Ziele sind alle Zielaktionen anwendbar. Für `CHANGE_SET` Ziele ist nur die `CREATE` Aktion anwendbar. Weitere Informationen finden Sie unter [Hook-Ziele](hooks-concepts.md#hook-terms-hook-target).

`InvocationPoints`  <a name="hooks-targetfilters-invocationpoints"></a>
Ein Zeichenkettenarray, das angibt, dass der Aufruf auf das Ziel zeigt.  
*Gültige Werte*: `PRE_PROVISION`

`TargetNames`  <a name="hooks-targetfilters-targetnames"></a>
Ein Zeichenkettenarray, das die Namen der zu adressierenden Ressourcentypen angibt, `AWS::S3::Bucket` z. B.   
Zielnamen unterstützen konkrete Zielnamen und vollständigen Platzhalterabgleich. Weitere Informationen finden Sie unter [Verwendung von Platzhaltern mit Hook-Zielnamen](wildcard-hook-targets.md).  
*Muster*: `^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$`  
*Maximum*: `50`

`Targets`  <a name="hooks-targetfilters-targets"></a>
Ein Objekt-Array, das die Liste der Ziele angibt, die für die Zielfilterung verwendet werden sollen.  
Jedes Ziel im Ziel-Array hat die folgenden Eigenschaften.    
`Actions`  <a name="hooks-targetfilters-targets-actions"></a>
Die Aktion für das angegebene Ziel.  
*Zulässige Werte*: `CREATE` \$1 `UPDATE` \$1 `DELETE`  
`InvocationPoints`  <a name="hooks-targetfilters-targets-invocationpoints"></a>
Der Aufrufpunkt für das angegebene Ziel.  
*Gültige Werte*: `PRE_PROVISION`  
`TargetNames`  <a name="hooks-targetfilters-targets-targetnames"></a>
Der Name des Ressourcentyps, auf den abgezielt werden soll.

**Anmerkung**  
Sie können nicht gleichzeitig das `Targets` Objekt-Array und das `TargetNames` `Actions` ,- oder `InvocationPoints` -Array einschließen. Wenn Sie diese drei Elemente und verwenden möchten`Targets`, müssen Sie sie in das `Targets` Objekt-Array aufnehmen. Ein Beispiel finden Sie unter [Beispiel 2: Verwenden des `Targets` Objekt-Arrays](#target-filtering-example-2).

## Beispiele für Zielfilter
<a name="target-filtering-examples"></a>

Dieser Abschnitt enthält Beispiele, denen Sie folgen können, um Zielfilter für CloudFormation Hooks zu erstellen.

### Beispiel 1: Einfacher Zielfilter
<a name="target-filtering-example-1"></a>

Um einen grundlegenden Zielfilter zu erstellen, der sich auf bestimmte Ressourcentypen konzentriert, verwenden Sie das `TargetFilters` Objekt mit dem `Actions` Array. Die folgende Zielfilterkonfiguration ruft den Hook für alle `Create``Update`, und `Delete` Aktionen für die angegebenen Zieloperationen (in diesem Fall `RESOURCE` sowohl als auch für `STACK` Operationen) auf.

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "TargetFilters": {
        "Actions": [
           "Create",
           "Update",
           "Delete"
        ]
      }
    }
  }
}
```

### Beispiel 2: Verwenden des `Targets` Objekt-Arrays
<a name="target-filtering-example-2"></a>

Für erweiterte Filter können Sie das `Targets` Objekt-Array verwenden, um bestimmte Kombinationen aus Ziel, Aktion und Aufrufpunkt aufzulisten. Diese folgende Zielfilterkonfiguration ruft den Hook vor `CREATE` und `UPDATE` Aktionen für S3-Buckets und DynamoDB-Tabellen. Sie gilt sowohl für Operationen als auch. `STACK` `RESOURCE`

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "TargetFilters": {
        "Targets": [
          {
             "TargetName": "AWS::S3::Bucket",
             "Action": "CREATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::S3::Bucket",
             "Action": "UPDATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::DynamoDB::Table",
             "Action": "CREATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::DynamoDB::Table",
             "Action": "UPDATE",
             "InvocationPoint": "PRE_PROVISION"
          }
        ]               
      }
    }
  }
}
```

# Verwendung von Platzhaltern mit Hook-Zielnamen
<a name="wildcard-hook-targets"></a>

Sie können Platzhalter als Teil des Zielnamens verwenden. Sie können Platzhalterzeichen (`*`und`?`) in Ihren Hook-Zielnamen verwenden. Das Sternchen (`*`) steht für eine beliebige Kombination von Zeichen. Das Fragezeichen (`?`) steht für ein beliebiges einzelnes Zeichen. Sie können mehrere `*` `?` UND-Zeichen in einem Zielnamen verwenden.

**Example : Beispiele für Platzhalter für Zielnamen in Hook-Schemas**  
Das folgende Beispiel zielt auf alle Ressourcentypen ab, die von Amazon S3 unterstützt werden.  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::S3::*"
            ],
            "permissions": []
       }
    }
...
}
```
Das folgende Beispiel entspricht allen Ressourcentypen, deren Name Bucket "" enthält.  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::*::Bucket*"
            ],
            "permissions": []
       }
    }
...
}
```
Das `AWS::*::Bucket*` könnte zu einem der folgenden konkreten Ressourcentypen aufgelöst werden:  
+ `AWS::Lightsail::Bucket`
+ `AWS::S3::Bucket`
+ `AWS::S3::BucketPolicy`
+ `AWS::S3Outpost::Bucket`
+ `AWS::S3Outpost::BucketPolicy`

**Example : Beispiele für Platzhalter für Zielnamen in Hook-Konfigurationsschemas**  
Die folgende Beispielkonfiguration ruft den Hook für `CREATE` Operationen auf allen Amazon S3 S3-Ressourcentypen und für `UPDATE` Operationen auf allen benannten Tabellenressourcentypen wie `AWS::DynamobDB::Table` oder `AWS::Glue::Table` auf.  

```
{
   "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"
                    }
                 ]               
            }
        }
   }
}
```
Die folgende Beispielkonfiguration ruft die Hook for `CREATE` - und `UPDATE` -Operationen für alle Amazon S3 S3-Ressourcentypen sowie die `UPDATE` Operationen für `CREATE` und für alle benannten Tabellenressourcentypen wie `AWS::DynamobDB::Table` oder `AWS::Glue::Table` auf.  

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

**Example : `Include` spezifische Stapel**  
Das folgende Beispiel spezifiziert eine `Include` Liste. Der Hook wird nur aufgerufen, wenn der Stackname mit `stack-test-` beginnt.  

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

**Example : `Exclude` spezifische Stapel**  
Das folgende Beispiel spezifiziert eine `Exclude` Liste. Der Hook wird für jeden Stack aufgerufen, der nicht mit `stack-test-` beginnt.  

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

**Example : Kombinieren `Include` und `Exclude` für bestimmte Stapel**  
Wenn `Include` und `Exclude` -Listen angegeben sind, wird der Hook nur für Stapel aufgerufen, `Include` die in der Liste übereinstimmen und nicht in der Liste übereinstimmen. `Exclude` Im folgenden Beispiel wird der Hook für alle Stapel aufgerufen, die mit beginnen, mit `stack-test-` Ausnahme der Stapel mit dem Namen, und. `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-*"
          ],
          "Exclude": [
            "stack-test-1",
            "stack-test-2",
            "stack-test-3"
          ]
        }
      }
    }
  }
}
```

**Example : spezifische Rollen `Include`**  
Das folgende Beispiel spezifiziert eine `Include` Liste mit zwei Platzhaltermustern. Der erste Eintrag führt den Hook für jede Rolle aus, die mit `hook-role` in any `partition` und `account-id` beginnt. Der zweite Eintrag führt any für jede Rolle in einer beliebigen Rolle aus`partition`, die zu gehört `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` spezifische Rollen**  
Das folgende Beispiel spezifiziert eine `Exclude` Liste mit zwei Platzhaltermustern. Beim ersten Eintrag wird die Hook-Ausführung übersprungen, wenn eine Rolle `exempt` in ihrem Namen beliebig `partition` und beliebig `account-id` steht. Der zweite Eintrag überspringt die Hook-Ausführung, wenn eine Rolle, die zu `account-id` `123456789012` gehört, zusammen mit der Stack-Operation verwendet wird.  

```
{
  "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-Muster kombinieren `Include` und `Exclude` für bestimmte Rollen**  
Wenn `Include` und `Exclude` -Listen angegeben sind, wird der Hook nur für Stacks aufgerufen, die mit Rollen verwendet werden, die denen entsprechen`Include`, die nicht in der `Exclude` Liste übereinstimmen. Im folgenden Beispiel wird der Hook bei Stack-Operationen mit einem beliebigen`partition`, und `role` Namen aufgerufen`account-id`, es sei denn, die Rolle gehört zu. `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 : Kombiniert Stacknamen und Rollen mit allen Kriterien**  
Der folgende Hook enthält einen Platzhalter für Stacknamen und einen Platzhalter für Stack-Rollen. Da der als angegeben `FilteringCriteria` ist`ALL`, wird der Hook nur für Stacks aufgerufen, die sowohl das Matching als auch das Matching enthalten. `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 : Kombiniert `StackNames` und `StackRoles` mit beliebigen Kriterien**  
Der folgende Hook enthält einen Platzhalter für Stacknamen und einen Platzhalter für Stack-Rollen. Da der als angegeben `FilteringCriteria` ist`ANY`, wird der Hook für den Stack aufgerufen, der entweder Matching oder Matching `StackNames` hat. `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*"]
        }
      }
    }
  }
}
```