Repository: aws-cloudformation/rain
Pull request #619 (2024-12-17 19:53:35)

Version 1.20.2
Added a unit test to catch build issues with bad schemas



Patch:
diff --git a/docs/index.md b/docs/index.md
index 06b96507..92f9e2e8 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -36,4 +36,4 @@ Rain is a command line tool for working with AWS CloudFormation templates and st
 * [rain tree](rain_tree.md)	 - Find dependencies of Resources and Outputs in a local template
 * [rain watch](rain_watch.md)	 - Display an updating view of a CloudFormation stack
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_bootstrap.md b/docs/rain_bootstrap.md
index dfd6d68e..ae84fce3 100644
--- a/docs/rain_bootstrap.md
+++ b/docs/rain_bootstrap.md
@@ -33,4 +33,4 @@ rain bootstrap
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_build.md b/docs/rain_build.md
index 1fa0a6d8..04946f77 100644
--- a/docs/rain_build.md
+++ b/docs/rain_build.md
@@ -41,4 +41,4 @@ rain build [<resource type>] or <prompt>
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cat.md b/docs/rain_cat.md
index b29c2398..8f5e6593 100644
--- a/docs/rain_cat.md
+++ b/docs/rain_cat.md
@@ -35,4 +35,4 @@ rain cat <stack>
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cc.md b/docs/rain_cc.md
index a65de5bd..b8e9c65f 100644
--- a/docs/rain_cc.md
+++ b/docs/rain_cc.md
@@ -33,4 +33,4 @@ You must pass the --experimental (-x) flag to use this command, to acknowledge t
 * [rain cc rm](rain_cc_rm.md)	 - Delete a deployment created by cc deploy (Experimental!)
 * [rain cc state](rain_cc_state.md)	 - Download the state file for a template deployed with cc deploy
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cc_deploy.md b/docs/rain_cc_deploy.md
index d72ea64c..c4e50e06 100644
--- a/docs/rain_cc_deploy.md
+++ b/docs/rain_cc_deploy.md
@@ -40,4 +40,4 @@ rain cc deploy <template> <name>
 
 * [rain cc](rain_cc.md)	 - Interact with templates using Cloud Control API instead of CloudFormation
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cc_drift.md b/docs/rain_cc_drift.md
index 6f97da40..4ce22da6 100644
--- a/docs/rain_cc_drift.md
+++ b/docs/rain_cc_drift.md
@@ -33,4 +33,4 @@ rain cc drift <name>
 
 * [rain cc](rain_cc.md)	 - Interact with templates using Cloud Control API instead of CloudFormation
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cc_rm.md b/docs/rain_cc_rm.md
index fcebbf95..8b39fcd5 100644
--- a/docs/rain_cc_rm.md
+++ b/docs/rain_cc_rm.md
@@ -33,4 +33,4 @@ rain cc rm <name>
 
 * [rain cc](rain_cc.md)	 - Interact with templates using Cloud Control API instead of CloudFormation
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_cc_state.md b/docs/rain_cc_state.md
index 141b8656..8d2297c2 100644
--- a/docs/rain_cc_state.md
+++ b/docs/rain_cc_state.md
@@ -33,4 +33,4 @@ rain cc state <name>
 
 * [rain cc](rain_cc.md)	 - Interact with templates using Cloud Control API instead of CloudFormation
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_console.md b/docs/rain_console.md
index 2a5d78ae..7e11e5f2 100644
--- a/docs/rain_console.md
+++ b/docs/rain_console.md
@@ -39,4 +39,4 @@ rain console [stack]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_deploy.md b/docs/rain_deploy.md
index bb26d7dd..4daa3b40 100644
--- a/docs/rain_deploy.md
+++ b/docs/rain_deploy.md
@@ -87,4 +87,4 @@ rain deploy <template> [stack]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_diff.md b/docs/rain_diff.md
index 275fb787..87d904e5 100644
--- a/docs/rain_diff.md
+++ b/docs/rain_diff.md
@@ -28,4 +28,4 @@ rain diff <from> <to>
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_fmt.md b/docs/rain_fmt.md
index 597b0600..321a7169 100644
--- a/docs/rain_fmt.md
+++ b/docs/rain_fmt.md
@@ -37,4 +37,4 @@ rain fmt <filename>...
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_forecast.md b/docs/rain_forecast.md
index 5279a245..f2c5e4fd 100644
--- a/docs/rain_forecast.md
+++ b/docs/rain_forecast.md
@@ -55,4 +55,4 @@ rain forecast --experimental <template> [stackName]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_info.md b/docs/rain_info.md
index 2dba934b..3a54fc32 100644
--- a/docs/rain_info.md
+++ b/docs/rain_info.md
@@ -30,4 +30,4 @@ rain info
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_logs.md b/docs/rain_logs.md
index af4a250d..482a8dac 100644
--- a/docs/rain_logs.md
+++ b/docs/rain_logs.md
@@ -37,4 +37,4 @@ rain logs <stack> (<resource>)
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_ls.md b/docs/rain_ls.md
index 97766b55..8bfd3542 100644
--- a/docs/rain_ls.md
+++ b/docs/rain_ls.md
@@ -31,4 +31,4 @@ rain ls <stack> [changeset]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_merge.md b/docs/rain_merge.md
index d879a740..2ab21d5e 100644
--- a/docs/rain_merge.md
+++ b/docs/rain_merge.md
@@ -30,4 +30,4 @@ rain merge <template> <template> ...
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_module.md b/docs/rain_module.md
index 779d440b..102ee181 100644
--- a/docs/rain_module.md
+++ b/docs/rain_module.md
@@ -31,4 +31,4 @@ The rain module command can be used to publish modules to CodeArtifact, and to i
 * [rain module install](rain_module_install.md)	 - Install a package of Rain modules from CodeArtifact
 * [rain module publish](rain_module_publish.md)	 - Publish a directory of Rain modules to CodeArtifact
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_module_bootstrap.md b/docs/rain_module_bootstrap.md
index 9e869cd7..12ec89c6 100644
--- a/docs/rain_module_bootstrap.md
+++ b/docs/rain_module_bootstrap.md
@@ -29,4 +29,4 @@ rain module bootstrap [flags]
 
 * [rain module](rain_module.md)	 - Interact with Rain modules in CodeArtifact
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_module_install.md b/docs/rain_module_install.md
index 20b7535e..00a55229 100644
--- a/docs/rain_module_install.md
+++ b/docs/rain_module_install.md
@@ -30,4 +30,4 @@ rain module install <name> [flags]
 
 * [rain module](rain_module.md)	 - Interact with Rain modules in CodeArtifact
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_module_publish.md b/docs/rain_module_publish.md
index c9a1f5f2..9a34974b 100644
--- a/docs/rain_module_publish.md
+++ b/docs/rain_module_publish.md
@@ -30,4 +30,4 @@ rain module publish <name> [flags]
 
 * [rain module](rain_module.md)	 - Interact with Rain modules in CodeArtifact
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_pkg.md b/docs/rain_pkg.md
index 0faf31c4..aa8f4581 100644
--- a/docs/rain_pkg.md
+++ b/docs/rain_pkg.md
@@ -69,4 +69,4 @@ rain pkg <template>
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_rm.md b/docs/rain_rm.md
index ee11b9c1..86093ca6 100644
--- a/docs/rain_rm.md
+++ b/docs/rain_rm.md
@@ -34,4 +34,4 @@ rain rm <stack> [changeset]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_stackset.md b/docs/rain_stackset.md
index 10a1ffaf..ce55b538 100644
--- a/docs/rain_stackset.md
+++ b/docs/rain_stackset.md
@@ -28,4 +28,4 @@ This command manipulates stack sets. It has no action if specific stack set comm
 * [rain stackset ls](rain_stackset_ls.md)	 - List a CloudFormation stack sets in a given region
 * [rain stackset rm](rain_stackset_rm.md)	 - Delete a CloudFormation stack set and/or its instances.
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_stackset_deploy.md b/docs/rain_stackset_deploy.md
index 5c512a59..2028478a 100644
--- a/docs/rain_stackset_deploy.md
+++ b/docs/rain_stackset_deploy.md
@@ -68,4 +68,4 @@ rain stackset deploy <template> [stackset] [flags]
 
 * [rain stackset](rain_stackset.md)	 - This command manipulates stack sets.
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_stackset_ls.md b/docs/rain_stackset_ls.md
index a82314f6..95fc45a9 100644
--- a/docs/rain_stackset_ls.md
+++ b/docs/rain_stackset_ls.md
@@ -31,4 +31,4 @@ rain stackset ls <stack set>
 
 * [rain stackset](rain_stackset.md)	 - This command manipulates stack sets.
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_stackset_rm.md b/docs/rain_stackset_rm.md
index 8b08e059..1d3049e4 100644
--- a/docs/rain_stackset_rm.md
+++ b/docs/rain_stackset_rm.md
@@ -31,4 +31,4 @@ rain stackset rm <stackset>
 
 * [rain stackset](rain_stackset.md)	 - This command manipulates stack sets.
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_tree.md b/docs/rain_tree.md
index eeeee2ea..08525102 100644
--- a/docs/rain_tree.md
+++ b/docs/rain_tree.md
@@ -30,4 +30,4 @@ rain tree [template]
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/docs/rain_watch.md b/docs/rain_watch.md
index 7f55e68e..2c805884 100644
--- a/docs/rain_watch.md
+++ b/docs/rain_watch.md
@@ -30,4 +30,4 @@ rain watch <stack>
 
 * [rain](index.md)	 - 
 
-###### Auto generated by spf13/cobra on 16-Dec-2024
+###### Auto generated by spf13/cobra on 17-Dec-2024
diff --git a/go.mod b/go.mod
index 51155911..a9f45899 100644
--- a/go.mod
+++ b/go.mod
@@ -12,7 +12,7 @@ require (
 	github.com/aws/aws-sdk-go-v2/credentials v1.17.47
 	github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.23.0
 	github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1
-	github.com/aws/aws-sdk-go-v2/service/ec2 v1.197.0
+	github.com/aws/aws-sdk-go-v2/service/ec2 v1.198.0
 	github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0
 	github.com/aws/aws-sdk-go-v2/service/sts v1.33.2
 	github.com/aws/smithy-go v1.22.1
@@ -37,7 +37,7 @@ require (
 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0
 	github.com/aws/aws-sdk-go-v2/service/kms v1.37.7
 	github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7
-	github.com/aws/aws-sdk-go-v2/service/rds v1.92.0
+	github.com/aws/aws-sdk-go-v2/service/rds v1.93.0
 	github.com/aws/aws-sdk-go-v2/service/sagemaker v1.169.0
 	github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7
 	github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1
@@ -92,6 +92,6 @@ require (
 	github.com/jmespath/go-jmespath v0.4.0 // indirect
 	github.com/russross/blackfriday/v2 v2.1.0 // indirect
 	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
-	golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e
+	golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67
 	gopkg.in/yaml.v2 v2.4.0
 )
diff --git a/go.sum b/go.sum
index 39cd2e77..1f126c30 100644
--- a/go.sum
+++ b/go.sum
@@ -274,6 +274,8 @@ github.com/aws/aws-sdk-go-v2/service/ec2 v1.196.0 h1:ZBtoihAqfT+5b1FwGHOubq8k10K
 github.com/aws/aws-sdk-go-v2/service/ec2 v1.196.0/go.mod h1:00zqVNJFK6UASrTnuvjJHJuaqUdkVz5tW8Ip+VhzuNg=
 github.com/aws/aws-sdk-go-v2/service/ec2 v1.197.0 h1:Bo20e0LV3Qbkr7yZVGuOxvWbf9Vf3nqss5WyerHr6Ic=
 github.com/aws/aws-sdk-go-v2/service/ec2 v1.197.0/go.mod h1:00zqVNJFK6UASrTnuvjJHJuaqUdkVz5tW8Ip+VhzuNg=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.198.0 h1:ivPJXmGlzAjgy0jLO9naExUWE8IM8lLRcRKLPBEx6Q0=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.198.0/go.mod h1:00zqVNJFK6UASrTnuvjJHJuaqUdkVz5tW8Ip+VhzuNg=
 github.com/aws/aws-sdk-go-v2/service/iam v1.32.5 h1:G2judWqHbm2bDrmJPj9W0nD3Pv8+WzhY+fAAEQMpLf4=
 github.com/aws/aws-sdk-go-v2/service/iam v1.32.5/go.mod h1:RorjhuicJ7tEwun17BEeD//1JiPdvxPv15KOa9BKxS8=
 github.com/aws/aws-sdk-go-v2/service/iam v1.33.1 h1:0dcMo3330L9LIckl+4iujMoq0AdR8LMK0TtgrjHUi6M=
@@ -412,6 +414,8 @@ github.com/aws/aws-sdk-go-v2/service/rds v1.89.0 h1:4x0WbBa+i/AS0AFlj7yvx3n+GuK3
 github.com/aws/aws-sdk-go-v2/service/rds v1.89.0/go.mod h1:WB+SVZKu1IBpsy3GrpR2EBnqB6A05Bd0r4RDLRqMbdk=
 github.com/aws/aws-sdk-go-v2/service/rds v1.92.0 h1:W0gUYAjO24u/M6tpR041wMHJWGzleOhxtCnNLImdrZs=
 github.com/aws/aws-sdk-go-v2/service/rds v1.92.0/go.mod h1:ADD2uROOoEIXjbjDPEvDDZWnGmfKFYMddgKwG5RlBGw=
+github.com/aws/aws-sdk-go-v2/service/rds v1.93.0 h1:jIqOqvzMvmcHgwjPwHvxPCiLV1P2+hPoBwEH8wkfbZ4=
+github.com/aws/aws-sdk-go-v2/service/rds v1.93.0/go.mod h1:ADD2uROOoEIXjbjDPEvDDZWnGmfKFYMddgKwG5RlBGw=
 github.com/aws/aws-sdk-go-v2/service/s3 v1.54.4 h1:4p9SCdZBO0PdEXLTF2fcQuxOEkEiqPQpK824cP2VKRo=
 github.com/aws/aws-sdk-go-v2/service/s3 v1.54.4/go.mod h1:oSkRFuHVWmUY4Ssk16ErGzBqvYEbvORJFzFXzWhTB2s=
 github.com/aws/aws-sdk-go-v2/service/s3 v1.56.1 h1:wsg9Z/vNnCmxWikfGIoOlnExtEU459cR+2d+iDJ8elo=
@@ -674,6 +678,8 @@ golang.org/x/exp v0.0.0-20241210194714-1829a127f884 h1:Y/Mj/94zIQQGHVSv1tTtQBDaQ
 golang.org/x/exp v0.0.0-20241210194714-1829a127f884/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c=
 golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e h1:4qufH0hlUYs6AO6XmZC3GqfDPGSXHVXUFR6OND+iJX4=
 golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c=
+golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo=
+golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c=
 golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
 golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
 golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
diff --git a/internal/aws/cfn/all-types.txt b/internal/aws/cfn/all-types.txt
index 818e5237..95e70a10 100644
--- a/internal/aws/cfn/all-types.txt
+++ b/internal/aws/cfn/all-types.txt
@@ -5,6 +5,7 @@ AWS::ACMPCA::Permission
 AWS::APS::RuleGroupsNamespace
 AWS::APS::Scraper
 AWS::APS::Workspace
+AWS::ARCZonalShift::AutoshiftObserverNotificationStatus
 AWS::ARCZonalShift::ZonalAutoshiftConfiguration
 AWS::AccessAnalyzer::Analyzer
 AWS::AmazonMQ::Broker
@@ -20,11 +21,14 @@ AWS::ApiGateway::Account
 AWS::ApiGateway::ApiKey
 AWS::ApiGateway::Authorizer
 AWS::ApiGateway::BasePathMapping
+AWS::ApiGateway::BasePathMappingV2
 AWS::ApiGateway::ClientCertificate
 AWS::ApiGateway::Deployment
 AWS::ApiGateway::DocumentationPart
 AWS::ApiGateway::DocumentationVersion
 AWS::ApiGateway::DomainName
+AWS::ApiGateway::DomainNameAccessAssociation
+AWS::ApiGateway::DomainNameV2
 AWS::ApiGateway::GatewayResponse
 AWS::ApiGateway::Method
 AWS::ApiGateway::Model
@@ -87,8 +91,10 @@ AWS::AppStream::Stack
 AWS::AppStream::StackFleetAssociation
 AWS::AppStream::StackUserAssociation
 AWS::AppStream::User
+AWS::AppSync::Api
 AWS::AppSync::ApiCache
 AWS::AppSync::ApiKey
+AWS::AppSync::ChannelNamespace
 AWS::AppSync::DataSource
 AWS::AppSync::DomainName
 AWS::AppSync::DomainNameApiAssociation
@@ -97,9 +103,11 @@ AWS::AppSync::GraphQLApi
 AWS::AppSync::GraphQLSchema
 AWS::AppSync::Resolver
 AWS::AppSync::SourceApiAssociation
+AWS::AppTest::TestCase
 AWS::ApplicationAutoScaling::ScalableTarget
 AWS::ApplicationAutoScaling::ScalingPolicy
 AWS::ApplicationInsights::Application
+AWS::ApplicationSignals::ServiceLevelObjective
 AWS::Athena::CapacityReservation
 AWS::Athena::DataCatalog
 AWS::Athena::NamedQuery
@@ -122,6 +130,7 @@ AWS::Backup::BackupPlan
 AWS::Backup::BackupSelection
 AWS::Backup::BackupVault
 AWS::Backup::Framework
+AWS::Backup::LogicallyAirGappedBackupVault
 AWS::Backup::ReportPlan
 AWS::Backup::RestoreTestingPlan
 AWS::Backup::RestoreTestingSelection
@@ -132,8 +141,16 @@ AWS::Batch::JobQueue
 AWS::Batch::SchedulingPolicy
 AWS::Bedrock::Agent
 AWS::Bedrock::AgentAlias
+AWS::Bedrock::ApplicationInferenceProfile
 AWS::Bedrock::DataSource
+AWS::Bedrock::Flow
+AWS::Bedrock::FlowAlias
+AWS::Bedrock::FlowVersion
+AWS::Bedrock::Guardrail
+AWS::Bedrock::GuardrailVersion
 AWS::Bedrock::KnowledgeBase
+AWS::Bedrock::Prompt
+AWS::Bedrock::PromptVersion
 AWS::BillingConductor::BillingGroup
 AWS::BillingConductor::CustomLineItem
 AWS::BillingConductor::PricingPlan
@@ -146,22 +163,28 @@ AWS::CE::CostCategory
 AWS::CUR::ReportDefinition
 AWS::Cassandra::Keyspace
 AWS::Cassandra::Table
+AWS::Cassandra::Type
 AWS::CertificateManager::Account
 AWS::CertificateManager::Certificate
+AWS::Chatbot::CustomAction
 AWS::Chatbot::MicrosoftTeamsChannelConfiguration
 AWS::Chatbot::SlackChannelConfiguration
 AWS::CleanRooms::AnalysisTemplate
 AWS::CleanRooms::Collaboration
 AWS::CleanRooms::ConfiguredTable
 AWS::CleanRooms::ConfiguredTableAssociation
+AWS::CleanRooms::IdMappingTable
+AWS::CleanRooms::IdNamespaceAssociation
 AWS::CleanRooms::Membership
 AWS::CleanRooms::PrivacyBudgetTemplate
 AWS::CleanRoomsML::TrainingDataset
 AWS::Cloud9::EnvironmentEC2
 AWS::CloudFormation::CustomResource
+AWS::CloudFormation::GuardHook
 AWS::CloudFormation::HookDefaultVersion
 AWS::CloudFormation::HookTypeConfig
 AWS::CloudFormation::HookVersion
+AWS::CloudFormation::LambdaHook
 AWS::CloudFormation::Macro
 AWS::CloudFormation::ModuleDefaultVersion
 AWS::CloudFormation::ModuleVersion
@@ -189,6 +212,7 @@ AWS::CloudFront::RealtimeLogConfig
 AWS::CloudFront::ResponseHeadersPolicy
 AWS::CloudFront::StreamingDistribution
 AWS::CloudTrail::Channel
+AWS::CloudTrail::Dashboard
 AWS::CloudTrail::EventDataStore
 AWS::CloudTrail::ResourcePolicy
 AWS::CloudTrail::Trail
@@ -224,6 +248,7 @@ AWS::Cognito::IdentityPool
 AWS::Cognito::IdentityPoolPrincipalTag
 AWS::Cognito::IdentityPoolRoleAttachment
 AWS::Cognito::LogDeliveryConfiguration
+AWS::Cognito::ManagedLoginBranding
 AWS::Cognito::UserPool
 AWS::Cognito::UserPoolClient
 AWS::Cognito::UserPoolDomain
@@ -246,9 +271,11 @@ AWS::Config::OrganizationConfigRule
 AWS::Config::OrganizationConformancePack
 AWS::Config::RemediationConfiguration
 AWS::Config::StoredQuery
+AWS::Connect::AgentStatus
 AWS::Connect::ApprovedOrigin
 AWS::Connect::ContactFlow
 AWS::Connect::ContactFlowModule
+AWS::Connect::EmailAddress
 AWS::Connect::EvaluationForm
 AWS::Connect::HoursOfOperation
 AWS::Connect::Instance
@@ -267,9 +294,11 @@ AWS::Connect::TaskTemplate
 AWS::Connect::TrafficDistributionGroup
 AWS::Connect::User
 AWS::Connect::UserHierarchyGroup
+AWS::Connect::UserHierarchyStructure
 AWS::Connect::View
 AWS::Connect::ViewVersion
 AWS::ConnectCampaigns::Campaign
+AWS::ConnectCampaignsV2::Campaign
 AWS::ControlTower::EnabledBaseline
 AWS::ControlTower::EnabledControl
 AWS::ControlTower::LandingZone
@@ -278,11 +307,13 @@ AWS::CustomerProfiles::Domain
 AWS::CustomerProfiles::EventStream
 AWS::CustomerProfiles::Integration
 AWS::CustomerProfiles::ObjectType
+AWS::CustomerProfiles::SegmentDefinition
 AWS::DAX::Cluster
 AWS::DAX::ParameterGroup
 AWS::DAX::SubnetGroup
 AWS::DLM::LifecyclePolicy
 AWS::DMS::Certificate
+AWS::DMS::DataMigration
 AWS::DMS::DataProvider
 AWS::DMS::Endpoint
 AWS::DMS::EventSubscription
@@ -316,14 +347,19 @@ AWS::DataSync::Task
 AWS::DataZone::DataSource
 AWS::DataZone::Domain
 AWS::DataZone::Environment
+AWS::DataZone::EnvironmentActions
 AWS::DataZone::EnvironmentBlueprintConfiguration
 AWS::DataZone::EnvironmentProfile
+AWS::DataZone::GroupProfile
 AWS::DataZone::Project
+AWS::DataZone::ProjectMembership
 AWS::DataZone::SubscriptionTarget
+AWS::DataZone::UserProfile
 AWS::Deadline::Farm
 AWS::Deadline::Fleet
 AWS::Deadline::LicenseEndpoint
 AWS::Deadline::MeteredProduct
+AWS::Deadline::Monitor
 AWS::Deadline::Queue
 AWS::Deadline::QueueEnvironment
 AWS::Deadline::QueueFleetAssociation
@@ -395,6 +431,7 @@ AWS::EC2::RouteTable
 AWS::EC2::SecurityGroup
 AWS::EC2::SecurityGroupEgress
 AWS::EC2::SecurityGroupIngress
+AWS::EC2::SecurityGroupVpcAssociation
 AWS::EC2::SnapshotBlockPublicAccess
 AWS::EC2::SpotFleet
 AWS::EC2::Subnet
@@ -419,6 +456,8 @@ AWS::EC2::TransitGatewayRouteTableAssociation
 AWS::EC2::TransitGatewayRouteTablePropagation
 AWS::EC2::TransitGatewayVpcAttachment
 AWS::EC2::VPC
+AWS::EC2::VPCBlockPublicAccessExclusion
+AWS::EC2::VPCBlockPublicAccessOptions
 AWS::EC2::VPCCidrBlock
 AWS::EC2::VPCDHCPOptionsAssociation
 AWS::EC2::VPCEndpoint
@@ -442,6 +481,7 @@ AWS::ECR::PullThroughCacheRule
 AWS::ECR::RegistryPolicy
 AWS::ECR::ReplicationConfiguration
 AWS::ECR::Repository
+AWS::ECR::RepositoryCreationTemplate
 AWS::ECS::CapacityProvider
 AWS::ECS::Cluster
 AWS::ECS::ClusterCapacityProviderAssociations
@@ -535,6 +575,8 @@ AWS::FraudDetector::Outcome
 AWS::FraudDetector::Variable
 AWS::GameLift::Alias
 AWS::GameLift::Build
+AWS::GameLift::ContainerFleet
+AWS::GameLift::ContainerGroupDefinition
 AWS::GameLift::Fleet
 AWS::GameLift::GameServerGroup
 AWS::GameLift::GameSessionQueue
@@ -565,6 +607,7 @@ AWS::Glue::SecurityConfiguration
 AWS::Glue::Table
 AWS::Glue::TableOptimizer
 AWS::Glue::Trigger
+AWS::Glue::UsageProfile
 AWS::Glue::Workflow
 AWS::Grafana::Workspace
 AWS::Greengrass::ConnectorDefinition
@@ -591,6 +634,7 @@ AWS::GroundStation::MissionProfile
 AWS::GuardDuty::Detector
 AWS::GuardDuty::Filter
 AWS::GuardDuty::IPSet
+AWS::GuardDuty::MalwareProtectionPlan
 AWS::GuardDuty::Master
 AWS::GuardDuty::Member
 AWS::GuardDuty::ThreatIntelSet
@@ -614,8 +658,10 @@ AWS::IAM::UserToGroupAddition
 AWS::IAM::VirtualMFADevice
 AWS::IVS::Channel
 AWS::IVS::EncoderConfiguration
+AWS::IVS::IngestConfiguration
 AWS::IVS::PlaybackKeyPair
 AWS::IVS::PlaybackRestrictionPolicy
+AWS::IVS::PublicKey
 AWS::IVS::RecordingConfiguration
 AWS::IVS::Stage
 AWS::IVS::StorageConfiguration
@@ -639,6 +685,7 @@ AWS::Inspector::ResourceGroup
 AWS::InspectorV2::CisScanConfiguration
 AWS::InspectorV2::Filter
 AWS::InternetMonitor::Monitor
+AWS::Invoicing::InvoiceUnit
 AWS::IoT1Click::Device
 AWS::IoT1Click::Placement
 AWS::IoT1Click::Project
@@ -648,6 +695,7 @@ AWS::IoT::BillingGroup
 AWS::IoT::CACertificate
 AWS::IoT::Certificate
 AWS::IoT::CertificateProvider
+AWS::IoT::Command
 AWS::IoT::CustomMetric
 AWS::IoT::Dimension
 AWS::IoT::DomainConfiguration
@@ -684,6 +732,7 @@ AWS::IoTFleetWise::DecoderManifest
 AWS::IoTFleetWise::Fleet
 AWS::IoTFleetWise::ModelManifest
 AWS::IoTFleetWise::SignalCatalog
+AWS::IoTFleetWise::StateTemplate
 AWS::IoTFleetWise::Vehicle
 AWS::IoTSiteWise::AccessPolicy
 AWS::IoTSiteWise::Asset
@@ -719,6 +768,7 @@ AWS::Kendra::DataSource
 AWS::Kendra::Faq
 AWS::Kendra::Index
 AWS::KendraRanking::ExecutionPlan
+AWS::Kinesis::ResourcePolicy
 AWS::Kinesis::Stream
 AWS::Kinesis::StreamConsumer
 AWS::KinesisAnalytics::Application
@@ -748,6 +798,7 @@ AWS::Lambda::LayerVersionPermission
 AWS::Lambda::Permission
 AWS::Lambda::Url
 AWS::Lambda::Version
+AWS::LaunchWizard::Deployment
 AWS::Lex::Bot
 AWS::Lex::BotAlias
 AWS::Lex::BotVersion
@@ -777,6 +828,7 @@ AWS::Logs::Delivery
 AWS::Logs::DeliveryDestination
 AWS::Logs::DeliverySource
 AWS::Logs::Destination
+AWS::Logs::Integration
 AWS::Logs::LogAnomalyDetector
 AWS::Logs::LogGroup
 AWS::Logs::LogStream
@@ -785,11 +837,13 @@ AWS::Logs::MetricFilter
 AWS::Logs::QueryDefinition
 AWS::Logs::ResourcePolicy
 AWS::Logs::SubscriptionFilter
+AWS::Logs::Transformer
 AWS::LookoutEquipment::InferenceScheduler
 AWS::LookoutMetrics::Alert
 AWS::LookoutMetrics::AnomalyDetector
 AWS::LookoutVision::Project
 AWS::M2::Application
+AWS::M2::Deployment
 AWS::M2::Environment
 AWS::MSK::BatchScramSecret
 AWS::MSK::Cluster
@@ -819,10 +873,19 @@ AWS::MediaConvert::JobTemplate
 AWS::MediaConvert::Preset
 AWS::MediaConvert::Queue
 AWS::MediaLive::Channel
+AWS::MediaLive::ChannelPlacementGroup
+AWS::MediaLive::CloudWatchAlarmTemplate
+AWS::MediaLive::CloudWatchAlarmTemplateGroup
+AWS::MediaLive::Cluster
+AWS::MediaLive::EventBridgeRuleTemplate
+AWS::MediaLive::EventBridgeRuleTemplateGroup
 AWS::MediaLive::Input
 AWS::MediaLive::InputSecurityGroup
 AWS::MediaLive::Multiplex
 AWS::MediaLive::Multiplexprogram
+AWS::MediaLive::Network
+AWS::MediaLive::SdiSource
+AWS::MediaLive::SignalMap
 AWS::MediaPackage::Asset
 AWS::MediaPackage::Channel
 AWS::MediaPackage::OriginEndpoint
@@ -842,6 +905,7 @@ AWS::MediaTailor::SourceLocation
 AWS::MediaTailor::VodSource
 AWS::MemoryDB::ACL
 AWS::MemoryDB::Cluster
+AWS::MemoryDB::MultiRegionCluster
 AWS::MemoryDB::ParameterGroup
 AWS::MemoryDB::SubnetGroup
 AWS::MemoryDB::User
@@ -850,6 +914,7 @@ AWS::Neptune::DBClusterParameterGroup
 AWS::Neptune::DBInstance
 AWS::Neptune::DBParameterGroup
 AWS::Neptune::DBSubnetGroup
+AWS::Neptune::EventSubscription
 AWS::NeptuneGraph::Graph
 AWS::NeptuneGraph::PrivateGraphEndpoint
 AWS::NetworkFirewall::Firewall
@@ -862,6 +927,7 @@ AWS::NetworkManager::ConnectPeer
 AWS::NetworkManager::CoreNetwork
 AWS::NetworkManager::CustomerGatewayAssociation
 AWS::NetworkManager::Device
+AWS::NetworkManager::DirectConnectGatewayAttachment
 AWS::NetworkManager::GlobalNetwork
 AWS::NetworkManager::Link
 AWS::NetworkManager::LinkAssociation
@@ -890,6 +956,7 @@ AWS::OpenSearchServerless::LifecyclePolicy
 AWS::OpenSearchServerless::SecurityConfig
 AWS::OpenSearchServerless::SecurityPolicy
 AWS::OpenSearchServerless::VpcEndpoint
+AWS::OpenSearchService::Application
 AWS::OpenSearchService::Domain
 AWS::OpsWorks::App
 AWS::OpsWorks::ElasticLoadBalancerAttachment
@@ -909,9 +976,16 @@ AWS::PCAConnectorAD::DirectoryRegistration
 AWS::PCAConnectorAD::ServicePrincipalName
 AWS::PCAConnectorAD::Template
 AWS::PCAConnectorAD::TemplateGroupAccessControlEntry
+AWS::PCAConnectorSCEP::Challenge
+AWS::PCAConnectorSCEP::Connector
+AWS::PCS::Cluster
+AWS::PCS::ComputeNodeGroup
+AWS::PCS::Queue
 AWS::Panorama::ApplicationInstance
 AWS::Panorama::Package
 AWS::Panorama::PackageVersion
+AWS::PaymentCryptography::Alias
+AWS::PaymentCryptography::Key
 AWS::Personalize::Dataset
 AWS::Personalize::DatasetGroup
 AWS::Personalize::Schema
@@ -943,12 +1017,21 @@ AWS::Pipes::Pipe
 AWS::Proton::EnvironmentAccountConnection
 AWS::Proton::EnvironmentTemplate
 AWS::Proton::ServiceTemplate
+AWS::QBusiness::Application
+AWS::QBusiness::DataAccessor
+AWS::QBusiness::DataSource
+AWS::QBusiness::Index
+AWS::QBusiness::Permission
+AWS::QBusiness::Plugin
+AWS::QBusiness::Retriever
+AWS::QBusiness::WebExperience
 AWS::QLDB::Ledger
 AWS::QLDB::Stream
 AWS::QuickSight::Analysis
 AWS::QuickSight::Dashboard
 AWS::QuickSight::DataSet
 AWS::QuickSight::DataSource
+AWS::QuickSight::Folder
 AWS::QuickSight::RefreshSchedule
 AWS::QuickSight::Template
 AWS::QuickSight::Theme
@@ -966,12 +1049,14 @@ AWS::RDS::DBProxyEndpoint
 AWS::RDS::DBProxyTargetGroup
 AWS::RDS::DBSecurityGroup
 AWS::RDS::DBSecurityGroupIngress
+AWS::RDS::DBShardGroup
 AWS::RDS::DBSubnetGroup
 AWS::RDS::EventSubscription
 AWS::RDS::GlobalCluster
 AWS::RDS::Integration
 AWS::RDS::OptionGroup
 AWS::RUM::AppMonitor
+AWS::Rbin::Rule
 AWS::Redshift::Cluster
 AWS::Redshift::ClusterParameterGroup
 AWS::Redshift::ClusterSecurityGroup
@@ -980,6 +1065,7 @@ AWS::Redshift::ClusterSubnetGroup
 AWS::Redshift::EndpointAccess
 AWS::Redshift::EndpointAuthorization
 AWS::Redshift::EventSubscription
+AWS::Redshift::Integration
 AWS::Redshift::ScheduledAction
 AWS::RedshiftServerless::Namespace
 AWS::RedshiftServerless::Workgroup
@@ -996,6 +1082,7 @@ AWS::ResourceExplorer2::DefaultViewAssociation
 AWS::ResourceExplorer2::Index
 AWS::ResourceExplorer2::View
 AWS::ResourceGroups::Group
+AWS::ResourceGroups::TagSyncTask
 AWS::RoboMaker::Fleet
 AWS::RoboMaker::Robot
 AWS::RoboMaker::RobotApplication
@@ -1012,6 +1099,9 @@ AWS::Route53::HostedZone
 AWS::Route53::KeySigningKey
 AWS::Route53::RecordSet
 AWS::Route53::RecordSetGroup
+AWS::Route53Profiles::Profile
+AWS::Route53Profiles::ProfileAssociation
+AWS::Route53Profiles::ProfileResourceAssociation
 AWS::Route53RecoveryControl::Cluster
 AWS::Route53RecoveryControl::ControlPanel
 AWS::Route53RecoveryControl::RoutingControl
@@ -1049,12 +1139,21 @@ AWS::S3Outposts::AccessPoint
 AWS::S3Outposts::Bucket
 AWS::S3Outposts::BucketPolicy
 AWS::S3Outposts::Endpoint
+AWS::S3Tables::TableBucket
+AWS::S3Tables::TableBucketPolicy
 AWS::SDB::Domain
 AWS::SES::ConfigurationSet
 AWS::SES::ConfigurationSetEventDestination
 AWS::SES::ContactList
 AWS::SES::DedicatedIpPool
 AWS::SES::EmailIdentity
+AWS::SES::MailManagerAddonInstance
+AWS::SES::MailManagerAddonSubscription
+AWS::SES::MailManagerArchive
+AWS::SES::MailManagerIngressPoint
+AWS::SES::MailManagerRelay
+AWS::SES::MailManagerRuleSet
+AWS::SES::MailManagerTrafficPolicy
 AWS::SES::ReceiptFilter
 AWS::SES::ReceiptRule
 AWS::SES::ReceiptRuleSet
@@ -1082,11 +1181,16 @@ AWS::SSMContacts::Plan
 AWS::SSMContacts::Rotation
 AWS::SSMIncidents::ReplicationSet
 AWS::SSMIncidents::ResponsePlan
+AWS::SSMQuickSetup::ConfigurationManager
+AWS::SSO::Application
+AWS::SSO::ApplicationAssignment
 AWS::SSO::Assignment
+AWS::SSO::Instance
 AWS::SSO::InstanceAccessControlAttributeConfiguration
 AWS::SSO::PermissionSet
 AWS::SageMaker::App
 AWS::SageMaker::AppImageConfig
+AWS::SageMaker::Cluster
 AWS::SageMaker::CodeRepository
 AWS::SageMaker::DataQualityJobDefinition
 AWS::SageMaker::Device
@@ -1099,6 +1203,7 @@ AWS::SageMaker::Image
 AWS::SageMaker::ImageVersion
 AWS::SageMaker::InferenceComponent
 AWS::SageMaker::InferenceExperiment
+AWS::SageMaker::MlflowTrackingServer
 AWS::SageMaker::Model
 AWS::SageMaker::ModelBiasJobDefinition
 AWS::SageMaker::ModelCard
@@ -1112,6 +1217,7 @@ AWS::SageMaker::NotebookInstanceLifecycleConfig
 AWS::SageMaker::Pipeline
 AWS::SageMaker::Project
 AWS::SageMaker::Space
+AWS::SageMaker::StudioLifecycleConfig
 AWS::SageMaker::UserProfile
 AWS::SageMaker::Workteam
 AWS::Scheduler::Schedule
@@ -1121,14 +1227,20 @@ AWS::SecretsManager::RotationSchedule
 AWS::SecretsManager::Secret
 AWS::SecretsManager::SecretTargetAttachment
 AWS::SecurityHub::AutomationRule
+AWS::SecurityHub::ConfigurationPolicy
 AWS::SecurityHub::DelegatedAdmin
+AWS::SecurityHub::FindingAggregator
 AWS::SecurityHub::Hub
 AWS::SecurityHub::Insight
+AWS::SecurityHub::OrganizationConfiguration
+AWS::SecurityHub::PolicyAssociation
 AWS::SecurityHub::ProductSubscription
+AWS::SecurityHub::SecurityControl
 AWS::SecurityHub::Standard
 AWS::SecurityLake::AwsLogSource
 AWS::SecurityLake::DataLake
 AWS::SecurityLake::Subscriber
+AWS::SecurityLake::SubscriberNotification
 AWS::ServiceCatalog::AcceptedPortfolioShare
 AWS::ServiceCatalog::CloudFormationProduct
 AWS::ServiceCatalog::CloudFormationProvisionedProduct
@@ -1172,6 +1284,7 @@ AWS::Synthetics::Canary
 AWS::Synthetics::Group
 AWS::SystemsManagerSAP::Application
 AWS::Timestream::Database
+AWS::Timestream::InfluxDBInstance
 AWS::Timestream::ScheduledQuery
 AWS::Timestream::Table
 AWS::Transfer::Agreement
@@ -1189,10 +1302,13 @@ AWS::VoiceID::Domain
 AWS::VpcLattice::AccessLogSubscription
 AWS::VpcLattice::AuthPolicy
 AWS::VpcLattice::Listener
+AWS::VpcLattice::ResourceConfiguration
+AWS::VpcLattice::ResourceGateway
 AWS::VpcLattice::ResourcePolicy
 AWS::VpcLattice::Rule
 AWS::VpcLattice::Service
 AWS::VpcLattice::ServiceNetwork
+AWS::VpcLattice::ServiceNetworkResourceAssociation
 AWS::VpcLattice::ServiceNetworkServiceAssociation
 AWS::VpcLattice::ServiceNetworkVpcAssociation
 AWS::VpcLattice::TargetGroup
@@ -1220,13 +1336,23 @@ AWS::WAFv2::RegexPatternSet
 AWS::WAFv2::RuleGroup
 AWS::WAFv2::WebACL
 AWS::WAFv2::WebACLAssociation
+AWS::Wisdom::AIAgent
+AWS::Wisdom::AIAgentVersion
+AWS::Wisdom::AIGuardrail
+AWS::Wisdom::AIGuardrailVersion
+AWS::Wisdom::AIPrompt
+AWS::Wisdom::AIPromptVersion
 AWS::Wisdom::Assistant
 AWS::Wisdom::AssistantAssociation
 AWS::Wisdom::KnowledgeBase
+AWS::Wisdom::MessageTemplate
+AWS::Wisdom::MessageTemplateVersion
 AWS::WorkSpaces::ConnectionAlias
 AWS::WorkSpaces::Workspace
+AWS::WorkSpaces::WorkspacesPool
 AWS::WorkSpacesThinClient::Environment
 AWS::WorkSpacesWeb::BrowserSettings
+AWS::WorkSpacesWeb::DataProtectionSettings
 AWS::WorkSpacesWeb::IdentityProvider
 AWS::WorkSpacesWeb::IpAccessSettings
 AWS::WorkSpacesWeb::NetworkSettings
@@ -1252,6 +1378,7 @@ Atlassian::Opsgenie::User
 AwsCommunity::Account::AlternateContact
 AwsCommunity::ApplicationAutoscaling::ScheduledAction
 AwsCommunity::DynamoDB::Item
+AwsCommunity::DynamoDB::Item
 AwsCommunity::Resource::Lookup
 AwsCommunity::S3::DeleteBucketContents
 AwsCommunity::Time::Offset
@@ -1349,6 +1476,7 @@ MongoDB::Atlas::PrivatelinkEndpointServiceDataFederationOnlineArchive
 MongoDB::Atlas::Project
 MongoDB::Atlas::ProjectInvitation
 MongoDB::Atlas::ProjectIpAccessList
+MongoDB::Atlas::ResourcePolicy
 MongoDB::Atlas::SearchDeployment
 MongoDB::Atlas::SearchIndex
 MongoDB::Atlas::ServerlessInstance
@@ -1387,6 +1515,11 @@ PagerDuty::Teams::Team
 PagerDuty::Users::User
 PaloAltoNetworks::CloudNGFW::NGFW
 PaloAltoNetworks::CloudNGFW::RuleStack
+Redis::Cloud::Database
+Redis::Cloud::Subscription
+Redis::CloudFormation::ProDatabase
+Redis::CloudFormation::ProSubscription
+Redis::CloudFormation::SubscriptionPeering
 Rollbar::Notifications::Rule
 Rollbar::Projects::AccessToken
 Rollbar::Projects::Project
diff --git a/internal/aws/cfn/cfn.go b/internal/aws/cfn/cfn.go
index b87b55e8..2c42e3b2 100644
--- a/internal/aws/cfn/cfn.go
+++ b/internal/aws/cfn/cfn.go
@@ -478,16 +478,16 @@ func WaitUntilStackCreateComplete(stackName string) error {
 }
 
 // GetTypeSchema gets the schema for a CloudFormation resource type
-func GetTypeSchema(name string, noCache bool) (string, error) {
+func GetTypeSchema(name string, cacheUsage ResourceCacheUsage) (string, error) {
 
 	// Check for a schema in memory
 	schema, exists := Schemas[name]
-	if exists && !noCache {
+	if exists && cacheUsage != DoNotUseCache {
 		return schema, nil
 	}
 
 	// Look in the embedded file system next
-	if !noCache {
+	if cacheUsage != DoNotUseCache {
 		path := strings.Replace(name, "::", "/", -1)
 		path = strings.ToLower(path)
 		path = "schemas/" + path + ".json"
@@ -501,6 +501,10 @@ func GetTypeSchema(name string, noCache bool) (string, error) {
 		}
 	}
 
+	if cacheUsage == OnlyUseCache {
+		return "", errors.New("cacheUsage is OnlyUseCache")
+	}
+
 	// Go ahead and download the schema from the registry
 	res, err := getClient().DescribeType(context.Background(), &cloudformation.DescribeTypeInput{
 		Type: "RESOURCE", TypeName: &name,
@@ -539,7 +543,7 @@ func IsCCAPI(name string) (bool, error) {
 func GetTypePermissions(name string, handlerVerb string) ([]string, error) {
 
 	// Get the schema, checking to see if we cached it
-	schema, err := GetTypeSchema(name, false)
+	schema, err := GetTypeSchema(name, UseCacheNormally)
 	if err != nil {
 		return nil, err
 	}
@@ -718,7 +722,7 @@ func GetTypePermissions(name string, handlerVerb string) ([]string, error) {
 
 // GetTypeIdentifier gets the primaryIdentifier of a resource type from the schema
 func GetTypeIdentifier(name string) ([]string, error) {
-	schema, err := GetTypeSchema(name, false)
+	schema, err := GetTypeSchema(name, UseCacheNormally)
 	if err != nil {
 		return nil, err
 	}
@@ -867,10 +871,18 @@ func ResourceAlreadyExists(
 	return false
 }
 
+type ResourceCacheUsage int
+
+const (
+	OnlyUseCache     ResourceCacheUsage = 1
+	DoNotUseCache    ResourceCacheUsage = 2
+	UseCacheNormally ResourceCacheUsage = 3
+)
+
 // ListResourceTypes lists all live registry resource types
-func ListResourceTypes(noCache bool) ([]string, error) {
+func ListResourceTypes(cacheUsage ResourceCacheUsage) ([]string, error) {
 
-	if !noCache {
+	if cacheUsage != DoNotUseCache {
 		return strings.Split(AllTypes, "\n"), nil
 	}
 
diff --git a/internal/aws/cfn/patch.go b/internal/aws/cfn/patch.go
index 2b42e3a8..7edfff16 100644
--- a/internal/aws/cfn/patch.go
+++ b/internal/aws/cfn/patch.go
@@ -2,9 +2,8 @@ package cfn
 
 import (
 	"errors"
-	"fmt"
 
-	"github.com/aws-cloudformation/rain/internal/aws/lightsail"
+	"github.com/aws-cloudformation/rain/internal/config"
 )
 
 func convertStrings(sa []string) []any {
@@ -15,6 +14,7 @@ func convertStrings(sa []string) []any {
 	return r
 }
 
+/*
 func patchLightsailInstance(schema *Schema) error {
 	blueprintId, found := schema.Properties["BlueprintId"]
 	if !found {
@@ -106,6 +106,7 @@ func patchLightsailAlarm(schema *Schema) error {
 	comparisonOperator.Enum = convertStrings(valid)
 	return nil
 }
+*/
 
 func patchSESConfigurationSetEventDestination(schema *Schema) error {
 	valid := []string{
@@ -199,3 +200,107 @@ func patchEC2LaunchTemplate(schema *Schema) error {
 	}
 	return nil
 }
+
+func patchControlTowerLandingZone(schema *Schema) error {
+	name := "Manifest"
+	// Manifest is empty, looks like a placeholder
+	if manifest, ok := schema.Properties[name]; ok {
+		if (manifest.Type == "" || manifest.Type == nil) && manifest.Ref == "" {
+			config.Debugf("Removing Manifest from ControlTower LandingZone")
+			delete(schema.Properties, name)
+		}
+	}
+	return nil
+}
+
+func patchQuickSightAnalysis(schema *Schema) error {
+	name := "ImageMenuOption"
+	if imo, ok := schema.Definitions[name]; ok {
+		badProp := "AvailabilityStatus"
+		config.Debugf("Found prop %s, removing %s", name, badProp)
+		delete(imo.Properties, badProp)
+	}
+
+	name = "GeospatialLayerMapConfiguration"
+	if c, ok := schema.Definitions[name]; ok {
+		badProp := "Interactions"
+		config.Debugf("Found QuickSightAnalysis prop %s, removing %s", name, badProp)
+		delete(c.Properties, badProp)
+	}
+
+	name = "GeospatialMapConfiguration"
+	if c, ok := schema.Definitions[name]; ok {
+		badProp := "Interactions"
+		config.Debugf("Found prop %s, removing %s", name, badProp)
+		delete(c.Properties, badProp)
+	}
+
+	return nil
+}
+
+func patchQuickSightDashboard(schema *Schema) error {
+
+	name := "GeospatialLayerMapConfiguration"
+	if c, ok := schema.Definitions[name]; ok {
+		badProp := "Interactions"
+		config.Debugf("Found prop %s, removing %s", name, badProp)
+		delete(c.Properties, badProp)
+	}
+
+	name = "GeospatialMapConfiguration"
+	if c, ok := schema.Definitions[name]; ok {
+		badProp := "Interactions"
+		config.Debugf("Found QuickSight Dashboard prop  %s, removing %s", name, badProp)
+		delete(c.Properties, badProp)
+	}
+
+	return nil
+}
+
+func patchQuickSightTemplate(schema *Schema) error {
+	name := "ImageMenuOption"
+	if imo, ok := schema.Definitions[name]; ok {
+		badProp := "AvailabilityStatus"
+		config.Debugf("Found QuickSight Template prop %s, removing %s", name, badProp)
+		delete(imo.Properties, badProp)
+	}
+	return nil
+}
+
+func patchOpenSearchServiceApplication(schema *Schema) error {
+	name := "DataSource"
+	if dataSource, ok := schema.Definitions[name]; ok {
+		propName := "DataSourceArn"
+		if dsa, ok := dataSource.Properties[propName]; ok {
+			if dsa.Ref != "" && (dsa.Type == nil || dsa.Type == "") {
+				config.Debugf("Patching OpenSearchServiceApplication ref to a property")
+				dsa.Ref = ""
+				dsa.Type = "string"
+			}
+		}
+	}
+
+	name = "IamIdentityCenterOptions"
+	if dataSource, ok := schema.Properties[name]; ok {
+		propName := "IamIdentityCenterInstanceArn"
+		if arn, ok := dataSource.Properties[propName]; ok {
+			if arn.Ref != "" && (arn.Type == nil || arn.Type == "") {
+				config.Debugf("Patching OpenSearchServiceApplication ref to a property")
+				arn.Ref = ""
+				arn.Type = "string"
+			}
+		}
+	}
+	return nil
+}
+
+func patchQBusinessDataSource(schema *Schema) error {
+	name := "Configuration"
+	if c, ok := schema.Properties[name]; ok {
+		if c.Type == nil && c.Ref == "" {
+			config.Debugf("Removing blank {name} from QBusiness DataSource")
+			delete(schema.Properties, name)
+		}
+	}
+	return nil
+}
diff --git a/internal/aws/cfn/schema.go b/internal/aws/cfn/schema.go
index a34f7917..4525ad31 100644
--- a/internal/aws/cfn/schema.go
+++ b/internal/aws/cfn/schema.go
@@ -79,16 +79,18 @@ func ParseSchema(source string) (*Schema, error) {
 // Patch applies patches to the schema to add things like undocumented enums
 func (schema *Schema) Patch() error {
 	switch schema.TypeName {
-	case "AWS::Lightsail::Instance":
-		return patchLightsailInstance(schema)
-	case "AWS::Lightsail::Bucket":
-		return patchLightsailBucket(schema)
-	case "AWS::Lightsail::Database":
-		return patchLightsailDatabase(schema)
-	case "AWS::Lightsail::Alarm":
-		return patchLightsailAlarm(schema)
-	case "AWS::Lightsail::Distribution":
-		return patchLightsailDistribution(schema)
+	/*
+		case "AWS::Lightsail::Instance":
+			return patchLightsailInstance(schema)
+		case "AWS::Lightsail::Bucket":
+			return patchLightsailBucket(schema)
+		case "AWS::Lightsail::Database":
+			return patchLightsailDatabase(schema)
+		case "AWS::Lightsail::Alarm":
+			return patchLightsailAlarm(schema)
+		case "AWS::Lightsail::Distribution":
+			return patchLightsailDistribution(schema)
+	*/
 	case "AWS::SES::ConfigurationSetEventDestination":
 		return patchSESConfigurationSetEventDestination(schema)
 	case "AWS::SES::ContactList":
@@ -101,6 +103,18 @@ func (schema *Schema) Patch() error {
 		return patchEC2VerifiedAccessTrustProvider(schema)
 	case "AWS::EC2::LaunchTemplate":
 		return patchEC2LaunchTemplate(schema)
+	case "AWS::ControlTower::LandingZone":
+		return patchControlTowerLandingZone(schema)
+	case "AWS::QuickSight::Analysis":
+		return patchQuickSightAnalysis(schema)
+	case "AWS::QuickSight::Dashboard":
+		return patchQuickSightDashboard(schema)
+	case "AWS::QuickSight::Template":
+		return patchQuickSightTemplate(schema)
+	case "AWS::OpenSearchService::Application":
+		return patchOpenSearchServiceApplication(schema)
+	case "AWS::QBusiness::DataSource":
+		return patchQBusinessDataSource(schema)
 	}
 	return nil
 }
diff --git a/internal/aws/cfn/schemas/aws/autoscaling/autoscalinggroup.json b/internal/aws/cfn/schemas/aws/autoscaling/autoscalinggroup.json
index 6b467079..2e09fe63 100644
--- a/internal/aws/cfn/schemas/aws/autoscaling/autoscalinggroup.json
+++ b/internal/aws/cfn/schemas/aws/autoscaling/autoscalinggroup.json
@@ -124,14 +124,16 @@
   "additionalProperties": false,
   "definitions": {
     "AvailabilityZoneImpairmentPolicy": {
-      "description": "",
+      "description": "Describes an Availability Zone impairment policy.",
       "additionalProperties": false,
       "type": "object",
       "properties": {
         "ZonalShiftEnabled": {
+          "description": "If ``true``, enable zonal shift for your Auto Scaling group.",
           "type": "boolean"
         },
         "ImpairedZoneHealthCheckBehavior": {
+          "description": "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.",
           "type": "string",
           "enum": [
             "IgnoreUnhealthy",
@@ -279,6 +281,7 @@
       "type": "object",
       "properties": {
         "InstanceFamily": {
+          "description": "",
           "type": "string"
         }
       }
@@ -335,6 +338,7 @@
       "type": "object",
       "properties": {
         "References": {
+          "description": "",
           "$ref": "#/definitions/PerformanceFactorReferenceSetRequest"
         }
       }
@@ -466,11 +470,12 @@
       }
     },
     "AvailabilityZoneDistribution": {
-      "description": "",
+      "description": "``AvailabilityZoneDistribution`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.",
       "additionalProperties": false,
       "type": "object",
       "properties": {
         "CapacityDistributionStrategy": {
+          "description": "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n  +   ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n  +   ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.",
           "type": "string",
           "enum": [
             "balanced-best-effort",
@@ -575,6 +580,7 @@
       "type": "object",
       "properties": {
         "Cpu": {
+          "description": "",
           "$ref": "#/definitions/CpuPerformanceFactorRequest"
         }
       }
@@ -830,7 +836,7 @@
       "type": "string"
     },
     "AvailabilityZoneImpairmentPolicy": {
-      "description": "",
+      "description": "The Availability Zone impairment policy.",
       "$ref": "#/definitions/AvailabilityZoneImpairmentPolicy"
     },
     "TargetGroupARNs": {
@@ -927,7 +933,7 @@
       "$ref": "#/definitions/NotificationConfiguration"
     },
     "AvailabilityZoneDistribution": {
-      "description": "",
+      "description": "The instance capacity distribution across Availability Zones.",
       "$ref": "#/definitions/AvailabilityZoneDistribution"
     },
     "MetricsCollection": {
diff --git a/internal/aws/cfn/schemas/aws/cloudformation/guardhook.json b/internal/aws/cfn/schemas/aws/cloudformation/guardhook.json
index 9e45628a..d31da8a3 100644
--- a/internal/aws/cfn/schemas/aws/cloudformation/guardhook.json
+++ b/internal/aws/cfn/schemas/aws/cloudformation/guardhook.json
@@ -39,7 +39,8 @@
       "enum": [
         "RESOURCE",
         "STACK",
-        "CHANGE_SET"
+        "CHANGE_SET",
+        "CLOUD_CONTROL"
       ]
     },
     "TargetName": {
@@ -267,7 +268,7 @@
     },
     "Alias": {
       "description": "The typename alias for the hook.",
-      "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$",
+      "pattern": "^(?!(?i)aws)[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$",
       "type": "string"
     },
     "HookArn": {
diff --git a/internal/aws/cfn/schemas/aws/cloudformation/lambdahook.json b/internal/aws/cfn/schemas/aws/cloudformation/lambdahook.json
index d4cbbc4d..4bbd0e2f 100644
--- a/internal/aws/cfn/schemas/aws/cloudformation/lambdahook.json
+++ b/internal/aws/cfn/schemas/aws/cloudformation/lambdahook.json
@@ -21,7 +21,8 @@
       "enum": [
         "RESOURCE",
         "STACK",
-        "CHANGE_SET"
+        "CHANGE_SET",
+        "CLOUD_CONTROL"
       ]
     },
     "TargetName": {
@@ -248,7 +249,7 @@
     },
     "Alias": {
       "description": "The typename alias for the hook.",
-      "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$",
+      "pattern": "^(?!(?i)aws)[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$",
       "type": "string"
     },
     "HookArn": {
diff --git a/internal/aws/cfn/schemas/aws/databrew/dataset.json b/internal/aws/cfn/schemas/aws/databrew/dataset.json
index 23af249f..951d3e73 100644
--- a/internal/aws/cfn/schemas/aws/databrew/dataset.json
+++ b/internal/aws/cfn/schemas/aws/databrew/dataset.json
@@ -28,6 +28,15 @@
       "description": "Input",
       "$ref": "#/definitions/Input"
     },
+    "Source": {
+      "description": "Source type of the dataset",
+      "type": "string",
+      "enum": [
+        "S3",
+        "DATA-CATALOG",
+        "DATABASE"
+      ]
+    },
     "PathOptions": {
       "description": "PathOptions",
       "$ref": "#/definitions/PathOptions"
@@ -150,6 +159,9 @@
         },
         "Key": {
           "type": "string"
+        },
+        "BucketOwner": {
+          "$ref": "#/definitions/BucketOwner"
         }
       },
       "additionalProperties": false,
@@ -212,6 +224,12 @@
       },
       "additionalProperties": false
     },
+    "BucketOwner": {
+      "description": "Bucket owner",
+      "type": "string",
+      "minLength": 12,
+      "maxLength": 12
+    },
     "PathOptions": {
       "description": "Path options for dataset",
       "type": "object",
diff --git a/internal/aws/cfn/schemas/aws/ec2/ec2fleet.json b/internal/aws/cfn/schemas/aws/ec2/ec2fleet.json
index b5ab822d..fc760bc9 100644
--- a/internal/aws/cfn/schemas/aws/ec2/ec2fleet.json
+++ b/internal/aws/cfn/schemas/aws/ec2/ec2fleet.json
@@ -319,6 +319,24 @@
         }
       }
     },
+    "BlockDeviceMapping": {
+      "additionalProperties": false,
+      "type": "object",
+      "properties": {
+        "Ebs": {
+          "$ref": "#/definitions/EbsBlockDevice"
+        },
+        "NoDevice": {
+          "type": "string"
+        },
+        "VirtualName": {
+          "type": "string"
+        },
+        "DeviceName": {
+          "type": "string"
+        }
+      }
+    },
     "AcceleratorCountRequest": {
       "additionalProperties": false,
       "type": "object",
@@ -521,6 +539,9 @@
         "AcceleratorCount": {
           "$ref": "#/definitions/AcceleratorCountRequest"
         },
+        "BaselinePerformanceFactors": {
+          "$ref": "#/definitions/BaselinePerformanceFactorsRequest"
+        },
         "SpotMaxPricePercentageOverLowestPrice": {
           "type": "integer"
         },
@@ -662,6 +683,42 @@
         }
       }
     },
+    "EbsBlockDevice": {
+      "additionalProperties": false,
+      "type": "object",
+      "properties": {
+        "SnapshotId": {
+          "type": "string"
+        },
+        "VolumeType": {
+          "type": "string",
+          "enum": [
+            "gp2",
+            "gp3",
+            "io1",
+            "io2",
+            "sc1",
+            "st1",
+            "standard"
+          ]
+        },
+        "KmsKeyId": {
+          "type": "string"
+        },
+        "Encrypted": {
+          "type": "boolean"
+        },
+        "Iops": {
+          "type": "integer"
+        },
+        "VolumeSize": {
+          "type": "integer"
+        },
+        "DeleteOnTermination": {
+          "type": "boolean"
+        }
+      }
+    },
     "Tag": {
       "additionalProperties": false,
       "type": "object",
diff --git a/internal/aws/cfn/schemas/aws/ec2/spotfleet.json b/internal/aws/cfn/schemas/aws/ec2/spotfleet.json
index 2ad36ce6..cbd7d09f 100644
--- a/internal/aws/cfn/schemas/aws/ec2/spotfleet.json
+++ b/internal/aws/cfn/schemas/aws/ec2/spotfleet.json
@@ -1,485 +1,270 @@
 {
-  "handlers": {
-    "read": {
-      "permissions": [
-        "ec2:DescribeSpotFleetRequests"
-      ]
-    },
-    "create": {
-      "permissions": [
-        "iam:PassRole",
-        "ec2:CreateTags",
-        "ec2:RequestSpotFleet",
-        "ec2:DescribeSpotFleetRequests",
-        "ec2:RunInstances"
-      ]
-    },
-    "update": {
-      "permissions": [
-        "ec2:ModifySpotFleetRequest",
-        "ec2:DescribeSpotFleetRequests"
-      ]
-    },
-    "list": {
-      "permissions": [
-        "ec2:DescribeSpotFleetRequests"
-      ]
-    },
-    "delete": {
-      "permissions": [
-        "ec2:DescribeSpotFleetRequests",
-        "ec2:CancelSpotFleetRequests"
-      ]
-    }
-  },
   "typeName": "AWS::EC2::SpotFleet",
-  "readOnlyProperties": [
-    "/properties/Id"
-  ],
   "description": "Resource Type definition for AWS::EC2::SpotFleet",
-  "writeOnlyProperties": [
-    "/properties/SpotFleetRequestConfigData/TagSpecifications",
-    "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups"
-  ],
-  "createOnlyProperties": [
-    "/properties/SpotFleetRequestConfigData/AllocationStrategy",
-    "/properties/SpotFleetRequestConfigData/IamFleetRole",
-    "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior",
-    "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount",
-    "/properties/SpotFleetRequestConfigData/LaunchSpecifications",
-    "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs",
-    "/properties/SpotFleetRequestConfigData/LoadBalancersConfig",
-    "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy",
-    "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice",
-    "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity",
-    "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances",
-    "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies",
-    "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice",
-    "/properties/SpotFleetRequestConfigData/SpotPrice",
-    "/properties/SpotFleetRequestConfigData/TagSpecifications",
-    "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration",
-    "/properties/SpotFleetRequestConfigData/Type",
-    "/properties/SpotFleetRequestConfigData/ValidFrom",
-    "/properties/SpotFleetRequestConfigData/ValidUntil"
-  ],
   "additionalProperties": false,
-  "primaryIdentifier": [
-    "/properties/Id"
-  ],
+  "properties": {
+    "Id": {
+      "type": "string"
+    },
+    "SpotFleetRequestConfigData": {
+      "$ref": "#/definitions/SpotFleetRequestConfigData"
+    }
+  },
   "definitions": {
-    "ClassicLoadBalancersConfig": {
-      "additionalProperties": false,
+    "SpotFleetRequestConfigData": {
       "type": "object",
-      "properties": {
-        "ClassicLoadBalancers": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/ClassicLoadBalancer"
-          }
-        }
-      },
-      "required": [
-        "ClassicLoadBalancers"
-      ]
-    },
-    "MemoryGiBPerVCpuRequest": {
       "additionalProperties": false,
-      "type": "object",
       "properties": {
-        "Min": {
-          "type": "number"
+        "AllocationStrategy": {
+          "type": "string",
+          "enum": [
+            "capacityOptimized",
+            "capacityOptimizedPrioritized",
+            "diversified",
+            "lowestPrice",
+            "priceCapacityOptimized"
+          ]
         },
-        "Max": {
-          "type": "number"
-        }
-      }
-    },
-    "InstanceIpv6Address": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Ipv6Address": {
+        "Context": {
           "type": "string"
-        }
-      },
-      "required": [
-        "Ipv6Address"
-      ]
-    },
-    "SpotFleetMonitoring": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Enabled": {
-          "default": false,
-          "type": "boolean"
-        }
-      }
-    },
-    "TotalLocalStorageGBRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "number"
         },
-        "Max": {
-          "type": "number"
-        }
-      }
-    },
-    "NetworkBandwidthGbpsRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "number"
+        "ExcessCapacityTerminationPolicy": {
+          "type": "string",
+          "enum": [
+            "Default",
+            "NoTermination",
+            "default",
+            "noTermination"
+          ]
         },
-        "Max": {
-          "type": "number"
-        }
-      }
-    },
-    "VCpuCountRangeRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "integer"
+        "IamFleetRole": {
+          "type": "string"
         },
-        "Max": {
-          "type": "integer"
-        }
-      }
-    },
-    "BaselineEbsBandwidthMbpsRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "integer"
+        "InstanceInterruptionBehavior": {
+          "type": "string",
+          "enum": [
+            "hibernate",
+            "stop",
+            "terminate"
+          ]
         },
-        "Max": {
+        "InstancePoolsToUseCount": {
           "type": "integer"
-        }
-      }
-    },
-    "FleetLaunchTemplateSpecification": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "LaunchTemplateName": {
-          "minLength": 3,
-          "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+",
-          "type": "string",
-          "maxLength": 128
         },
-        "Version": {
-          "type": "string"
+        "LaunchSpecifications": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/SpotFleetLaunchSpecification"
+          }
         },
-        "LaunchTemplateId": {
-          "type": "string"
-        }
-      },
-      "required": [
-        "Version"
-      ]
-    },
-    "PrivateIpAddressSpecification": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "PrivateIpAddress": {
-          "type": "string"
+        "LaunchTemplateConfigs": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/LaunchTemplateConfig"
+          }
         },
-        "Primary": {
-          "type": "boolean"
-        }
-      },
-      "required": [
-        "PrivateIpAddress"
-      ]
-    },
-    "NetworkInterfaceCountRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "integer"
+        "LoadBalancersConfig": {
+          "$ref": "#/definitions/LoadBalancersConfig"
         },
-        "Max": {
-          "type": "integer"
-        }
-      }
-    },
-    "PerformanceFactorReferenceRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "InstanceFamily": {
+        "OnDemandAllocationStrategy": {
           "type": "string"
-        }
-      }
-    },
-    "LaunchTemplateOverrides": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "SpotPrice": {
+        },
+        "OnDemandMaxTotalPrice": {
           "type": "string"
         },
-        "WeightedCapacity": {
-          "type": "number"
+        "OnDemandTargetCapacity": {
+          "type": "integer"
         },
-        "Priority": {
-          "type": "number"
+        "ReplaceUnhealthyInstances": {
+          "type": "boolean"
         },
-        "AvailabilityZone": {
+        "SpotMaintenanceStrategies": {
+          "$ref": "#/definitions/SpotMaintenanceStrategies"
+        },
+        "SpotMaxTotalPrice": {
           "type": "string"
         },
-        "SubnetId": {
+        "SpotPrice": {
           "type": "string"
         },
-        "InstanceRequirements": {
-          "$ref": "#/definitions/InstanceRequirementsRequest"
+        "TargetCapacity": {
+          "type": "integer"
         },
-        "InstanceType": {
-          "type": "string"
-        }
-      }
-    },
-    "SpotPlacement": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "GroupName": {
-          "type": "string"
+        "TerminateInstancesWithExpiration": {
+          "type": "boolean"
         },
-        "Tenancy": {
+        "Type": {
           "type": "string",
           "enum": [
-            "dedicated",
-            "default",
-            "host"
+            "maintain",
+            "request"
           ]
         },
-        "AvailabilityZone": {
-          "type": "string"
-        }
-      }
-    },
-    "CpuPerformanceFactorRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "References": {
-          "uniqueItems": false,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/PerformanceFactorReferenceRequest"
-          }
-        }
-      }
-    },
-    "TargetGroup": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Arn": {
+        "ValidFrom": {
           "type": "string"
-        }
-      },
-      "required": [
-        "Arn"
-      ]
-    },
-    "BlockDeviceMapping": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Ebs": {
-          "$ref": "#/definitions/EbsBlockDevice"
         },
-        "NoDevice": {
+        "ValidUntil": {
           "type": "string"
         },
-        "VirtualName": {
-          "type": "string"
+        "TagSpecifications": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/SpotFleetTagSpecification"
+          }
         },
-        "DeviceName": {
-          "type": "string"
+        "TargetCapacityUnitType": {
+          "type": "string",
+          "enum": [
+            "vcpu",
+            "memory-mib",
+            "units"
+          ]
         }
       },
       "required": [
-        "DeviceName"
+        "IamFleetRole",
+        "TargetCapacity"
       ]
     },
-    "TargetGroupsConfig": {
-      "additionalProperties": false,
+    "SpotFleetLaunchSpecification": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "TargetGroups": {
-          "uniqueItems": true,
+        "BlockDeviceMappings": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/TargetGroup"
+            "$ref": "#/definitions/BlockDeviceMapping"
           }
-        }
-      },
-      "required": [
-        "TargetGroups"
-      ]
-    },
-    "SpotCapacityRebalance": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "TerminationDelay": {
-          "type": "integer"
         },
-        "ReplacementStrategy": {
-          "type": "string",
-          "enum": [
-            "launch",
-            "launch-before-terminate"
-          ]
-        }
-      }
-    },
-    "AcceleratorCountRequest": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Min": {
-          "type": "integer"
+        "EbsOptimized": {
+          "type": "boolean",
+          "default": false
         },
-        "Max": {
-          "type": "integer"
-        }
-      }
-    },
-    "SpotFleetRequestConfigData": {
-      "additionalProperties": false,
-      "type": "object",
-      "properties": {
-        "Context": {
+        "IamInstanceProfile": {
+          "$ref": "#/definitions/IamInstanceProfileSpecification"
+        },
+        "ImageId": {
           "type": "string"
         },
-        "SpotMaxTotalPrice": {
+        "InstanceType": {
           "type": "string"
         },
-        "ExcessCapacityTerminationPolicy": {
-          "type": "string",
-          "enum": [
-            "Default",
-            "NoTermination",
-            "default",
-            "noTermination"
-          ]
+        "KernelId": {
+          "type": "string"
         },
-        "TagSpecifications": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/SpotFleetTagSpecification"
-          }
+        "KeyName": {
+          "type": "string"
         },
-        "InstancePoolsToUseCount": {
-          "type": "integer"
+        "Monitoring": {
+          "$ref": "#/definitions/SpotFleetMonitoring"
         },
-        "LaunchTemplateConfigs": {
-          "uniqueItems": true,
+        "NetworkInterfaces": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/LaunchTemplateConfig"
+            "$ref": "#/definitions/InstanceNetworkInterfaceSpecification"
           }
         },
-        "TargetCapacityUnitType": {
-          "type": "string",
-          "enum": [
-            "vcpu",
-            "memory-mib",
-            "units"
-          ]
+        "Placement": {
+          "$ref": "#/definitions/SpotPlacement"
         },
-        "IamFleetRole": {
+        "RamdiskId": {
           "type": "string"
         },
-        "SpotMaintenanceStrategies": {
-          "$ref": "#/definitions/SpotMaintenanceStrategies"
-        },
-        "TerminateInstancesWithExpiration": {
-          "type": "boolean"
+        "SecurityGroups": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/GroupIdentifier"
+          }
         },
-        "ValidUntil": {
+        "SpotPrice": {
           "type": "string"
         },
-        "OnDemandMaxTotalPrice": {
+        "SubnetId": {
           "type": "string"
         },
-        "OnDemandAllocationStrategy": {
-          "type": "string"
+        "TagSpecifications": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/SpotFleetTagSpecification"
+          }
         },
-        "SpotPrice": {
+        "UserData": {
           "type": "string"
         },
-        "AllocationStrategy": {
-          "type": "string",
-          "enum": [
-            "capacityOptimized",
-            "capacityOptimizedPrioritized",
-            "diversified",
-            "lowestPrice",
-            "priceCapacityOptimized"
-          ]
+        "WeightedCapacity": {
+          "type": "number"
         },
-        "OnDemandTargetCapacity": {
-          "type": "integer"
+        "InstanceRequirements": {
+          "$ref": "#/definitions/InstanceRequirementsRequest"
+        }
+      },
+      "required": [
+        "ImageId"
+      ]
+    },
+    "LoadBalancersConfig": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "ClassicLoadBalancersConfig": {
+          "$ref": "#/definitions/ClassicLoadBalancersConfig"
         },
-        "Type": {
+        "TargetGroupsConfig": {
+          "$ref": "#/definitions/TargetGroupsConfig"
+        }
+      }
+    },
+    "SpotMaintenanceStrategies": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "CapacityRebalance": {
+          "$ref": "#/definitions/SpotCapacityRebalance"
+        }
+      }
+    },
+    "SpotCapacityRebalance": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "ReplacementStrategy": {
           "type": "string",
           "enum": [
-            "maintain",
-            "request"
+            "launch",
+            "launch-before-terminate"
           ]
         },
-        "LaunchSpecifications": {
-          "uniqueItems": true,
+        "TerminationDelay": {
+          "type": "integer"
+        }
+      }
+    },
+    "LaunchTemplateConfig": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "LaunchTemplateSpecification": {
+          "$ref": "#/definitions/FleetLaunchTemplateSpecification"
+        },
+        "Overrides": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/SpotFleetLaunchSpecification"
+            "$ref": "#/definitions/LaunchTemplateOverrides"
           }
-        },
-        "InstanceInterruptionBehavior": {
-          "type": "string",
-          "enum": [
-            "hibernate",
-            "stop",
-            "terminate"
-          ]
-        },
-        "LoadBalancersConfig": {
-          "$ref": "#/definitions/LoadBalancersConfig"
-        },
-        "ValidFrom": {
-          "type": "string"
-        },
-        "ReplaceUnhealthyInstances": {
-          "type": "boolean"
-        },
-        "TargetCapacity": {
-          "type": "integer"
         }
-      },
-      "required": [
-        "IamFleetRole",
-        "TargetCapacity"
-      ]
+      }
     },
     "SpotFleetTagSpecification": {
-      "additionalProperties": false,
       "type": "object",
+      "additionalProperties": false,
       "properties": {
         "ResourceType": {
           "type": "string",
@@ -534,167 +319,384 @@
           ]
         },
         "Tags": {
-          "uniqueItems": false,
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "$ref": "#/definitions/Tag"
           }
         }
       }
     },
-    "SpotFleetLaunchSpecification": {
+    "FleetLaunchTemplateSpecification": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "LaunchTemplateId": {
+          "type": "string"
+        },
+        "LaunchTemplateName": {
+          "type": "string",
+          "minLength": 3,
+          "maxLength": 128,
+          "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+"
+        },
+        "Version": {
+          "type": "string"
+        }
+      },
+      "required": [
+        "Version"
+      ]
+    },
+    "GroupIdentifier": {
+      "type": "object",
       "additionalProperties": false,
+      "properties": {
+        "GroupId": {
+          "type": "string"
+        }
+      },
+      "required": [
+        "GroupId"
+      ]
+    },
+    "IamInstanceProfileSpecification": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "SecurityGroups": {
-          "uniqueItems": true,
+        "Arn": {
+          "type": "string"
+        }
+      }
+    },
+    "ClassicLoadBalancersConfig": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "ClassicLoadBalancers": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/GroupIdentifier"
+            "$ref": "#/definitions/ClassicLoadBalancer"
           }
+        }
+      },
+      "required": [
+        "ClassicLoadBalancers"
+      ]
+    },
+    "LaunchTemplateOverrides": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "AvailabilityZone": {
+          "type": "string"
         },
-        "TagSpecifications": {
+        "InstanceType": {
+          "type": "string"
+        },
+        "SpotPrice": {
+          "type": "string"
+        },
+        "SubnetId": {
+          "type": "string"
+        },
+        "WeightedCapacity": {
+          "type": "number"
+        },
+        "InstanceRequirements": {
+          "$ref": "#/definitions/InstanceRequirementsRequest"
+        },
+        "Priority": {
+          "type": "number"
+        }
+      }
+    },
+    "SpotFleetMonitoring": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "Enabled": {
+          "type": "boolean",
+          "default": false
+        }
+      }
+    },
+    "SpotPlacement": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "AvailabilityZone": {
+          "type": "string"
+        },
+        "GroupName": {
+          "type": "string"
+        },
+        "Tenancy": {
+          "type": "string",
+          "enum": [
+            "dedicated",
+            "default",
+            "host"
+          ]
+        }
+      }
+    },
+    "InstanceNetworkInterfaceSpecification": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "AssociatePublicIpAddress": {
+          "type": "boolean"
+        },
+        "DeleteOnTermination": {
+          "type": "boolean"
+        },
+        "Description": {
+          "type": "string"
+        },
+        "DeviceIndex": {
+          "type": "integer"
+        },
+        "Groups": {
+          "type": "array",
           "uniqueItems": true,
+          "items": {
+            "type": "string"
+          }
+        },
+        "Ipv6AddressCount": {
+          "type": "integer"
+        },
+        "Ipv6Addresses": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/SpotFleetTagSpecification"
+            "$ref": "#/definitions/InstanceIpv6Address"
           }
         },
-        "UserData": {
+        "NetworkInterfaceId": {
           "type": "string"
         },
-        "BlockDeviceMappings": {
-          "uniqueItems": true,
+        "PrivateIpAddresses": {
           "type": "array",
+          "uniqueItems": true,
           "items": {
-            "$ref": "#/definitions/BlockDeviceMapping"
+            "$ref": "#/definitions/PrivateIpAddressSpecification"
           }
         },
-        "IamInstanceProfile": {
-          "$ref": "#/definitions/IamInstanceProfileSpecification"
-        },
-        "KernelId": {
-          "type": "string"
+        "SecondaryPrivateIpAddressCount": {
+          "type": "integer"
         },
         "SubnetId": {
           "type": "string"
-        },
-        "EbsOptimized": {
-          "default": false,
-          "type": "boolean"
-        },
-        "KeyName": {
+        }
+      }
+    },
+    "BlockDeviceMapping": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "DeviceName": {
           "type": "string"
         },
-        "RamdiskId": {
-          "type": "string"
+        "Ebs": {
+          "$ref": "#/definitions/EbsBlockDevice"
         },
-        "SpotPrice": {
+        "NoDevice": {
           "type": "string"
         },
-        "WeightedCapacity": {
-          "type": "number"
+        "VirtualName": {
+          "type": "string"
+        }
+      },
+      "required": [
+        "DeviceName"
+      ]
+    },
+    "TargetGroupsConfig": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "TargetGroups": {
+          "type": "array",
+          "uniqueItems": true,
+          "items": {
+            "$ref": "#/definitions/TargetGroup"
+          }
+        }
+      },
+      "required": [
+        "TargetGroups"
+      ]
+    },
+    "EbsBlockDevice": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "DeleteOnTermination": {
+          "type": "boolean"
         },
-        "Placement": {
-          "$ref": "#/definitions/SpotPlacement"
+        "Encrypted": {
+          "type": "boolean"
         },
-        "NetworkInterfaces": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/InstanceNetworkInterfaceSpecification"
-          }
+        "Iops": {
+          "type": "integer"
         },
-        "ImageId": {
+        "SnapshotId": {
           "type": "string"
         },
-        "InstanceRequirements": {
-          "$ref": "#/definitions/InstanceRequirementsRequest"
+        "VolumeSize": {
+          "type": "integer"
         },
-        "InstanceType": {
+        "VolumeType": {
+          "type": "string",
+          "enum": [
+            "gp2",
+            "gp3",
+            "io1",
+            "io2",
+            "sc1",
+            "st1",
+            "standard"
+          ]
+        }
+      }
+    },
+    "TargetGroup": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "Arn": {
           "type": "string"
-        },
-        "Monitoring": {
-          "$ref": "#/definitions/SpotFleetMonitoring"
         }
       },
       "required": [
-        "ImageId"
+        "Arn"
       ]
     },
-    "IamInstanceProfileSpecification": {
+    "Tag": {
+      "type": "object",
       "additionalProperties": false,
+      "properties": {
+        "Key": {
+          "type": "string"
+        },
+        "Value": {
+          "type": "string"
+        }
+      },
+      "required": [
+        "Value",
+        "Key"
+      ]
+    },
+    "PrivateIpAddressSpecification": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "Arn": {
+        "Primary": {
+          "type": "boolean"
+        },
+        "PrivateIpAddress": {
           "type": "string"
         }
-      }
+      },
+      "required": [
+        "PrivateIpAddress"
+      ]
     },
-    "LaunchTemplateConfig": {
+    "ClassicLoadBalancer": {
+      "type": "object",
       "additionalProperties": false,
+      "properties": {
+        "Name": {
+          "type": "string"
+        }
+      },
+      "required": [
+        "Name"
+      ]
+    },
+    "InstanceIpv6Address": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "LaunchTemplateSpecification": {
-          "$ref": "#/definitions/FleetLaunchTemplateSpecification"
-        },
-        "Overrides": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/LaunchTemplateOverrides"
-          }
+        "Ipv6Address": {
+          "type": "string"
         }
-      }
+      },
+      "required": [
+        "Ipv6Address"
+      ]
     },
     "InstanceRequirementsRequest": {
-      "additionalProperties": false,
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "InstanceGenerations": {
-          "uniqueItems": false,
+        "VCpuCount": {
+          "$ref": "#/definitions/VCpuCountRangeRequest"
+        },
+        "MemoryMiB": {
+          "$ref": "#/definitions/MemoryMiBRequest"
+        },
+        "CpuManufacturers": {
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "type": "string",
             "enum": [
-              "current",
-              "previous"
+              "intel",
+              "amd",
+              "amazon-web-services",
+              "apple"
             ]
           }
         },
         "MemoryGiBPerVCpu": {
           "$ref": "#/definitions/MemoryGiBPerVCpuRequest"
         },
-        "AcceleratorTypes": {
-          "uniqueItems": false,
+        "AllowedInstanceTypes": {
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "type": "string",
-            "enum": [
-              "gpu",
-              "fpga",
-              "inference"
-            ]
+            "minLength": 1,
+            "maxLength": 30,
+            "pattern": "[a-zA-Z0-9\\.\\*]+"
           }
         },
-        "VCpuCount": {
-          "$ref": "#/definitions/VCpuCountRangeRequest"
-        },
-        "AcceleratorManufacturers": {
+        "ExcludedInstanceTypes": {
+          "type": "array",
           "uniqueItems": false,
+          "items": {
+            "type": "string",
+            "minLength": 1,
+            "maxLength": 30,
+            "pattern": "[a-zA-Z0-9\\.\\*]+"
+          }
+        },
+        "InstanceGenerations": {
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "type": "string",
             "enum": [
-              "amazon-web-services",
-              "amd",
-              "habana",
-              "nvidia",
-              "xilinx"
+              "current",
+              "previous"
             ]
           }
         },
-        "LocalStorage": {
+        "SpotMaxPricePercentageOverLowestPrice": {
+          "type": "integer"
+        },
+        "OnDemandMaxPricePercentageOverLowestPrice": {
+          "type": "integer"
+        },
+        "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
+          "type": "integer"
+        },
+        "BareMetal": {
           "type": "string",
           "enum": [
             "included",
@@ -702,20 +704,7 @@
             "excluded"
           ]
         },
-        "CpuManufacturers": {
-          "uniqueItems": false,
-          "type": "array",
-          "items": {
-            "type": "string",
-            "enum": [
-              "intel",
-              "amd",
-              "amazon-web-services",
-              "apple"
-            ]
-          }
-        },
-        "BareMetal": {
+        "BurstablePerformance": {
           "type": "string",
           "enum": [
             "included",
@@ -726,18 +715,23 @@
         "RequireHibernateSupport": {
           "type": "boolean"
         },
-        "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
-          "type": "integer"
+        "NetworkBandwidthGbps": {
+          "$ref": "#/definitions/NetworkBandwidthGbpsRequest"
         },
-        "OnDemandMaxPricePercentageOverLowestPrice": {
-          "type": "integer"
+        "NetworkInterfaceCount": {
+          "$ref": "#/definitions/NetworkInterfaceCountRequest"
         },
-        "MemoryMiB": {
-          "$ref": "#/definitions/MemoryMiBRequest"
+        "LocalStorage": {
+          "type": "string",
+          "enum": [
+            "included",
+            "required",
+            "excluded"
+          ]
         },
         "LocalStorageTypes": {
-          "uniqueItems": false,
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "type": "string",
             "enum": [
@@ -746,44 +740,44 @@
             ]
           }
         },
-        "NetworkInterfaceCount": {
-          "$ref": "#/definitions/NetworkInterfaceCountRequest"
+        "TotalLocalStorageGB": {
+          "$ref": "#/definitions/TotalLocalStorageGBRequest"
         },
-        "ExcludedInstanceTypes": {
-          "uniqueItems": false,
-          "type": "array",
-          "items": {
-            "minLength": 1,
-            "pattern": "[a-zA-Z0-9\\.\\*]+",
-            "type": "string",
-            "maxLength": 30
-          }
+        "BaselineEbsBandwidthMbps": {
+          "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest"
         },
-        "AllowedInstanceTypes": {
-          "uniqueItems": false,
+        "AcceleratorTypes": {
           "type": "array",
+          "uniqueItems": false,
           "items": {
-            "minLength": 1,
-            "pattern": "[a-zA-Z0-9\\.\\*]+",
             "type": "string",
-            "maxLength": 30
+            "enum": [
+              "gpu",
+              "fpga",
+              "inference"
+            ]
           }
         },
-        "NetworkBandwidthGbps": {
-          "$ref": "#/definitions/NetworkBandwidthGbpsRequest"
-        },
         "AcceleratorCount": {
           "$ref": "#/definitions/AcceleratorCountRequest"
         },
-        "SpotMaxPricePercentageOverLowestPrice": {
-          "type": "integer"
-        },
-        "BaselineEbsBandwidthMbps": {
-          "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest"
+        "AcceleratorManufacturers": {
+          "type": "array",
+          "uniqueItems": false,
+          "items": {
+            "type": "string",
+            "enum": [
+              "amazon-web-services",
+              "amd",
+              "habana",
+              "nvidia",
+              "xilinx"
+            ]
+          }
         },
         "AcceleratorNames": {
-          "uniqueItems": false,
           "type": "array",
+          "uniqueItems": false,
           "items": {
             "type": "string",
             "enum": [
@@ -805,22 +799,26 @@
         "AcceleratorTotalMemoryMiB": {
           "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest"
         },
-        "BurstablePerformance": {
-          "type": "string",
-          "enum": [
-            "included",
-            "required",
-            "excluded"
-          ]
+        "BaselinePerformanceFactors": {
+          "$ref": "#/definitions/BaselinePerformanceFactorsRequest"
+        }
+      }
+    },
+    "VCpuCountRangeRequest": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "Min": {
+          "type": "integer"
         },
-        "TotalLocalStorageGB": {
-          "$ref": "#/definitions/TotalLocalStorageGBRequest"
+        "Max": {
+          "type": "integer"
         }
       }
     },
     "MemoryMiBRequest": {
-      "additionalProperties": false,
       "type": "object",
+      "additionalProperties": false,
       "properties": {
         "Min": {
           "type": "integer"
@@ -830,90 +828,69 @@
         }
       }
     },
-    "BaselinePerformanceFactorsRequest": {
-      "additionalProperties": false,
+    "MemoryGiBPerVCpuRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "Cpu": {
-          "$ref": "#/definitions/CpuPerformanceFactorRequest"
+        "Min": {
+          "type": "number"
+        },
+        "Max": {
+          "type": "number"
         }
       }
     },
-    "InstanceNetworkInterfaceSpecification": {
-      "additionalProperties": false,
+    "NetworkBandwidthGbpsRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "Description": {
-          "type": "string"
-        },
-        "PrivateIpAddresses": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/PrivateIpAddressSpecification"
-          }
-        },
-        "SecondaryPrivateIpAddressCount": {
-          "type": "integer"
+        "Min": {
+          "type": "number"
         },
-        "DeviceIndex": {
+        "Max": {
+          "type": "number"
+        }
+      }
+    },
+    "NetworkInterfaceCountRequest": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "Min": {
           "type": "integer"
         },
-        "Groups": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "type": "string"
-          }
-        },
-        "Ipv6AddressCount": {
+        "Max": {
           "type": "integer"
-        },
-        "Ipv6Addresses": {
-          "uniqueItems": true,
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/InstanceIpv6Address"
-          }
-        },
-        "SubnetId": {
-          "type": "string"
-        },
-        "AssociatePublicIpAddress": {
-          "type": "boolean"
-        },
-        "NetworkInterfaceId": {
-          "type": "string"
-        },
-        "DeleteOnTermination": {
-          "type": "boolean"
         }
       }
     },
-    "SpotMaintenanceStrategies": {
-      "additionalProperties": false,
+    "TotalLocalStorageGBRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "CapacityRebalance": {
-          "$ref": "#/definitions/SpotCapacityRebalance"
+        "Min": {
+          "type": "number"
+        },
+        "Max": {
+          "type": "number"
         }
       }
     },
-    "GroupIdentifier": {
-      "additionalProperties": false,
+    "BaselineEbsBandwidthMbpsRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "GroupId": {
-          "type": "string"
+        "Min": {
+          "type": "integer"
+        },
+        "Max": {
+          "type": "integer"
         }
-      },
-      "required": [
-        "GroupId"
-      ]
+      }
     },
-    "AcceleratorTotalMemoryMiBRequest": {
-      "additionalProperties": false,
+    "AcceleratorCountRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
         "Min": {
           "type": "integer"
@@ -923,89 +900,115 @@
         }
       }
     },
-    "EbsBlockDevice": {
-      "additionalProperties": false,
+    "AcceleratorTotalMemoryMiBRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "SnapshotId": {
-          "type": "string"
-        },
-        "VolumeType": {
-          "type": "string",
-          "enum": [
-            "gp2",
-            "gp3",
-            "io1",
-            "io2",
-            "sc1",
-            "st1",
-            "standard"
-          ]
-        },
-        "Encrypted": {
-          "type": "boolean"
-        },
-        "Iops": {
+        "Min": {
           "type": "integer"
         },
-        "VolumeSize": {
+        "Max": {
           "type": "integer"
-        },
-        "DeleteOnTermination": {
-          "type": "boolean"
         }
       }
     },
-    "LoadBalancersConfig": {
-      "additionalProperties": false,
+    "BaselinePerformanceFactorsRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "ClassicLoadBalancersConfig": {
-          "$ref": "#/definitions/ClassicLoadBalancersConfig"
-        },
-        "TargetGroupsConfig": {
-          "$ref": "#/definitions/TargetGroupsConfig"
+        "Cpu": {
+          "$ref": "#/definitions/CpuPerformanceFactorRequest"
         }
       }
     },
-    "Tag": {
-      "additionalProperties": false,
+    "CpuPerformanceFactorRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "Value": {
-          "type": "string"
-        },
-        "Key": {
-          "type": "string"
+        "References": {
+          "type": "array",
+          "uniqueItems": false,
+          "items": {
+            "$ref": "#/definitions/PerformanceFactorReferenceRequest"
+          }
         }
-      },
-      "required": [
-        "Value",
-        "Key"
-      ]
+      }
     },
-    "ClassicLoadBalancer": {
-      "additionalProperties": false,
+    "PerformanceFactorReferenceRequest": {
       "type": "object",
+      "additionalProperties": false,
       "properties": {
-        "Name": {
+        "InstanceFamily": {
           "type": "string"
         }
-      },
-      "required": [
-        "Name"
-      ]
-    }
-  },
-  "properties": {
-    "SpotFleetRequestConfigData": {
-      "$ref": "#/definitions/SpotFleetRequestConfigData"
-    },
-    "Id": {
-      "type": "string"
+      }
     }
   },
   "required": [
     "SpotFleetRequestConfigData"
-  ]
+  ],
+  "createOnlyProperties": [
+    "/properties/SpotFleetRequestConfigData/AllocationStrategy",
+    "/properties/SpotFleetRequestConfigData/IamFleetRole",
+    "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior",
+    "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount",
+    "/properties/SpotFleetRequestConfigData/LaunchSpecifications",
+    "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs",
+    "/properties/SpotFleetRequestConfigData/LoadBalancersConfig",
+    "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy",
+    "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice",
+    "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity",
+    "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances",
+    "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies",
+    "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice",
+    "/properties/SpotFleetRequestConfigData/SpotPrice",
+    "/properties/SpotFleetRequestConfigData/TagSpecifications",
+    "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration",
+    "/properties/SpotFleetRequestConfigData/Type",
+    "/properties/SpotFleetRequestConfigData/ValidFrom",
+    "/properties/SpotFleetRequestConfigData/ValidUntil"
+  ],
+  "readOnlyProperties": [
+    "/properties/Id"
+  ],
+  "writeOnlyProperties": [
+    "/properties/SpotFleetRequestConfigData/TagSpecifications",
+    "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups"
+  ],
+  "primaryIdentifier": [
+    "/properties/Id"
+  ],
+  "handlers": {
+    "create": {
+      "permissions": [
+        "iam:PassRole",
+        "ec2:CreateTags",
+        "ec2:RequestSpotFleet",
+        "ec2:DescribeSpotFleetRequests",
+        "ec2:RunInstances"
+      ]
+    },
+    "delete": {
+      "permissions": [
+        "ec2:DescribeSpotFleetRequests",
+        "ec2:CancelSpotFleetRequests"
+      ]
+    },
+    "list": {
+      "permissions": [
+        "ec2:DescribeSpotFleetRequests"
+      ]
+    },
+    "read": {
+      "permissions": [
+        "ec2:DescribeSpotFleetRequests"
+      ]
+    },
+    "update": {
+      "permissions": [
+        "ec2:ModifySpotFleetRequest",
+        "ec2:DescribeSpotFleetRequests"
+      ]
+    }
+  }
 }
diff --git a/internal/aws/cfn/schemas/aws/ec2/vpcendpoint.json b/internal/aws/cfn/schemas/aws/ec2/vpcendpoint.json
index 554cb9ec..02d879ca 100644
--- a/internal/aws/cfn/schemas/aws/ec2/vpcendpoint.json
+++ b/internal/aws/cfn/schemas/aws/ec2/vpcendpoint.json
@@ -2,6 +2,33 @@
   "typeName": "AWS::EC2::VPCEndpoint",
   "description": "Specifies a VPC endpoint. A VPC endpoint provides a private connection between your VPC and an endpoint service. You can use an endpoint service provided by AWS, an MKT Partner, or another AWS accounts in your organization. For more information, see the [User Guide](https://docs.aws.amazon.com/vpc/latest/privatelink/).\n An endpoint of type ``Interface`` establishes connections between the subnets in your VPC and an AWS-service, your own service, or a service hosted by another AWS-account. With an interface VPC endpoint, you specify the subnets in which to create the endpoint and the security groups to associate with the endpoint network interfaces.\n An endpoint of type ``gateway`` serves as a target for a route in your route table for traffic destined for S3 or DDB. You can specify an endpoint policy for the endpoint, which controls access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. For more information about connectivity to S3, see [Why can't I connect to an S3 bucket using a gateway VPC endpoint?](https://docs.aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint) \n An endpoint of type ``GatewayLoadBalancer`` provides private connectivity between your VPC and virtual appliances from a service provider.",
   "additionalProperties": false,
+  "definitions": {
+    "DnsOptionsSpecification": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "DnsRecordIpType": {
+          "type": "string",
+          "enum": [
+            "ipv4",
+            "ipv6",
+            "dualstack",
+            "service-defined",
+            "not-specified"
+          ]
+        },
+        "PrivateDnsOnlyForInboundResolverEndpoint": {
+          "type": "string",
+          "enum": [
+            "OnlyInboundResolver",
+            "AllResolvers",
+            "NotSpecified"
+          ]
+        }
+      },
+      "description": ""
+    }
+  },
   "properties": {
     "Id": {
       "type": "string",
@@ -104,7 +131,9 @@
       "enum": [
         "Interface",
         "Gateway",
-        "GatewayLoadBalancer"
+        "GatewayLoadBalancer",
+        "ServiceNetwork",
+        "Resource"
       ],
       "description": "The type of endpoint.\n Default: Gateway"
     },
@@ -115,11 +144,32 @@
         "typeName": "AWS::EC2::VPC",
         "propertyPath": "/properties/VpcId"
       }
+    },
+    "ServiceNetworkArn": {
+      "type": "string",
+      "description": ""
+    },
+    "ResourceConfigurationArn": {
+      "type": "string",
+      "description": ""
+    },
+    "IpAddressType": {
+      "type": "string",
+      "enum": [
+        "ipv4",
+        "ipv6",
+        "dualstack",
+        "not-specified"
+      ],
+      "description": ""
+    },
+    "DnsOptions": {
+      "$ref": "#/definitions/DnsOptionsSpecification",
+      "description": ""
     }
   },
   "required": [
-    "VpcId",
-    "ServiceName"
+    "VpcId"
   ],
   "readOnlyProperties": [
     "/properties/NetworkInterfaceIds",
@@ -130,7 +180,9 @@
   "createOnlyProperties": [
     "/properties/ServiceName",
     "/properties/VpcEndpointType",
-    "/properties/VpcId"
+    "/properties/VpcId",
+    "/properties/ServiceNetworkArn",
+    "/properties/ResourceConfigurationArn"
   ],
   "primaryIdentifier": [
     "/properties/Id"
@@ -145,32 +197,49 @@
     "create": {
       "permissions": [
         "ec2:CreateVpcEndpoint",
-        "ec2:DescribeVpcEndpoints"
+        "ec2:DescribeVpcEndpoints",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation",
+        "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation"
       ],
       "timeoutInMinutes": 210
     },
     "read": {
       "permissions": [
-        "ec2:DescribeVpcEndpoints"
+        "ec2:DescribeVpcEndpoints",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation"
       ]
     },
     "update": {
       "permissions": [
         "ec2:ModifyVpcEndpoint",
-        "ec2:DescribeVpcEndpoints"
+        "ec2:DescribeVpcEndpoints",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation",
+        "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation"
       ],
       "timeoutInMinutes": 210
     },
     "delete": {
       "permissions": [
         "ec2:DeleteVpcEndpoints",
-        "ec2:DescribeVpcEndpoints"
+        "ec2:DescribeVpcEndpoints",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation"
       ],
       "timeoutInMinutes": 210
     },
     "list": {
       "permissions": [
-        "ec2:DescribeVpcEndpoints"
+        "ec2:DescribeVpcEndpoints",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation"
       ]
     }
   }
diff --git a/internal/aws/cfn/schemas/aws/emr/studio.json b/internal/aws/cfn/schemas/aws/emr/studio.json
index 755efe0b..00e69af4 100644
--- a/internal/aws/cfn/schemas/aws/emr/studio.json
+++ b/internal/aws/cfn/schemas/aws/emr/studio.json
@@ -10,7 +10,7 @@
     },
     "Arn": {
       "type": "string",
-      "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"
+      "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"
     },
     "Tags": {
       "type": "array",
@@ -183,6 +183,12 @@
   "primaryIdentifier": [
     "/properties/StudioId"
   ],
+  "tagging": {
+    "taggable": false,
+    "tagOnCreate": false,
+    "tagUpdatable": false,
+    "cloudFormationSystemTags": false
+  },
   "createOnlyProperties": [
     "/properties/AuthMode",
     "/properties/EngineSecurityGroupId",
diff --git a/internal/aws/cfn/schemas/aws/emr/studiosessionmapping.json b/internal/aws/cfn/schemas/aws/emr/studiosessionmapping.json
index d732f7e3..3acb5a0d 100644
--- a/internal/aws/cfn/schemas/aws/emr/studiosessionmapping.json
+++ b/internal/aws/cfn/schemas/aws/emr/studiosessionmapping.json
@@ -6,7 +6,7 @@
   "definitions": {
     "IamPolicyArn": {
       "type": "string",
-      "pattern": "^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$"
+      "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$"
     }
   },
   "properties": {
@@ -51,6 +51,12 @@
     "/properties/IdentityType",
     "/properties/IdentityName"
   ],
+  "tagging": {
+    "taggable": false,
+    "tagOnCreate": false,
+    "tagUpdatable": false,
+    "cloudFormationSystemTags": false
+  },
   "handlers": {
     "create": {
       "permissions": [
@@ -63,7 +69,24 @@
         "sso:ListDirectoryAssociations",
         "sso:GetProfile",
         "sso:ListProfiles",
-        "sso:AssociateProfile"
+        "sso:AssociateProfile",
+        "sso:CreateApplication",
+        "sso:PutApplicationAuthenticationMethod",
+        "sso:PutApplicationGrant",
+        "sso:PutApplicationAccessScope",
+        "sso:PutApplicationAssignmentConfiguration",
+        "sso:DescribeApplication",
+        "sso:DeleteApplication",
+        "sso:DeleteApplicationAuthenticationMethod",
+        "sso:DeleteApplicationAccessScope",
+        "sso:DeleteApplicationGrant",
+        "sso:ListInstances",
+        "sso-directory:CreateUser",
+        "sso-directory:CreateGroup",
+        "sso:CreateApplicationAssignment",
+        "sso:DescribeInstance",
+        "sso:DeleteApplicationAssignment",
+        "sso:ListApplicationAssignments"
       ]
     },
     "read": {
diff --git a/internal/aws/cfn/schemas/aws/imagebuilder/image.json b/internal/aws/cfn/schemas/aws/imagebuilder/image.json
index a6ff3d50..ad3faeb6 100644
--- a/internal/aws/cfn/schemas/aws/imagebuilder/image.json
+++ b/internal/aws/cfn/schemas/aws/imagebuilder/image.json
@@ -246,7 +246,8 @@
     },
     "list": {
       "permissions": [
-        "imagebuilder:ListImages"
+        "imagebuilder:ListImages",
+        "imagebuilder:ListImageBuildVersions"
       ],
       "handlerSchema": {
         "properties": {
diff --git a/internal/aws/cfn/schemas/aws/internetmonitor/monitor.json b/internal/aws/cfn/schemas/aws/internetmonitor/monitor.json
index 131ee301..4ad3d0bb 100644
--- a/internal/aws/cfn/schemas/aws/internetmonitor/monitor.json
+++ b/internal/aws/cfn/schemas/aws/internetmonitor/monitor.json
@@ -228,7 +228,12 @@
     "tagOnCreate": false,
     "tagUpdatable": true,
     "cloudFormationSystemTags": true,
-    "tagProperty": "/properties/Tags"
+    "tagProperty": "/properties/Tags",
+    "permissions": [
+      "internetmonitor:TagResource",
+      "internetmonitor:UntagResource",
+      "internetmonitor:ListTagsForResource"
+    ]
   },
   "handlers": {
     "create": {
@@ -282,6 +287,7 @@
       "permissions": [
         "internetmonitor:ListMonitors",
         "internetmonitor:GetMonitor",
+        "internetmonitor:ListTagsForResource",
         "logs:GetLogDelivery"
       ]
     }
diff --git a/internal/aws/cfn/schemas/aws/lambda/eventinvokeconfig.json b/internal/aws/cfn/schemas/aws/lambda/eventinvokeconfig.json
index e815725a..e0ab38e1 100644
--- a/internal/aws/cfn/schemas/aws/lambda/eventinvokeconfig.json
+++ b/internal/aws/cfn/schemas/aws/lambda/eventinvokeconfig.json
@@ -23,7 +23,7 @@
         "Destination": {
           "description": "The Amazon Resource Name (ARN) of the destination resource.",
           "type": "string",
-          "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)",
+          "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)",
           "minLength": 0,
           "maxLength": 350
         }
@@ -40,7 +40,7 @@
         "Destination": {
           "description": "The Amazon Resource Name (ARN) of the destination resource.",
           "type": "string",
-          "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)",
+          "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)",
           "minLength": 0,
           "maxLength": 350
         }
@@ -58,7 +58,7 @@
     "FunctionName": {
       "description": "The name of the Lambda function.",
       "type": "string",
-      "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$"
+      "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$"
     },
     "MaximumEventAgeInSeconds": {
       "description": "The maximum age of a request that Lambda sends to a function for processing.",
diff --git a/internal/aws/cfn/schemas/aws/lambda/function.json b/internal/aws/cfn/schemas/aws/lambda/function.json
index 37ecab92..3c81ee45 100644
--- a/internal/aws/cfn/schemas/aws/lambda/function.json
+++ b/internal/aws/cfn/schemas/aws/lambda/function.json
@@ -259,13 +259,13 @@
       }
     },
     "Code": {
-      "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n  When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n  Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.",
+      "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.",
       "additionalProperties": false,
       "type": "object",
       "properties": {
         "SourceKMSKeyArn": {
           "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$",
-          "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).",
+          "description": "",
           "type": "string"
         },
         "S3ObjectVersion": {
@@ -282,7 +282,7 @@
           "maxLength": 63
         },
         "ZipFile": {
-          "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n  When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n   For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.",
+          "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n  For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.",
           "type": "string"
         },
         "S3Key": {
@@ -477,7 +477,7 @@
     },
     "KmsKeyArn": {
       "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$",
-      "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n  +  The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n  +  The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n  +  When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n  +  The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n  \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).",
+      "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.",
       "type": "string"
     },
     "PackageType": {
diff --git a/internal/aws/cfn/schemas/aws/logs/integration.json b/internal/aws/cfn/schemas/aws/logs/integration.json
index e0b552a2..956e1000 100644
--- a/internal/aws/cfn/schemas/aws/logs/integration.json
+++ b/internal/aws/cfn/schemas/aws/logs/integration.json
@@ -145,7 +145,8 @@
         "es:GetDirectQueryDataSource",
         "es:AddTags",
         "es:ListApplications"
-      ]
+      ],
+      "timeoutInMinutes": 30
     },
     "read": {
       "permissions": [
diff --git a/internal/aws/cfn/schemas/aws/pcs/cluster.json b/internal/aws/cfn/schemas/aws/pcs/cluster.json
new file mode 100644
index 00000000..b01920ae
--- /dev/null
+++ b/internal/aws/cfn/schemas/aws/pcs/cluster.json
@@ -0,0 +1,332 @@
+{
+  "typeName": "AWS::PCS::Cluster",
+  "description": "AWS::PCS::Cluster resource creates an AWS PCS cluster.",
+  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git",
+  "definitions": {
+    "AuthKey": {
+      "type": "object",
+      "description": "The shared Slurm key for authentication, also known as the cluster secret.",
+      "properties": {
+        "SecretArn": {
+          "type": "string",
+          "description": "The Amazon Resource Name (ARN) of the the shared Slurm key."
+        },
+        "SecretVersion": {
+          "type": "string",
+          "description": "The version of the shared Slurm key."
+        }
+      },
+      "required": [
+        "SecretArn",
+        "SecretVersion"
+      ],
+      "additionalProperties": false
+    },
+    "Endpoint": {
+      "type": "object",
+      "description": "An endpoint available for interaction with the scheduler.",
+      "properties": {
+        "Port": {
+          "type": "string",
+          "description": "The endpoint's connection port number."
+        },
+        "PrivateIpAddress": {
+          "type": "string",
+          "description": "The endpoint's private IP address."
+        },
+        "Type": {
+          "type": "string",
+          "description": "Indicates the type of endpoint running at the specific IP address.",
+          "enum": [
+            "SLURMCTLD",
+            "SLURMDBD"
+          ]
+        },
+        "PublicIpAddress": {
+          "type": "string",
+          "description": "The endpoint's public IP address."
+        }
+      },
+      "required": [
+        "Port",
+        "PrivateIpAddress",
+        "Type"
+      ],
+      "additionalProperties": false
+    },
+    "ErrorInfo": {
+      "type": "object",
+      "description": "An error that occurred during resource provisioning.",
+      "properties": {
+        "Code": {
+          "type": "string",
+          "description": "The short-form error code."
+        },
+        "Message": {
+          "type": "string",
+          "description": "The detailed error information."
+        }
+      },
+      "additionalProperties": false
+    },
+    "SecurityGroupId": {
+      "type": "string",
+      "description": "A VPC security group ID."
+    },
+    "SlurmCustomSetting": {
+      "type": "object",
+      "description": "Additional settings that directly map to Slurm settings.",
+      "properties": {
+        "ParameterName": {
+          "type": "string",
+          "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters."
+        },
+        "ParameterValue": {
+          "type": "string",
+          "description": "The value for the configured Slurm setting."
+        }
+      },
+      "additionalProperties": false,
+      "required": [
+        "ParameterName",
+        "ParameterValue"
+      ]
+    },
+    "SubnetId": {
+      "type": "string",
+      "description": "A VPC subnet ID."
+    },
+    "Tag": {
+      "type": "object",
+      "description": "A key-value pair to associate with a resource.",
+      "properties": {
+        "Key": {
+          "type": "string",
+          "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+          "minLength": 1,
+          "maxLength": 128
+        },
+        "Value": {
+          "type": "string",
+          "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+          "minLength": 0,
+          "maxLength": 256
+        }
+      },
+      "additionalProperties": false,
+      "required": [
+        "Key"
+      ]
+    }
+  },
+  "properties": {
+    "Arn": {
+      "type": "string",
+      "description": "The unique Amazon Resource Name (ARN) of the cluster."
+    },
+    "Endpoints": {
+      "type": "array",
+      "description": "The list of endpoints available for interaction with the scheduler.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/Endpoint"
+      }
+    },
+    "ErrorInfo": {
+      "type": "array",
+      "description": "The list of errors that occurred during cluster provisioning.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/ErrorInfo"
+      }
+    },
+    "Id": {
+      "type": "string",
+      "description": "The generated unique ID of the cluster.",
+      "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$"
+    },
+    "Name": {
+      "type": "string",
+      "description": "The name that identifies the cluster.",
+      "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$"
+    },
+    "Networking": {
+      "type": "object",
+      "description": "The networking configuration for the cluster's control plane.",
+      "properties": {
+        "SecurityGroupIds": {
+          "type": "array",
+          "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.",
+          "insertionOrder": false,
+          "items": {
+            "$ref": "#/definitions/SecurityGroupId"
+          }
+        },
+        "SubnetIds": {
+          "type": "array",
+          "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.",
+          "insertionOrder": false,
+          "items": {
+            "$ref": "#/definitions/SubnetId"
+          }
+        }
+      },
+      "additionalProperties": false
+    },
+    "Scheduler": {
+      "type": "object",
+      "description": "The cluster management and job scheduling software associated with the cluster.",
+      "properties": {
+        "Type": {
+          "type": "string",
+          "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.",
+          "enum": [
+            "SLURM"
+          ]
+        },
+        "Version": {
+          "type": "string",
+          "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling."
+        }
+      },
+      "required": [
+        "Type",
+        "Version"
+      ],
+      "additionalProperties": false
+    },
+    "Size": {
+      "type": "string",
+      "description": "The size of the cluster.",
+      "enum": [
+        "SMALL",
+        "MEDIUM",
+        "LARGE"
+      ]
+    },
+    "SlurmConfiguration": {
+      "type": "object",
+      "description": "Additional options related to the Slurm scheduler.",
+      "properties": {
+        "AuthKey": {
+          "$ref": "#/definitions/AuthKey"
+        },
+        "ScaleDownIdleTimeInSeconds": {
+          "type": "integer",
+          "description": "The time before an idle node is scaled down.",
+          "minimum": 1
+        },
+        "SlurmCustomSettings": {
+          "type": "array",
+          "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.",
+          "insertionOrder": false,
+          "items": {
+            "$ref": "#/definitions/SlurmCustomSetting"
+          }
+        }
+      },
+      "additionalProperties": false
+    },
+    "Status": {
+      "type": "string",
+      "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.",
+      "enum": [
+        "CREATING",
+        "ACTIVE",
+        "UPDATING",
+        "DELETING",
+        "CREATE_FAILED",
+        "DELETE_FAILED",
+        "UPDATE_FAILED"
+      ]
+    },
+    "Tags": {
+      "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.",
+      "patternProperties": {
+        "^.+$": {
+          "type": "string"
+        }
+      },
+      "additionalProperties": false
+    }
+  },
+  "required": [
+    "Networking",
+    "Scheduler",
+    "Size"
+  ],
+  "additionalProperties": false,
+  "primaryIdentifier": [
+    "/properties/Arn"
+  ],
+  "createOnlyProperties": [
+    "/properties/Name",
+    "/properties/Networking",
+    "/properties/Scheduler",
+    "/properties/Size",
+    "/properties/SlurmConfiguration"
+  ],
+  "readOnlyProperties": [
+    "/properties/Arn",
+    "/properties/Endpoints",
+    "/properties/ErrorInfo",
+    "/properties/Id",
+    "/properties/Status"
+  ],
+  "handlers": {
+    "create": {
+      "permissions": [
+        "ec2:CreateNetworkInterface",
+        "ec2:DescribeVpcs",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "ec2:GetSecurityGroupsForVpc",
+        "iam:CreateServiceLinkedRole",
+        "secretsmanager:CreateSecret",
+        "secretsmanager:TagResource",
+        "pcs:CreateCluster",
+        "pcs:GetCluster",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource"
+      ]
+    },
+    "read": {
+      "permissions": [
+        "pcs:GetCluster",
+        "pcs:ListTagsForResource"
+      ]
+    },
+    "update": {
+      "permissions": [
+        "pcs:GetCluster",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource",
+        "pcs:UntagResource"
+      ],
+      "timeoutInMinutes": 60
+    },
+    "delete": {
+      "permissions": [
+        "pcs:DeleteCluster",
+        "pcs:GetCluster"
+      ]
+    },
+    "list": {
+      "permissions": [
+        "pcs:ListClusters"
+      ]
+    }
+  },
+  "tagging": {
+    "taggable": true,
+    "tagOnCreate": true,
+    "tagUpdatable": true,
+    "cloudFormationSystemTags": true,
+    "tagProperty": "/properties/Tags",
+    "permissions": [
+      "pcs:TagResource",
+      "pcs:ListTagsForResource",
+      "pcs:UntagResource"
+    ]
+  }
+}
diff --git a/internal/aws/cfn/schemas/aws/pcs/computenodegroup.json b/internal/aws/cfn/schemas/aws/pcs/computenodegroup.json
new file mode 100644
index 00000000..c5d04692
--- /dev/null
+++ b/internal/aws/cfn/schemas/aws/pcs/computenodegroup.json
@@ -0,0 +1,337 @@
+{
+  "typeName": "AWS::PCS::ComputeNodeGroup",
+  "description": "AWS::PCS::ComputeNodeGroup resource creates an AWS PCS compute node group.",
+  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git",
+  "definitions": {
+    "ErrorInfo": {
+      "type": "object",
+      "description": "An error that occurred during resource provisioning.",
+      "properties": {
+        "Code": {
+          "type": "string",
+          "description": "The short-form error code."
+        },
+        "Message": {
+          "type": "string",
+          "description": "The detailed error information."
+        }
+      },
+      "additionalProperties": false
+    },
+    "InstanceConfig": {
+      "type": "object",
+      "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.",
+      "properties": {
+        "InstanceType": {
+          "type": "string",
+          "description": "The EC2 instance type that AWS PCS can provision in the compute node group."
+        }
+      },
+      "additionalProperties": false
+    },
+    "SlurmCustomSetting": {
+      "type": "object",
+      "description": "Additional settings that directly map to Slurm settings.",
+      "properties": {
+        "ParameterName": {
+          "type": "string",
+          "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory."
+        },
+        "ParameterValue": {
+          "type": "string",
+          "description": "The value for the configured Slurm setting."
+        }
+      },
+      "additionalProperties": false,
+      "required": [
+        "ParameterName",
+        "ParameterValue"
+      ]
+    },
+    "SubnetId": {
+      "type": "string",
+      "description": "A VPC subnet ID."
+    }
+  },
+  "properties": {
+    "AmiId": {
+      "type": "string",
+      "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.",
+      "pattern": "^ami-[a-z0-9]+$"
+    },
+    "Arn": {
+      "type": "string",
+      "description": "The unique Amazon Resource Name (ARN) of the compute node group."
+    },
+    "ClusterId": {
+      "type": "string",
+      "description": "The ID of the cluster of the compute node group."
+    },
+    "CustomLaunchTemplate": {
+      "type": "object",
+      "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.",
+      "properties": {
+        "Id": {
+          "type": "string",
+          "description": "The ID of the EC2 launch template to use to provision instances."
+        },
+        "Version": {
+          "type": "string",
+          "description": "The version of the EC2 launch template to use to provision instances."
+        }
+      },
+      "additionalProperties": false,
+      "required": [
+        "Id",
+        "Version"
+      ]
+    },
+    "ErrorInfo": {
+      "type": "array",
+      "description": "The list of errors that occurred during compute node group provisioning.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/ErrorInfo"
+      }
+    },
+    "IamInstanceProfileArn": {
+      "type": "string",
+      "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.",
+      "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$"
+    },
+    "Id": {
+      "type": "string",
+      "description": "The generated unique ID of the compute node group."
+    },
+    "InstanceConfigs": {
+      "type": "array",
+      "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/InstanceConfig"
+      }
+    },
+    "Name": {
+      "type": "string",
+      "description": "The name that identifies the compute node group.",
+      "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$"
+    },
+    "PurchaseOption": {
+      "type": "string",
+      "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.",
+      "enum": [
+        "ONDEMAND",
+        "SPOT"
+      ]
+    },
+    "ScalingConfiguration": {
+      "type": "object",
+      "description": "Specifies the boundaries of the compute node group auto scaling.",
+      "properties": {
+        "MaxInstanceCount": {
+          "type": "integer",
+          "description": "The upper bound of the number of instances allowed in the compute fleet.",
+          "minimum": 0
+        },
+        "MinInstanceCount": {
+          "type": "integer",
+          "description": "The lower bound of the number of instances allowed in the compute fleet.",
+          "minimum": 0
+        }
+      },
+      "additionalProperties": false,
+      "required": [
+        "MaxInstanceCount",
+        "MinInstanceCount"
+      ]
+    },
+    "SlurmConfiguration": {
+      "type": "object",
+      "description": "Additional options related to the Slurm scheduler.",
+      "properties": {
+        "SlurmCustomSettings": {
+          "type": "array",
+          "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.",
+          "insertionOrder": false,
+          "items": {
+            "$ref": "#/definitions/SlurmCustomSetting"
+          }
+        }
+      },
+      "additionalProperties": false
+    },
+    "SpotOptions": {
+      "type": "object",
+      "description": "Additional configuration when you specify SPOT as the purchase option.",
+      "properties": {
+        "AllocationStrategy": {
+          "type": "string",
+          "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.",
+          "enum": [
+            "lowest-price",
+            "capacity-optimized",
+            "price-capacity-optimized"
+          ]
+        }
+      },
+      "additionalProperties": false
+    },
+    "Status": {
+      "type": "string",
+      "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.",
+      "enum": [
+        "CREATING",
+        "ACTIVE",
+        "UPDATING",
+        "DELETING",
+        "CREATE_FAILED",
+        "DELETE_FAILED",
+        "UPDATE_FAILED"
+      ]
+    },
+    "SubnetIds": {
+      "type": "array",
+      "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/SubnetId"
+      }
+    },
+    "Tags": {
+      "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.",
+      "patternProperties": {
+        "^.+$": {
+          "type": "string"
+        }
+      },
+      "additionalProperties": false
+    }
+  },
+  "required": [
+    "ClusterId",
+    "CustomLaunchTemplate",
+    "IamInstanceProfileArn",
+    "InstanceConfigs",
+    "ScalingConfiguration",
+    "SubnetIds"
+  ],
+  "additionalProperties": false,
+  "primaryIdentifier": [
+    "/properties/Arn"
+  ],
+  "createOnlyProperties": [
+    "/properties/Name",
+    "/properties/ClusterId",
+    "/properties/InstanceConfigs"
+  ],
+  "readOnlyProperties": [
+    "/properties/Arn",
+    "/properties/ErrorInfo",
+    "/properties/Id",
+    "/properties/Status"
+  ],
+  "handlers": {
+    "create": {
+      "permissions": [
+        "ec2:DescribeImages",
+        "ec2:DescribeVpcs",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "ec2:DescribeLaunchTemplates",
+        "ec2:DescribeLaunchTemplateVersions",
+        "ec2:DescribeInstanceTypes",
+        "ec2:DescribeInstanceTypeOfferings",
+        "ec2:RunInstances",
+        "ec2:CreateFleet",
+        "ec2:CreateTags",
+        "iam:PassRole",
+        "iam:GetInstanceProfile",
+        "pcs:CreateComputeNodeGroup",
+        "pcs:GetComputeNodeGroup",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource"
+      ],
+      "timeoutInMinutes": 60
+    },
+    "read": {
+      "permissions": [
+        "pcs:GetComputeNodeGroup",
+        "pcs:ListTagsForResource"
+      ]
+    },
+    "update": {
+      "permissions": [
+        "ec2:DescribeImages",
+        "ec2:DescribeVpcs",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "ec2:DescribeLaunchTemplates",
+        "ec2:DescribeLaunchTemplateVersions",
+        "ec2:DescribeInstanceTypes",
+        "ec2:DescribeInstanceTypeOfferings",
+        "ec2:RunInstances",
+        "ec2:CreateFleet",
+        "ec2:CreateTags",
+        "iam:PassRole",
+        "iam:GetInstanceProfile",
+        "pcs:GetComputeNodeGroup",
+        "pcs:UpdateComputeNodeGroup",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource",
+        "pcs:UntagResource"
+      ],
+      "timeoutInMinutes": 60
+    },
+    "delete": {
+      "permissions": [
+        "ec2:DescribeImages",
+        "ec2:DescribeVpcs",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "ec2:DescribeLaunchTemplates",
+        "ec2:DescribeLaunchTemplateVersions",
+        "ec2:DescribeInstanceTypes",
+        "ec2:DescribeInstanceTypeOfferings",
+        "ec2:TerminateInstances",
+        "ec2:CreateFleet",
+        "ec2:CreateTags",
+        "iam:PassRole",
+        "iam:GetInstanceProfile",
+        "pcs:GetComputeNodeGroup",
+        "pcs:DeleteComputeNodeGroup",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource",
+        "pcs:UntagResource"
+      ],
+      "timeoutInMinutes": 60
+    },
+    "list": {
+      "handlerSchema": {
+        "properties": {
+          "ClusterId": {
+            "$ref": "resource-schema.json#/properties/ClusterId"
+          }
+        },
+        "required": [
+          "ClusterId"
+        ]
+      },
+      "permissions": [
+        "pcs:ListClusters",
+        "pcs:ListComputeNodeGroups"
+      ]
+    }
+  },
+  "tagging": {
+    "taggable": true,
+    "tagOnCreate": true,
+    "tagUpdatable": true,
+    "cloudFormationSystemTags": true,
+    "tagProperty": "/properties/Tags",
+    "permissions": [
+      "pcs:TagResource",
+      "pcs:ListTagsForResource",
+      "pcs:UntagResource"
+    ]
+  }
+}
diff --git a/internal/aws/cfn/schemas/aws/pcs/queue.json b/internal/aws/cfn/schemas/aws/pcs/queue.json
new file mode 100644
index 00000000..4335bc45
--- /dev/null
+++ b/internal/aws/cfn/schemas/aws/pcs/queue.json
@@ -0,0 +1,177 @@
+{
+  "typeName": "AWS::PCS::Queue",
+  "description": "AWS::PCS::Queue resource creates an AWS PCS queue.",
+  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git",
+  "definitions": {
+    "ComputeNodeGroupConfiguration": {
+      "type": "object",
+      "description": "The compute node group configuration for a queue.",
+      "properties": {
+        "ComputeNodeGroupId": {
+          "type": "string",
+          "description": "The compute node group ID for the compute node group configuration."
+        }
+      },
+      "additionalProperties": false
+    },
+    "ErrorInfo": {
+      "type": "object",
+      "description": "An error that occurred during resource provisioning.",
+      "properties": {
+        "Code": {
+          "type": "string",
+          "description": "The short-form error code."
+        },
+        "Message": {
+          "type": "string",
+          "description": "The detailed error information."
+        }
+      },
+      "additionalProperties": false
+    }
+  },
+  "properties": {
+    "Arn": {
+      "type": "string",
+      "description": "The unique Amazon Resource Name (ARN) of the queue.",
+      "pattern": "^(.*?)"
+    },
+    "ClusterId": {
+      "type": "string",
+      "description": "The ID of the cluster of the queue."
+    },
+    "ComputeNodeGroupConfigurations": {
+      "type": "array",
+      "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/ComputeNodeGroupConfiguration"
+      }
+    },
+    "ErrorInfo": {
+      "type": "array",
+      "description": "The list of errors that occurred during queue provisioning.",
+      "insertionOrder": false,
+      "items": {
+        "$ref": "#/definitions/ErrorInfo"
+      }
+    },
+    "Id": {
+      "type": "string",
+      "description": "The generated unique ID of the queue."
+    },
+    "Name": {
+      "type": "string",
+      "description": "The name that identifies the queue.",
+      "pattern": "^(?!pcs_)^(?![A-Za-z0-9]{10}$)[A-Za-z][A-Za-z0-9-]+$"
+    },
+    "Status": {
+      "type": "string",
+      "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.",
+      "enum": [
+        "CREATING",
+        "ACTIVE",
+        "UPDATING",
+        "DELETING",
+        "CREATE_FAILED",
+        "DELETE_FAILED",
+        "UPDATE_FAILED"
+      ]
+    },
+    "Tags": {
+      "type": "object",
+      "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.",
+      "patternProperties": {
+        "^.+$": {
+          "type": "string"
+        }
+      },
+      "additionalProperties": false
+    }
+  },
+  "required": [
+    "ClusterId"
+  ],
+  "additionalProperties": false,
+  "primaryIdentifier": [
+    "/properties/Arn"
+  ],
+  "createOnlyProperties": [
+    "/properties/Name",
+    "/properties/ClusterId"
+  ],
+  "readOnlyProperties": [
+    "/properties/Arn",
+    "/properties/ErrorInfo",
+    "/properties/Id",
+    "/properties/Status"
+  ],
+  "handlers": {
+    "create": {
+      "permissions": [
+        "ec2:CreateNetworkInterface",
+        "ec2:DescribeVpcs",
+        "ec2:DescribeSubnets",
+        "ec2:DescribeSecurityGroups",
+        "ec2:GetSecurityGroupsForVpc",
+        "iam:CreateServiceLinkedRole",
+        "secretsmanager:CreateSecret",
+        "secretsmanager:TagResource",
+        "pcs:CreateQueue",
+        "pcs:GetQueue",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource"
+      ]
+    },
+    "read": {
+      "permissions": [
+        "pcs:GetQueue",
+        "pcs:ListTagsForResource"
+      ]
+    },
+    "update": {
+      "permissions": [
+        "pcs:GetQueue",
+        "pcs:UpdateQueue",
+        "pcs:ListTagsForResource",
+        "pcs:TagResource",
+        "pcs:UntagResource"
+      ],
+      "timeoutInMinutes": 60
+    },
+    "delete": {
+      "permissions": [
+        "pcs:DeleteQueue",
+        "pcs:GetQueue"
+      ]
+    },
+    "list": {
+      "handlerSchema": {
+        "properties": {
+          "ClusterId": {
+            "$ref": "resource-schema.json#/properties/ClusterId"
+          }
+        },
+        "required": [
+          "ClusterId"
+        ]
+      },
+      "permissions": [
+        "pcs:ListClusters",
+        "pcs:ListQueues"
+      ]
+    }
+  },
+  "tagging": {
+    "taggable": true,
+    "tagOnCreate": true,
+    "tagUpdatable": true,
+    "cloudFormationSystemTags": true,
+    "tagProperty": "/properties/Tags",
+    "permissions": [
+      "pcs:TagResource",
+      "pcs:ListTagsForResource",
+      "pcs:UntagResource"
+    ]
+  }
+}
diff --git a/internal/cmd/build/build.go b/internal/cmd/build/build.go
index 2d1fc6f8..b80354dc 100644
--- a/internal/cmd/build/build.go
+++ b/internal/cmd/build/build.go
@@ -29,6 +29,7 @@ var recommendFlag = false
 var outFn = ""
 var pklClass = false
 var noCache = false
+var onlyCache = false
 var promptLanguage = "cfn"
 var model string
 var models map[string]string
@@ -65,6 +66,18 @@ func buildProp(n *yaml.Node, propName string, prop cfn.Prop, schema cfn.Schema,
 
 	prop.Type = cfn.ConvertPropType(prop.Type)
 
+	if prop.Type == "" && len(prop.OneOf) > 0 || len(prop.AnyOf) > 0 {
+		prop.Type = "object"
+	}
+
+	if prop.Type == "" && prop.PatternProperties != nil {
+		prop.Type = "object"
+	}
+
+	if prop.Type == "" && len(prop.Properties) > 0 {
+		prop.Type = "object"
+	}
+
 	switch prop.Type {
 	case "string":
 		if len(prop.Enum) > 0 {
@@ -179,6 +192,8 @@ func buildProp(n *yaml.Node, propName string, prop cfn.Prop, schema cfn.Schema,
 				}
 			}
 		} else {
+			config.Debugf("Missing Ref: %s, ancestors: %v, %+v",
+				propName, ancestorTypes, prop)
 			return fmt.Errorf("expected blank type to have $ref: %s", propName)
 		}
 	default:
@@ -317,8 +332,18 @@ func output(out string) {
 	}
 }
 
+func getCacheUsage() cfn.ResourceCacheUsage {
+	cacheUsage := cfn.UseCacheNormally
+	if noCache {
+		cacheUsage = cfn.DoNotUseCache
+	} else if onlyCache {
+		cacheUsage = cfn.OnlyUseCache
+	}
+	return cacheUsage
+}
+
 func list(prefix string) {
-	types, err := cfn.ListResourceTypes(noCache)
+	types, err := cfn.ListResourceTypes(getCacheUsage())
 	if err != nil {
 		panic(err)
 	}
@@ -350,7 +375,7 @@ func schema(typeName string) {
 		j, _ := json.MarshalIndent(schema, "", "    ")
 		output(string(j))
 	} else {
-		schema, err := cfn.GetTypeSchema(typeName, noCache)
+		schema, err := cfn.GetTypeSchema(typeName, getCacheUsage())
 		if err != nil {
 			panic(err)
 		}
@@ -475,6 +500,7 @@ func init() {
 	Cmd.Flags().StringVarP(&outFn, "output", "o", "", "Output to a file")
 	Cmd.Flags().BoolVar(&pklClass, "pkl-class", false, "Output a pkl class based on a resource type schema")
 	Cmd.Flags().BoolVar(&noCache, "no-cache", false, "Do not used cached schema files")
+	Cmd.Flags().BoolVar(&noCache, "only-cache", false, "Only use cached schema files")
 	Cmd.Flags().StringVar(&promptLanguage, "prompt-lang", "cfn", "The language to target for --prompt, CloudFormation YAML (cfn), CloudFormation Guard (guard), Open Policy Agent Rego (rego)")
 	Cmd.Flags().StringVar(&model, "model", "claude2", "The ID of the Bedrock model to use for --prompt. Shorthand: claude2, claude3haiku, claude3sonnet, claude3opus, claude3.5sonnet")
 }
diff --git a/internal/cmd/build/schema.go b/internal/cmd/build/schema.go
index 20f4e602..f52474dc 100644
--- a/internal/cmd/build/schema.go
+++ b/internal/cmd/build/schema.go
@@ -21,7 +21,7 @@ func getSchema(typeName string) (*cfn.Schema, error) {
 	} else {
 
 		// Call CCAPI to get the schema for the resource
-		schemaSource, err := cfn.GetTypeSchema(typeName, noCache)
+		schemaSource, err := cfn.GetTypeSchema(typeName, getCacheUsage())
 		if err != nil {
 			return nil, err
 		}
diff --git a/internal/cmd/cc/drift.go b/internal/cmd/cc/drift.go
index 798a6817..d52031df 100644
--- a/internal/cmd/cc/drift.go
+++ b/internal/cmd/cc/drift.go
@@ -162,7 +162,7 @@ func runDriftOnState(name string, template cft.Template, bucketName string, key
 			spinner.Push(fmt.Sprintf("   ⚡ Changing Live State for %s", selection.ResourceName))
 
 			// Download the schema
-			schema, err := cfn.GetTypeSchema(selection.ResourceType, false)
+			schema, err := cfn.GetTypeSchema(selection.ResourceType, cfn.UseCacheNormally)
 			if err != nil {
 				console.Errorf("unable to load schema for %s: %v", selection.ResourceName, err)
 				break
diff --git a/internal/config/version.go b/internal/config/version.go
index 5867d8a6..a88796d9 100644
--- a/internal/config/version.go
+++ b/internal/config/version.go
@@ -5,5 +5,5 @@ const (
 	NAME = "Rain"
 
 	// VERSION is the application's version string
-	VERSION = "v1.20.0"
+	VERSION = "v1.20.2"
 )
diff --git a/scripts/cache-schemas.sh b/scripts/cache-schemas.sh
index d982db52..5f2074b6 100755
--- a/scripts/cache-schemas.sh
+++ b/scripts/cache-schemas.sh
@@ -6,6 +6,8 @@ set -eou pipefail
 
 export RAIN_CACHE_DIR=$1
 
-./rain build -l --no-cache | grep "^AWS::" | xargs -n1 scripts/one-schema.sh
+./rain build -l --no-cache > internal/aws/cfn/all-types.txt
+
+cat internal/aws/cfn/all-types.txt | grep "^AWS::" | xargs -n1 scripts/one-schema.sh
 
 


Test patch:
diff --git a/internal/cmd/build/build_test.go b/internal/cmd/build/build_test.go
index 32284245..72394e07 100644
--- a/internal/cmd/build/build_test.go
+++ b/internal/cmd/build/build_test.go
@@ -2,6 +2,7 @@ package build
 
 import (
 	"os"
+	"strings"
 	"testing"
 
 	"github.com/aws-cloudformation/rain/cft"
@@ -108,3 +109,23 @@ func Example_omit_read_only() {
 	//                 FilterType: PREFIX_MATCH
 
 }
+
+func TestAllSchemas(t *testing.T) {
+	// Make sure rain build works for all schemas
+	// Sometimes service teams post incorrect schemas and it breaks us
+	// If something fails here, we need to add a patch
+	// See internal/aws/cfn/schema.go and patch.go
+	types, err := cfn.ListResourceTypes(cfn.OnlyUseCache)
+	if err != nil {
+		t.Fatal(err)
+	}
+	for _, typeName := range types {
+		if !strings.HasPrefix(typeName, "AWS::") {
+			continue
+		}
+		_, err := build([]string{typeName})
+		if err != nil {
+			t.Errorf("Unable to build type %s: %v", typeName, err)
+		}
+	}
+}