

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# CloudFormation Filter tingkat tumpukan kait
<a name="hooks-stack-level-filtering"></a>

Anda dapat menambahkan filter tingkat tumpukan ke CloudFormation Hooks Anda untuk menargetkan tumpukan tertentu berdasarkan nama dan peran tumpukan. Ini berguna dalam kasus di mana Anda memiliki beberapa tumpukan dengan jenis sumber daya yang sama, tetapi Hook ditujukan untuk tumpukan tertentu.

Bagian ini menjelaskan cara kerja filter ini dan memberikan contoh yang dapat Anda ikuti.

Struktur dasar konfigurasi Hook tanpa penyaringan tingkat tumpukan terlihat seperti ini:

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

Untuk informasi selengkapnya tentang `HookConfiguration` sintaks, lihat[Referensi sintaks skema konfigurasi hook](hook-configuration-schema.md).

Untuk menggunakan filter tingkat tumpukan, tambahkan `StackFilters` kunci di bawah`HookConfiguration`. 

`StackFilters`Kuncinya memiliki satu anggota wajib dan memiliki dua anggota opsional.
+ `FilteringCriteria`(Diperlukan)
+ `StackNames` (opsional)
+ `StackRoles` (opsional)

`StackRoles`Properti `StackNames` atau bersifat opsional. Namun, Anda harus menentukan setidaknya satu dari properti ini.

Jika Anda membuat Hook yang menargetkan operasi [Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html), semua filter tingkat tumpukan akan diabaikan.

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

`FilteringCriteria`adalah parameter wajib yang menentukan perilaku penyaringan. Itu dapat diatur ke salah satu `ALL` atau`ANY`.
+ `ALL`memanggil Hook jika semua filter cocok.
+ `ANY`memanggil Hook jika ada satu filter yang cocok.

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

Untuk menentukan satu atau beberapa nama tumpukan sebagai filter dalam konfigurasi Hooks Anda, gunakan struktur JSON berikut:

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

Anda harus menentukan salah satu dari berikut ini:
+ `Include`: Daftar nama tumpukan untuk disertakan. Hanya tumpukan yang ditentukan dalam daftar ini yang akan memanggil Hook.
  + Tipe: Array string
  + Maks item: 50
  + Item min: 1
+ `Exclude`: Daftar nama tumpukan untuk dikecualikan. Semua tumpukan kecuali yang tercantum di sini akan memanggil Hook.
  + Tipe: Array string
  + Maks item: 50
  + Item min: 1

Setiap nama tumpukan dalam `Include` dan `Exclude` array harus mematuhi pola dan persyaratan panjang berikut:
+ Pola: `^[a-zA-Z][-a-zA-Z0-9]*$`
+ Panjang maks: 128 

`StackNames`mendukung nama tumpukan beton dan pencocokan wildcard lengkap. Untuk melihat contoh menggunakan wildcard, lihat[Menggunakan wildcard dengan nama target Hook](wildcard-hook-targets.md).

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

Untuk menentukan satu atau beberapa [peran IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) sebagai filter dalam konfigurasi Hook Anda, gunakan struktur JSON berikut:

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

Anda harus menentukan salah satu dari berikut ini:
+ `Include`: Daftar peran IAM ARNs untuk menargetkan tumpukan yang terkait dengan peran ini. Hanya operasi tumpukan yang diprakarsai oleh peran ini yang akan memanggil Hook.
  + Tipe: Array string
  + Maks item: 50
  + Item min: 1
+ `Exclude`: Daftar peran IAM ARNs untuk tumpukan yang ingin Anda kecualikan. Hook akan dipanggil pada semua tumpukan kecuali yang diprakarsai oleh peran yang ditentukan.
  + Tipe: Array string
  + Maks item: 50
  + Item min: 1

Setiap peran tumpukan dalam `Include` dan `Exclude` array harus mematuhi pola dan persyaratan panjang berikut:
+ Pola: `arn:.+:iam::[0-9]{12}:role/.+`
+ Panjang maks: 256

`StackRoles`izinkan karakter wildcard di bagian sintaks [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax) berikut:
+ `partition`
+ `account-id`
+ `resource-id`

Untuk melihat contoh menggunakan wildcard di bagian sintaks ARN, lihat. [Menggunakan wildcard dengan nama target Hook](wildcard-hook-targets.md)

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

Setiap filter (`StackNames`dan`StackRoles`) memiliki `Include` daftar dan `Exclude` daftar. Menggunakan `StackNames` sebagai contoh, Hook hanya dipanggil pada tumpukan yang ditentukan dalam `Include` daftar. Jika nama tumpukan hanya ditentukan dalam `Exclude` daftar, hook hanya dipanggil pada tumpukan yang *tidak* ada dalam daftar. `Exclude` Jika keduanya `Include` dan `Exclude` ditentukan, Hook menargetkan apa yang ada dalam `Include` daftar dan bukan apa yang ada dalam `Exclude` daftar.

Misalnya, Anda memiliki empat tumpukan: A, B, C, dan D.
+ `"Include": ["A","B"]`Hook dipanggil pada A dan B.
+ `"Exclude": ["B"]`Hook dipanggil pada A, C, dan D.
+ `"Include": ["A","B","C"], "Exclude": ["A","D"]`Hook dipanggil pada B dan C.
+ `"Include": ["A","B","C"], "Exclude": ["A”,"B","C"]`Hook tidak dipanggil pada tumpukan apa pun.

## Contoh filter tingkat tumpukan
<a name="stack-level-filtering-examples"></a>

Bagian ini memberikan contoh yang dapat Anda ikuti untuk membuat filter tingkat tumpukan untuk CloudFormation Hooks.

### Contoh 1: Sertakan tumpukan tertentu
<a name="stack-level-filtering-example-1"></a>

Contoh berikut menentukan `Include` daftar. Hook hanya dipanggil pada tumpukan bernama`stack-test-1`, `stack-test-2` dan. `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"
          ]
        }
      }
    }
  }
}
```

### Contoh 2: Kecualikan tumpukan tertentu
<a name="stack-level-filtering-example-2"></a>

Jika nama tumpukan ditambahkan ke `Exclude` daftar, Hook dipanggil pada tumpukan apa pun yang *tidak* diberi nama`stack-test-1`, `stack-test-2` atau`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"
          ]
        }
      }
    }
  }
}
```

### Contoh 3: Menggabungkan include dan exclude
<a name="stack-level-filtering-example-3"></a>

Jika `Include` dan `Exclude` daftar tidak ditentukan, Hook hanya dipanggil pada tumpukan di `Include` yang tidak ada dalam daftar. `Exclude` Dalam contoh berikut, Hook hanya dipanggil pada`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"
          ]
        }
      }
    }
  }
}
```

### Contoh 4: Menggabungkan nama tumpukan dan peran dengan `ALL` kriteria
<a name="stack-level-filtering-example-4"></a>

Hook berikut mencakup tiga nama tumpukan, dan satu peran tumpukan. Karena `FilteringCriteria` ditentukan sebagai`ALL`, Hook hanya dipanggil untuk tumpukan yang memiliki nama tumpukan yang *cocok* *dan* peran tumpukan yang cocok.

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

### Contoh 5: Menggabungkan nama tumpukan dan peran dengan `ANY` kriteria
<a name="stack-level-filtering-example-5"></a>

Hook berikut mencakup tiga nama tumpukan, dan satu peran tumpukan. *Karena `FilteringCriteria` ditentukan sebagai`ANY`, Hook dipanggil untuk tumpukan yang memiliki nama tumpukan yang cocok *atau* peran tumpukan yang cocok.*

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