

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# CloudFormation Filtros de nivel de pila Hooks
<a name="hooks-stack-level-filtering"></a>

Puedes añadir filtros a nivel de pila a tus CloudFormation Hooks para segmentar pilas específicas en función de los nombres y roles de las pilas. Esto es útil en los casos en los que tienes varias pilas con los mismos tipos de recursos, pero el Hook está pensado para pilas específicas.

En esta sección se explica cómo funcionan estos filtros y se proporcionan ejemplos que puede seguir.

La estructura básica de una configuración de Hook sin filtrado a nivel de pila es la siguiente:

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

Para obtener más información sobre la `HookConfiguration` sintaxis, consulte[Referencia a la sintaxis del esquema de la configuración del enlace](hook-configuration-schema.md).

Para usar filtros a nivel de pila, añada una `StackFilters` clave debajo`HookConfiguration`. 

La `StackFilters` clave tiene un miembro obligatorio y dos miembros opcionales.
+ `FilteringCriteria` (obligatorio)
+ `StackNames` (opcional)
+ `StackRoles` (opcional)

Las `StackRoles` propiedades `StackNames` o son opcionales. Sin embargo, debe especificar al menos una de estas propiedades.

Si creas un Hook dirigido a las operaciones de la [API de Cloud Control](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html), se ignorarán todos los filtros a nivel de pila.

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

`FilteringCriteria`es un parámetro obligatorio que especifica el comportamiento de filtrado. Se puede establecer en `ALL` o`ANY`.
+ `ALL`invoca el Hook si todos los filtros coinciden.
+ `ANY`invoca el Hook si algún filtro coincide.

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

Para especificar uno o más nombres de pila como filtros en tu configuración de Hooks, usa la siguiente estructura JSON:

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

Debe especificar uno de los siguientes:
+ `Include`: Lista de nombres de pila que se van a incluir. Solo las pilas especificadas en esta lista invocarán el Hook.
  + Tipo: matriz de cadenas
  + Número máximo de artículos: 50
  + Artículos mínimos: 1
+ `Exclude`: Lista de nombres de pilas que se van a excluir. Todas las pilas, excepto las que se muestran aquí, invocarán el Hook.
  + Tipo: matriz de cadenas
  + Número máximo de artículos: 50
  + Artículos mínimos: 1

El nombre de cada pila de las `Exclude` matrices `Include` y debe cumplir los siguientes requisitos de patrón y longitud:
+ Patrón: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Longitud máxima: 128 

`StackNames`admiten nombres de pila concretos y la combinación completa de comodines. Para ver ejemplos de uso de caracteres comodín, consulte. [Uso de caracteres comodín con nombres de objetivos de Hook](wildcard-hook-targets.md)

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

Para especificar una o más [funciones de IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) como filtros en la configuración de Hook, utilice la siguiente estructura JSON:

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

Debe especificar uno de los siguientes:
+ `Include`: Lista de funciones de IAM ARNs para segmentar las pilas asociadas a estas funciones. Solo las operaciones de apilamiento iniciadas por estos roles invocarán el Hook.
  + Tipo: matriz de cadenas
  + Número máximo de artículos: 50
  + Artículos mínimos: 1
+ `Exclude`: Lista de funciones de IAM ARNs para las pilas que quieres excluir. El Hook se invocará en todas las pilas, excepto en las iniciadas por los roles especificados.
  + Tipo: matriz de cadenas
  + Número máximo de objetos: 50
  + Artículos mínimos: 1

Cada función de pila de las `Exclude` matrices `Include` y debe cumplir los siguientes requisitos de patrón y longitud:
+ Patrón: `arn:.+:iam::[0-9]{12}:role/.+`
+ Longitud máxima: 256

`StackRoles`permitir caracteres comodín en las siguientes secciones de sintaxis del [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax):
+ `partition`
+ `account-id`
+ `resource-id`

Para ver ejemplos de uso de caracteres comodín en las secciones de sintaxis del ARN, consulte. [Uso de caracteres comodín con nombres de objetivos de Hook](wildcard-hook-targets.md)

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

Cada filtro (`StackNames`y`StackRoles`) tiene una `Include` lista y `Exclude` una lista. `StackNames`Como ejemplo, el Hook solo se invoca en las pilas especificadas en la `Include` lista. Si los nombres de las pilas solo se especifican en la `Exclude` lista, el gancho solo se invoca en las pilas que *no* están en la `Exclude` lista. Si `Exclude` se especifican ambos `Include` y, el Hook apunta a lo que está en la `Include` lista y no a lo que está en la `Exclude` lista.

Por ejemplo, supongamos que tienes cuatro pilas: A, B, C y D.
+ `"Include": ["A","B"]`El Hook se invoca en A y B.
+ `"Exclude": ["B"]`El Hook se invoca en A, C y D.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`El Hook se invoca en B y C.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`El Hook no se invoca en ninguna pila.

## Ejemplos de filtros a nivel de pila
<a name="stack-level-filtering-examples"></a>

Esta sección proporciona ejemplos que puedes seguir para crear filtros a nivel de pila para CloudFormation Hooks.

### Ejemplo 1: Incluye pilas específicas
<a name="stack-level-filtering-example-1"></a>

El siguiente ejemplo especifica una `Include` lista. El Hook solo se invoca en las pilas `stack-test-1` denominadas `stack-test-2` y`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"
          ]
        }
      }
    }
  }
}
```

### Ejemplo 2: Excluir pilas específicas
<a name="stack-level-filtering-example-2"></a>

Si, en cambio, los nombres de las pilas se añaden a la `Exclude` lista, el Hook se invoca en cualquier pila que *no tenga* nombre`stack-test-1`, `stack-test-2` o`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"
          ]
        }
      }
    }
  }
}
```

### Ejemplo 3: Combinar incluir y excluir
<a name="stack-level-filtering-example-3"></a>

Si `Include` no se especifican `Exclude` las listas, el Hook solo se invoca en las pilas `Include` que no están en la `Exclude` lista. En el siguiente ejemplo, el Hook solo se invoca en`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"
          ]
        }
      }
    }
  }
}
```

### Ejemplo 4: Combinar nombres y roles de pila con `ALL` criterios
<a name="stack-level-filtering-example-4"></a>

El siguiente Hook incluye tres nombres de pila y un rol de pila. Como `FilteringCriteria` se especifica como`ALL`, el Hook solo se invoca para las pilas que tienen un *nombre* de pila coincidente *y* una función de pila coincidentes.

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

### Ejemplo 5: Combinar nombres y roles de pila con `ANY` criterios
<a name="stack-level-filtering-example-5"></a>

El siguiente Hook incluye tres nombres de pila y un rol de pila. *Como `FilteringCriteria` se especifica como`ANY`, el Hook se invoca para las pilas que tienen un nombre de pila coincidente *o* el rol de pila coincidente.*

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