

# スタックデプロイを検証する
<a name="validate-stack-deployments"></a>

デプロイ前検証では、CloudFormation の以前のリソースの前に、潜在的なデプロイの問題を特定して解決することができます。デプロイ前検証は、スタックの作成、スタックの更新、変更セットの作成オペレーションで自動的に実行され、一般的なエラーを数秒で検出します。

**Topics**
+ [デプロイ前検証の仕組み](#validate-stack-deployments-how-it-works)
+ [考慮事項](#validate-stack-deployments-considerations)
+ [前提条件](#validate-stack-deployments-prerequisites)
+ [デプロイ前検証を無効化する](#validate-stack-deployments-disable)
+ [スタックデプロイを検証する (コンソール)](#validate-stack-deployments-console)
+ [スタックデプロイを検証する (AWS CLI)](#validate-stack-deployments-cli)
+ [検証タイプ](#validate-stack-deployments-validation-types)
+ [リソースの制限](#validate-stack-deployments-resource-limitations)

## デプロイ前検証の仕組み
<a name="validate-stack-deployments-how-it-works"></a>

デプロイ前検証には次のフェーズが含まれます。

1. **スタックオペレーションを開始する** – 通常どおり、スタックの作成、スタックの更新、変更セットの作成を行います。デプロイ前検証は、3 つのオペレーションすべてでデフォルトで有効になっています。

1. **検証を実行する** – CloudFormation は、テンプレートとターゲット環境に対して複数の検証チェックを実行します。CloudFormation は、6 種類のデプロイ前検証をサポートしています。プロパティ構文の検証とリソース名の競合検出は、サポートされているすべてのオペレーションで実行されます。変更セットの作成時にのみ 4 つの追加の検証 (空の S3 バケットの検証、サービスクォータチェック、レコーダーの競合検出、ECR リポジトリの削除の準備状況) が実行されます。

1. **検証結果を確認する** – CloudFormation は、テンプレート内の問題の場所を正確に示すなど、手動テンプレートデバッグを排除して、見つかった問題に関する詳細なフィードバックを提供します。

1. **問題を解決する** – テンプレートを更新するか、デプロイに進む前に競合を解決することで、特定された問題に対処します。

1. **自信を持って実行する** – 一般的な障害シナリオが事前に検証されていることを理解して変更セットをデプロイできます。

**注記**  
スタックの作成オペレーションとスタックの更新オペレーションの場合、検証はオペレーション自体の一部として実行されます。FAIL モードで検証が失敗した場合、リソースがプロビジョニングされる前にオペレーションが停止し、スタックのステータスに検証の失敗が反映されます。変更セットの場合、変更セットのステータスは `FAILED` と表示されます。

## 考慮事項
<a name="validate-stack-deployments-considerations"></a>

デプロイ前検証を使用する際は、次の点に注意してください。
+ デプロイ前検証は、一般的なデプロイ障害シナリオに焦点を当てています。それによってデプロイが成功することは保証されませんが、一般的な障害の可能性は低下します。
+ 検証モードの動作は異なります:
  + **FAIL モード**は、検証でエラーが検出された場合にリソースがプロビジョニングされる前にオペレーションを停止します。CreateStack と UpdateStack の場合、オペレーションは失敗し、スタックのステータスには検証の失敗が反映されます。CreateChangeSet の場合、変更セットのステータスは FAILED と表示されます。これは、プロパティ構文エラーとリソース命名競合に適用されます。
  + **WARN モード**では、検証障害にもかかわらず変更セットの作成が成功でき、開発者が実行前に確認して対処できる警告が提供されます。これは、手動介入によって解決できる場合がある S3 バケットの空などの制約違反に適用されます。
+ 変更セットオペレーションの場合、検証結果は特定の変更セットに関連付けられます。テンプレートを変更する場合は、新しい変更セットを作成して、更新された検証結果を取得します。CreateStack および UpdateStack オペレーションの場合は、オペレーション ID を指定して `describe-events` コマンドを使用して検証結果にアクセスします。
+ S3 バケット検証は、削除を防ぐ可能性のあるバケットポリシーやその他の制約ではなく、オブジェクトの存在のみをチェックします。
+ デプロイ前検証では、検証の実行中にスタックの作成とスタックの更新オペレーションにわずかな追加のレイテンシーが生じます。一般的に、これは数秒です。特定のオペレーションの検証をスキップする必要がある場合は、`DisableValidation` パラメータを使用します。

## 前提条件
<a name="validate-stack-deployments-prerequisites"></a>

デプロイ前検証を使用するには、以下が必要です:
+ アカウントでスタックの作成、スタックの更新、または変更セットの作成、およびリソースの読み取りを行うために必要な IAM アクセス許可。変更セットの作成中に実行される検証チェックには、次の追加のアクセス許可が必要です。
  + **サービスクォータチェック** – `cloudwatch:GetMetricData`、`lambda:GetAccountSettings`、`servicequotas:GetServiceQuota`、`ec2:DescribeSecurityGroups`、`iam:GetAccountSummary`
  + ** レコーダーの競合チェック** – `config:ListConfigurationRecorders`
  + **空の S3 バケットと ECR リポジトリのチェック** – `s3:ListBucketV2` と `ecr:ListImages`
+ スタックがデプロイされている AWS リージョン へのアクセス。
+ デプロイ前に検証する CloudFormation テンプレート。

## デプロイ前検証を無効化する
<a name="validate-stack-deployments-disable"></a>

デプロイ前検証はデフォルトで実行されます。特定のオペレーションの検証をスキップするには、`DisableValidation` パラメータを使用します。

以下の状況では検証を無効にします。
+ 他の方法 (`cfn-lint`、`cdk validate`、CI チェックなど) でテンプレートが既に検証されている場合
+ 時間的制約のあるデプロイでオペレーションのレイテンシーを最小限に抑える必要がある場合
+ 既知の誤検出がデプロイをブロックしていて、続行する必要がある場合

AWS CLI の例：

```
aws cloudformation create-stack --stack-name {{MyStack}} --template-body file://template.yaml --disable-validation
```

```
aws cloudformation update-stack --stack-name {{MyStack}} --template-body file://template.yaml --disable-validation
```

API: `CreateStack` または `UpdateStack` の API コールで `DisableValidation` パラメータを `true` に設定します。

**注記**  
検証を無効にすると、CloudFormation はリソースのプロビジョニングを試みるまで一般的なエラーを検出しません。

## スタックデプロイを検証する (コンソール)
<a name="validate-stack-deployments-console"></a>

デプロイ前検証は、CreateStack および UpdateStack オペレーションで自動的に実行されます。追加の手順は必要ありません。

**スタックの作成時または更新時に検証するには**

1. 通常どおりにスタックを作成または更新します。

1. 検証でエラーが検出されると、プロビジョニングが開始される前にオペレーションが停止します。スタックのステータスには、検証の失敗が反映されます。

1. 検証結果を確認するには、スタックの **[イベント]** タブを開き、オペレーション ID を選択するか、バナーまたは **[ステータスの理由]** 列のリンクを選択します。オペレーションビューページが **[デプロイ検証]** タブに直接開き、検証の詳細 (論理 ID、リソースタイプ、検証タイプ、モード、ステータスの理由など) が表示されます。

1. 特定された問題をテンプレートで修正し、オペレーションを再試行します。

### 変更セットを使用して検証する (コンソール)
<a name="validate-stack-deployments-console-changeset"></a>

変更セットを使用して、デプロイ前にテンプレートを検証することもできます。変更セットは、変更セットの作成時にのみ使用できる WARN モードの検証 (空の S3 バケット、サービスクォータ、Config Recorder の競合、ECR リポジトリの削除の準備状況) を始めとする 6 つの検証タイプすべてをサポートします。変更セットを使用して、新しいスタックを作成する前に検証することや、既存のスタックの更新を検証することができます。

**変更セットを使用して検証するには**

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. 画面の上部のナビゲーションバーで、スタックが所在する AWS リージョン を選択します。

1. **[Stacks]** ページで、変更セットを作成する実行中のスタックを選択します。

1. スタックの詳細ペインで、**[スタックを更新する]**、**[変更セットを作成する]** を順に選択します。

1. [**{{stack-name}} の変更セットを作成する**] ページで、更新されたテンプレートをアップロードするか、テンプレートソースを指定します。

1. **[次へ]** を選択して、残りの変更セット設定ステップに進みます。

1. テンプレートに IAM リソースが含まれる場合、[**機能**] で[**I acknowledge that CloudFormation might create IAM resources (CloudFormation が IAM リソースを作成する可能性があることを確認します)**] を選択します。IAM リソースは、AWS アカウントのアクセス許可を変更できます。これらのリソースを確認し、意図したアクションのみを許可していることを確認してください。詳細については、「[CloudFormation テンプレートの IAM リソースの承認](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities)」を参照してください。

1. **[確認]** ページで、**[変更セットを作成する]** をクリックします。

1. CloudFormation が変更セットを作成し、検証チェックを実行します。**[デプロイ検証]** タブで検証結果を確認します。

1. 検証に合格した場合、または警告に満足した場合は、**[変更セットを実行する]** を選択して変更をデプロイします。

1. 検証に失敗した場合は、問題を修正し、新しい変更セットを作成して、デプロイを再検証します。

## スタックデプロイを検証する (AWS CLI)
<a name="validate-stack-deployments-cli"></a>

デプロイ前検証は、`create-stack` と `update-stack` のコマンドで自動的に実行されます。

**スタックを作成して検証を実行する**  
次のコマンドを使用してスタックを作成します。デプロイ前検証が自動的に実行されます。

```
aws cloudformation create-stack \
  --stack-name {{MyStack}} \
  --template-body {{file://template.yaml}}
```

**スタックを更新して検証を実行する**  
次のコマンドを使用してスタックを更新します。デプロイ前検証が自動的に実行されます。

```
aws cloudformation update-stack \
  --stack-name {{MyStack}} \
  --template-body {{file://updated-template.yaml}}
```

**検証結果を表示する**  
次のコマンドを使用してスタックオペレーションの検証結果を表示します。

```
aws cloudformation describe-events \
  --stack-name {{MyStack}}
```

検証エラーの出力例:

```
{
   "OperationEvents":[
      {
         "EventId":"9b5c9a29-4704-4ad0-8082-afb49418d55b",
         "StackId":"arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/c3908380-b357-11f0-a97f-0ad08f35df65",
         "OperationId":"f558b823-e1e3-4de3-a222-e6b930ddcad4",
         "OperationType":"CREATE_STACK",
         "OperationStatus":"FAILED",
         "EventType":"STACK_EVENT",
         "Timestamp":"2025-10-27T17:10:02.923Z",
         "StartTime":"2025-10-27T17:09:57.537Z",
         "EndTime":"2025-10-27T17:10:02.923Z"
      },
      {
         "EventId":"2d8c3262-3468-4283-82fb-6e780e9e4f1d",
         "StackId":"arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/c3908380-b357-11f0-a97f-0ad08f35df65",
         "OperationId":"f558b823-e1e3-4de3-a222-e6b930ddcad4",
         "OperationType":"CREATE_STACK",
         "EventType":"VALIDATION_ERROR",
         "LogicalResourceId":"NotificationBucket",
         "PhysicalResourceId":"",
         "ResourceType":"AWS::S3::Bucket",
         "Timestamp":"2025-10-27T17:10:02.461Z",
         "ValidationFailureMode":"FAIL",
         "ValidationName":"PROPERTY_VALIDATION",
         "ValidationStatus":"FAILED",
         "ValidationStatusReason":"#/NotificationConfiguration/QueueConfigurations/0: required key [Event] not found",
         "ValidationPath":"/Resources/NotificationBucket/Properties/NotificationConfiguration/QueueConfigurations/0"
      }
   ]
}
```

### 変更セットを使用して検証する (AWS CLI)
<a name="validate-stack-deployments-cli-changeset"></a>

変更セットには、直接スタックオペレーションでは利用できない WARN モードの検証結果も表示されます。

**変更セットを使用して検証するには**

1. [create-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) コマンドを使用します。

   ```
   aws cloudformation create-change-set \
     --stack-name {{MyStack}} \
     --change-set-name {{MyChangeSet}} \
     --change-set-type "CREATE" \
     --template-body {{file://updated-template.yaml}}
   ```

   コマンドは変更セット ARN とスタック ARN の両方を返します。

1. [describe-events](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-events.html) コマンドを変更セット ARN とともに使用して、検証のステータスと結果を確認します。

   ```
   aws cloudformation describe-events \
     --change-set-name "{{arn:aws:cloudformation:us-east-1:123456789012:changeSet/MyChangeSet/94498df5-1afb-43b1-9869-9f82b2d877ac}}"
   ```

1. テンプレートを更新して検証エラーに対処してから、新しい変更セットを作成します。

1. 検証が合格した後に変更セットを実行します。

   ```
   aws cloudformation execute-change-set \
     --change-set-name {{MyChangeSet}} \
     --stack-name {{MyStack}}
   ```

## 検証タイプ
<a name="validate-stack-deployments-validation-types"></a>

デプロイ前検証には、次のタイプのチェックが含まれます。
+ **プロパティ構文の検証** – AWS リソーススキーマに対してリソースプロパティを検証します。必要なプロパティと有効なプロパティ値をチェックし、非推奨またはサポートされていないプロパティの組み合わせを特定します。
+ **リソース名の競合検出** – 既存の AWS リソースとの命名競合をチェックします。リソース名が AWS 命名要件を満たしていることを検証し、デプロイの試行前に潜在的な競合を特定します。
+ **S3 バケットの空の検証** – オブジェクトを含む S3 バケットを削除しようとすると警告します。削除の影響を評価し、一般的な S3 削除障害を防ぐのに役立つオブジェクト数を提供します。
+ **サービスクォータの検証** – リソースを作成することによって AWS サービスクォータを超過するかどうかを確認します。現在、この検証は変更セットの作成時にのみ実行され、WARN モードで動作します。オペレーションが進行し、潜在的なクォータの問題に関するアラートが表示されます。
+ **レコーダーの競合検出** – 記録が有効になっていないアカウントにテンプレートによってルールが追加されるか、既に記録がアクティブなアカウントでレコーダーが定義されると警告します。現在、この検証は変更セットの作成時にのみ実行され、WARN モードで動作します。
+ **ECR リポジトリの削除準備** – 削除の対象となる ECR リポジトリが空であること、または適切な強制削除設定があることを検証します。現在、この検証は変更セットの作成時にのみ実行され、WARN モードで動作します。

各検証タイプ、そのモード、実行されるオペレーションを次の表に示します。


| 検証タイプ | モード | 次で利用可能 | 
| --- | --- | --- | 
| プロパティ構文の検証 | FAIL | CreateStack、UpdateStack、CreateChangeSet | 
| リソース名の競合 (RAE) | FAIL | CreateStack、UpdateStack、CreateChangeSet | 
| 空の S3 バケット | WARN | CreateChangeSet | 
| サービスクォータ | WARN | CreateChangeSet | 
|  レコーダーの競合 | WARN | CreateChangeSet | 
| ECR リポジトリの削除の準備状況 | WARN | CreateChangeSet | 

各検証タイプは、特定のエラーメッセージおよび問題を迅速に解決するのに役立つテンプレート内のエラーの場所を提供します。

## リソースの制限
<a name="validate-stack-deployments-resource-limitations"></a>

次のリソースタイプは、デプロイ前検証ではサポートされていません。
+ `AWS::ApiGatewayV2::ApiGatewayManagedOverrides`
+ `AWS::ApiGatewayV2::Stage`
+ `AWS::AppMesh::GatewayRoute`
+ `AWS::AppMesh::Mesh`
+ `AWS::AppMesh::Route`
+ `AWS::AppMesh::VirtualGateway`
+ `AWS::AppMesh::VirtualNode`
+ `AWS::AppMesh::VirtualRouter`
+ `AWS::AppMesh::VirtualService`
+ `AWS::AppStream::Fleet`
+ `AWS::AppStream::Stack`
+ `AWS::AppStream::StackFleetAssociation`
+ `AWS::AppStream::StackUserAssociation`
+ `AWS::AppStream::User`
+ `AWS::AppSync::ApiCache`
+ `AWS::AppSync::ApiKey`
+ `AWS::AppSync::GraphQLSchema`
+ `AWS::AutoScalingPlans::ScalingPlan`
+ `AWS::Budgets::Budget`
+ `AWS::CertificateManager::Certificate`
+ `AWS::Cloud9::EnvironmentEC2`
+ `AWS::CloudFormation::CustomResource`
+ `AWS::CloudFormation::Macro`
+ `AWS::CloudFormation::WaitCondition`
+ `AWS::CloudFormation::WaitConditionHandle`
+ `AWS::CloudFront::StreamingDistribution`
+ `AWS::CloudWatch::AnomalyDetector`
+ `AWS::CloudWatch::InsightRule`
+ `AWS::CodeBuild::Project`
+ `AWS::CodeBuild::ReportGroup`
+ `AWS::CodeBuild::SourceCredential`
+ `AWS::CodeCommit::Repository`
+ `AWS::CodeDeploy::DeploymentGroup`
+ `AWS::CodeStar::GitHubRepository`
+ `AWS::Config::ConfigurationRecorder`
+ `AWS::Config::DeliveryChannel`
+ `AWS::Config::OrganizationConfigRule`
+ `AWS::Config::RemediationConfiguration`
+ `AWS::DAX::Cluster`
+ `AWS::DAX::ParameterGroup`
+ `AWS::DAX::SubnetGroup`
+ `AWS::DirectoryService::MicrosoftAD`
+ `AWS::DLM::LifecyclePolicy`
+ `AWS::DMS::Certificate`
+ `AWS::DMS::Endpoint`
+ `AWS::DMS::EventSubscription`
+ `AWS::DMS::ReplicationInstance`
+ `AWS::DMS::ReplicationSubnetGroup`
+ `AWS::DMS::ReplicationTask`
+ `AWS::DocDB::DBCluster`
+ `AWS::DocDB::DBClusterParameterGroup`
+ `AWS::DocDB::DBInstance`
+ `AWS::DocDB::DBSubnetGroup`
+ `AWS::DocDB::EventSubscription`
+ `AWS::EC2::ClientVpnAuthorizationRule`
+ `AWS::EC2::ClientVpnEndpoint`
+ `AWS::EC2::ClientVpnRoute`
+ `AWS::EC2::ClientVpnTargetNetworkAssociation`
+ `AWS::EC2::NetworkInterfacePermission`
+ `AWS::ElastiCache::CacheCluster`
+ `AWS::ElastiCache::ReplicationGroup`
+ `AWS::ElastiCache::SecurityGroup`
+ `AWS::ElastiCache::SecurityGroupIngress`
+ `AWS::ElasticLoadBalancing::LoadBalancer`
+ `AWS::ElasticLoadBalancingV2::ListenerCertificate`
+ `AWS::Elasticsearch::Domain`
+ `AWS::EMR::Cluster`
+ `AWS::EMR::InstanceFleetConfig`
+ `AWS::EMR::InstanceGroupConfig`
+ `AWS::FSx::FileSystem`
+ `AWS::FSx::Snapshot`
+ `AWS::FSx::StorageVirtualMachine`
+ `AWS::FSx::Volume`
+ `AWS::Glue::Classifier`
+ `AWS::Glue::Connection`
+ `AWS::Glue::CustomEntityType`
+ `AWS::Glue::DataCatalogEncryptionSettings`
+ `AWS::Glue::DataQualityRuleset`
+ `AWS::Glue::DevEndpoint`
+ `AWS::Glue::MLTransform`
+ `AWS::Glue::Partition`
+ `AWS::Glue::SecurityConfiguration`
+ `AWS::Glue::Table`
+ `AWS::Glue::TableOptimizer`
+ `AWS::Glue::Workflow`
+ `AWS::Greengrass::ConnectorDefinition`
+ `AWS::Greengrass::ConnectorDefinitionVersion`
+ `AWS::Greengrass::CoreDefinition`
+ `AWS::Greengrass::CoreDefinitionVersion`
+ `AWS::Greengrass::DeviceDefinition`
+ `AWS::Greengrass::DeviceDefinitionVersion`
+ `AWS::Greengrass::FunctionDefinition`
+ `AWS::Greengrass::FunctionDefinitionVersion`
+ `AWS::Greengrass::Group`
+ `AWS::Greengrass::GroupVersion`
+ `AWS::Greengrass::LoggerDefinition`
+ `AWS::Greengrass::LoggerDefinitionVersion`
+ `AWS::Greengrass::ResourceDefinition`
+ `AWS::Greengrass::ResourceDefinitionVersion`
+ `AWS::Greengrass::SubscriptionDefinition`
+ `AWS::Greengrass::SubscriptionDefinitionVersion`
+ `AWS::IAM::AccessKey`
+ `AWS::IAM::UserToGroupAddition`
+ `AWS::IoT::PolicyPrincipalAttachment`
+ `AWS::IoT::ThingPrincipalAttachment`
+ `AWS::IoTThingsGraph::FlowTemplate`
+ `AWS::KinesisAnalytics::Application`
+ `AWS::KinesisAnalytics::ApplicationOutput`
+ `AWS::KinesisAnalytics::ApplicationReferenceDataSource`
+ `AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption`
+ `AWS::KinesisAnalyticsV2::ApplicationOutput`
+ `AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource`
+ `AWS::LakeFormation::DataLakeSettings`
+ `AWS::LakeFormation::Permissions`
+ `AWS::LakeFormation::Resource`
+ `AWS::ManagedBlockchain::Member`
+ `AWS::ManagedBlockchain::Node`
+ `AWS::MediaConvert::JobTemplate`
+ `AWS::MediaConvert::Preset`
+ `AWS::MediaConvert::Queue`
+ `AWS::MediaLive::Channel`
+ `AWS::MediaLive::Input`
+ `AWS::MediaLive::InputSecurityGroup`
+ `AWS::MediaStore::Container`
+ `AWS::OpsWorks::App`
+ `AWS::OpsWorks::ElasticLoadBalancerAttachment`
+ `AWS::OpsWorks::Instance`
+ `AWS::OpsWorks::Layer`
+ `AWS::OpsWorks::Stack`
+ `AWS::OpsWorks::UserProfile`
+ `AWS::OpsWorks::Volume`
+ `AWS::Pinpoint::ADMChannel`
+ `AWS::Pinpoint::APNSChannel`
+ `AWS::Pinpoint::APNSSandboxChannel`
+ `AWS::Pinpoint::APNSVoipChannel`
+ `AWS::Pinpoint::APNSVoipSandboxChannel`
+ `AWS::Pinpoint::App`
+ `AWS::Pinpoint::ApplicationSettings`
+ `AWS::Pinpoint::BaiduChannel`
+ `AWS::Pinpoint::Campaign`
+ `AWS::Pinpoint::EmailChannel`
+ `AWS::Pinpoint::EmailTemplate`
+ `AWS::Pinpoint::EventStream`
+ `AWS::Pinpoint::GCMChannel`
+ `AWS::Pinpoint::PushTemplate`
+ `AWS::Pinpoint::Segment`
+ `AWS::Pinpoint::SMSChannel`
+ `AWS::Pinpoint::SmsTemplate`
+ `AWS::Pinpoint::VoiceChannel`
+ `AWS::PinpointEmail::ConfigurationSet`
+ `AWS::PinpointEmail::ConfigurationSetEventDestination`
+ `AWS::PinpointEmail::DedicatedIpPool`
+ `AWS::PinpointEmail::Identity`
+ `AWS::QLDB::Ledger`
+ `AWS::RDS::DBSecurityGroup`
+ `AWS::RDS::DBSecurityGroupIngress`
+ `AWS::Redshift::ClusterSecurityGroup`
+ `AWS::Redshift::ClusterSecurityGroupIngress`
+ `AWS::Route53::RecordSet`
+ `AWS::Route53::RecordSetGroup`
+ `AWS::SageMaker::CodeRepository`
+ `AWS::SageMaker::EndpointConfig`
+ `AWS::SageMaker::Model`
+ `AWS::SageMaker::NotebookInstance`
+ `AWS::SageMaker::NotebookInstanceLifecycleConfig`
+ `AWS::SageMaker::Workteam`
+ `AWS::SDB::Domain`
+ `AWS::ServiceCatalog::AcceptedPortfolioShare`
+ `AWS::ServiceCatalog::LaunchRoleConstraint`
+ `AWS::ServiceCatalog::Portfolio`
+ `AWS::ServiceCatalog::StackSetConstraint`
+ `AWS::ServiceDiscovery::HttpNamespace`
+ `AWS::ServiceDiscovery::Instance`
+ `AWS::ServiceDiscovery::PrivateDnsNamespace`
+ `AWS::ServiceDiscovery::PublicDnsNamespace`
+ `AWS::ServiceDiscovery::Service`
+ `AWS::SES::ReceiptFilter`
+ `AWS::SES::ReceiptRule`
+ `AWS::SES::ReceiptRuleSet`
+ `AWS::SSM::MaintenanceWindow`
+ `AWS::SSM::MaintenanceWindowTarget`
+ `AWS::SSM::MaintenanceWindowTask`
+ `AWS::WAF::ByteMatchSet`
+ `AWS::WAF::IPSet`
+ `AWS::WAF::Rule`
+ `AWS::WAF::SizeConstraintSet`
+ `AWS::WAF::SqlInjectionMatchSet`
+ `AWS::WAF::WebACL`
+ `AWS::WAF::XssMatchSet`
+ `AWS::WAFRegional::ByteMatchSet`
+ `AWS::WAFRegional::GeoMatchSet`
+ `AWS::WAFRegional::IPSet`
+ `AWS::WAFRegional::RateBasedRule`
+ `AWS::WAFRegional::RegexPatternSet`
+ `AWS::WAFRegional::Rule`
+ `AWS::WAFRegional::SizeConstraintSet`
+ `AWS::WAFRegional::SqlInjectionMatchSet`
+ `AWS::WAFRegional::WebACL`
+ `AWS::WAFRegional::WebACLAssociation`
+ `AWS::WAFRegional::XssMatchSet`
+ `AWS::WorkSpaces::Workspace`
+ `AWS::AmazonMQ::ConfigurationAssociation`
+ `AWS::ApiGateway::DomainNameAccessAssociation`
+ `AWS::AppConfig::ExtensionAssociation`
+ `AWS::AppStream::ApplicationEntitlementAssociation`
+ `AWS::AppStream::ApplicationFleetAssociation`
+ `AWS::AppSync::DomainNameApiAssociation`
+ `AWS::AppSync::SourceApiAssociation`
+ `AWS::CleanRooms::ConfiguredTableAssociation`
+ `AWS::CleanRooms::IdNamespaceAssociation`
+ `AWS::CodeGuruReviewer::RepositoryAssociation`
+ `AWS::Cognito::IdentityPoolRoleAttachment`
+ `AWS::Cognito::UserPoolRiskConfigurationAttachment`
+ `AWS::Cognito::UserPoolUICustomizationAttachment`
+ `AWS::Cognito::UserPoolUserToGroupAttachment`
+ `AWS::Connect::IntegrationAssociation`
+ `AWS::Deadline::QueueFleetAssociation`
+ `AWS::Deadline::QueueLimitAssociation`
+ `AWS::EC2::EIPAssociation`
+ `AWS::EC2::EnclaveCertificateIamRoleAssociation`
+ `AWS::EC2::GatewayRouteTableAssociation`
+ `AWS::EC2::IPAMResourceDiscoveryAssociation`
+ `AWS::EC2::IpPoolRouteTableAssociation`
+ `AWS::EC2::LocalGatewayRouteTableVPCAssociation`
+ `AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation`
+ `AWS::EC2::NetworkInterfaceAttachment`
+ `AWS::EC2::RouteServerAssociation`
+ `AWS::EC2::SecurityGroupVpcAssociation`
+ `AWS::EC2::SubnetNetworkAclAssociation`
+ `AWS::EC2::SubnetRouteTableAssociation`
+ `AWS::EC2::TransitGatewayAttachment`
+ `AWS::EC2::TransitGatewayMulticastDomainAssociation`
+ `AWS::EC2::TransitGatewayPeeringAttachment`
+ `AWS::EC2::TransitGatewayRouteTableAssociation`
+ `AWS::EC2::TransitGatewayVpcAttachment`
+ `AWS::EC2::VPCDHCPOptionsAssociation`
+ `AWS::EC2::VPCGatewayAttachment`
+ `AWS::EC2::VolumeAttachment`
+ `AWS::ECS::ClusterCapacityProviderAssociations`
+ `AWS::EKS::PodIdentityAssociation`
+ `AWS::FSx::DataRepositoryAssociation`
+ `AWS::FSx::S3AccessPointAttachment`
+ `AWS::GlobalAccelerator::CrossAccountAttachment`
+ `AWS::LakeFormation::TagAssociation`
+ `AWS::NetworkFirewall::VpcEndpointAssociation`
+ `AWS::NetworkManager::ConnectAttachment`
+ `AWS::NetworkManager::CustomerGatewayAssociation`
+ `AWS::NetworkManager::DirectConnectGatewayAttachment`
+ `AWS::NetworkManager::LinkAssociation`
+ `AWS::NetworkManager::SiteToSiteVpnAttachment`
+ `AWS::NetworkManager::TransitGatewayRouteTableAttachment`
+ `AWS::NetworkManager::VpcAttachment`
+ `AWS::Notifications::ChannelAssociation`
+ `AWS::Notifications::ManagedNotificationAccountContactAssociation`
+ `AWS::Notifications::ManagedNotificationAdditionalChannelAssociation`
+ `AWS::Notifications::OrganizationalUnitAssociation`
+ `AWS::ResourceExplorer2::DefaultViewAssociation`
+ `AWS::Route53Profiles::ProfileAssociation`
+ `AWS::Route53Profiles::ProfileResourceAssociation`
+ `AWS::Route53Resolver::FirewallRuleGroupAssociation`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation`
+ `AWS::Route53Resolver::ResolverRuleAssociation`
+ `AWS::SSM::Association`
+ `AWS::SecretsManager::SecretTargetAttachment`
+ `AWS::SecurityHub::PolicyAssociation`
+ `AWS::ServiceCatalog::PortfolioPrincipalAssociation`
+ `AWS::ServiceCatalog::PortfolioProductAssociation`
+ `AWS::ServiceCatalog::ServiceActionAssociation`
+ `AWS::ServiceCatalog::TagOptionAssociation`
+ `AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation`
+ `AWS::ServiceCatalogAppRegistry::ResourceAssociation`
+ `AWS::VpcLattice::ServiceNetworkResourceAssociation`
+ `AWS::VpcLattice::ServiceNetworkServiceAssociation`
+ `AWS::VpcLattice::ServiceNetworkVpcAssociation`
+ `AWS::WAFv2::WebACLAssociation`
+ `AWS::Wisdom::AssistantAssociation`
+ `AWS::WorkspacesInstances::VolumeAssociation`
+ `AWS::IAM::Policy`
+ `AWS::SNS::TopicPolicy`
+ `AWS::SQS::QueuePolicy`
+ `AWS::EC2::NetworkAclEntry`
+ `AWS::EC2::VPNGatewayRoutePropagation`
+ `AWS::CloudFormation::Stack`
+ `AWS::CloudWatch::MetricStream`
+ `AWS::WorkSpaces::ConnectionAlias`
+ `AWS::IoT::ProvisioningTemplate`
+ `AWS::MediaPackage::Channel`
+ `AWS::CloudFront::OriginRequestPolicy`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfig`
+ `AWS::NetworkManager::TransitGatewayRegistration`
+ `AWS::ImageBuilder::Image`
+ `AWS::Config::ConformancePack`
+ `AWS::S3::AccessPoint`
+ `AWS::CodeStarConnections::Connection`
+ `AWS::CloudFront::CachePolicy`
+ `AWS::FMS::NotificationChannel`
+ `AWS::ImageBuilder::InfrastructureConfiguration`
+ `AWS::Detective::Graph`
+ `AWS::EC2::CarrierGateway`
+ `AWS::CloudWatch::CompositeAlarm`
+ `AWS::CodeArtifact::Repository`
+ `AWS::GroundStation::DataflowEndpointGroup`
+ `AWS::ElasticLoadBalancingV2::Listener`
+ `AWS::ImageBuilder::ImageRecipe`
+ `AWS::NetworkManager::Device`
+ `AWS::Kendra::DataSource`
+ `AWS::Timestream::Database`
+ `AWS::CodeGuruProfiler::ProfilingGroup`
+ `AWS::Lambda::EventSourceMapping`
+ `AWS::ECR::Repository`
+ `AWS::WAFv2::IPSet`
+ `AWS::GameLift::Alias`
+ `AWS::IoTSiteWise::Asset`
+ `AWS::OpsWorksCM::Server`
+ `AWS::IoT::Authorizer`
+ `AWS::WAFv2::RuleGroup`
+ `AWS::NetworkManager::Site`
+ `AWS::ResourceGroups::Group`
+ `AWS::MediaPackage::PackagingConfiguration`
+ `AWS::ImageBuilder::ImagePipeline`
+ `AWS::ECS::TaskDefinition`
+ `AWS::Macie::CustomDataIdentifier`
+ `AWS::MediaPackage::OriginEndpoint`
+ `AWS::Logs::LogGroup`
+ `AWS::CodeArtifact::Domain`
+ `AWS::Kendra::Faq`
+ `AWS::ECS::TaskSet`
+ `AWS::WAFv2::RegexPatternSet`
+ `AWS::ECS::Cluster`
+ `AWS::SSO::Assignment`
+ `AWS::GlobalAccelerator::Listener`
+ `AWS::ServiceCatalog::CloudFormationProvisionedProduct`
+ `AWS::RDS::DBProxy`
+ `AWS::EC2::FlowLog`
+ `AWS::ImageBuilder::Component`
+ `AWS::CloudFront::RealtimeLogConfig`
+ `AWS::NetworkManager::GlobalNetwork`
+ `AWS::RDS::DBProxyTargetGroup`
+ `AWS::WAFv2::WebACL`
+ `AWS::IVS::StreamKey`
+ `AWS::IVS::PlaybackKeyPair`
+ `AWS::Macie::Session`
+ `AWS::Route53::HealthCheck`
+ `AWS::Synthetics::Canary`
+ `AWS::Lambda::CodeSigningConfig`
+ `AWS::EFS::AccessPoint`
+ `AWS::Timestream::Table`
+ `AWS::MediaPackage::PackagingGroup`
+ `AWS::ECS::PrimaryTaskSet`
+ `AWS::Config::ConfigurationAggregator`
+ `AWS::GroundStation::Config`
+ `AWS::IoTSiteWise::AssetModel`
+ `AWS::SES::ConfigurationSet`
+ `AWS::ImageBuilder::DistributionConfiguration`
+ `AWS::Config::OrganizationConformancePack`
+ `AWS::EC2::LocalGatewayRoute`
+ `AWS::KMS::Key`
+ `AWS::Detective::MemberInvitation`
+ `AWS::EKS::FargateProfile`
+ `AWS::MediaPackage::Asset`
+ `AWS::GlobalAccelerator::EndpointGroup`
+ `AWS::Macie::FindingsFilter`
+ `AWS::IoT::Certificate`
+ `AWS::SageMaker::MonitoringSchedule`
+ `AWS::IVS::Channel`
+ `AWS::Kendra::Index`
+ `AWS::EventSchemas::RegistryPolicy`
+ `AWS::KinesisFirehose::DeliveryStream`
+ `AWS::GlobalAccelerator::Accelerator`
+ `AWS::EC2::PrefixList`
+ `AWS::GameLift::GameServerGroup`
+ `AWS::NetworkManager::Link`
+ `AWS::EFS::FileSystem`
+ `AWS::Route53::HostedZone`
+ `AWS::GroundStation::MissionProfile`
+ `AWS::KMS::Alias`
+ `AWS::FMS::Policy`
+ `AWS::SSO::PermissionSet`
+ `AWS::StepFunctions::StateMachine`
+ `AWS::QLDB::Stream`
+ `AWS::IoTSiteWise::Gateway`
+ `AWS::ECS::Service`
+ `AWS::ECS::CapacityProvider`
+ `AWS::EC2::SecurityGroup`
+ `AWS::EC2::SecurityGroupIngress`
+ `AWS::EC2::SecurityGroupEgress`
+ `AWS::EC2::EC2Fleet`
+ `AWS::IAM::Group`
+ `AWS::IAM::Role`
+ `AWS::IAM::User`
+ `AWS::ApiGateway::GatewayResponse`
+ `AWS::S3::BucketPolicy`
+ `AWS::SNS::Topic`
+ `AWS::SNS::Subscription`
+ `AWS::RDS::DBInstance`
+ `AWS::RDS::DBParameterGroup`
+ `AWS::RDS::DBCluster`
+ `AWS::RDS::DBClusterParameterGroup`
+ `AWS::RDS::DBSubnetGroup`
+ `AWS::RDS::EventSubscription`
+ `AWS::RDS::GlobalCluster`
+ `AWS::RDS::OptionGroup`
+ `AWS::Neptune::DBInstance`
+ `AWS::Neptune::DBParameterGroup`
+ `AWS::Neptune::DBCluster`
+ `AWS::Neptune::DBClusterParameterGroup`
+ `AWS::Neptune::DBSubnetGroup`
+ `AWS::Redshift::Cluster`
+ `AWS::Redshift::ClusterParameterGroup`
+ `AWS::Redshift::ClusterSubnetGroup`
+ `AWS::Redshift::EndpointAccess`
+ `AWS::Redshift::EndpointAuthorization`
+ `AWS::Redshift::EventSubscription`
+ `AWS::Redshift::ScheduledAction`
+ `AWS::ElastiCache::SubnetGroup`
+ `AWS::ApiGateway::BasePathMapping`
+ `AWS::ApiGatewayV2::DomainName`
+ `AWS::ApplicationAutoScaling::ScalableTarget`
+ `AWS::Connect::ApprovedOrigin`
+ `AWS::EKS::Cluster`
+ `AWS::IAM::InstanceProfile`
+ `AWS::Lambda::EventInvokeConfig`