

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# CloudFormation Filtres de niveau Hooks Stack
<a name="hooks-stack-level-filtering"></a>

Vous pouvez ajouter des filtres de niveau de pile à vos CloudFormation Hooks pour cibler des piles spécifiques en fonction des noms et des rôles des piles. Cela est utile dans les cas où vous avez plusieurs piles avec les mêmes types de ressources, mais que le Hook est destiné à des piles spécifiques.

Cette section explique le fonctionnement de ces filtres et fournit des exemples que vous pouvez suivre.

La structure de base d'une configuration Hook sans filtrage au niveau de la pile ressemble à ceci :

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

Pour plus d'informations sur la `HookConfiguration` syntaxe, consultez[Référence syntaxique du schéma de configuration Hook](hook-configuration-schema.md).

Pour utiliser les filtres au niveau de la pile, ajoutez une `StackFilters` clé sous`HookConfiguration`. 

La `StackFilters` clé comporte un membre obligatoire et deux membres facultatifs.
+ `FilteringCriteria` (obligatoire)
+ `StackNames` (facultatif)
+ `StackRoles` (facultatif)

Les `StackRoles` propriétés `StackNames` or sont facultatives. Cependant, vous devez spécifier au moins une de ces propriétés.

Si vous créez un Hook qui cible les opérations de [l'API Cloud Control](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html), tous les filtres au niveau de la pile seront ignorés.

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

`FilteringCriteria`est un paramètre obligatoire qui spécifie le comportement de filtrage. Il peut être réglé sur `ALL` ou`ANY`.
+ `ALL`invoque le Hook si tous les filtres correspondent.
+ `ANY`invoque le Hook si l'un des filtres correspond.

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

Pour spécifier un ou plusieurs noms de pile sous forme de filtres dans votre configuration Hooks, utilisez la structure JSON suivante :

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

Vous devez spécifier l'une des options suivantes :
+ `Include`: liste des noms de pile à inclure. Seules les piles spécifiées dans cette liste invoqueront le Hook.
  + Type : tableau de chaînes
  + Nombre maximum d'articles : 50
  + Nombre minimum d'articles : 1
+ `Exclude`: liste des noms de pile à exclure. Toutes les piles, à l'exception de celles répertoriées ici, invoqueront le Hook.
  + Type : tableau de chaînes
  + Nombre maximum d'articles : 50
  + Nombre minimum d'articles : 1

Chaque nom de pile dans les `Exclude` tableaux `Include` et doit respecter les exigences de modèle et de longueur suivantes :
+ Modèle : `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Longueur maximale : 128 

`StackNames`supporte les noms de pile concrets et la correspondance complète des caractères génériques. Pour consulter des exemples utilisant des caractères génériques, voir[Utilisation de caractères génériques avec les noms de cibles Hook](wildcard-hook-targets.md).

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

Pour spécifier un ou plusieurs [rôles IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) en tant que filtres dans votre configuration Hook, utilisez la structure JSON suivante :

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

Vous devez spécifier l'une des options suivantes :
+ `Include`: liste des rôles IAM ARNs pour cibler les piles associées à ces rôles. Seules les opérations de stack initiées par ces rôles invoqueront le Hook.
  + Type : tableau de chaînes
  + Nombre maximum d'articles : 50
  + Nombre minimum d'articles : 1
+ `Exclude`: liste des rôles IAM ARNs pour les piles que vous souhaitez exclure. Le Hook sera invoqué sur toutes les piles sauf celles initiées par les rôles spécifiés.
  + Type : tableau de chaînes
  + Nombre maximum d'articles : 50
  + Nombre minimum d'articles : 1

Chaque rôle de pile dans les `Exclude` tableaux `Include` et doit respecter les exigences de modèle et de longueur suivantes :
+ Modèle : `arn:.+:iam::[0-9]{12}:role/.+`
+ Longueur maximale : 256

`StackRoles`autorisez les caractères génériques dans les sections de [syntaxe de l'ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax) suivantes :
+ `partition`
+ `account-id`
+ `resource-id`

Pour voir des exemples d'utilisation de caractères génériques dans les sections sur la syntaxe de l'ARN, consultez[Utilisation de caractères génériques avec les noms de cibles Hook](wildcard-hook-targets.md).

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

Chaque filtre (`StackNames`et`StackRoles`) possède une `Include` liste et une `Exclude` liste. À `StackNames` titre d'exemple, le Hook n'est invoqué que sur les piles spécifiées dans la `Include` liste. Si les noms des piles ne sont spécifiés que dans la `Exclude` liste, le hook n'est invoqué que sur les piles qui *ne figurent pas* dans la `Exclude` liste. Si `Include` les deux `Exclude` sont spécifiés, le Hook cible le contenu de la `Include` liste et non le contenu de la `Exclude` liste.

Supposons, par exemple, que vous ayez quatre piles : A, B, C et D.
+ `"Include": ["A","B"]`Le Hook est invoqué sur A et B.
+ `"Exclude": ["B"]`Le Hook est invoqué sur A, C et D.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`Le Hook est invoqué sur B et C.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`Le Hook n'est invoqué sur aucune pile.

## Exemples de filtres au niveau de la pile
<a name="stack-level-filtering-examples"></a>

Cette section fournit des exemples que vous pouvez suivre pour créer des filtres au niveau de la pile pour les CloudFormation Hooks.

### Exemple 1 : inclure des piles spécifiques
<a name="stack-level-filtering-example-1"></a>

L'exemple suivant indique une `Include` liste. Le Hook n'est invoqué que sur les piles nommées`stack-test-1`, `stack-test-2` et`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"
          ]
        }
      }
    }
  }
}
```

### Exemple 2 : Exclure des piles spécifiques
<a name="stack-level-filtering-example-2"></a>

Si les noms des piles sont plutôt ajoutés à la `Exclude` liste, le Hook est invoqué sur toute pile *non* nommée`stack-test-1`, `stack-test-2` ou`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"
          ]
        }
      }
    }
  }
}
```

### Exemple 3 : combinaison d'inclusion et d'exclusion
<a name="stack-level-filtering-example-3"></a>

Si `Include` aucune `Exclude` liste n'est spécifiée, le Hook n'est invoqué que sur les piles `Include` qui ne figurent pas dans la `Exclude` liste. Dans l'exemple suivant, le Hook n'est invoqué que sur`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"
          ]
        }
      }
    }
  }
}
```

### Exemple 4 : combinaison de noms de pile et de rôles avec des `ALL` critères
<a name="stack-level-filtering-example-4"></a>

Le Hook suivant inclut trois noms de pile et un rôle de pile. Comme le Hook `FilteringCriteria` est spécifié comme`ALL`, le Hook n'est invoqué que pour les piles qui ont *à la fois* un nom de pile correspondant *et* le rôle de pile correspondant.

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

### Exemple 5 : combinaison de noms de pile et de rôles avec des `ANY` critères
<a name="stack-level-filtering-example-5"></a>

Le Hook suivant inclut trois noms de pile et un rôle de pile. Comme le Hook `FilteringCriteria` est spécifié comme`ANY`, le Hook est invoqué pour les piles qui ont *soit* un nom de pile correspondant, *soit* le rôle de pile correspondant.

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