

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# CloudFormation Filtros de nível de pilha de ganchos
<a name="hooks-stack-level-filtering"></a>

Você pode adicionar filtros de nível de pilha aos seus CloudFormation Hooks para direcionar pilhas específicas com base nos nomes e funções das pilhas. Isso é útil nos casos em que você tem várias pilhas com os mesmos tipos de recursos, mas o Hook é destinado a pilhas específicas.

Esta seção explica como esses filtros funcionam e fornece exemplos que você pode seguir.

A estrutura básica de uma configuração de Hook sem filtragem em nível de pilha tem a seguinte aparência:

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

Para obter mais informações sobre a `HookConfiguration` sintaxe, consulte[Referência de sintaxe de esquema de configuração de hook](hook-configuration-schema.md).

Para usar filtros de nível de pilha, adicione uma `StackFilters` chave abaixo`HookConfiguration`. 

A `StackFilters` chave tem um membro obrigatório e dois membros opcionais.
+ `FilteringCriteria`(obrigatório)
+ `StackNames` (opcional)
+ `StackRoles` (opcional)

As `StackRoles` propriedades `StackNames` or são opcionais. No entanto, você deve especificar pelo menos uma dessas propriedades.

Se você criar um Hook que tenha como alvo as operações [da Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html), todos os filtros no nível da pilha serão ignorados.

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

`FilteringCriteria`é um parâmetro obrigatório que especifica o comportamento da filtragem. Ele pode ser definido como `ALL` ou`ANY`.
+ `ALL`invoca o Hook se todos os filtros forem compatíveis.
+ `ANY`invoca o Hook se algum filtro for compatível.

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

Para especificar um ou mais nomes de pilha como filtros na configuração do Hooks, use a seguinte estrutura JSON:

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

É necessário especificar um dos seguintes:
+ `Include`: Lista de nomes de pilhas a serem incluídos. Somente as pilhas especificadas nesta lista invocarão o Hook.
  + Tipo: matriz de strings
  + Número máximo de itens: 50
  + Itens principais: 1
+ `Exclude`: lista de nomes de pilha a serem excluídos. Todas as pilhas, exceto as listadas aqui, invocarão o Hook.
  + Tipo: matriz de strings
  + Número máximo de itens: 50
  + Itens principais: 1

Cada nome de pilha nas `Exclude` matrizes `Include` e deve seguir os seguintes requisitos de padrão e comprimento:
+ Padrão: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Comprimento máximo: 128 

`StackNames`suporta nomes de pilhas concretos e correspondência completa de curingas. Para ver exemplos usando curingas, consulte[Usando curingas com nomes de destino de Hook](wildcard-hook-targets.md).

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

Para especificar uma ou mais [funções do IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) como filtros na configuração do Hook, use a seguinte estrutura JSON:

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

É necessário especificar um dos seguintes:
+ `Include`: lista de funções do IAM ARNs para direcionar as pilhas associadas a essas funções. Somente as operações de pilha iniciadas por essas funções invocarão o Hook.
  + Tipo: matriz de strings
  + Número máximo de itens: 50
  + Itens principais: 1
+ `Exclude`: lista da função do IAM ARNs para as pilhas que você deseja excluir. O Hook será invocado em todas as pilhas, exceto aquelas iniciadas pelas funções especificadas.
  + Tipo: matriz de strings
  + Número máximo de itens: 50
  + Itens principais: 1

Cada função de pilha nas `Exclude` matrizes `Include` e deve atender aos seguintes requisitos de padrão e comprimento:
+ Padrão: `arn:.+:iam::[0-9]{12}:role/.+`
+ Comprimento máximo: 256

`StackRoles`permita caracteres curinga nas seguintes seções de sintaxe do [ARN:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax)
+ `partition`
+ `account-id`
+ `resource-id`

Para ver exemplos usando curingas nas seções de sintaxe do ARN, consulte. [Usando curingas com nomes de destino de Hook](wildcard-hook-targets.md)

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

Cada filtro (`StackNames`e`StackRoles`) tem uma `Include` lista e uma `Exclude` lista. Usando `StackNames` como exemplo, o Hook só é invocado nas pilhas especificadas na `Include` lista. Se os nomes das pilhas forem especificados apenas na `Exclude` lista, o gancho será invocado somente nas pilhas que *não* estão na lista. `Exclude` Se ambos `Include` `Exclude` forem especificados, o Hook tem como alvo o que está na `Include` lista e não o que está na `Exclude` lista.

Por exemplo, suponha que você tenha quatro pilhas: A, B, C e D.
+ `"Include": ["A","B"]`O Gancho é invocado em A e B.
+ `"Exclude": ["B"]`O Gancho é invocado em A, C e D.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`O Gancho é invocado em B e C.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`O Hook não é invocado em nenhuma pilha.

## Exemplos de filtros de nível de pilha
<a name="stack-level-filtering-examples"></a>

Esta seção fornece exemplos que você pode seguir para criar filtros de nível de pilha para CloudFormation Hooks.

### Exemplo 1: Incluir pilhas específicas
<a name="stack-level-filtering-example-1"></a>

O exemplo a seguir especifica uma `Include` lista. O Hook só é invocado em pilhas chamadas `stack-test-1` 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"
          ]
        }
      }
    }
  }
}
```

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

Se, em vez disso, os nomes das pilhas forem adicionados à `Exclude` lista, o Hook será invocado em qualquer pilha que *não* tenha nome`stack-test-1`, ou. `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"
          ]
        }
      }
    }
  }
}
```

### Exemplo 3: Combinação de incluir e excluir
<a name="stack-level-filtering-example-3"></a>

Se `Exclude` as listas `Include` e não forem especificadas, o Hook só será invocado nas pilhas `Include` que não estão na `Exclude` lista. No exemplo a seguir, o Hook só é invocado em`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"
          ]
        }
      }
    }
  }
}
```

### Exemplo 4: combinação de nomes e funções da pilha com critérios `ALL`
<a name="stack-level-filtering-example-4"></a>

O gancho a seguir inclui três nomes de pilha e uma função de pilha. *Como o `FilteringCriteria` é especificado como`ALL`, o Hook só é invocado para pilhas que tenham um nome de pilha correspondente *e* a função de pilha correspondente.*

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

### Exemplo 5: combinação de nomes e funções da pilha com critérios `ANY`
<a name="stack-level-filtering-example-5"></a>

O gancho a seguir inclui três nomes de pilha e uma função de pilha. *Como o `FilteringCriteria` é especificado como`ANY`, o Hook é invocado para pilhas que têm um nome de pilha correspondente *ou* a função de pilha correspondente.*

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