

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

# Stack refactoring
<a name="stack-refactoring"></a>

Dengan pemfaktoran ulang tumpukan, Anda dapat mengatur ulang sumber daya di CloudFormation tumpukan sambil mempertahankan properti dan data sumber daya yang ada. Anda dapat memindahkan sumber daya antar tumpukan, membagi tumpukan besar menjadi yang lebih kecil, atau menggabungkan beberapa tumpukan menjadi satu.

**Topics**
+ [Cara kerja stack refactoring](#stack-refactoring-overview)
+ [Pertimbangan refactoring tumpukan](#stack-refactoring-considerations)
+ [Prasyarat](#stack-refactoring-prerequisites)
+ [Tumpukan refactor (konsol)](#stack-refactoring-console)
+ [Tumpukan refactor ()AWS CLI](#stack-refactoring-cli)
+ [Keterbatasan sumber daya](#stack-refactoring-resource-limitations)

## Cara kerja stack refactoring
<a name="stack-refactoring-overview"></a>

Tumpukan refactoring melibatkan fase-fase ini:

1. **Menilai infrastruktur Anda saat ini** — Tinjau CloudFormation tumpukan dan sumber daya yang ada untuk mengidentifikasi peluang pemfaktoran ulang tumpukan.

1. **Rencanakan refactor Anda** — Tentukan bagaimana sumber daya harus diatur. Pertimbangkan dependensi, konvensi penamaan, dan batasan operasional Anda. Ini dapat mempengaruhi CloudFormation validasi nanti.

1. **Tentukan tumpukan tujuan** — Tentukan tumpukan mana yang akan Anda refactor sumber daya. Anda dapat memindahkan sumber daya antara setidaknya 2 tumpukan (menggunakan konsol), dan maksimal 5 tumpukan (menggunakan). AWS CLI Sumber daya dapat dipindahkan di antara tumpukan bersarang.

1. **Perbarui templat Anda** — Ubah CloudFormation templat Anda untuk mencerminkan perubahan yang direncanakan, seperti memindahkan definisi sumber daya antar templat. Anda dapat mengganti nama logis IDs selama proses ini.

1. **Buat refactor tumpukan** - Berikan daftar nama tumpukan dan templat yang ingin Anda refactor.

1. **Tinjau dampak refactor dan selesaikan konflik apa pun** — CloudFormation memvalidasi template yang Anda berikan dan memeriksa dependensi lintas tumpukan, jenis sumber daya dengan masalah pembaruan tag, dan konflik ID logis sumber daya.

   Jika validasi berhasil, CloudFormation akan menghasilkan pratinjau tindakan refactor yang akan terjadi selama eksekusi.

   Jika validasi gagal, selesaikan masalah yang diidentifikasi dan coba lagi. Untuk konflik, berikan pemetaan ID logis sumber daya yang menunjukkan sumber dan tujuan sumber daya yang saling bertentangan.

1. **Jalankan refactor** — Setelah mengonfirmasi perubahan sejajar dengan tujuan refactoring Anda, selesaikan stack refactor.

1. **Monitor** — Lacak status eksekusi untuk memastikan operasi selesai dengan sukses.

## Pertimbangan refactoring tumpukan
<a name="stack-refactoring-considerations"></a>

Saat Anda memfaktorkan ulang tumpukan Anda, ingatlah hal-hal berikut:
+ Stack refactoring terbatas pada reorganisasi sumber daya yang ada. Anda tidak dapat membuat atau menghapus sumber daya, mengubah konfigurasi sumber daya, atau mengubah atau menambahkan parameter, kondisi, atau pemetaan baru selama refactoring. Untuk membuat perubahan ini, perbarui tumpukan Anda terlebih dahulu, lalu lakukan refactor tumpukan.
+ Anda tidak dapat memfaktorkan ulang sumber daya yang sama menjadi beberapa tumpukan.
+ Anda tidak dapat memfaktorkan ulang sumber daya yang merujuk ke parameter semu yang nilainya berbeda antara tumpukan sumber dan tujuan, seperti. `AWS::StackName`
+ CloudFormation tidak mendukung tumpukan kosong. Jika refactoring akan meninggalkan tumpukan tanpa sumber daya, Anda harus terlebih dahulu menambahkan setidaknya satu sumber daya ke tumpukan itu sebelum Anda menjalankannya. [create-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-refactor.html) Ini bisa menjadi sumber daya sederhana seperti `AWS::SNS::Topic` atau`AWS::CloudFormation::WaitCondition`. Contoh:

  ```
  Resources:
    MySimpleSNSTopic:
      Type: AWS::SNS::Topic
      Properties:
        DisplayName: MySimpleTopic
  ```
+ Stack refactor tidak mendukung tumpukan yang memiliki kebijakan tumpukan yang dilampirkan, terlepas dari kebijakan apa yang diizinkan atau ditolak.

## Prasyarat
<a name="stack-refactoring-prerequisites"></a>

Untuk memfaktorkan ulang tumpukan, Anda harus sudah membuat template yang direvisi.

Gunakan perintah [get-template](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/get-template.html) untuk mengambil CloudFormation template untuk tumpukan yang ingin Anda refactor.

```
aws cloudformation get-template --stack-name Stack1
```

Ketika Anda memiliki template, gunakan lingkungan pengembangan terintegrasi (IDE) pilihan Anda untuk memperbaruinya untuk menggunakan struktur dan organisasi sumber daya yang diinginkan.

## Tumpukan refactor (konsol)
<a name="stack-refactoring-console"></a>

Gunakan prosedur berikut untuk memfaktorkan ulang tumpukan menggunakan konsol.

**Untuk refactor tumpukan**

1. Masuk ke Konsol Manajemen AWS dan buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Pada bilah navigasi di bagian atas layar, pilih Wilayah AWS tempat tumpukan Anda berada.

1. Di panel navigasi di sebelah kiri, pilih **Stack refactors**.

1. Pada halaman **Stack refactors**, pilih **Start stack refactor**.

1. Untuk **Deskripsi**, berikan deskripsi untuk membantu Anda mengidentifikasi refactor tumpukan Anda. Lalu, pilih **Selanjutnya**.

1. Untuk Stack 1, lakukan hal berikut:

   1. Pilih salah satu **Perbarui template untuk tumpukan yang ada** atau **Buat tumpukan baru**.

      Jika Anda memilih **Perbarui template untuk tumpukan yang ada**, lalu pilih tumpukan yang ada dari daftar. Atau pilih **Masukkan tumpukan ARN untuk memasukkan ARN** dari tumpukan yang ada.

      Jika Anda memilih **Buat tumpukan baru**, untuk **nama Stack**, berikan nama untuk tumpukan baru.

   1. Di bawah **Ganti templat yang ada dengan templat refactored**, pilih **URL Amazon S3** atau **Unggah file templat untuk mengunggah templat yang** diinginkan untuk Stack 1.

   1. Pilih **Berikutnya**.

1. Untuk Stack 2, lakukan hal berikut:

   1. Pilih salah satu **Perbarui template untuk tumpukan yang ada** atau **Buat tumpukan baru**.

      Jika Anda memilih **Perbarui template untuk tumpukan yang ada**, lalu pilih tumpukan yang ada dari daftar. Atau pilih **Masukkan tumpukan ARN untuk memasukkan ARN** dari tumpukan yang ada.

      Jika Anda memilih **Buat tumpukan baru**, untuk **nama Stack**, berikan nama untuk tumpukan baru.

   1. Di bawah **Ganti template yang ada dengan templat refactored, pilih** **URL Amazon S3** atau **Unggah file templat untuk mengunggah templat** yang diinginkan untuk Stack 2.

   1. Pilih **Berikutnya**.

1. Pada halaman **Tentukan nama ID sumber daya logis, pastikan CloudFormation tahu cara memfaktorkan** ulang tumpukan dengan memetakan sumber daya apa pun yang ditampilkan ke logika yang benar. IDs Sebagai bagian dari refactor tumpukan, jika logika sumber daya apa pun IDs diubah, Anda perlu menentukan bagaimana namanya diganti dengan memberikan nama tumpukan sumber, ID logis asli, nama tumpukan tujuan, dan ID logis yang diganti namanya. Dalam beberapa kasus, CloudFormation konsol mungkin secara otomatis mendeteksi pemetaan sumber daya, dan Anda cukup memverifikasi bahwa pemetaan sumber daya yang telah diisi sebelumnya sudah benar sebelum melanjutkan.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan jalankan**, tinjau semua pilihan Anda dari langkah sebelumnya dan konfirmasikan bahwa semuanya sudah diatur dengan benar.

1. Saat Anda siap untuk memfaktorkan ulang tumpukan, pilih **Execute stack** refactor.

## Tumpukan refactor ()AWS CLI
<a name="stack-refactoring-cli"></a>

 AWS CLI Perintah untuk stack refactoring meliputi:
+ [create-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-refactor.html)untuk memvalidasi dan menghasilkan pratinjau perubahan yang direncanakan.
+ [describe-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-refactor.html)untuk mengambil status dan detail operasi refactoring stack. 
+ [execute-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/execute-stack-refactor.html)untuk menyelesaikan operasi refactoring stack yang divalidasi. 
+ [list-stack-refactors](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-refactors.html)untuk mencantumkan semua operasi pemfaktoran ulang tumpukan di akun Anda dengan status dan informasi dasarnya saat ini. 
+ [list-stack-refactor-actions](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-refactor-actions.html)untuk menampilkan pratinjau tindakan spesifik yang CloudFormation akan dilakukan pada setiap tumpukan dan sumber daya selama eksekusi refactor. 

Gunakan prosedur berikut untuk memfaktorkan ulang tumpukan menggunakan. AWS CLI

**Untuk refactor tumpukan**

1. Gunakan [create-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-refactor.html)perintah dan berikan nama tumpukan dan template yang diperbarui untuk tumpukan untuk refactor. Sertakan `--enable-stack-creation` opsi CloudFormation untuk memungkinkan membuat tumpukan baru jika belum ada. 

   ```
   aws cloudformation create-stack-refactor \
     --stack-definitions \
       StackName=Stack1,TemplateBody@=file://template1-updated.yaml \
       StackName=Stack2,TemplateBody@=file://template2-updated.yaml \
     --enable-stack-creation
   ```

   Perintah mengembalikan `StackRefactorId` yang akan Anda gunakan di langkah selanjutnya.

   ```
   {
       "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841"
   }
   ```

   Jika konflik terdeteksi selama validasi template (yang dapat Anda konfirmasikan pada langkah berikutnya), gunakan [create-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-refactor.html)perintah dengan `--resource-mappings` opsi.

   ```
   aws cloudformation create-stack-refactor \
     --stack-definitions \
       StackName=Stack1,TemplateBody@=file://template1-updated.yaml \
       StackName=Stack2,TemplateBody@=file://template2-updated.yaml \
     --enable-stack-creation \ 
     --resource-mappings file://resource-mapping.json
   ```

   Berikut ini adalah contoh `resource-mapping.json` file.

   ```
   [
       {
           "Source": {
               "StackName": "Stack1",
               "LogicalResourceId": "MySNSTopic"
           },
           "Destination": {
               "StackName": "Stack2",
               "LogicalResourceId": "MyLambdaSNSTopic"
           }
       }
   ]
   ```

1. Gunakan [describe-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-refactor.html)perintah untuk memastikan `Status` ada`CREATE_COMPLETE`. Ini memverifikasi bahwa validasi selesai.

   ```
   aws cloudformation describe-stack-refactor \
     --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841
   ```

   Contoh output:

   ```
   {
       "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841",
       "StackIds": [
           "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf",
           "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b"
       ],
       "ExecutionStatus": "AVAILABLE",
       "Status": "CREATE_COMPLETE"
   }
   ```

1. Gunakan [list-stack-refactor-actions](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-refactor-actions.html)perintah untuk melihat pratinjau tindakan spesifik yang akan dilakukan.

   ```
   aws cloudformation list-stack-refactor-actions \
     --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841
   ```

   Contoh output:

   ```
   {
       "StackRefactorActions": [
           {
               "Action": "MOVE",
               "Entity": "RESOURCE",
               "PhysicalResourceId": "MyTestLambdaRole",
               "Description": "No configuration changes detected.",
               "Detection": "AUTO",
               "TagResources": [],
               "UntagResources": [],
               "ResourceMapping": {
                   "Source": {
                       "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf",
                       "LogicalResourceId": "MyLambdaRole"
                   },
                   "Destination": {
                       "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b",
                       "LogicalResourceId": "MyLambdaRole"
                   }
               }
           },
           {
               "Action": "MOVE",
               "Entity": "RESOURCE",
               "PhysicalResourceId": "MyTestFunction",
               "Description": "Resource configuration changes will be validated during refactor execution.",
               "Detection": "AUTO",
               "TagResources": [
                   {
                       "Key": "aws:cloudformation:stack-name",
                       "Value": "Stack2"
                   },
                   {
                       "Key": "aws:cloudformation:logical-id",
                       "Value": "MyFunction"
                   },
                   {
                       "Key": "aws:cloudformation:stack-id",
                       "Value": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b"
                   }
               ],
               "UntagResources": [
                   "aws:cloudformation:stack-name",
                   "aws:cloudformation:logical-id",
                   "aws:cloudformation:stack-id"
               ],
               "ResourceMapping": {
                   "Source": {
                       "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf",
                       "LogicalResourceId": "MyFunction"
                   },
                   "Destination": {
                       "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b",
                       "LogicalResourceId": "MyFunction"
                   }
               }
           }
       ]
   }
   ```

1. Setelah meninjau dan mengonfirmasi perubahan Anda, gunakan [execute-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/execute-stack-refactor.html)perintah untuk menyelesaikan operasi pemfaktoran ulang tumpukan.

   ```
   aws cloudformation execute-stack-refactor \
     --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841
   ```

1. Gunakan [describe-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-refactor.html)perintah untuk memantau status eksekusi.

   ```
   aws cloudformation describe-stack-refactor \
     --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841
   ```

   Contoh output:

   ```
   {
       "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841",
       "StackIds": [
           "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf",
           "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b"
       ],
       "ExecutionStatus": "SUCCEEDED",
       "Status": "COMPLETE"
   }
   ```

## Keterbatasan sumber daya
<a name="stack-refactoring-resource-limitations"></a>
+ [Stack refactoring hanya mendukung tipe sumber daya dengan a `provisioningType` of`FULLY_MUTABLE`, yang dapat Anda periksa menggunakan perintah describe-type.](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html) 
+ CloudFormation akan memvalidasi kelayakan sumber daya selama pembuatan refactor dan melaporkan sumber daya yang tidak didukung dalam output perintah. [describe-stack-refactor](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-refactor.html) 
+ Sumber daya berikut tidak didukung untuk pemfaktoran ulang tumpukan:
  + `AWS::ACMPCA::Certificate`
  + `AWS::ACMPCA::CertificateAuthority`
  + `AWS::ACMPCA::CertificateAuthorityActivation`
  + `AWS::ApiGateway::BasePathMapping`
  + `AWS::ApiGateway::Method`
  + `AWS::AppConfig::ConfigurationProfile`
  + `AWS::AppConfig::Deployment`
  + `AWS::AppConfig::Environment`
  + `AWS::AppConfig::Extension`
  + `AWS::AppConfig::ExtensionAssociation`
  + `AWS::AppStream::DirectoryConfig`
  + `AWS::AppStream::StackFleetAssociation`
  + `AWS::AppStream::StackUserAssociation`
  + `AWS::AppStream::User`
  + `AWS::BackupGateway::Hypervisor`
  + `AWS::CertificateManager::Certificate`
  + `AWS::CloudFormation::CustomResource`
  + `AWS::CloudFormation::Macro`
  + `AWS::CloudFormation::WaitCondition`
  + `AWS::CloudFormation::WaitConditionHandle`
  + `AWS::CodeDeploy::DeploymentGroup`
  + `AWS::CodePipeline::CustomActionType`
  + `AWS::Cognito::UserPoolRiskConfigurationAttachment`
  + `AWS::Cognito::UserPoolUICustomizationAttachment`
  + `AWS::Cognito::UserPoolUserToGroupAttachment`
  + `AWS::Config::ConfigRule`
  + `AWS::Config::ConfigurationRecorder`
  + `AWS::Config::DeliveryChannel`
  + `AWS::DataBrew::Dataset`
  + `AWS::DataBrew::Job`
  + `AWS::DataBrew::Project`
  + `AWS::DataBrew::Recipe`
  + `AWS::DataBrew::Ruleset`
  + `AWS::DataBrew::Schedule`
  + `AWS::DataZone::DataSource`
  + `AWS::DataZone::Environment`
  + `AWS::DataZone::EnvironmentBlueprintConfiguration`
  + `AWS::DataZone::EnvironmentProfile`
  + `AWS::DataZone::Project`
  + `AWS::DataZone::SubscriptionTarget`
  + `AWS::DirectoryService::MicrosoftAD`
  + `AWS::DynamoDB::GlobalTable`
  + `AWS::EC2::CustomerGateway`
  + `AWS::EC2::EIP`
  + `AWS::EC2::LaunchTemplate`
  + `AWS::EC2::NetworkInterfacePermission`
  + `AWS::EC2::PlacementGroup`
  + `AWS::EC2::SpotFleet`
  + `AWS::EC2::VPCDHCPOptionsAssociation`
  + `AWS::EC2::VolumeAttachment`
  + `AWS::EMR::Cluster`
  + `AWS::EMR::InstanceFleetConfig`
  + `AWS::EMR::InstanceGroupConfig`
  + `AWS::ElastiCache::CacheCluster`
  + `AWS::ElastiCache::ReplicationGroup`
  + `AWS::ElastiCache::SecurityGroup`
  + `AWS::ElastiCache::SecurityGroupIngress`
  + `AWS::ElasticBeanstalk::ConfigurationTemplate`
  + `AWS::ElasticLoadBalancing::LoadBalancer`
  + `AWS::ElasticLoadBalancingV2::ListenerCertificate`
  + `AWS::Elasticsearch::Domain`
  + `AWS::FIS::ExperimentTemplate`
  + `AWS::Glue::Schema`
  + `AWS::GuardDuty::IPSet`
  + `AWS::GuardDuty::PublishingDestination`
  + `AWS::GuardDuty::ThreatIntelSet`
  + `AWS::IAM::AccessKey`
  + `AWS::IAM::UserToGroupAddition`
  + `AWS::ImageBuilder::Component`
  + `AWS::IoT::PolicyPrincipalAttachment`
  + `AWS::IoT::ThingPrincipalAttachment`
  + `AWS::IoTFleetWise::Campaign`
  + `AWS::IoTWireless::WirelessDeviceImportTask`
  + `AWS::Lambda::EventInvokeConfig`
  + `AWS::Lex::BotVersion`
  + `AWS::M2::Application`
  + `AWS::MSK::Configuration`
  + `AWS::MSK::ServerlessCluster`
  + `AWS::Maester::DocumentType`
  + `AWS::MediaTailor::Channel`
  + `AWS::NeptuneGraph::PrivateGraphEndpoint`
  + `AWS::Omics::AnnotationStore`
  + `AWS::Omics::ReferenceStore`
  + `AWS::Omics::SequenceStore`
  + `AWS::OpenSearchServerless::Collection`
  + `AWS::OpsWorks::App`
  + `AWS::OpsWorks::ElasticLoadBalancerAttachment`
  + `AWS::OpsWorks::Instance`
  + `AWS::OpsWorks::Layer`
  + `AWS::OpsWorks::Stack`
  + `AWS::OpsWorks::UserProfile`
  + `AWS::OpsWorks::Volume`
  + `AWS::PCAConnectorAD::Connector`
  + `AWS::PCAConnectorAD::DirectoryRegistration`
  + `AWS::PCAConnectorAD::Template`
  + `AWS::PCAConnectorAD::TemplateGroupAccessControlEntry`
  + `AWS::Panorama::PackageVersion`
  + `AWS::QuickSight::Theme`
  + `AWS::RDS::DBSecurityGroup`
  + `AWS::RDS::DBSecurityGroupIngress`
  + `AWS::Redshift::ClusterSecurityGroup`
  + `AWS::Redshift::ClusterSecurityGroupIngress`
  + `AWS::RefactorSpaces::Environment`
  + `AWS::RefactorSpaces::Route`
  + `AWS::RefactorSpaces::Service`
  + `AWS::RoboMaker::RobotApplication`
  + `AWS::RoboMaker::SimulationApplication`
  + `AWS::Route53::RecordSet`
  + `AWS::Route53::RecordSetGroup`
  + `AWS::SDB::Domain`
  + `AWS::SageMaker::InferenceComponen`
  + `AWS::ServiceCatalog::PortfolioPrincipalAssociation`
  + `AWS::ServiceCatalog::PortfolioProductAssociation`
  + `AWS::ServiceCatalog::PortfolioShare`
  + `AWS::ServiceCatalog::TagOptionAssociation`
  + `AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation`
  + `AWS::ServiceCatalogAppRegistry::ResourceAssociation`
  + `AWS::StepFunctions::StateMachineVersion`
  + `AWS::Synthetics::Canary`
  + `AWS::VoiceID::Domain`
  + `AWS::WAF::ByteMatchSet`
  + `AWS::WAF::IPSet`
  + `AWS::WAF::Rule`
  + `AWS::WAF::SizeConstraintSet`
  + `AWS::WAF::SqlInjectionMatchSet`
  + `AWS::WAF::WebACL`
  + `AWS::WAF::XssMatchSet`
  + `AWS::WAFv2::IPSet`
  + `AWS::WAFv2::RegexPatternSet`
  + `AWS::WAFv2::RuleGroup`
  + `AWS::WAFv2::WebACL`
  + `AWS::WorkSpaces::Workspace`