

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Riferimento alla sintassi dello schema di configurazione dell’hook
<a name="hook-configuration-schema"></a>

Questa sezione descrive la sintassi dello schema utilizzata per configurare gli Hooks. CloudFormation utilizza questo schema di configurazione in fase di esecuzione quando richiama un Hook in un. Account AWS

Per consentire a Hook di ispezionare in modo proattivo la configurazione dello stack, imposta su `ENABLED` dopo che l'`HookInvocationStatus`Hook è stato registrato e attivato nel tuo account. 

**Topics**
+ [Proprietà dello schema di configurazione Hook](#hook-configuration-schema-properties)
+ [Esempi di configurazione Hook](#hook-configuration-examples)
+ [CloudFormation Filtri Hooks Stack Level](hooks-stack-level-filtering.md)
+ [CloudFormation Aggancia i filtri target](hooks-target-filtering.md)
+ [Usare i caratteri jolly con i nomi degli obiettivi di Hook](wildcard-hook-targets.md)

**Nota**  
La quantità massima di dati che la configurazione di un Hook può memorizzare è di 300 KB. Questo si aggiunge a tutti i vincoli imposti al parametro di funzionamento della `Configuration` [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)richiesta.

## Proprietà dello schema di configurazione Hook
<a name="hook-configuration-schema-properties"></a>

Lo schema seguente è la struttura di uno schema di configurazione Hook.

```
{
    "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>
La configurazione Hook supporta l'attivazione o la disattivazione degli Hook a livello di stack, le modalità di errore e i valori delle proprietà Hook.  
La configurazione Hook supporta le seguenti proprietà.    
`HookInvocationStatus`  <a name="hooks-hookinvocationstatus"></a>
Specifica se l'Hook è `ENABLED` o`DISABLED`.  
*Valori validi*: `ENABLED` \$1 `DISABLED`  
`TargetOperations`  <a name="hooks-targetoperations"></a>
Specifica l'elenco delle operazioni su cui viene eseguito l'Hook. Per ulteriori informazioni, consulta [Obiettivi Hook](hooks-concepts.md#hook-terms-hook-target).  
*Valori validi*: `STACK` \$1 `RESOURCE` \$1 `CHANGE_SET` \$1 `CLOUD_CONTROL`   
`TargetStacks`  <a name="hooks-targetstacks"></a>
*Disponibile per la compatibilità con le versioni precedenti. Usa `HookInvocationStatus` invece.*  
Se la modalità è impostata su`ALL`, l'Hook si applica a tutti gli stack dell'account durante un'operazione su `CREATE``UPDATE`, o su una `DELETE` risorsa.  
Se la modalità è impostata su`NONE`, l'Hook non si applicherà agli stack del tuo account.  
*Valori validi*: `ALL` \$1 `NONE`  
`FailureMode`  <a name="hooks-failuremode"></a>
Questo campo indica al servizio come trattare gli errori di Hook.  
+ Se la modalità è impostata su e l'Hook fallisce, la configurazione di errore interrompe il provisioning delle risorse e ripristina lo stack. `FAIL`
+ Se la modalità è impostata su `WARN` e l'Hook fallisce, la configurazione warn consente di continuare il provisioning con un messaggio di avviso.
*Valori validi*: `FAIL` \$1 `WARN`  
`EncryptionConfiguration`  <a name="hooks-encryptionconfiguration"></a>
Specifica le impostazioni di crittografia per i dati delle annotazioni Hook.    
`KmsKeyId`  
L'alias, l'alias ARN, l'ID della chiave o l'ARN della chiave di crittografia AWS KMS simmetrica utilizzata per crittografare i dati delle annotazioni Hook. Per ulteriori informazioni, consulta i documenti. [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) AWS KMS   
Prima di poter creare Hooks con AWS KMS chiavi gestite dal cliente, l'utente o il ruolo deve disporre AWS KMS delle autorizzazioni per e. `DescribeKey` `GenerateDataKey` Per ulteriori informazioni, consulta [AWS KMS policy chiave e autorizzazioni per la crittografia dei risultati di CloudFormation Hooks a riposo](hooks-kms-key-policy.md).   
`Properties`  <a name="hooks-properties"></a>
Specifica le proprietà di runtime di Hook. Queste devono corrispondere alla forma delle proprietà supportate dallo schema Hooks.

## Esempi di configurazione Hook
<a name="hook-configuration-examples"></a>

Per esempi di configurazione di Hooks da AWS CLI, consulta le seguenti sezioni:
+ [Attiva un Hook basato su un controllo proattivo ()AWS CLI](proactive-controls-hooks-activate-hooks.md#proactive-controls-hooks-activate-hooks-cli)
+ [Attiva un Guard Hook (AWS CLI)](guard-hooks-activate-hooks.md#guard-hooks-activate-hooks-cli)
+ [Attiva un Lambda Hook ()AWS CLI](lambda-hooks-activate-hooks.md#lambda-hooks-activate-hooks-cli)

# CloudFormation Filtri Hooks Stack Level
<a name="hooks-stack-level-filtering"></a>

Puoi aggiungere filtri a livello di stack ai tuoi CloudFormation Hooks per indirizzare pile specifiche in base ai nomi e ai ruoli degli stack. Ciò è utile nei casi in cui si dispone di più stack con gli stessi tipi di risorse, ma l'Hook è destinato a stack specifici.

Questa sezione spiega come funzionano questi filtri e fornisce esempi da seguire.

La struttura di base di una configurazione Hook senza filtraggio a livello di stack è la seguente:

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

Per ulteriori informazioni sulla `HookConfiguration` sintassi, vedere. [Riferimento alla sintassi dello schema di configurazione dell’hook](hook-configuration-schema.md)

Per utilizzare i filtri a livello di stack, aggiungi una `StackFilters` chiave sotto. `HookConfiguration` 

La `StackFilters` chiave ha un membro obbligatorio e due membri opzionali.
+ `FilteringCriteria`(obbligatorio)
+ `StackNames` (facoltativo)
+ `StackRoles` (facoltativo)

Le `StackRoles` proprietà `StackNames` or sono opzionali. Tuttavia, è necessario specificare almeno una di tali proprietà.

Se crei un Hook destinato alle operazioni dell'[API Cloud Control](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html), tutti i filtri a livello di stack verranno ignorati.

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

`FilteringCriteria`è un parametro obbligatorio che specifica il comportamento di filtraggio. Può essere impostato su o`ALL`. `ANY`
+ `ALL`richiama l'Hook se tutti i filtri corrispondono.
+ `ANY`richiama l'Hook se c'è un filtro corrispondente.

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

Per specificare uno o più nomi di stack come filtri nella configurazione di Hooks, utilizza la seguente struttura JSON:

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

È necessario specificare una delle seguenti opzioni:
+ `Include`: elenco dei nomi degli stack da includere. Solo gli stack specificati in questo elenco richiameranno l'Hook.
  + Tipo: array di stringhe
  + Numero massimo di elementi: 50
  + Numero minimo di articoli: 1
+ `Exclude`: Elenco dei nomi degli stack da escludere. Tutti gli stack tranne quelli elencati qui invocheranno l'Hook.
  + Tipo: array di stringhe
  + Numero massimo di oggetti: 50
  + Numero minimo di articoli: 1

Ogni nome di stack negli `Exclude` array `Include` and deve rispettare i seguenti requisiti di modello e lunghezza:
+ Modello: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Lunghezza massima: 128 

`StackNames`supporta nomi di stack concreti e la corrispondenza completa dei caratteri jolly. Per vedere esempi di utilizzo dei caratteri jolly, consulta. [Usare i caratteri jolly con i nomi degli obiettivi di Hook](wildcard-hook-targets.md)

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

Per specificare uno o più [ruoli IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) come filtri nella configurazione di Hook, utilizza la seguente struttura JSON:

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

È necessario specificare una delle seguenti opzioni:
+ `Include`: Elenco dei ruoli IAM ARNs a cui indirizzare gli stack associati a questi ruoli. Solo le operazioni di stack avviate da questi ruoli richiameranno l'Hook.
  + Tipo: array di stringhe
  + Numero massimo di articoli: 50
  + Numero minimo di articoli: 1
+ `Exclude`: Elenco dei ruoli IAM ARNs per gli stack che desideri escludere. L'Hook verrà richiamato su tutti gli stack ad eccezione di quelli avviati dai ruoli specificati.
  + Tipo: array di stringhe
  + Numero massimo di articoli: 50
  + Numero minimo di articoli: 1

Ogni ruolo dello stack negli `Exclude` array `Include` and deve rispettare i seguenti requisiti di modello e lunghezza:
+ Modello: `arn:.+:iam::[0-9]{12}:role/.+`
+ Lunghezza massima: 256

`StackRoles`consenti caratteri jolly nelle seguenti sezioni della [sintassi ARN:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax)
+ `partition`
+ `account-id`
+ `resource-id`

Per vedere esempi di utilizzo dei caratteri jolly nelle sezioni sulla sintassi ARN, vedere. [Usare i caratteri jolly con i nomi degli obiettivi di Hook](wildcard-hook-targets.md)

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

Ogni filtro (`StackNames`and`StackRoles`) ha una `Include` lista e una lista. `Exclude` `StackNames`Ad esempio, l'Hook viene richiamato solo sugli stack specificati nell'`Include`elenco. *Se i nomi degli stack sono specificati solo nell'`Exclude`elenco, l'hook viene richiamato solo sugli stack che non sono presenti nell'elenco.* `Exclude` Se `Exclude` vengono specificati entrambi `Include` e, l'Hook prende di mira ciò che è nell'`Include`elenco e non ciò che è nell'elenco. `Exclude`

Ad esempio, supponiamo di avere quattro pile: A, B, C e D.
+ `"Include": ["A","B"]`L'Hook viene invocato su A e B.
+ `"Exclude": ["B"]`L'Hook viene invocato su A, C e D.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`L'Hook viene invocato su B e C.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`L'Hook non viene invocato su nessuno stack.

## Esempi di filtri a livello di stack
<a name="stack-level-filtering-examples"></a>

Questa sezione fornisce esempi che puoi seguire per creare filtri a livello di stack per Hooks. CloudFormation 

### Esempio 1: Includi pile specifiche
<a name="stack-level-filtering-example-1"></a>

L'esempio seguente specifica un `Include` elenco. L'Hook viene richiamato solo sugli stack `stack-test-1` denominati, e. `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"
          ]
        }
      }
    }
  }
}
```

### Esempio 2: Escludi pile specifiche
<a name="stack-level-filtering-example-2"></a>

Se i nomi degli stack vengono invece aggiunti all'`Exclude`elenco, l'Hook viene richiamato su qualsiasi pila *senza* nome, oppure. `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"
          ]
        }
      }
    }
  }
}
```

### Esempio 3: Combinazione di inclusione ed esclusione
<a name="stack-level-filtering-example-3"></a>

Se `Include` gli `Exclude` elenchi non sono specificati, l'Hook viene invocato solo sugli stack `Include` che non sono presenti nell'`Exclude`elenco. Nell'esempio seguente, l'Hook viene invocato solo su. `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"
          ]
        }
      }
    }
  }
}
```

### Esempio 4: Combinazione di nomi e ruoli degli stack con criteri `ALL`
<a name="stack-level-filtering-example-4"></a>

Il seguente Hook include tre nomi di stack e un ruolo di stack. *Poiché `FilteringCriteria` è specificato come`ALL`, l'Hook viene richiamato solo per gli stack che hanno *sia* un nome di stack corrispondente che il ruolo dello stack corrispondente.*

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

### Esempio 5: combinazione di nomi e ruoli dello stack con criteri `ANY`
<a name="stack-level-filtering-example-5"></a>

Il seguente Hook include tre nomi di stack e un ruolo di stack. *Poiché `FilteringCriteria` è specificato come`ANY`, l'Hook viene richiamato per gli stack che hanno un nome di stack corrispondente *o* il ruolo dello stack corrispondente.*

```
{
  "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 Aggancia i filtri target
<a name="hooks-target-filtering"></a>

Questo argomento fornisce indicazioni sulla configurazione dei filtri di destinazione per CloudFormation gli Hooks. Puoi utilizzare i filtri di destinazione per un controllo più granulare su quando e su quali risorse viene richiamato il tuo Hook. Puoi configurare filtri che vanno dal semplice targeting per tipo di risorsa a combinazioni più complesse di tipi di risorse, azioni e punti di richiamo.

Per specificare uno o più nomi di stack come filtri nella configurazione di Hooks, aggiungi una chiave sotto. `TargetFilters` `HookConfiguration`

`TargetFilters`supporta le seguenti proprietà. 

`Actions`  <a name="hooks-targetfilters-actions"></a>
Un array di stringhe che specifica le azioni da intraprendere. Per vedere un esempio, consulta [Esempio 1: filtro target di base](#target-filtering-example-1).  
*Valori validi*: `CREATE` \$1 `UPDATE` \$1 `DELETE`  
Per`RESOURCE`, e `CLOUD_CONTROL` target`STACK`, sono applicabili tutte le azioni di destinazione. Per `CHANGE_SET` gli obiettivi, è applicabile solo l'`CREATE`azione. Per ulteriori informazioni, consulta [Obiettivi Hook](hooks-concepts.md#hook-terms-hook-target).

`InvocationPoints`  <a name="hooks-targetfilters-invocationpoints"></a>
Un array di stringhe che specifica i punti di invocazione da utilizzare come target.  
*Valori validi*: `PRE_PROVISION`

`TargetNames`  <a name="hooks-targetfilters-targetnames"></a>
Un array di stringhe che specifica i nomi dei tipi di risorse da utilizzare come target, ad esempio. `AWS::S3::Bucket`   
I nomi delle destinazioni supportano nomi di destinazione concreti e la corrispondenza completa con caratteri jolly. Per ulteriori informazioni, consulta [Usare i caratteri jolly con i nomi degli obiettivi di Hook](wildcard-hook-targets.md).  
*Pattern*: `^[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>
Un array di oggetti che specifica l'elenco di obiettivi da utilizzare per il filtraggio degli obiettivi.  
Ogni oggetto nell'array targets ha le seguenti proprietà.    
`Actions`  <a name="hooks-targetfilters-targets-actions"></a>
L'azione per l'obiettivo specificato.  
*Valori validi*: `CREATE` \$1 `UPDATE` \$1 `DELETE`  
`InvocationPoints`  <a name="hooks-targetfilters-targets-invocationpoints"></a>
Il punto di invocazione per il target specificato.  
*Valori validi*: `PRE_PROVISION`  
`TargetNames`  <a name="hooks-targetfilters-targets-targetnames"></a>
Il nome del tipo di risorsa da scegliere come target.

**Nota**  
Non è possibile includere contemporaneamente sia l'array di `Targets` oggetti che gli `InvocationPoints` array `TargetNames``Actions`, o. Se si desidera utilizzare questi tre elementi e`Targets`, è necessario includerli nell'array di `Targets` oggetti. Per vedere un esempio, consulta [Esempio 2: utilizzo dell'array di `Targets` oggetti](#target-filtering-example-2).

## Esempi di filtri target
<a name="target-filtering-examples"></a>

Questa sezione fornisce esempi che puoi seguire per creare filtri di destinazione per CloudFormation Hooks.

### Esempio 1: filtro target di base
<a name="target-filtering-example-1"></a>

Per creare un filtro di destinazione di base incentrato su tipi di risorse specifici, utilizzate l'`TargetFilters`oggetto con l'`Actions`array. La seguente configurazione del filtro di destinazione richiamerà l'Hook su tutte le `Create` operazioni di destinazione e sulle `Delete` azioni per le operazioni di destinazione specificate (in questo caso, entrambe `RESOURCE` le `STACK` operazioni). `Update`

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

### Esempio 2: utilizzo dell'array di `Targets` oggetti
<a name="target-filtering-example-2"></a>

Per filtri più avanzati, è possibile utilizzare l'array di `Targets` oggetti per elencare combinazioni specifiche di obiettivi, azioni e punti di invocazione. La seguente configurazione del filtro di destinazione richiamerà l'Hook prima `CREATE` e `UPDATE` le azioni sui bucket S3 e sulle tabelle DynamoDB. Si applica a entrambe le operazioni. `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"
          }
        ]               
      }
    }
  }
}
```

# Usare i caratteri jolly con i nomi degli obiettivi di Hook
<a name="wildcard-hook-targets"></a>

Puoi usare i caratteri jolly come parte del nome del bersaglio. Puoi usare caratteri jolly (`*`e`?`) nei nomi dei tuoi obiettivi Hook. L'asterisco (`*`) rappresenta qualsiasi combinazione di caratteri. Il punto interrogativo (`?`) rappresenta ogni singolo carattere. È possibile utilizzare più `?` caratteri `*` e in un nome di destinazione.

**Example : Esempi di caratteri jolly dei nomi di destinazione negli schemi Hook**  
L'esempio seguente riguarda tutti i tipi di risorse supportati da Amazon S3.  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::S3::*"
            ],
            "permissions": []
       }
    }
...
}
```
L'esempio seguente corrisponde a tutti i tipi di risorse che hanno Bucket "" nel nome.  

```
{
...
    "handlers": {
       "preCreate": {
            "targetNames": [
                "AWS::*::Bucket*"
            ],
            "permissions": []
       }
    }
...
}
```
`AWS::*::Bucket*`Potrebbe risolversi in uno dei seguenti tipi di risorse concrete:  
+ `AWS::Lightsail::Bucket`
+ `AWS::S3::Bucket`
+ `AWS::S3::BucketPolicy`
+ `AWS::S3Outpost::Bucket`
+ `AWS::S3Outpost::BucketPolicy`

**Example : Esempi di caratteri jolly dei nomi di destinazione negli schemi di configurazione di Hook**  
La seguente configurazione di esempio richiama l'Hook per `CREATE` le operazioni su tutti i tipi di risorse Amazon S3 e `UPDATE` per le operazioni su tutti i tipi di risorse di tabella denominati, come o. `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"
                    }
                 ]               
            }
        }
   }
}
```
La seguente configurazione di esempio richiama l'Hook `CREATE` e `UPDATE` le operazioni su tutti i tipi di risorse Amazon S3 e anche `CREATE` per `UPDATE` e le operazioni su tutti i tipi di risorse di tabella denominati, come o. `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 : stack specifici `Include`**  
Gli esempi seguenti specificano un `Include` elenco. L'Hook viene richiamato solo se i nomi degli stack iniziano con. `stack-test-`  

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

**Example : pile specifiche `Exclude`**  
Gli esempi seguenti specificano un `Exclude` elenco. L'Hook viene richiamato su qualsiasi pila che non inizi con. `stack-test-`  

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

**Example : Combinazione `Include` e `Exclude` per pile specifiche**  
Se vengono `Include` specificati `Exclude` elenchi, l'Hook viene richiamato solo sugli stack che corrispondono a quelli `Include` che non corrispondono nell'elenco. `Exclude` Nell'esempio seguente, l'Hook viene richiamato su tutte le pile che iniziano con, `stack-test-` ad eccezione delle pile denominate, e. `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 : ruoli specifici `Include`**  
L'esempio seguente specifica un `Include` elenco con due pattern di caratteri jolly. La prima voce eseguirà l'Hook per qualsiasi ruolo che inizia con `hook-role` in qualsiasi `partition` and. `account-id` La seconda voce eseguirà qualsiasi ruolo in qualsiasi ruolo a `partition` cui appartiene `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 : ruoli `Exclude` specifici**  
Gli esempi seguenti specificano un `Exclude` elenco con due pattern di caratteri jolly. La prima voce salterà l'esecuzione di Hook quando un ruolo ha `exempt` nel nome «any and any`partition`». `account-id` La seconda voce salterà l'esecuzione di Hook quando un ruolo appartenente a `account-id` `123456789012` viene utilizzato con l'operazione stack.  

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

**Example : Combinazione `Include` e `Exclude` per ruoli specifici dei modelli ARN**  
Se vengono `Include` specificati `Exclude` elenchi, l'Hook viene richiamato solo sugli stack utilizzati con ruoli che corrispondono a quelli `Include` che non corrispondono nell'elenco. `Exclude` Nell'esempio seguente, l'Hook viene richiamato nelle operazioni di stack con any`partition`, e `role` name`account-id`, tranne se il ruolo appartiene a. `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 : Combinazione di nomi e ruoli dello stack con tutti i criteri**  
Il seguente Hook include una jolly per il nome dello stack e una jolly per il ruolo dello stack. Poiché `FilteringCriteria` è specificato come`ALL`, l'Hook viene richiamato solo per gli stack che hanno sia la corrispondenza che la corrispondenza. `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 : Combinando `StackNames` e `StackRoles` con qualsiasi criterio**  
Il seguente Hook include una jolly per il nome dello stack e una jolly per il ruolo dello stack. Poiché `FilteringCriteria` è specificato come`ANY`, l'Hook viene richiamato per lo stack che presenta corrispondenze o corrispondenze. `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*"]
        }
      }
    }
  }
}
```