

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CloudFormation 후크 스택 수준 필터
<a name="hooks-stack-level-filtering"></a>

CloudFormation 후크에 스택 수준 필터를 추가하여 스택 이름 및 역할을 기반으로 특정 스택을 대상으로 지정할 수 있습니다. 이는 리소스 유형이 동일한 스택이 여러 개 있는 경우에 유용하지만 후크는 특정 스택을 위한 것입니다.

이 섹션에서는 이러한 필터의 작동 방식을 설명하고 따를 수 있는 예제를 제공합니다.

스택 수준 필터링이 없는 후크 구성의 기본 구조는 다음과 같습니다.

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

`HookConfiguration` 구문에 대한 자세한 내용은 섹션을 참조하세요[후크 구성 스키마 구문 참조](hook-configuration-schema.md).

스택 수준 필터를 사용하려면 아래에 `StackFilters` 키를 추가합니다`HookConfiguration`.

`StackFilters` 키에는 필수 멤버 1개와 선택적 멤버 2개가 있습니다.
+ `FilteringCriteria`(필수)
+ `StackNames` (선택 사항)
+ `StackRoles` (선택 사항)

`StackNames` 또는 `StackRoles` 속성은 선택 사항입니다. 그러나 이러한 속성을 하나 이상 지정해야 합니다.

[Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) 작업을 대상으로 하는 후크를 생성하면 모든 스택 수준 필터가 무시됩니다.

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

`FilteringCriteria`는 필터링 동작을 지정하는 필수 파라미터입니다. `ALL` 또는 로 설정할 수 있습니다`ANY`.
+ `ALL`는 모든 필터가 일치하는 경우 후크를 호출합니다.
+ `ANY`는 일치하는 필터가 하나 있는 경우 후크를 호출합니다.

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

후크 구성에서 하나 이상의 스택 이름을 필터로 지정하려면 다음 JSON 구조를 사용합니다.

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

다음 중 하나를 지정해야 합니다.
+ `Include`: 포함할 스택 이름 목록입니다. 이 목록에 지정된 스택만 후크를 호출합니다.
  + 유형: 문자열 배열
  + 최대 항목: 50
  + 최소 항목: 1
+ `Exclude`: 제외할 스택 이름 목록입니다. 여기에 나열된 스택을 제외한 모든 스택은 후크를 호출합니다.
  + 유형: 문자열 배열
  + 최대 항목: 50
  + 최소 항목: 1

`Include` 및 `Exclude` 배열의 각 스택 이름은 다음 패턴 및 길이 요구 사항을 준수해야 합니다.
+ 패턴: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ 최대 길이: 128 

`StackNames`는 구체적인 스택 이름과 전체 와일드카드 일치를 지원합니다. 와일드카드를 사용하는 예제를 보려면 섹션을 참조하세요[후크 대상 이름과 함께 와일드카드 사용](wildcard-hook-targets.md).

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

후크 구성에서 하나 이상의 [IAM 역할을](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) 필터로 지정하려면 다음 JSON 구조를 사용합니다.

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

다음 중 하나를 지정해야 합니다.
+ `Include`: 이러한 역할과 연결된 스택을 대상으로 하는 IAM 역할 ARNs 목록입니다. 이러한 역할에서 시작된 스택 작업만 후크를 호출합니다.
  + 유형: 문자열 배열
  + 최대 항목: 50
  + 최소 항목: 1
+ `Exclude`: 제외하려는 스택의 IAM 역할 ARNs 목록입니다. 후크는 지정된 역할에 의해 시작된 스택을 제외한 모든 스택에서 호출됩니다.
  + 유형: 문자열 배열
  + 최대 항목: 50
  + 최소 항목: 1

`Include` 및 `Exclude` 배열의 각 스택 역할은 다음 패턴 및 길이 요구 사항을 준수해야 합니다.
+ 패턴: `arn:.+:iam::[0-9]{12}:role/.+`
+ 최대 길이: 256

`StackRoles` 다음 [ARN 구문](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax) 섹션에서 와일드카드 문자를 허용합니다.
+ `partition`
+ `account-id`
+ `resource-id`

ARN 구문 섹션에서 와일드카드를 사용하는 예제를 보려면 섹션을 참조하세요[후크 대상 이름과 함께 와일드카드 사용](wildcard-hook-targets.md).

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

각 필터(`StackNames` 및 `StackRoles`)에는 `Include` 목록과 `Exclude` 목록이 있습니다. `StackNames` 예를 들어를 사용하면 `Include` 목록에 지정된 스택에서만 후크가 호출됩니다. 목록에만 스택 이름을 지정하면 `Exclude` 목록에 *없는* 스택에서만 후크가 호출됩니다`Exclude`. `Include` 및를 모두 지정하면 후크`Exclude`는 `Include` 목록에 있는 것이 아니라 `Exclude` 목록에 있는 것을 대상으로 합니다.

예를 들어 A, B, C, D 등 4개의 스택이 있다고 가정해 보겠습니다.
+ `"Include": ["A","B"]` 후크는 A와 B에서 호출됩니다.
+ `"Exclude": ["B"]` 후크는 A, C 및 D에서 호출됩니다.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]` 후크는 B와 C에서 호출됩니다.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]` 후크는 스택에서 호출되지 않습니다.

## 스택 수준 필터의 예
<a name="stack-level-filtering-examples"></a>

이 섹션에서는 CloudFormation 후크에 대한 스택 수준 필터를 생성하는 데 따를 수 있는 예제를 제공합니다.

### 예제 1: 특정 스택 포함
<a name="stack-level-filtering-example-1"></a>

다음 예제에서는 `Include` 목록을 지정합니다. 후크는 `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-1",
            "stack-test-2",
            "stack-test-3"
          ]
        }
      }
    }
  }
}
```

### 예제 2: 특정 스택 제외
<a name="stack-level-filtering-example-2"></a>

대신 스택 이름이 `Exclude` 목록에 추가되면 이름이 , `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"
          ]
        }
      }
    }
  }
}
```

### 예제 3: 포함 및 제외 결합
<a name="stack-level-filtering-example-3"></a>

`Include` 및 `Exclude` 목록을 지정하지 않으면 `Exclude` 목록에 `Include` 없는의 스택에서만 후크가 호출됩니다. 다음 예제에서는 후크가 에서만 호출됩니다`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"
          ]
        }
      }
    }
  }
}
```

### 예제 4: 스택 이름과 역할을 `ALL` 기준과 결합
<a name="stack-level-filtering-example-4"></a>

다음 후크에는 스택 이름 3개와 스택 역할 1개가 포함되어 있습니다. `FilteringCriteria`는 로 지정되므로 일치하는 스택 이름과 일치하는 스택 역할이 *모두* 있는 스택에 대해서만 `ALL`후크**가 호출됩니다.

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

### 예제 5: 스택 이름과 역할을 `ANY` 기준과 결합
<a name="stack-level-filtering-example-5"></a>

다음 후크에는 스택 이름 3개와 스택 역할 1개가 포함되어 있습니다. `FilteringCriteria`는 로 지정되므로 일치하는 스택 이름 *또는* 일치하는 스택 역할**이 있는 스택에 대해 `ANY`후크가 호출됩니다.

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