diff --git a/CHANGELOG.md b/CHANGELOG.md index d3f8d89a6..96a19614d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,14 @@ ## 1.11.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_glue_database` +* **New Data Source:** `awscc_glue_databases` +* **New Data Source:** `awscc_ivs_public_key` +* **New Data Source:** `awscc_ivs_public_keys` +* **New Resource:** `awscc_glue_database` +* **New Resource:** `awscc_ivs_public_key` + ## 1.10.0 (August 15, 2024) FEATURES: diff --git a/docs/data-sources/codebuild_fleet.md b/docs/data-sources/codebuild_fleet.md index 15606b22a..19a030aff 100644 --- a/docs/data-sources/codebuild_fleet.md +++ b/docs/data-sources/codebuild_fleet.md @@ -27,6 +27,7 @@ Data Source schema for AWS::CodeBuild::Fleet - `environment_type` (String) - `fleet_service_role` (String) - `fleet_vpc_config` (Attributes) (see [below for nested schema](#nestedatt--fleet_vpc_config)) +- `image_id` (String) - `name` (String) - `overflow_behavior` (String) - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) diff --git a/docs/data-sources/ec2_ipam.md b/docs/data-sources/ec2_ipam.md index c519e8ec2..8807beb8e 100644 --- a/docs/data-sources/ec2_ipam.md +++ b/docs/data-sources/ec2_ipam.md @@ -25,6 +25,7 @@ Data Source schema for AWS::EC2::IPAM - `default_resource_discovery_association_id` (String) The Id of the default association to the default resource discovery, created with this IPAM. - `default_resource_discovery_id` (String) The Id of the default resource discovery, created with this IPAM. - `description` (String) +- `enable_private_gua` (Boolean) Enable provisioning of GUA space in private pools. - `ipam_id` (String) Id of the IPAM. - `operating_regions` (Attributes Set) The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring (see [below for nested schema](#nestedatt--operating_regions)) - `private_default_scope_id` (String) The Id of the default scope for publicly routable IP space, created with this IPAM. diff --git a/docs/data-sources/ec2_launch_template.md b/docs/data-sources/ec2_launch_template.md index 426d44dbf..f34ad3163 100644 --- a/docs/data-sources/ec2_launch_template.md +++ b/docs/data-sources/ec2_launch_template.md @@ -27,7 +27,7 @@ Data Source schema for AWS::EC2::LaunchTemplate - `launch_template_id` (String) - `launch_template_name` (String) A name for the launch template. - `tag_specifications` (Attributes List) The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``. - To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications). (see [below for nested schema](#nestedatt--tag_specifications)) + To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). (see [below for nested schema](#nestedatt--tag_specifications)) - `version_description` (String) A description for the first version of the launch template. diff --git a/docs/data-sources/ec2_vpc_cidr_block.md b/docs/data-sources/ec2_vpc_cidr_block.md index 5393f6c2e..06e0b4e4f 100644 --- a/docs/data-sources/ec2_vpc_cidr_block.md +++ b/docs/data-sources/ec2_vpc_cidr_block.md @@ -23,8 +23,10 @@ Data Source schema for AWS::EC2::VPCCidrBlock - `amazon_provided_ipv_6_cidr_block` (Boolean) Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. - `cidr_block` (String) An IPv4 CIDR block to associate with the VPC. +- `ip_source` (String) The IP Source of an IPv6 VPC CIDR Block. - `ipv_4_ipam_pool_id` (String) The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC. - `ipv_4_netmask_length` (Number) The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool. +- `ipv_6_address_attribute` (String) The value denoting whether an IPv6 VPC CIDR Block is public or private. - `ipv_6_cidr_block` (String) An IPv6 CIDR block from the IPv6 address pool. - `ipv_6_ipam_pool_id` (String) The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC. - `ipv_6_netmask_length` (Number) The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool. diff --git a/docs/data-sources/glue_database.md b/docs/data-sources/glue_database.md new file mode 100644 index 000000000..2b10b7090 --- /dev/null +++ b/docs/data-sources/glue_database.md @@ -0,0 +1,74 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_glue_database Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Glue::Database +--- + +# awscc_glue_database (Data Source) + +Data Source schema for AWS::Glue::Database + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `catalog_id` (String) The AWS account ID for the account in which to create the catalog object. +- `database_input` (Attributes) The metadata for the database. (see [below for nested schema](#nestedatt--database_input)) +- `database_name` (String) The name of the database. For hive compatibility, this is folded to lowercase when it is store. + + +### Nested Schema for `database_input` + +Read-Only: + +- `create_table_default_permissions` (Attributes List) Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations. (see [below for nested schema](#nestedatt--database_input--create_table_default_permissions)) +- `description` (String) A description of the database. +- `federated_database` (Attributes) A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog. (see [below for nested schema](#nestedatt--database_input--federated_database)) +- `location_uri` (String) The location of the database (for example, an HDFS path). +- `name` (String) The name of the database. For hive compatibility, this is folded to lowercase when it is stored. +- `parameters` (String) These key-value pairs define parameters and properties of the database. +- `target_database` (Attributes) A DatabaseIdentifier structure that describes a target database for resource linking. (see [below for nested schema](#nestedatt--database_input--target_database)) + + +### Nested Schema for `database_input.create_table_default_permissions` + +Read-Only: + +- `permissions` (List of String) The permissions that are granted to the principal. +- `principal` (Attributes) The principal who is granted permissions. (see [below for nested schema](#nestedatt--database_input--create_table_default_permissions--principal)) + + +### Nested Schema for `database_input.create_table_default_permissions.principal` + +Read-Only: + +- `data_lake_principal_identifier` (String) An identifier for the AWS Lake Formation principal. + + + + +### Nested Schema for `database_input.federated_database` + +Read-Only: + +- `connection_name` (String) The name of the connection to the external metastore. +- `identifier` (String) A unique identifier for the federated database. + + + +### Nested Schema for `database_input.target_database` + +Read-Only: + +- `catalog_id` (String) The ID of the Data Catalog in which the database resides. +- `database_name` (String) The name of the catalog database. +- `region` (String) Region of the target database. diff --git a/docs/data-sources/glue_databases.md b/docs/data-sources/glue_databases.md new file mode 100644 index 000000000..170653070 --- /dev/null +++ b/docs/data-sources/glue_databases.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_glue_databases Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Glue::Database +--- + +# awscc_glue_databases (Data Source) + +Plural Data Source schema for AWS::Glue::Database + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ivs_public_key.md b/docs/data-sources/ivs_public_key.md new file mode 100644 index 000000000..0bf54e1b3 --- /dev/null +++ b/docs/data-sources/ivs_public_key.md @@ -0,0 +1,36 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ivs_public_key Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IVS::PublicKey +--- + +# awscc_ivs_public_key (Data Source) + +Data Source schema for AWS::IVS::PublicKey + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) Key-pair identifier. +- `fingerprint` (String) Key-pair identifier. +- `name` (String) Name of the public key to be imported. The value does not need to be unique. +- `public_key_material` (String) The public portion of a customer-generated key pair. +- `tags` (Attributes Set) A list of key-value pairs that contain metadata for the asset model. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/ivs_public_keys.md b/docs/data-sources/ivs_public_keys.md new file mode 100644 index 000000000..fb4cd123c --- /dev/null +++ b/docs/data-sources/ivs_public_keys.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ivs_public_keys Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IVS::PublicKey +--- + +# awscc_ivs_public_keys (Data Source) + +Plural Data Source schema for AWS::IVS::PublicKey + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ivs_stage.md b/docs/data-sources/ivs_stage.md index 45f08fc1a..f7d801f2a 100644 --- a/docs/data-sources/ivs_stage.md +++ b/docs/data-sources/ivs_stage.md @@ -23,9 +23,19 @@ Data Source schema for AWS::IVS::Stage - `active_session_id` (String) ID of the active session within the stage. - `arn` (String) Stage ARN is automatically generated on creation and assigned as the unique identifier. +- `auto_participant_recording_configuration` (Attributes) Configuration object for individual participant recording, to attach to the new stage. (see [below for nested schema](#nestedatt--auto_participant_recording_configuration)) - `name` (String) Stage name - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Nested Schema for `auto_participant_recording_configuration` + +Read-Only: + +- `media_types` (Set of String) Types of media to be recorded. Default: AUDIO_VIDEO. +- `storage_configuration_arn` (String) ARN of the StorageConfiguration resource to use for individual participant recording. + + ### Nested Schema for `tags` diff --git a/docs/data-sources/lambda_function.md b/docs/data-sources/lambda_function.md index f03e6eb49..f74aa0ff1 100644 --- a/docs/data-sources/lambda_function.md +++ b/docs/data-sources/lambda_function.md @@ -40,6 +40,7 @@ Data Source schema for AWS::Lambda::Function - `logging_config` (Attributes) The function's Amazon CloudWatch Logs configuration settings. (see [below for nested schema](#nestedatt--logging_config)) - `memory_size` (Number) The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase. - `package_type` (String) The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive. +- `recursive_loop` (String) The function recursion configuration. - `reserved_concurrent_executions` (Number) The number of simultaneous executions to reserve for the function. - `role` (String) The Amazon Resource Name (ARN) of the function's execution role. - `runtime` (String) The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive. Specifying a runtime results in an error if you're deploying a function using a container image. diff --git a/docs/data-sources/lambda_permission.md b/docs/data-sources/lambda_permission.md index 57f8d6e4a..e52f93ed8 100644 --- a/docs/data-sources/lambda_permission.md +++ b/docs/data-sources/lambda_permission.md @@ -25,9 +25,9 @@ Data Source schema for AWS::Lambda::Permission - `event_source_token` (String) For Alexa Smart Home functions, a token that the invoker must supply. - `function_name` (String) The name or ARN of the Lambda function, version, or alias. **Name formats** - + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias). - + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``. - + *Partial ARN* ? ``123456789012:function:my-function``. + + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias). + + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``. + + *Partial ARN* – ``123456789012:function:my-function``. You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length. - `function_url_auth_type` (String) The type of authentication that your function URL uses. Set to ``AWS_IAM`` if you want to restrict access to authenticated users only. Set to ``NONE`` if you want to bypass IAM authentication to create a public endpoint. For more information, see [Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html). diff --git a/docs/data-sources/msk_replicator.md b/docs/data-sources/msk_replicator.md index 6efe6f6b7..ac7a2155a 100644 --- a/docs/data-sources/msk_replicator.md +++ b/docs/data-sources/msk_replicator.md @@ -87,6 +87,7 @@ Read-Only: - `copy_topic_configurations` (Boolean) Whether to periodically configure remote topics to match their corresponding upstream topics. - `detect_and_copy_new_topics` (Boolean) Whether to periodically check for new topics and partitions. - `starting_position` (Attributes) Configuration for specifying the position in the topics to start replicating from. (see [below for nested schema](#nestedatt--replication_info_list--topic_replication--starting_position)) +- `topic_name_configuration` (Attributes) Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias. (see [below for nested schema](#nestedatt--replication_info_list--topic_replication--topic_name_configuration)) - `topics_to_exclude` (Set of String) List of regular expression patterns indicating the topics that should not be replicated. - `topics_to_replicate` (Set of String) List of regular expression patterns indicating the topics to copy. @@ -98,6 +99,14 @@ Read-Only: - `type` (String) The type of replication starting position. + +### Nested Schema for `replication_info_list.topic_replication.topic_name_configuration` + +Read-Only: + +- `type` (String) The type of replicated topic name. + + diff --git a/docs/data-sources/neptune_db_cluster.md b/docs/data-sources/neptune_db_cluster.md index 6007409ac..2feb52f70 100644 --- a/docs/data-sources/neptune_db_cluster.md +++ b/docs/data-sources/neptune_db_cluster.md @@ -40,7 +40,7 @@ Note: `Port` property will soon be deprecated from this resource. Please update - `endpoint` (String) The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com` - `engine_version` (String) Indicates the database engine version. - `iam_auth_enabled` (Boolean) True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false. -- `kms_key_id` (String) If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster. +- `kms_key_id` (String) The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true. - `port` (String) The port number on which the DB cluster accepts connections. For example: `8182`. - `preferred_backup_window` (String) Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. - `preferred_maintenance_window` (String) Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). @@ -68,9 +68,13 @@ If a DB snapshot is specified, the target DB cluster is created from the source If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group. - `storage_encrypted` (Boolean) Indicates whether the DB cluster is encrypted. -If you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption. +If you specify the KmsKeyId property, then you must enable encryption and set this property to true. -If you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true. +If you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster. + +If you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used. + +If you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used. - `tags` (Attributes Set) The tags assigned to this cluster. (see [below for nested schema](#nestedatt--tags)) - `use_latest_restorable_time` (Boolean) Creates a new DB cluster from a DB snapshot or DB cluster snapshot. diff --git a/docs/data-sources/rds_db_instance.md b/docs/data-sources/rds_db_instance.md index 5d7600608..fab96ae86 100644 --- a/docs/data-sources/rds_db_instance.md +++ b/docs/data-sources/rds_db_instance.md @@ -491,7 +491,7 @@ Data Source schema for AWS::RDS::DBInstance This setting is only supported in RDS for Oracle. Default: ``open-read-only`` Valid Values: ``open-read-only`` or ``mounted`` -- `restore_time` (String) The date and time to restore from. +- `restore_time` (String) The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*. Constraints: + Must be a time in Universal Coordinated Time (UTC) format. + Must be before the latest restorable time for the DB instance. @@ -538,7 +538,7 @@ Data Source schema for AWS::RDS::DBInstance - `timezone` (String) The time zone of the DB instance. The time zone parameter is currently supported only by [RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone). - `use_default_processor_features` (Boolean) Specifies whether the DB instance class of the DB instance uses its default processor features. This setting doesn't apply to RDS Custom DB instances. -- `use_latest_restorable_time` (Boolean) Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. +- `use_latest_restorable_time` (Boolean) Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*. Constraints: + Can't be specified if the ``RestoreTime`` parameter is provided. - `vpc_security_groups` (List of String) A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) resources created in the template. diff --git a/docs/resources/codebuild_fleet.md b/docs/resources/codebuild_fleet.md index fdc2504cf..1200976ba 100644 --- a/docs/resources/codebuild_fleet.md +++ b/docs/resources/codebuild_fleet.md @@ -43,6 +43,7 @@ resource "awscc_codebuild_fleet" "example" { - `environment_type` (String) - `fleet_service_role` (String) - `fleet_vpc_config` (Attributes) (see [below for nested schema](#nestedatt--fleet_vpc_config)) +- `image_id` (String) - `name` (String) - `overflow_behavior` (String) - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) diff --git a/docs/resources/ec2_ipam.md b/docs/resources/ec2_ipam.md index d0505f86d..ce7c57870 100644 --- a/docs/resources/ec2_ipam.md +++ b/docs/resources/ec2_ipam.md @@ -52,6 +52,7 @@ resource "awscc_ec2_ipam" "example" { ### Optional - `description` (String) +- `enable_private_gua` (Boolean) Enable provisioning of GUA space in private pools. - `operating_regions` (Attributes Set) The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring (see [below for nested schema](#nestedatt--operating_regions)) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `tier` (String) The tier of the IPAM. diff --git a/docs/resources/ec2_launch_template.md b/docs/resources/ec2_launch_template.md index 781a9ea8d..3560356c1 100644 --- a/docs/resources/ec2_launch_template.md +++ b/docs/resources/ec2_launch_template.md @@ -126,7 +126,7 @@ resource "awscc_ec2_launch_template" "with eip" { - `launch_template_name` (String) A name for the launch template. - `tag_specifications` (Attributes List) The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``. - To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications). (see [below for nested schema](#nestedatt--tag_specifications)) + To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). (see [below for nested schema](#nestedatt--tag_specifications)) - `version_description` (String) A description for the first version of the launch template. ### Read-Only diff --git a/docs/resources/ec2_vpc_cidr_block.md b/docs/resources/ec2_vpc_cidr_block.md index e3c01cabc..4bb32628b 100644 --- a/docs/resources/ec2_vpc_cidr_block.md +++ b/docs/resources/ec2_vpc_cidr_block.md @@ -33,6 +33,8 @@ Resource Type definition for AWS::EC2::VPCCidrBlock ### Read-Only - `id` (String) Uniquely identifies the resource. +- `ip_source` (String) The IP Source of an IPv6 VPC CIDR Block. +- `ipv_6_address_attribute` (String) The value denoting whether an IPv6 VPC CIDR Block is public or private. - `vpc_cidr_block_id` (String) The Id of the VPC associated CIDR Block. ## Import diff --git a/docs/resources/glue_database.md b/docs/resources/glue_database.md new file mode 100644 index 000000000..f668f9383 --- /dev/null +++ b/docs/resources/glue_database.md @@ -0,0 +1,85 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_glue_database Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Glue::Database +--- + +# awscc_glue_database (Resource) + +Resource Type definition for AWS::Glue::Database + + + + +## Schema + +### Required + +- `catalog_id` (String) The AWS account ID for the account in which to create the catalog object. +- `database_input` (Attributes) The metadata for the database. (see [below for nested schema](#nestedatt--database_input)) + +### Optional + +- `database_name` (String) The name of the database. For hive compatibility, this is folded to lowercase when it is store. + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `database_input` + +Optional: + +- `create_table_default_permissions` (Attributes List) Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations. (see [below for nested schema](#nestedatt--database_input--create_table_default_permissions)) +- `description` (String) A description of the database. +- `federated_database` (Attributes) A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog. (see [below for nested schema](#nestedatt--database_input--federated_database)) +- `location_uri` (String) The location of the database (for example, an HDFS path). +- `name` (String) The name of the database. For hive compatibility, this is folded to lowercase when it is stored. +- `parameters` (String) These key-value pairs define parameters and properties of the database. +- `target_database` (Attributes) A DatabaseIdentifier structure that describes a target database for resource linking. (see [below for nested schema](#nestedatt--database_input--target_database)) + + +### Nested Schema for `database_input.create_table_default_permissions` + +Optional: + +- `permissions` (List of String) The permissions that are granted to the principal. +- `principal` (Attributes) The principal who is granted permissions. (see [below for nested schema](#nestedatt--database_input--create_table_default_permissions--principal)) + + +### Nested Schema for `database_input.create_table_default_permissions.principal` + +Optional: + +- `data_lake_principal_identifier` (String) An identifier for the AWS Lake Formation principal. + + + + +### Nested Schema for `database_input.federated_database` + +Optional: + +- `connection_name` (String) The name of the connection to the external metastore. +- `identifier` (String) A unique identifier for the federated database. + + + +### Nested Schema for `database_input.target_database` + +Optional: + +- `catalog_id` (String) The ID of the Data Catalog in which the database resides. +- `database_name` (String) The name of the catalog database. +- `region` (String) Region of the target database. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_glue_database.example "database_name" +``` diff --git a/docs/resources/ivs_public_key.md b/docs/resources/ivs_public_key.md new file mode 100644 index 000000000..87be2b608 --- /dev/null +++ b/docs/resources/ivs_public_key.md @@ -0,0 +1,44 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ivs_public_key Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::IVS::PublicKey +--- + +# awscc_ivs_public_key (Resource) + +Resource Type definition for AWS::IVS::PublicKey + + + + +## Schema + +### Optional + +- `name` (String) Name of the public key to be imported. The value does not need to be unique. +- `public_key_material` (String) The public portion of a customer-generated key pair. +- `tags` (Attributes Set) A list of key-value pairs that contain metadata for the asset model. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) Key-pair identifier. +- `fingerprint` (String) Key-pair identifier. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ivs_public_key.example "arn" +``` diff --git a/docs/resources/ivs_stage.md b/docs/resources/ivs_stage.md index a6b797f09..020af4c96 100644 --- a/docs/resources/ivs_stage.md +++ b/docs/resources/ivs_stage.md @@ -17,6 +17,7 @@ Resource Definition for type AWS::IVS::Stage. ### Optional +- `auto_participant_recording_configuration` (Attributes) Configuration object for individual participant recording, to attach to the new stage. (see [below for nested schema](#nestedatt--auto_participant_recording_configuration)) - `name` (String) Stage name - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) @@ -26,6 +27,18 @@ Resource Definition for type AWS::IVS::Stage. - `arn` (String) Stage ARN is automatically generated on creation and assigned as the unique identifier. - `id` (String) Uniquely identifies the resource. + +### Nested Schema for `auto_participant_recording_configuration` + +Required: + +- `storage_configuration_arn` (String) ARN of the StorageConfiguration resource to use for individual participant recording. + +Optional: + +- `media_types` (Set of String) Types of media to be recorded. Default: AUDIO_VIDEO. + + ### Nested Schema for `tags` diff --git a/docs/resources/lambda_function.md b/docs/resources/lambda_function.md index ad8d6ffbf..cb7d7a7c5 100644 --- a/docs/resources/lambda_function.md +++ b/docs/resources/lambda_function.md @@ -201,6 +201,7 @@ resource "awscc_lambda_function" "main" { - `logging_config` (Attributes) The function's Amazon CloudWatch Logs configuration settings. (see [below for nested schema](#nestedatt--logging_config)) - `memory_size` (Number) The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase. - `package_type` (String) The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive. +- `recursive_loop` (String) The function recursion configuration. - `reserved_concurrent_executions` (Number) The number of simultaneous executions to reserve for the function. - `runtime` (String) The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive. Specifying a runtime results in an error if you're deploying a function using a container image. The following list includes deprecated runtimes. Lambda blocks creating new functions and updating existing functions shortly after each runtime is deprecated. For more information, see [Runtime use after deprecation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-deprecation-levels). diff --git a/docs/resources/lambda_permission.md b/docs/resources/lambda_permission.md index 98739e06b..ef1fee2ea 100644 --- a/docs/resources/lambda_permission.md +++ b/docs/resources/lambda_permission.md @@ -83,9 +83,9 @@ resource "awscc_iam_role" "default" { - `action` (String) The action that the principal can use on the function. For example, ``lambda:InvokeFunction`` or ``lambda:GetFunction``. - `function_name` (String) The name or ARN of the Lambda function, version, or alias. **Name formats** - + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias). - + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``. - + *Partial ARN* ? ``123456789012:function:my-function``. + + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias). + + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``. + + *Partial ARN* – ``123456789012:function:my-function``. You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length. - `principal` (String) The AWS-service or AWS-account that invokes the function. If you specify a service, use ``SourceArn`` or ``SourceAccount`` to limit who can invoke the function through that service. diff --git a/docs/resources/msk_replicator.md b/docs/resources/msk_replicator.md index b040198b0..82ea0823e 100644 --- a/docs/resources/msk_replicator.md +++ b/docs/resources/msk_replicator.md @@ -100,6 +100,7 @@ Optional: - `copy_topic_configurations` (Boolean) Whether to periodically configure remote topics to match their corresponding upstream topics. - `detect_and_copy_new_topics` (Boolean) Whether to periodically check for new topics and partitions. - `starting_position` (Attributes) Configuration for specifying the position in the topics to start replicating from. (see [below for nested schema](#nestedatt--replication_info_list--topic_replication--starting_position)) +- `topic_name_configuration` (Attributes) Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias. (see [below for nested schema](#nestedatt--replication_info_list--topic_replication--topic_name_configuration)) - `topics_to_exclude` (Set of String) List of regular expression patterns indicating the topics that should not be replicated. @@ -110,6 +111,14 @@ Optional: - `type` (String) The type of replication starting position. + +### Nested Schema for `replication_info_list.topic_replication.topic_name_configuration` + +Optional: + +- `type` (String) The type of replicated topic name. + + diff --git a/docs/resources/neptune_db_cluster.md b/docs/resources/neptune_db_cluster.md index f9d946931..60483c436 100644 --- a/docs/resources/neptune_db_cluster.md +++ b/docs/resources/neptune_db_cluster.md @@ -58,7 +58,7 @@ Note: `Port` property will soon be deprecated from this resource. Please update - `enable_cloudwatch_logs_exports` (List of String) Specifies a list of log types that are enabled for export to CloudWatch Logs. - `engine_version` (String) Indicates the database engine version. - `iam_auth_enabled` (Boolean) True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false. -- `kms_key_id` (String) If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster. +- `kms_key_id` (String) The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true. - `preferred_backup_window` (String) Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. - `preferred_maintenance_window` (String) Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). - `restore_to_time` (String) Creates a new DB cluster from a DB snapshot or DB cluster snapshot. @@ -84,9 +84,13 @@ If a DB snapshot is specified, the target DB cluster is created from the source If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group. - `storage_encrypted` (Boolean) Indicates whether the DB cluster is encrypted. -If you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption. +If you specify the KmsKeyId property, then you must enable encryption and set this property to true. -If you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true. +If you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster. + +If you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used. + +If you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used. - `tags` (Attributes Set) The tags assigned to this cluster. (see [below for nested schema](#nestedatt--tags)) - `use_latest_restorable_time` (Boolean) Creates a new DB cluster from a DB snapshot or DB cluster snapshot. diff --git a/docs/resources/rds_db_instance.md b/docs/resources/rds_db_instance.md index fcb385bc9..8908934e6 100644 --- a/docs/resources/rds_db_instance.md +++ b/docs/resources/rds_db_instance.md @@ -612,7 +612,7 @@ resource "awscc_rds_db_instance" "this" { This setting is only supported in RDS for Oracle. Default: ``open-read-only`` Valid Values: ``open-read-only`` or ``mounted`` -- `restore_time` (String) The date and time to restore from. +- `restore_time` (String) The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*. Constraints: + Must be a time in Universal Coordinated Time (UTC) format. + Must be before the latest restorable time for the DB instance. @@ -659,7 +659,7 @@ resource "awscc_rds_db_instance" "this" { - `timezone` (String) The time zone of the DB instance. The time zone parameter is currently supported only by [RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone). - `use_default_processor_features` (Boolean) Specifies whether the DB instance class of the DB instance uses its default processor features. This setting doesn't apply to RDS Custom DB instances. -- `use_latest_restorable_time` (Boolean) Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. +- `use_latest_restorable_time` (Boolean) Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*. Constraints: + Can't be specified if the ``RestoreTime`` parameter is provided. - `vpc_security_groups` (List of String) A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) resources created in the template. diff --git a/examples/resources/awscc_glue_database/import.sh b/examples/resources/awscc_glue_database/import.sh new file mode 100644 index 000000000..9ae74f77d --- /dev/null +++ b/examples/resources/awscc_glue_database/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_glue_database.example "database_name" \ No newline at end of file diff --git a/examples/resources/awscc_ivs_public_key/import.sh b/examples/resources/awscc_ivs_public_key/import.sh new file mode 100644 index 000000000..01d854709 --- /dev/null +++ b/examples/resources/awscc_ivs_public_key/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ivs_public_key.example "arn" \ No newline at end of file diff --git a/internal/aws/codebuild/fleet_resource_gen.go b/internal/aws/codebuild/fleet_resource_gen.go index 89082ad41..b365ef045 100644 --- a/internal/aws/codebuild/fleet_resource_gen.go +++ b/internal/aws/codebuild/fleet_resource_gen.go @@ -70,6 +70,7 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { // "BUILD_GENERAL1_SMALL", // "BUILD_GENERAL1_MEDIUM", // "BUILD_GENERAL1_LARGE", + // "BUILD_GENERAL1_XLARGE", // "BUILD_GENERAL1_2XLARGE" // ], // "type": "string" @@ -82,6 +83,7 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { "BUILD_GENERAL1_SMALL", "BUILD_GENERAL1_MEDIUM", "BUILD_GENERAL1_LARGE", + "BUILD_GENERAL1_XLARGE", "BUILD_GENERAL1_2XLARGE", ), }, /*END VALIDATORS*/ @@ -98,7 +100,8 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { // "WINDOWS_SERVER_2022_CONTAINER", // "LINUX_CONTAINER", // "LINUX_GPU_CONTAINER", - // "ARM_CONTAINER" + // "ARM_CONTAINER", + // "MAC_ARM" // ], // "type": "string" // } @@ -112,6 +115,7 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { "LINUX_CONTAINER", "LINUX_GPU_CONTAINER", "ARM_CONTAINER", + "MAC_ARM", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -198,6 +202,20 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ImageId + // CloudFormation resource type schema: + // + // { + // "pattern": "", + // "type": "string" + // } + "image_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -327,6 +345,7 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { "environment_type": "EnvironmentType", "fleet_service_role": "FleetServiceRole", "fleet_vpc_config": "FleetVpcConfig", + "image_id": "ImageId", "key": "Key", "name": "Name", "overflow_behavior": "OverflowBehavior", diff --git a/internal/aws/codebuild/fleet_singular_data_source_gen.go b/internal/aws/codebuild/fleet_singular_data_source_gen.go index cd35ac0b5..bdcc35b2f 100644 --- a/internal/aws/codebuild/fleet_singular_data_source_gen.go +++ b/internal/aws/codebuild/fleet_singular_data_source_gen.go @@ -51,6 +51,7 @@ func fleetDataSource(ctx context.Context) (datasource.DataSource, error) { // "BUILD_GENERAL1_SMALL", // "BUILD_GENERAL1_MEDIUM", // "BUILD_GENERAL1_LARGE", + // "BUILD_GENERAL1_XLARGE", // "BUILD_GENERAL1_2XLARGE" // ], // "type": "string" @@ -67,7 +68,8 @@ func fleetDataSource(ctx context.Context) (datasource.DataSource, error) { // "WINDOWS_SERVER_2022_CONTAINER", // "LINUX_CONTAINER", // "LINUX_GPU_CONTAINER", - // "ARM_CONTAINER" + // "ARM_CONTAINER", + // "MAC_ARM" // ], // "type": "string" // } @@ -129,6 +131,16 @@ func fleetDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: ImageId + // CloudFormation resource type schema: + // + // { + // "pattern": "", + // "type": "string" + // } + "image_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -224,6 +236,7 @@ func fleetDataSource(ctx context.Context) (datasource.DataSource, error) { "environment_type": "EnvironmentType", "fleet_service_role": "FleetServiceRole", "fleet_vpc_config": "FleetVpcConfig", + "image_id": "ImageId", "key": "Key", "name": "Name", "overflow_behavior": "OverflowBehavior", diff --git a/internal/aws/deadline/fleet_resource_gen.go b/internal/aws/deadline/fleet_resource_gen.go index b5f048807..66657a5e5 100644 --- a/internal/aws/deadline/fleet_resource_gen.go +++ b/internal/aws/deadline/fleet_resource_gen.go @@ -472,7 +472,8 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { // }, // "OsFamily": { // "enum": [ - // "LINUX" + // "LINUX", + // "WINDOWS" // ], // "type": "string" // }, @@ -948,6 +949,7 @@ func fleetResource(ctx context.Context) (resource.Resource, error) { Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "LINUX", + "WINDOWS", ), }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ diff --git a/internal/aws/deadline/fleet_singular_data_source_gen.go b/internal/aws/deadline/fleet_singular_data_source_gen.go index 1f2ee5a2a..675f5cfb9 100644 --- a/internal/aws/deadline/fleet_singular_data_source_gen.go +++ b/internal/aws/deadline/fleet_singular_data_source_gen.go @@ -451,7 +451,8 @@ func fleetDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "OsFamily": { // "enum": [ - // "LINUX" + // "LINUX", + // "WINDOWS" // ], // "type": "string" // }, diff --git a/internal/aws/ec2/customer_gateway_resource_gen.go b/internal/aws/ec2/customer_gateway_resource_gen.go index 96aef4d39..96ae11b04 100644 --- a/internal/aws/ec2/customer_gateway_resource_gen.go +++ b/internal/aws/ec2/customer_gateway_resource_gen.go @@ -143,7 +143,7 @@ func customerGatewayResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/customer_gateway_singular_data_source_gen.go b/internal/aws/ec2/customer_gateway_singular_data_source_gen.go index 570c54b18..544ee18e0 100644 --- a/internal/aws/ec2/customer_gateway_singular_data_source_gen.go +++ b/internal/aws/ec2/customer_gateway_singular_data_source_gen.go @@ -100,7 +100,7 @@ func customerGatewayDataSource(ctx context.Context) (datasource.DataSource, erro // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/internet_gateway_resource_gen.go b/internal/aws/ec2/internet_gateway_resource_gen.go index 2fe4b585c..13215a790 100644 --- a/internal/aws/ec2/internet_gateway_resource_gen.go +++ b/internal/aws/ec2/internet_gateway_resource_gen.go @@ -49,7 +49,7 @@ func internetGatewayResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/internet_gateway_singular_data_source_gen.go b/internal/aws/ec2/internet_gateway_singular_data_source_gen.go index d8a2fba86..564d9360b 100644 --- a/internal/aws/ec2/internet_gateway_singular_data_source_gen.go +++ b/internal/aws/ec2/internet_gateway_singular_data_source_gen.go @@ -41,7 +41,7 @@ func internetGatewayDataSource(ctx context.Context) (datasource.DataSource, erro // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/ipam_resource_gen.go b/internal/aws/ec2/ipam_resource_gen.go index d3be4851c..b404edc44 100644 --- a/internal/aws/ec2/ipam_resource_gen.go +++ b/internal/aws/ec2/ipam_resource_gen.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" @@ -83,6 +84,21 @@ func iPAMResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: EnablePrivateGua + // CloudFormation resource type schema: + // + // { + // "description": "Enable provisioning of GUA space in private pools.", + // "type": "boolean" + // } + "enable_private_gua": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Enable provisioning of GUA space in private pools.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: IpamId // CloudFormation resource type schema: // @@ -305,6 +321,7 @@ func iPAMResource(ctx context.Context) (resource.Resource, error) { "default_resource_discovery_association_id": "DefaultResourceDiscoveryAssociationId", "default_resource_discovery_id": "DefaultResourceDiscoveryId", "description": "Description", + "enable_private_gua": "EnablePrivateGua", "ipam_id": "IpamId", "key": "Key", "operating_regions": "OperatingRegions", diff --git a/internal/aws/ec2/ipam_singular_data_source_gen.go b/internal/aws/ec2/ipam_singular_data_source_gen.go index 434810a0a..00da70be5 100644 --- a/internal/aws/ec2/ipam_singular_data_source_gen.go +++ b/internal/aws/ec2/ipam_singular_data_source_gen.go @@ -64,6 +64,17 @@ func iPAMDataSource(ctx context.Context) (datasource.DataSource, error) { "description": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: EnablePrivateGua + // CloudFormation resource type schema: + // + // { + // "description": "Enable provisioning of GUA space in private pools.", + // "type": "boolean" + // } + "enable_private_gua": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Enable provisioning of GUA space in private pools.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: IpamId // CloudFormation resource type schema: // @@ -242,6 +253,7 @@ func iPAMDataSource(ctx context.Context) (datasource.DataSource, error) { "default_resource_discovery_association_id": "DefaultResourceDiscoveryAssociationId", "default_resource_discovery_id": "DefaultResourceDiscoveryId", "description": "Description", + "enable_private_gua": "EnablePrivateGua", "ipam_id": "IpamId", "key": "Key", "operating_regions": "OperatingRegions", diff --git a/internal/aws/ec2/key_pair_resource_gen.go b/internal/aws/ec2/key_pair_resource_gen.go index 45a2e1716..d13927292 100644 --- a/internal/aws/ec2/key_pair_resource_gen.go +++ b/internal/aws/ec2/key_pair_resource_gen.go @@ -151,7 +151,7 @@ func keyPairResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/key_pair_singular_data_source_gen.go b/internal/aws/ec2/key_pair_singular_data_source_gen.go index 4d2bfaa9a..ed7cc246c 100644 --- a/internal/aws/ec2/key_pair_singular_data_source_gen.go +++ b/internal/aws/ec2/key_pair_singular_data_source_gen.go @@ -106,7 +106,7 @@ func keyPairDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/launch_template_resource_gen.go b/internal/aws/ec2/launch_template_resource_gen.go index 65719361f..3b3c6f968 100644 --- a/internal/aws/ec2/launch_template_resource_gen.go +++ b/internal/aws/ec2/launch_template_resource_gen.go @@ -918,7 +918,7 @@ func launchTemplateResource(ctx context.Context) (resource.Resource, error) { // "description": "The tags to apply to the resource.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", @@ -2577,7 +2577,7 @@ func launchTemplateResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + // "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", // "items": { // "additionalProperties": false, // "description": "Specifies the tags to apply to the launch template during creation.\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).", @@ -2590,7 +2590,7 @@ func launchTemplateResource(ctx context.Context) (resource.Resource, error) { // "description": "The tags for the resource.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", @@ -2653,7 +2653,7 @@ func launchTemplateResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + Description: "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/ec2/launch_template_singular_data_source_gen.go b/internal/aws/ec2/launch_template_singular_data_source_gen.go index 0f25068e0..e5b415e54 100644 --- a/internal/aws/ec2/launch_template_singular_data_source_gen.go +++ b/internal/aws/ec2/launch_template_singular_data_source_gen.go @@ -903,7 +903,7 @@ func launchTemplateDataSource(ctx context.Context) (datasource.DataSource, error // "description": "The tags to apply to the resource.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", @@ -1899,7 +1899,7 @@ func launchTemplateDataSource(ctx context.Context) (datasource.DataSource, error // CloudFormation resource type schema: // // { - // "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + // "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", // "items": { // "additionalProperties": false, // "description": "Specifies the tags to apply to the launch template during creation.\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).", @@ -1912,7 +1912,7 @@ func launchTemplateDataSource(ctx context.Context) (datasource.DataSource, error // "description": "The tags for the resource.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", @@ -1967,7 +1967,7 @@ func launchTemplateDataSource(ctx context.Context) (datasource.DataSource, error }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + Description: "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", Computed: true, }, /*END ATTRIBUTE*/ // Property: VersionDescription diff --git a/internal/aws/ec2/network_acl_resource_gen.go b/internal/aws/ec2/network_acl_resource_gen.go index e68e5ec79..a78c6553b 100644 --- a/internal/aws/ec2/network_acl_resource_gen.go +++ b/internal/aws/ec2/network_acl_resource_gen.go @@ -47,7 +47,7 @@ func networkAclResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/network_acl_singular_data_source_gen.go b/internal/aws/ec2/network_acl_singular_data_source_gen.go index aee8b8e76..01a38f653 100644 --- a/internal/aws/ec2/network_acl_singular_data_source_gen.go +++ b/internal/aws/ec2/network_acl_singular_data_source_gen.go @@ -41,7 +41,7 @@ func networkAclDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/route_table_resource_gen.go b/internal/aws/ec2/route_table_resource_gen.go index 7ea20a2b9..af579e75c 100644 --- a/internal/aws/ec2/route_table_resource_gen.go +++ b/internal/aws/ec2/route_table_resource_gen.go @@ -47,7 +47,7 @@ func routeTableResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/route_table_singular_data_source_gen.go b/internal/aws/ec2/route_table_singular_data_source_gen.go index 0f1afb85a..e9b800460 100644 --- a/internal/aws/ec2/route_table_singular_data_source_gen.go +++ b/internal/aws/ec2/route_table_singular_data_source_gen.go @@ -41,7 +41,7 @@ func routeTableDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/subnet_resource_gen.go b/internal/aws/ec2/subnet_resource_gen.go index d5a66d5c5..80054f28e 100644 --- a/internal/aws/ec2/subnet_resource_gen.go +++ b/internal/aws/ec2/subnet_resource_gen.go @@ -361,7 +361,7 @@ func subnetResource(ctx context.Context) (resource.Resource, error) { // "description": "Any tags assigned to the subnet.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/subnet_singular_data_source_gen.go b/internal/aws/ec2/subnet_singular_data_source_gen.go index 87654a79a..2deeb5047 100644 --- a/internal/aws/ec2/subnet_singular_data_source_gen.go +++ b/internal/aws/ec2/subnet_singular_data_source_gen.go @@ -259,7 +259,7 @@ func subnetDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "Any tags assigned to the subnet.", // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/vpc_cidr_block_resource_gen.go b/internal/aws/ec2/vpc_cidr_block_resource_gen.go index 3cfde9199..ed8d19da5 100644 --- a/internal/aws/ec2/vpc_cidr_block_resource_gen.go +++ b/internal/aws/ec2/vpc_cidr_block_resource_gen.go @@ -72,6 +72,20 @@ func vPCCidrBlockResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: IpSource + // CloudFormation resource type schema: + // + // { + // "description": "The IP Source of an IPv6 VPC CIDR Block.", + // "type": "string" + // } + "ip_source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IP Source of an IPv6 VPC CIDR Block.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Ipv4IpamPoolId // CloudFormation resource type schema: // @@ -106,6 +120,20 @@ func vPCCidrBlockResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ // Ipv4NetmaskLength is a write-only property. }, /*END ATTRIBUTE*/ + // Property: Ipv6AddressAttribute + // CloudFormation resource type schema: + // + // { + // "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + // "type": "string" + // } + "ipv_6_address_attribute": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Ipv6CidrBlock // CloudFormation resource type schema: // @@ -210,8 +238,10 @@ func vPCCidrBlockResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "amazon_provided_ipv_6_cidr_block": "AmazonProvidedIpv6CidrBlock", "cidr_block": "CidrBlock", + "ip_source": "IpSource", "ipv_4_ipam_pool_id": "Ipv4IpamPoolId", "ipv_4_netmask_length": "Ipv4NetmaskLength", + "ipv_6_address_attribute": "Ipv6AddressAttribute", "ipv_6_cidr_block": "Ipv6CidrBlock", "ipv_6_ipam_pool_id": "Ipv6IpamPoolId", "ipv_6_netmask_length": "Ipv6NetmaskLength", diff --git a/internal/aws/ec2/vpc_cidr_block_singular_data_source_gen.go b/internal/aws/ec2/vpc_cidr_block_singular_data_source_gen.go index 0db624e71..a8739dc4d 100644 --- a/internal/aws/ec2/vpc_cidr_block_singular_data_source_gen.go +++ b/internal/aws/ec2/vpc_cidr_block_singular_data_source_gen.go @@ -55,6 +55,17 @@ func vPCCidrBlockDataSource(ctx context.Context) (datasource.DataSource, error) Description: "The Id of the VPC associated CIDR Block.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: IpSource + // CloudFormation resource type schema: + // + // { + // "description": "The IP Source of an IPv6 VPC CIDR Block.", + // "type": "string" + // } + "ip_source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IP Source of an IPv6 VPC CIDR Block.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Ipv4IpamPoolId // CloudFormation resource type schema: // @@ -77,6 +88,17 @@ func vPCCidrBlockDataSource(ctx context.Context) (datasource.DataSource, error) Description: "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Ipv6AddressAttribute + // CloudFormation resource type schema: + // + // { + // "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + // "type": "string" + // } + "ipv_6_address_attribute": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Ipv6CidrBlock // CloudFormation resource type schema: // @@ -151,8 +173,10 @@ func vPCCidrBlockDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithAttributeNameMap(map[string]string{ "amazon_provided_ipv_6_cidr_block": "AmazonProvidedIpv6CidrBlock", "cidr_block": "CidrBlock", + "ip_source": "IpSource", "ipv_4_ipam_pool_id": "Ipv4IpamPoolId", "ipv_4_netmask_length": "Ipv4NetmaskLength", + "ipv_6_address_attribute": "Ipv6AddressAttribute", "ipv_6_cidr_block": "Ipv6CidrBlock", "ipv_6_ipam_pool_id": "Ipv6IpamPoolId", "ipv_6_netmask_length": "Ipv6NetmaskLength", diff --git a/internal/aws/ec2/vpn_gateway_resource_gen.go b/internal/aws/ec2/vpn_gateway_resource_gen.go index b34bfae27..433b21e1a 100644 --- a/internal/aws/ec2/vpn_gateway_resource_gen.go +++ b/internal/aws/ec2/vpn_gateway_resource_gen.go @@ -51,7 +51,7 @@ func vPNGatewayResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/vpn_gateway_singular_data_source_gen.go b/internal/aws/ec2/vpn_gateway_singular_data_source_gen.go index a4cb102cc..451895766 100644 --- a/internal/aws/ec2/vpn_gateway_singular_data_source_gen.go +++ b/internal/aws/ec2/vpn_gateway_singular_data_source_gen.go @@ -42,7 +42,7 @@ func vPNGatewayDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/glue/database_plural_data_source_gen.go b/internal/aws/glue/database_plural_data_source_gen.go new file mode 100644 index 000000000..ad2b3aef6 --- /dev/null +++ b/internal/aws/glue/database_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package glue + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_glue_databases", databasesDataSource) +} + +// databasesDataSource returns the Terraform awscc_glue_databases data source. +// This Terraform data source corresponds to the CloudFormation AWS::Glue::Database resource. +func databasesDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::Glue::Database", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Glue::Database").WithTerraformTypeName("awscc_glue_databases") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/glue/database_plural_data_source_gen_test.go b/internal/aws/glue/database_plural_data_source_gen_test.go new file mode 100644 index 000000000..5d77a9a6b --- /dev/null +++ b/internal/aws/glue/database_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package glue_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSGlueDatabasesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Glue::Database", "awscc_glue_databases", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/glue/database_resource_gen.go b/internal/aws/glue/database_resource_gen.go new file mode 100644 index 000000000..9033c79f9 --- /dev/null +++ b/internal/aws/glue/database_resource_gen.go @@ -0,0 +1,357 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package glue + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_glue_database", databaseResource) +} + +// databaseResource returns the Terraform awscc_glue_database resource. +// This Terraform resource corresponds to the CloudFormation AWS::Glue::Database resource. +func databaseResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CatalogId + // CloudFormation resource type schema: + // + // { + // "description": "The AWS account ID for the account in which to create the catalog object.", + // "type": "string" + // } + "catalog_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS account ID for the account in which to create the catalog object.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: DatabaseInput + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The metadata for the database.", + // "properties": { + // "CreateTableDefaultPermissions": { + // "description": "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "The permissions granted to a principal.", + // "properties": { + // "Permissions": { + // "description": "The permissions that are granted to the principal.", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "Principal": { + // "additionalProperties": false, + // "description": "The principal who is granted permissions.", + // "properties": { + // "DataLakePrincipalIdentifier": { + // "description": "An identifier for the AWS Lake Formation principal.", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "Description": { + // "description": "A description of the database.", + // "type": "string" + // }, + // "FederatedDatabase": { + // "additionalProperties": false, + // "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + // "properties": { + // "ConnectionName": { + // "description": "The name of the connection to the external metastore.", + // "type": "string" + // }, + // "Identifier": { + // "description": "A unique identifier for the federated database.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "LocationUri": { + // "description": "The location of the database (for example, an HDFS path).", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", + // "type": "string" + // }, + // "Parameters": { + // "description": "These key-value pairs define parameters and properties of the database.", + // "type": "object" + // }, + // "TargetDatabase": { + // "additionalProperties": false, + // "description": "A DatabaseIdentifier structure that describes a target database for resource linking.", + // "properties": { + // "CatalogId": { + // "description": "The ID of the Data Catalog in which the database resides.", + // "type": "string" + // }, + // "DatabaseName": { + // "description": "The name of the catalog database.", + // "type": "string" + // }, + // "Region": { + // "description": "Region of the target database.", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "database_input": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreateTableDefaultPermissions + "create_table_default_permissions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Permissions + "permissions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The permissions that are granted to the principal.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Principal + "principal": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataLakePrincipalIdentifier + "data_lake_principal_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An identifier for the AWS Lake Formation principal.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The principal who is granted permissions.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Description + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description of the database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FederatedDatabase + "federated_database": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConnectionName + "connection_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the connection to the external metastore.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Identifier + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique identifier for the federated database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocationUri + "location_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The location of the database (for example, an HDFS path).", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Parameters + "parameters": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Description: "These key-value pairs define parameters and properties of the database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TargetDatabase + "target_database": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CatalogId + "catalog_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Data Catalog in which the database resides.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DatabaseName + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the catalog database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Region + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Region of the target database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A DatabaseIdentifier structure that describes a target database for resource linking.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metadata for the database.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: DatabaseName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", + // "type": "string" + // } + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Glue::Database", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Glue::Database").WithTerraformTypeName("awscc_glue_database") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "catalog_id": "CatalogId", + "connection_name": "ConnectionName", + "create_table_default_permissions": "CreateTableDefaultPermissions", + "data_lake_principal_identifier": "DataLakePrincipalIdentifier", + "database_input": "DatabaseInput", + "database_name": "DatabaseName", + "description": "Description", + "federated_database": "FederatedDatabase", + "identifier": "Identifier", + "location_uri": "LocationUri", + "name": "Name", + "parameters": "Parameters", + "permissions": "Permissions", + "principal": "Principal", + "region": "Region", + "target_database": "TargetDatabase", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/glue/database_resource_gen_test.go b/internal/aws/glue/database_resource_gen_test.go new file mode 100644 index 000000000..d140d5074 --- /dev/null +++ b/internal/aws/glue/database_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package glue_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSGlueDatabase_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Glue::Database", "awscc_glue_database", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/glue/database_singular_data_source_gen.go b/internal/aws/glue/database_singular_data_source_gen.go new file mode 100644 index 000000000..fe5ae98bb --- /dev/null +++ b/internal/aws/glue/database_singular_data_source_gen.go @@ -0,0 +1,277 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package glue + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_glue_database", databaseDataSource) +} + +// databaseDataSource returns the Terraform awscc_glue_database data source. +// This Terraform data source corresponds to the CloudFormation AWS::Glue::Database resource. +func databaseDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CatalogId + // CloudFormation resource type schema: + // + // { + // "description": "The AWS account ID for the account in which to create the catalog object.", + // "type": "string" + // } + "catalog_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS account ID for the account in which to create the catalog object.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DatabaseInput + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The metadata for the database.", + // "properties": { + // "CreateTableDefaultPermissions": { + // "description": "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "The permissions granted to a principal.", + // "properties": { + // "Permissions": { + // "description": "The permissions that are granted to the principal.", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "Principal": { + // "additionalProperties": false, + // "description": "The principal who is granted permissions.", + // "properties": { + // "DataLakePrincipalIdentifier": { + // "description": "An identifier for the AWS Lake Formation principal.", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "Description": { + // "description": "A description of the database.", + // "type": "string" + // }, + // "FederatedDatabase": { + // "additionalProperties": false, + // "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + // "properties": { + // "ConnectionName": { + // "description": "The name of the connection to the external metastore.", + // "type": "string" + // }, + // "Identifier": { + // "description": "A unique identifier for the federated database.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "LocationUri": { + // "description": "The location of the database (for example, an HDFS path).", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", + // "type": "string" + // }, + // "Parameters": { + // "description": "These key-value pairs define parameters and properties of the database.", + // "type": "object" + // }, + // "TargetDatabase": { + // "additionalProperties": false, + // "description": "A DatabaseIdentifier structure that describes a target database for resource linking.", + // "properties": { + // "CatalogId": { + // "description": "The ID of the Data Catalog in which the database resides.", + // "type": "string" + // }, + // "DatabaseName": { + // "description": "The name of the catalog database.", + // "type": "string" + // }, + // "Region": { + // "description": "Region of the target database.", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "database_input": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreateTableDefaultPermissions + "create_table_default_permissions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Permissions + "permissions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The permissions that are granted to the principal.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Principal + "principal": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataLakePrincipalIdentifier + "data_lake_principal_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An identifier for the AWS Lake Formation principal.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The principal who is granted permissions.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description of the database.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FederatedDatabase + "federated_database": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConnectionName + "connection_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the connection to the external metastore.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Identifier + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique identifier for the federated database.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocationUri + "location_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The location of the database (for example, an HDFS path).", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Parameters + "parameters": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Description: "These key-value pairs define parameters and properties of the database.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TargetDatabase + "target_database": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CatalogId + "catalog_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Data Catalog in which the database resides.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DatabaseName + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the catalog database.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Region + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Region of the target database.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A DatabaseIdentifier structure that describes a target database for resource linking.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metadata for the database.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DatabaseName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", + // "type": "string" + // } + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::Glue::Database", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Glue::Database").WithTerraformTypeName("awscc_glue_database") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "catalog_id": "CatalogId", + "connection_name": "ConnectionName", + "create_table_default_permissions": "CreateTableDefaultPermissions", + "data_lake_principal_identifier": "DataLakePrincipalIdentifier", + "database_input": "DatabaseInput", + "database_name": "DatabaseName", + "description": "Description", + "federated_database": "FederatedDatabase", + "identifier": "Identifier", + "location_uri": "LocationUri", + "name": "Name", + "parameters": "Parameters", + "permissions": "Permissions", + "principal": "Principal", + "region": "Region", + "target_database": "TargetDatabase", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/glue/database_singular_data_source_gen_test.go b/internal/aws/glue/database_singular_data_source_gen_test.go new file mode 100644 index 000000000..8714276d9 --- /dev/null +++ b/internal/aws/glue/database_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package glue_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSGlueDatabaseDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Glue::Database", "awscc_glue_database", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSGlueDatabaseDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Glue::Database", "awscc_glue_database", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ivs/channel_resource_gen.go b/internal/aws/ivs/channel_resource_gen.go index 50af02718..39b55f4b9 100644 --- a/internal/aws/ivs/channel_resource_gen.go +++ b/internal/aws/ivs/channel_resource_gen.go @@ -168,6 +168,7 @@ func channelResource(ctx context.Context) (resource.Resource, error) { // { // "description": "Optional transcode preset for the channel. This is selectable only for ADVANCED_HD and ADVANCED_SD channel types. For those channel types, the default preset is HIGHER_BANDWIDTH_DELIVERY. For other channel types (BASIC and STANDARD), preset is the empty string (\"\").", // "enum": [ + // "", // "HIGHER_BANDWIDTH_DELIVERY", // "CONSTRAINED_BANDWIDTH_DELIVERY" // ], @@ -179,6 +180,7 @@ func channelResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( + "", "HIGHER_BANDWIDTH_DELIVERY", "CONSTRAINED_BANDWIDTH_DELIVERY", ), diff --git a/internal/aws/ivs/channel_singular_data_source_gen.go b/internal/aws/ivs/channel_singular_data_source_gen.go index 0175c851a..e7ee37399 100644 --- a/internal/aws/ivs/channel_singular_data_source_gen.go +++ b/internal/aws/ivs/channel_singular_data_source_gen.go @@ -119,6 +119,7 @@ func channelDataSource(ctx context.Context) (datasource.DataSource, error) { // { // "description": "Optional transcode preset for the channel. This is selectable only for ADVANCED_HD and ADVANCED_SD channel types. For those channel types, the default preset is HIGHER_BANDWIDTH_DELIVERY. For other channel types (BASIC and STANDARD), preset is the empty string (\"\").", // "enum": [ + // "", // "HIGHER_BANDWIDTH_DELIVERY", // "CONSTRAINED_BANDWIDTH_DELIVERY" // ], diff --git a/internal/aws/ivs/public_key_plural_data_source_gen.go b/internal/aws/ivs/public_key_plural_data_source_gen.go new file mode 100644 index 000000000..8009192c8 --- /dev/null +++ b/internal/aws/ivs/public_key_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ivs + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ivs_public_keys", publicKeysDataSource) +} + +// publicKeysDataSource returns the Terraform awscc_ivs_public_keys data source. +// This Terraform data source corresponds to the CloudFormation AWS::IVS::PublicKey resource. +func publicKeysDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::IVS::PublicKey", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::IVS::PublicKey").WithTerraformTypeName("awscc_ivs_public_keys") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ivs/public_key_plural_data_source_gen_test.go b/internal/aws/ivs/public_key_plural_data_source_gen_test.go new file mode 100644 index 000000000..dcda6f2c9 --- /dev/null +++ b/internal/aws/ivs/public_key_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ivs_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIVSPublicKeysDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IVS::PublicKey", "awscc_ivs_public_keys", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/ivs/public_key_resource_gen.go b/internal/aws/ivs/public_key_resource_gen.go new file mode 100644 index 000000000..40d8a92fa --- /dev/null +++ b/internal/aws/ivs/public_key_resource_gen.go @@ -0,0 +1,207 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ivs + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_ivs_public_key", publicKeyResource) +} + +// publicKeyResource returns the Terraform awscc_ivs_public_key resource. +// This Terraform resource corresponds to the CloudFormation AWS::IVS::PublicKey resource. +func publicKeyResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Key-pair identifier.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Key-pair identifier.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Fingerprint + // CloudFormation resource type schema: + // + // { + // "description": "Key-pair identifier.", + // "type": "string" + // } + "fingerprint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Key-pair identifier.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "Name of the public key to be imported. The value does not need to be unique.", + // "maxLength": 128, + // "minLength": 0, + // "pattern": "^[a-zA-Z0-9-_]*$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Name of the public key to be imported. The value does not need to be unique.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 128), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-_]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PublicKeyMaterial + // CloudFormation resource type schema: + // + // { + // "description": "The public portion of a customer-generated key pair.", + // "pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?", + // "type": "string" + // } + "public_key_material": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The public portion of a customer-generated key pair.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of key-value pairs that contain metadata for the asset model.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of key-value pairs that contain metadata for the asset model.", + Optional: true, + Computed: true, + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeAtMost(50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::IVS::PublicKey", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::IVS::PublicKey").WithTerraformTypeName("awscc_ivs_public_key") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "fingerprint": "Fingerprint", + "key": "Key", + "name": "Name", + "public_key_material": "PublicKeyMaterial", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ivs/public_key_resource_gen_test.go b/internal/aws/ivs/public_key_resource_gen_test.go new file mode 100644 index 000000000..d92de01a9 --- /dev/null +++ b/internal/aws/ivs/public_key_resource_gen_test.go @@ -0,0 +1,46 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ivs_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIVSPublicKey_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IVS::PublicKey", "awscc_ivs_public_key", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSIVSPublicKey_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IVS::PublicKey", "awscc_ivs_public_key", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, + }, + }) +} diff --git a/internal/aws/ivs/public_key_singular_data_source_gen.go b/internal/aws/ivs/public_key_singular_data_source_gen.go new file mode 100644 index 000000000..0efd027ea --- /dev/null +++ b/internal/aws/ivs/public_key_singular_data_source_gen.go @@ -0,0 +1,155 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ivs + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ivs_public_key", publicKeyDataSource) +} + +// publicKeyDataSource returns the Terraform awscc_ivs_public_key data source. +// This Terraform data source corresponds to the CloudFormation AWS::IVS::PublicKey resource. +func publicKeyDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Key-pair identifier.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Key-pair identifier.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Fingerprint + // CloudFormation resource type schema: + // + // { + // "description": "Key-pair identifier.", + // "type": "string" + // } + "fingerprint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Key-pair identifier.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "Name of the public key to be imported. The value does not need to be unique.", + // "maxLength": 128, + // "minLength": 0, + // "pattern": "^[a-zA-Z0-9-_]*$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Name of the public key to be imported. The value does not need to be unique.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PublicKeyMaterial + // CloudFormation resource type schema: + // + // { + // "description": "The public portion of a customer-generated key pair.", + // "pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?", + // "type": "string" + // } + "public_key_material": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The public portion of a customer-generated key pair.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of key-value pairs that contain metadata for the asset model.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of key-value pairs that contain metadata for the asset model.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::IVS::PublicKey", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::IVS::PublicKey").WithTerraformTypeName("awscc_ivs_public_key") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "fingerprint": "Fingerprint", + "key": "Key", + "name": "Name", + "public_key_material": "PublicKeyMaterial", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ivs/public_key_singular_data_source_gen_test.go b/internal/aws/ivs/public_key_singular_data_source_gen_test.go new file mode 100644 index 000000000..d0f76beee --- /dev/null +++ b/internal/aws/ivs/public_key_singular_data_source_gen_test.go @@ -0,0 +1,40 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ivs_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIVSPublicKeyDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IVS::PublicKey", "awscc_ivs_public_key", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithEmptyResourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"), + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"), + ), + }, + }) +} + +func TestAccAWSIVSPublicKeyDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IVS::PublicKey", "awscc_ivs_public_key", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ivs/stage_resource_gen.go b/internal/aws/ivs/stage_resource_gen.go index 5844a962b..985f8a619 100644 --- a/internal/aws/ivs/stage_resource_gen.go +++ b/internal/aws/ivs/stage_resource_gen.go @@ -9,14 +9,18 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/defaults" "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" ) @@ -64,6 +68,85 @@ func stageResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: AutoParticipantRecordingConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration object for individual participant recording, to attach to the new stage.", + // "properties": { + // "MediaTypes": { + // "default": [ + // "AUDIO_VIDEO" + // ], + // "description": "Types of media to be recorded. Default: AUDIO_VIDEO.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "AUDIO_VIDEO", + // "AUDIO_ONLY" + // ], + // "type": "string" + // }, + // "maxItems": 1, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // }, + // "StorageConfigurationArn": { + // "description": "ARN of the StorageConfiguration resource to use for individual participant recording.", + // "maxLength": 128, + // "minLength": 0, + // "pattern": "^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + // "type": "string" + // } + // }, + // "required": [ + // "StorageConfigurationArn" + // ], + // "type": "object" + // } + "auto_participant_recording_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MediaTypes + "media_types": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Types of media to be recorded. Default: AUDIO_VIDEO.", + Optional: true, + Computed: true, + Default: defaults.StaticSetOfString( + "AUDIO_VIDEO", + ), + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeBetween(0, 1), + setvalidator.ValueStringsAre( + stringvalidator.OneOf( + "AUDIO_VIDEO", + "AUDIO_ONLY", + ), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: StorageConfigurationArn + "storage_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN of the StorageConfiguration resource to use for individual participant recording.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 128), + stringvalidator.RegexMatches(regexp.MustCompile("^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration object for individual participant recording, to attach to the new stage.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -165,10 +248,13 @@ func stageResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "active_session_id": "ActiveSessionId", "arn": "Arn", - "key": "Key", - "name": "Name", - "tags": "Tags", - "value": "Value", + "auto_participant_recording_configuration": "AutoParticipantRecordingConfiguration", + "key": "Key", + "media_types": "MediaTypes", + "name": "Name", + "storage_configuration_arn": "StorageConfigurationArn", + "tags": "Tags", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/ivs/stage_singular_data_source_gen.go b/internal/aws/ivs/stage_singular_data_source_gen.go index 923423b6a..0dcb4b362 100644 --- a/internal/aws/ivs/stage_singular_data_source_gen.go +++ b/internal/aws/ivs/stage_singular_data_source_gen.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" ) @@ -50,6 +51,61 @@ func stageDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Stage ARN is automatically generated on creation and assigned as the unique identifier.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: AutoParticipantRecordingConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration object for individual participant recording, to attach to the new stage.", + // "properties": { + // "MediaTypes": { + // "default": [ + // "AUDIO_VIDEO" + // ], + // "description": "Types of media to be recorded. Default: AUDIO_VIDEO.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "AUDIO_VIDEO", + // "AUDIO_ONLY" + // ], + // "type": "string" + // }, + // "maxItems": 1, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // }, + // "StorageConfigurationArn": { + // "description": "ARN of the StorageConfiguration resource to use for individual participant recording.", + // "maxLength": 128, + // "minLength": 0, + // "pattern": "^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + // "type": "string" + // } + // }, + // "required": [ + // "StorageConfigurationArn" + // ], + // "type": "object" + // } + "auto_participant_recording_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MediaTypes + "media_types": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Types of media to be recorded. Default: AUDIO_VIDEO.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: StorageConfigurationArn + "storage_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN of the StorageConfiguration resource to use for individual participant recording.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration object for individual participant recording, to attach to the new stage.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -128,10 +184,13 @@ func stageDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "active_session_id": "ActiveSessionId", "arn": "Arn", - "key": "Key", - "name": "Name", - "tags": "Tags", - "value": "Value", + "auto_participant_recording_configuration": "AutoParticipantRecordingConfiguration", + "key": "Key", + "media_types": "MediaTypes", + "name": "Name", + "storage_configuration_arn": "StorageConfigurationArn", + "tags": "Tags", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/lambda/function_resource_gen.go b/internal/aws/lambda/function_resource_gen.go index e53563fe2..8aee38c11 100644 --- a/internal/aws/lambda/function_resource_gen.go +++ b/internal/aws/lambda/function_resource_gen.go @@ -741,6 +741,31 @@ func functionResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: RecursiveLoop + // CloudFormation resource type schema: + // + // { + // "description": "The function recursion configuration.", + // "enum": [ + // "Allow", + // "Terminate" + // ], + // "type": "string" + // } + "recursive_loop": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The function recursion configuration.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "Allow", + "Terminate", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ReservedConcurrentExecutions // CloudFormation resource type schema: // @@ -1189,6 +1214,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { "mode": "Mode", "optimization_status": "OptimizationStatus", "package_type": "PackageType", + "recursive_loop": "RecursiveLoop", "reserved_concurrent_executions": "ReservedConcurrentExecutions", "role": "Role", "runtime": "Runtime", diff --git a/internal/aws/lambda/function_singular_data_source_gen.go b/internal/aws/lambda/function_singular_data_source_gen.go index fe19685f0..091e97940 100644 --- a/internal/aws/lambda/function_singular_data_source_gen.go +++ b/internal/aws/lambda/function_singular_data_source_gen.go @@ -502,6 +502,21 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: RecursiveLoop + // CloudFormation resource type schema: + // + // { + // "description": "The function recursion configuration.", + // "enum": [ + // "Allow", + // "Terminate" + // ], + // "type": "string" + // } + "recursive_loop": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The function recursion configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ReservedConcurrentExecutions // CloudFormation resource type schema: // @@ -844,6 +859,7 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { "mode": "Mode", "optimization_status": "OptimizationStatus", "package_type": "PackageType", + "recursive_loop": "RecursiveLoop", "reserved_concurrent_executions": "ReservedConcurrentExecutions", "role": "Role", "runtime": "Runtime", diff --git a/internal/aws/lambda/permission_resource_gen.go b/internal/aws/lambda/permission_resource_gen.go index 337d71b12..23b68e198 100644 --- a/internal/aws/lambda/permission_resource_gen.go +++ b/internal/aws/lambda/permission_resource_gen.go @@ -75,14 +75,14 @@ func permissionResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* ? ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + // "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* – ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", // "maxLength": 140, // "minLength": 1, // "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-_]+))?$", // "type": "string" // } "function_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* ? ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + Description: "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* – ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 140), diff --git a/internal/aws/lambda/permission_singular_data_source_gen.go b/internal/aws/lambda/permission_singular_data_source_gen.go index 3edfe060c..418b1169b 100644 --- a/internal/aws/lambda/permission_singular_data_source_gen.go +++ b/internal/aws/lambda/permission_singular_data_source_gen.go @@ -54,14 +54,14 @@ func permissionDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* ? ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + // "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* – ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", // "maxLength": 140, // "minLength": 1, // "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-_]+))?$", // "type": "string" // } "function_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* ? ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + Description: "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* – ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* – ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* – ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", Computed: true, }, /*END ATTRIBUTE*/ // Property: FunctionUrlAuthType diff --git a/internal/aws/location/api_key_resource_gen.go b/internal/aws/location/api_key_resource_gen.go index f03e28ecd..f37933476 100644 --- a/internal/aws/location/api_key_resource_gen.go +++ b/internal/aws/location/api_key_resource_gen.go @@ -188,7 +188,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { // "pattern": "^geo:\\w*\\*?$", // "type": "string" // }, - // "maxItems": 7, + // "maxItems": 24, // "minItems": 1, // "type": "array" // }, @@ -210,7 +210,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { // "pattern": "(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)", // "type": "string" // }, - // "maxItems": 5, + // "maxItems": 8, // "minItems": 1, // "type": "array" // } @@ -228,7 +228,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { ElementType: types.StringType, Required: true, Validators: []validator.List{ /*START VALIDATORS*/ - listvalidator.SizeBetween(1, 7), + listvalidator.SizeBetween(1, 24), listvalidator.ValueStringsAre( stringvalidator.LengthBetween(5, 200), stringvalidator.RegexMatches(regexp.MustCompile("^geo:\\w*\\*?$"), ""), @@ -260,7 +260,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { ElementType: types.StringType, Required: true, Validators: []validator.List{ /*START VALIDATORS*/ - listvalidator.SizeBetween(1, 5), + listvalidator.SizeBetween(1, 8), listvalidator.ValueStringsAre( stringvalidator.LengthAtMost(1600), stringvalidator.RegexMatches(regexp.MustCompile("(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)"), ""), diff --git a/internal/aws/location/api_key_singular_data_source_gen.go b/internal/aws/location/api_key_singular_data_source_gen.go index 56a7bb002..58d869d5a 100644 --- a/internal/aws/location/api_key_singular_data_source_gen.go +++ b/internal/aws/location/api_key_singular_data_source_gen.go @@ -133,7 +133,7 @@ func aPIKeyDataSource(ctx context.Context) (datasource.DataSource, error) { // "pattern": "^geo:\\w*\\*?$", // "type": "string" // }, - // "maxItems": 7, + // "maxItems": 24, // "minItems": 1, // "type": "array" // }, @@ -155,7 +155,7 @@ func aPIKeyDataSource(ctx context.Context) (datasource.DataSource, error) { // "pattern": "(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)", // "type": "string" // }, - // "maxItems": 5, + // "maxItems": 8, // "minItems": 1, // "type": "array" // } diff --git a/internal/aws/msk/replicator_resource_gen.go b/internal/aws/msk/replicator_resource_gen.go index 239b0cd4c..0ce434e4b 100644 --- a/internal/aws/msk/replicator_resource_gen.go +++ b/internal/aws/msk/replicator_resource_gen.go @@ -298,6 +298,21 @@ func replicatorResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "TopicNameConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + // "properties": { + // "Type": { + // "description": "The type of replicated topic name.", + // "enum": [ + // "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + // "IDENTICAL" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "TopicsToExclude": { // "description": "List of regular expression patterns indicating the topics that should not be replicated.", // "insertionOrder": false, @@ -485,6 +500,32 @@ func replicatorResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: TopicNameConfiguration + "topic_name_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of replicated topic name.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + "IDENTICAL", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: TopicsToExclude "topics_to_exclude": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, @@ -680,6 +721,7 @@ func replicatorResource(ctx context.Context) (resource.Resource, error) { "tags": "Tags", "target_compression_type": "TargetCompressionType", "target_kafka_cluster_arn": "TargetKafkaClusterArn", + "topic_name_configuration": "TopicNameConfiguration", "topic_replication": "TopicReplication", "topics_to_exclude": "TopicsToExclude", "topics_to_replicate": "TopicsToReplicate", diff --git a/internal/aws/msk/replicator_singular_data_source_gen.go b/internal/aws/msk/replicator_singular_data_source_gen.go index 561c50ccf..3ba0777f4 100644 --- a/internal/aws/msk/replicator_singular_data_source_gen.go +++ b/internal/aws/msk/replicator_singular_data_source_gen.go @@ -258,6 +258,21 @@ func replicatorDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "object" // }, + // "TopicNameConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + // "properties": { + // "Type": { + // "description": "The type of replicated topic name.", + // "enum": [ + // "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + // "IDENTICAL" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "TopicsToExclude": { // "description": "List of regular expression patterns indicating the topics that should not be replicated.", // "insertionOrder": false, @@ -380,6 +395,18 @@ func replicatorDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Configuration for specifying the position in the topics to start replicating from.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: TopicNameConfiguration + "topic_name_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of replicated topic name.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: TopicsToExclude "topics_to_exclude": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, @@ -525,6 +552,7 @@ func replicatorDataSource(ctx context.Context) (datasource.DataSource, error) { "tags": "Tags", "target_compression_type": "TargetCompressionType", "target_kafka_cluster_arn": "TargetKafkaClusterArn", + "topic_name_configuration": "TopicNameConfiguration", "topic_replication": "TopicReplication", "topics_to_exclude": "TopicsToExclude", "topics_to_replicate": "TopicsToReplicate", diff --git a/internal/aws/neptune/db_cluster_resource_gen.go b/internal/aws/neptune/db_cluster_resource_gen.go index 39b2faa07..9300f86db 100644 --- a/internal/aws/neptune/db_cluster_resource_gen.go +++ b/internal/aws/neptune/db_cluster_resource_gen.go @@ -342,11 +342,11 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.", + // "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", // "type": "string" // } "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.", + Description: "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -538,11 +538,11 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.\n\nIf you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.", + // "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", // "type": "boolean" // } "storage_encrypted": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether the DB cluster is encrypted.\n\nIf you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.\n\nIf you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.", + Description: "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/neptune/db_cluster_singular_data_source_gen.go b/internal/aws/neptune/db_cluster_singular_data_source_gen.go index fb218c495..9223cc8a4 100644 --- a/internal/aws/neptune/db_cluster_singular_data_source_gen.go +++ b/internal/aws/neptune/db_cluster_singular_data_source_gen.go @@ -243,11 +243,11 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.", + // "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", // "type": "string" // } "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.", + Description: "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Port @@ -385,11 +385,11 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.\n\nIf you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.", + // "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", // "type": "boolean" // } "storage_encrypted": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether the DB cluster is encrypted.\n\nIf you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.\n\nIf you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.", + Description: "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags diff --git a/internal/aws/rds/db_instance_resource_gen.go b/internal/aws/rds/db_instance_resource_gen.go index 85a8e7587..6ff8d6598 100644 --- a/internal/aws/rds/db_instance_resource_gen.go +++ b/internal/aws/rds/db_instance_resource_gen.go @@ -1263,13 +1263,13 @@ func dBInstanceResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The date and time to restore from.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + // "description": "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", // "format": "date-time", // "type": "string" // } "restore_time": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, - Description: "The date and time to restore from.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + Description: "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -1534,11 +1534,11 @@ func dBInstanceResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", + // "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", // "type": "boolean" // } "use_latest_restorable_time": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", + Description: "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/rds/db_instance_singular_data_source_gen.go b/internal/aws/rds/db_instance_singular_data_source_gen.go index 7c1df14fe..79edbc1ff 100644 --- a/internal/aws/rds/db_instance_singular_data_source_gen.go +++ b/internal/aws/rds/db_instance_singular_data_source_gen.go @@ -915,13 +915,13 @@ func dBInstanceDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The date and time to restore from.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + // "description": "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", // "format": "date-time", // "type": "string" // } "restore_time": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, - Description: "The date and time to restore from.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + Description: "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", Computed: true, }, /*END ATTRIBUTE*/ // Property: SourceDBClusterIdentifier @@ -1109,11 +1109,11 @@ func dBInstanceDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", + // "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", // "type": "boolean" // } "use_latest_restorable_time": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", + Description: "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", Computed: true, }, /*END ATTRIBUTE*/ // Property: VPCSecurityGroups diff --git a/internal/aws/rds/global_cluster_resource_gen.go b/internal/aws/rds/global_cluster_resource_gen.go index 43725955a..fd9938175 100644 --- a/internal/aws/rds/global_cluster_resource_gen.go +++ b/internal/aws/rds/global_cluster_resource_gen.go @@ -106,6 +106,8 @@ func globalClusterResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The cluster identifier of the new global database cluster. This parameter is stored as a lowercase string.", + // "maxLength": 63, + // "minLength": 1, // "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", // "type": "string" // } @@ -114,6 +116,7 @@ func globalClusterResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 63), stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/rds/global_cluster_singular_data_source_gen.go b/internal/aws/rds/global_cluster_singular_data_source_gen.go index a09811219..f383a1cc1 100644 --- a/internal/aws/rds/global_cluster_singular_data_source_gen.go +++ b/internal/aws/rds/global_cluster_singular_data_source_gen.go @@ -76,6 +76,8 @@ func globalClusterDataSource(ctx context.Context) (datasource.DataSource, error) // // { // "description": "The cluster identifier of the new global database cluster. This parameter is stored as a lowercase string.", + // "maxLength": 63, + // "minLength": 1, // "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", // "type": "string" // } diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index a60837efb..dfd47fe84 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -10,7 +10,7 @@ meta_schema { path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json" } -# 1037 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 1040 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -210,6 +210,16 @@ resource_schema "aws_apigatewayv2_domain_name" { cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" } +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + + # Suppression Reason: ResponseParameters is of unsupported type: key-value map of list of object. + # https://github.com/hashicorp/terraform-provider-awscc/issues/1968 + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_apigatewayv2_integration_response" { cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" } @@ -2155,6 +2165,10 @@ resource_schema "aws_globalaccelerator_listener" { cloudformation_type_name = "AWS::GlobalAccelerator::Listener" } +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + resource_schema "aws_glue_registry" { cloudformation_type_name = "AWS::Glue::Registry" } @@ -2310,6 +2324,10 @@ resource_schema "aws_ivs_playback_restriction_policy" { cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" } +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + resource_schema "aws_ivs_recording_configuration" { cloudformation_type_name = "AWS::IVS::RecordingConfiguration" } diff --git a/internal/provider/generators/allschemas/available_schemas.2024-08-21.hcl b/internal/provider/generators/allschemas/available_schemas.2024-08-21.hcl new file mode 100644 index 000000000..83d0a89b4 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-08-21.hcl @@ -0,0 +1,4413 @@ +# 1040 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_nimblestudio_launch_profile" { + cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_streaming_image" { + cloudformation_type_name = "AWS::NimbleStudio::StreamingImage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_studio" { + cloudformation_type_name = "AWS::NimbleStudio::Studio" +} + +resource_schema "aws_nimblestudio_studio_component" { + cloudformation_type_name = "AWS::NimbleStudio::StudioComponent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/generators/allschemas/main.go b/internal/provider/generators/allschemas/main.go index f444e10c6..5360fbd7b 100644 --- a/internal/provider/generators/allschemas/main.go +++ b/internal/provider/generators/allschemas/main.go @@ -98,31 +98,31 @@ func main() { if err != nil { g.Errorf("describing CloudFormation type (%s): %s", cfTypeName, err) - } - - schema, err := cfschema.Sanitize(aws.ToString(output.Schema)) - - if err != nil { - g.Errorf("sanitizing CloudFormation type (%s) schema: %s", cfTypeName, err) - } - - resourceSchema, err := cfschema.NewResourceJsonSchemaDocument(schema) - - if err != nil { - g.Errorf("parsing CloudFormation type (%s) schema: %s", cfTypeName, err) - } - - resource, err := resourceSchema.Resource() - - if err != nil { - g.Errorf("parsing CloudFormation type (%s) resource schema: %s", cfTypeName, err) - } + } else { + schema, err := cfschema.Sanitize(aws.ToString(output.Schema)) - if handler, ok := resource.Handlers[cfschema.HandlerTypeList]; ok { - // Ensure no required arguments. - if handlerSchema := handler.HandlerSchema; handlerSchema == nil || - (len(handlerSchema.AllOf) == 0 && len(handlerSchema.AnyOf) == 0 && len(handlerSchema.OneOf) == 0 && len(handlerSchema.Required) == 0) { - suppressPluralDataSource = false + if err != nil { + g.Errorf("sanitizing CloudFormation type (%s) schema: %s", cfTypeName, err) + } else { + resourceSchema, err := cfschema.NewResourceJsonSchemaDocument(schema) + + if err != nil { + g.Errorf("parsing CloudFormation type (%s) schema: %s", cfTypeName, err) + } else { + resource, err := resourceSchema.Resource() + + if err != nil { + g.Errorf("parsing CloudFormation type (%s) resource schema: %s", cfTypeName, err) + } else { + if handler, ok := resource.Handlers[cfschema.HandlerTypeList]; ok { + // Ensure no required arguments. + if handlerSchema := handler.HandlerSchema; handlerSchema == nil || + (len(handlerSchema.AllOf) == 0 && len(handlerSchema.AnyOf) == 0 && len(handlerSchema.OneOf) == 0 && len(handlerSchema.Required) == 0) { + suppressPluralDataSource = false + } + } + } + } } } diff --git a/internal/provider/import_examples.go b/internal/provider/import_examples.go index 629a34236..bb207cd27 100644 --- a/internal/provider/import_examples.go +++ b/internal/provider/import_examples.go @@ -458,6 +458,7 @@ //go:generate go run generators/import-examples/main.go -resource awscc_globalaccelerator_cross_account_attachment -identifier AttachmentArn -- ../../examples/resources/awscc_globalaccelerator_cross_account_attachment/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_globalaccelerator_endpoint_group -identifier EndpointGroupArn -- ../../examples/resources/awscc_globalaccelerator_endpoint_group/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_globalaccelerator_listener -identifier ListenerArn -- ../../examples/resources/awscc_globalaccelerator_listener/import.sh +//go:generate go run generators/import-examples/main.go -resource awscc_glue_database -identifier DatabaseName -- ../../examples/resources/awscc_glue_database/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_glue_registry -identifier Arn -- ../../examples/resources/awscc_glue_registry/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_glue_schema -identifier Arn -- ../../examples/resources/awscc_glue_schema/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_glue_schema_version -identifier VersionId -- ../../examples/resources/awscc_glue_schema_version/import.sh @@ -495,6 +496,7 @@ //go:generate go run generators/import-examples/main.go -resource awscc_ivs_encoder_configuration -identifier Arn -- ../../examples/resources/awscc_ivs_encoder_configuration/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_ivs_playback_key_pair -identifier Arn -- ../../examples/resources/awscc_ivs_playback_key_pair/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_ivs_playback_restriction_policy -identifier Arn -- ../../examples/resources/awscc_ivs_playback_restriction_policy/import.sh +//go:generate go run generators/import-examples/main.go -resource awscc_ivs_public_key -identifier Arn -- ../../examples/resources/awscc_ivs_public_key/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_ivs_recording_configuration -identifier Arn -- ../../examples/resources/awscc_ivs_recording_configuration/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_ivs_stage -identifier Arn -- ../../examples/resources/awscc_ivs_stage/import.sh //go:generate go run generators/import-examples/main.go -resource awscc_ivs_storage_configuration -identifier Arn -- ../../examples/resources/awscc_ivs_storage_configuration/import.sh diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index 448edb001..d94f3ed0e 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -335,6 +335,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_globalaccelerator_cross_account_attachments -cftype AWS::GlobalAccelerator::CrossAccountAttachment -package globalaccelerator ../aws/globalaccelerator/cross_account_attachment_plural_data_source_gen.go ../aws/globalaccelerator/cross_account_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_globalaccelerator_endpoint_groups -cftype AWS::GlobalAccelerator::EndpointGroup -package globalaccelerator ../aws/globalaccelerator/endpoint_group_plural_data_source_gen.go ../aws/globalaccelerator/endpoint_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_globalaccelerator_listeners -cftype AWS::GlobalAccelerator::Listener -package globalaccelerator ../aws/globalaccelerator/listener_plural_data_source_gen.go ../aws/globalaccelerator/listener_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_databases -cftype AWS::Glue::Database -package glue ../aws/glue/database_plural_data_source_gen.go ../aws/glue/database_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_registries -cftype AWS::Glue::Registry -package glue ../aws/glue/registry_plural_data_source_gen.go ../aws/glue/registry_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_schemas -cftype AWS::Glue::Schema -package glue ../aws/glue/schema_plural_data_source_gen.go ../aws/glue/schema_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_triggers -cftype AWS::Glue::Trigger -package glue ../aws/glue/trigger_plural_data_source_gen.go ../aws/glue/trigger_plural_data_source_gen_test.go @@ -365,6 +366,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_encoder_configurations -cftype AWS::IVS::EncoderConfiguration -package ivs ../aws/ivs/encoder_configuration_plural_data_source_gen.go ../aws/ivs/encoder_configuration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_playback_key_pairs -cftype AWS::IVS::PlaybackKeyPair -package ivs ../aws/ivs/playback_key_pair_plural_data_source_gen.go ../aws/ivs/playback_key_pair_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_playback_restriction_policies -cftype AWS::IVS::PlaybackRestrictionPolicy -package ivs ../aws/ivs/playback_restriction_policy_plural_data_source_gen.go ../aws/ivs/playback_restriction_policy_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_public_keys -cftype AWS::IVS::PublicKey -package ivs ../aws/ivs/public_key_plural_data_source_gen.go ../aws/ivs/public_key_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_recording_configurations -cftype AWS::IVS::RecordingConfiguration -package ivs ../aws/ivs/recording_configuration_plural_data_source_gen.go ../aws/ivs/recording_configuration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_stages -cftype AWS::IVS::Stage -package ivs ../aws/ivs/stage_plural_data_source_gen.go ../aws/ivs/stage_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ivs_storage_configurations -cftype AWS::IVS::StorageConfiguration -package ivs ../aws/ivs/storage_configuration_plural_data_source_gen.go ../aws/ivs/storage_configuration_plural_data_source_gen_test.go diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 680b4147e..1d4d4e4a6 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -458,6 +458,7 @@ //go:generate go run generators/resource/main.go -resource awscc_globalaccelerator_cross_account_attachment -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_CrossAccountAttachment.json -package globalaccelerator -- ../aws/globalaccelerator/cross_account_attachment_resource_gen.go ../aws/globalaccelerator/cross_account_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_globalaccelerator_endpoint_group -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_EndpointGroup.json -package globalaccelerator -- ../aws/globalaccelerator/endpoint_group_resource_gen.go ../aws/globalaccelerator/endpoint_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_globalaccelerator_listener -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_Listener.json -package globalaccelerator -- ../aws/globalaccelerator/listener_resource_gen.go ../aws/globalaccelerator/listener_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_glue_database -cfschema ../service/cloudformation/schemas/AWS_Glue_Database.json -package glue -- ../aws/glue/database_resource_gen.go ../aws/glue/database_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_glue_registry -cfschema ../service/cloudformation/schemas/AWS_Glue_Registry.json -package glue -- ../aws/glue/registry_resource_gen.go ../aws/glue/registry_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_glue_schema -cfschema ../service/cloudformation/schemas/AWS_Glue_Schema.json -package glue -- ../aws/glue/schema_resource_gen.go ../aws/glue/schema_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_glue_schema_version -cfschema ../service/cloudformation/schemas/AWS_Glue_SchemaVersion.json -package glue -- ../aws/glue/schema_version_resource_gen.go ../aws/glue/schema_version_resource_gen_test.go @@ -495,6 +496,7 @@ //go:generate go run generators/resource/main.go -resource awscc_ivs_encoder_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json -package ivs -- ../aws/ivs/encoder_configuration_resource_gen.go ../aws/ivs/encoder_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_playback_key_pair -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json -package ivs -- ../aws/ivs/playback_key_pair_resource_gen.go ../aws/ivs/playback_key_pair_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_playback_restriction_policy -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json -package ivs -- ../aws/ivs/playback_restriction_policy_resource_gen.go ../aws/ivs/playback_restriction_policy_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ivs_public_key -cfschema ../service/cloudformation/schemas/AWS_IVS_PublicKey.json -package ivs -- ../aws/ivs/public_key_resource_gen.go ../aws/ivs/public_key_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_recording_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json -package ivs -- ../aws/ivs/recording_configuration_resource_gen.go ../aws/ivs/recording_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_stage -cfschema ../service/cloudformation/schemas/AWS_IVS_Stage.json -package ivs -- ../aws/ivs/stage_resource_gen.go ../aws/ivs/stage_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_storage_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json -package ivs -- ../aws/ivs/storage_configuration_resource_gen.go ../aws/ivs/storage_configuration_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 699b86855..6a171088c 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -458,6 +458,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_globalaccelerator_cross_account_attachment -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_CrossAccountAttachment.json -package globalaccelerator ../aws/globalaccelerator/cross_account_attachment_singular_data_source_gen.go ../aws/globalaccelerator/cross_account_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_globalaccelerator_endpoint_group -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_EndpointGroup.json -package globalaccelerator ../aws/globalaccelerator/endpoint_group_singular_data_source_gen.go ../aws/globalaccelerator/endpoint_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_globalaccelerator_listener -cfschema ../service/cloudformation/schemas/AWS_GlobalAccelerator_Listener.json -package globalaccelerator ../aws/globalaccelerator/listener_singular_data_source_gen.go ../aws/globalaccelerator/listener_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_glue_database -cfschema ../service/cloudformation/schemas/AWS_Glue_Database.json -package glue ../aws/glue/database_singular_data_source_gen.go ../aws/glue/database_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_glue_registry -cfschema ../service/cloudformation/schemas/AWS_Glue_Registry.json -package glue ../aws/glue/registry_singular_data_source_gen.go ../aws/glue/registry_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_glue_schema -cfschema ../service/cloudformation/schemas/AWS_Glue_Schema.json -package glue ../aws/glue/schema_singular_data_source_gen.go ../aws/glue/schema_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_glue_schema_version -cfschema ../service/cloudformation/schemas/AWS_Glue_SchemaVersion.json -package glue ../aws/glue/schema_version_singular_data_source_gen.go ../aws/glue/schema_version_singular_data_source_gen_test.go @@ -495,6 +496,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_encoder_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json -package ivs ../aws/ivs/encoder_configuration_singular_data_source_gen.go ../aws/ivs/encoder_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_playback_key_pair -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json -package ivs ../aws/ivs/playback_key_pair_singular_data_source_gen.go ../aws/ivs/playback_key_pair_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_playback_restriction_policy -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json -package ivs ../aws/ivs/playback_restriction_policy_singular_data_source_gen.go ../aws/ivs/playback_restriction_policy_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_public_key -cfschema ../service/cloudformation/schemas/AWS_IVS_PublicKey.json -package ivs ../aws/ivs/public_key_singular_data_source_gen.go ../aws/ivs/public_key_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_recording_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json -package ivs ../aws/ivs/recording_configuration_singular_data_source_gen.go ../aws/ivs/recording_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_stage -cfschema ../service/cloudformation/schemas/AWS_IVS_Stage.json -package ivs ../aws/ivs/stage_singular_data_source_gen.go ../aws/ivs/stage_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_storage_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json -package ivs ../aws/ivs/storage_configuration_singular_data_source_gen.go ../aws/ivs/storage_configuration_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json new file mode 100644 index 000000000..67724857a --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json @@ -0,0 +1,204 @@ +{ + "typeName": "AWS::ApiGatewayV2::Integration", + "additionalProperties": false, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "ResponseParameter": { + "description": "response parameter", + "type": "object", + "additionalProperties": false, + "properties": { + "Destination": { + "type": "string" + }, + "Source": { + "type": "string" + } + } + }, + "ResponseParameterList": { + "description": "Response parameter list for an Integration", + "type": "array", + "items": { + "$ref": "#/definitions/ResponseParameter" + } + }, + "TlsConfig": { + "description": "The TlsConfig property specifies the TLS configuration for a private integration. Supported only for HTTP APIs.", + "type": "object", + "additionalProperties": false, + "properties": { + "ServerNameToVerify": { + "type": "string" + } + } + }, + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "additionalProperties": false, + "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 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ConnectionId": { + "description": "The ID of the VPC link for a private integration. Supported only for HTTP APIs.", + "type": "string" + }, + "ConnectionType": { + "description": "The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.", + "type": "string" + }, + "ContentHandlingStrategy": { + "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT.", + "type": "string" + }, + "CredentialsArn": { + "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, don't specify this parameter.", + "type": "string" + }, + "Description": { + "description": "The description of the integration.", + "type": "string" + }, + "IntegrationMethod": { + "description": "Specifies the integration's HTTP method type.", + "type": "string" + }, + "IntegrationSubtype": { + "description": "Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke.", + "type": "string" + }, + "IntegrationId": { + "description": "The integration ID.", + "type": "string" + }, + "IntegrationType": { + "description": "The integration type of an integration.", + "type": "string" + }, + "IntegrationUri": { + "description": "For a Lambda integration, specify the URI of a Lambda function. For an HTTP integration, specify a fully-qualified URL. For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service.", + "type": "string" + }, + "PassthroughBehavior": { + "description": "Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.", + "type": "string" + }, + "PayloadFormatVersion": { + "description": "Specifies the format of the payload sent to an integration. Required for HTTP APIs. For HTTP APIs, supported values for Lambda proxy integrations are 1.0 and 2.0 For all other integrations, 1.0 is the only supported value.", + "type": "string" + }, + "RequestParameters": { + "description": "A key-value map specifying parameters.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "RequestTemplates": { + "description": "A map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "ResponseParameters": { + "description": "Parameters that transform the HTTP response from a backend integration before returning the response to clients. Supported only for HTTP APIs.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "$ref": "#/definitions/ResponseParameterList" + } + } + }, + "TemplateSelectionExpression": { + "description": "The template selection expression for the integration. Supported only for WebSocket APIs.", + "type": "string" + }, + "TimeoutInMillis": { + "description": "Custom timeout between 50 and 29000 milliseconds for WebSocket APIs and between 50 and 30000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.", + "type": "integer" + }, + "TlsConfig": { + "description": "The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.", + "$ref": "#/definitions/TlsConfig" + } + }, + "required": [ + "ApiId", + "IntegrationType" + ], + "createOnlyProperties": [ + "/properties/ApiId" + ], + "readOnlyProperties": [ + "/properties/IntegrationId" + ], + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/IntegrationId" + ], + "tagging": { + "taggable": false + }, + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_CleanRooms_ConfiguredTableAssociation.json b/internal/service/cloudformation/schemas/AWS_CleanRooms_ConfiguredTableAssociation.json index d04eeb1d4..959c0797d 100644 --- a/internal/service/cloudformation/schemas/AWS_CleanRooms_ConfiguredTableAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_CleanRooms_ConfiguredTableAssociation.json @@ -241,6 +241,7 @@ "/properties/ConfiguredTableAssociationIdentifier", "/properties/MembershipIdentifier" ], + "replacementStrategy": "delete_then_create", "tagging": { "taggable": true, "tagOnCreate": true, diff --git a/internal/service/cloudformation/schemas/AWS_CodeBuild_Fleet.json b/internal/service/cloudformation/schemas/AWS_CodeBuild_Fleet.json index f7f0cf5de..64ad8b149 100644 --- a/internal/service/cloudformation/schemas/AWS_CodeBuild_Fleet.json +++ b/internal/service/cloudformation/schemas/AWS_CodeBuild_Fleet.json @@ -19,7 +19,8 @@ "WINDOWS_SERVER_2022_CONTAINER", "LINUX_CONTAINER", "LINUX_GPU_CONTAINER", - "ARM_CONTAINER" + "ARM_CONTAINER", + "MAC_ARM" ] }, "ComputeType": { @@ -28,6 +29,7 @@ "BUILD_GENERAL1_SMALL", "BUILD_GENERAL1_MEDIUM", "BUILD_GENERAL1_LARGE", + "BUILD_GENERAL1_XLARGE", "BUILD_GENERAL1_2XLARGE" ] }, @@ -55,6 +57,10 @@ "Arn": { "type": "string", "minLength": 1 + }, + "ImageId": { + "type": "string", + "pattern": "" } }, "definitions": { diff --git a/internal/service/cloudformation/schemas/AWS_ControlTower_LandingZone.json b/internal/service/cloudformation/schemas/AWS_ControlTower_LandingZone.json index cae0fb4cd..c379d0932 100644 --- a/internal/service/cloudformation/schemas/AWS_ControlTower_LandingZone.json +++ b/internal/service/cloudformation/schemas/AWS_ControlTower_LandingZone.json @@ -1,97 +1,18 @@ { - "typeName": "AWS::ControlTower::LandingZone", - "description": "Definition of AWS::ControlTower::LandingZone Resource Type", - "definitions": { - "LandingZoneDriftStatus": { - "type": "string", - "enum": [ - "DRIFTED", - "IN_SYNC" - ] - }, - "LandingZoneStatus": { - "type": "string", - "enum": [ - "ACTIVE", - "PROCESSING", - "FAILED" - ] - }, - "Tag": { - "type": "object", - "properties": { - "Key": { - "type": "string", - "maxLength": 256, - "minLength": 1 - }, - "Value": { - "type": "string", - "maxLength": 256, - "minLength": 0 - } - }, - "additionalProperties": false - } - }, - "properties": { - "LandingZoneIdentifier": { - "type": "string" - }, - "Arn": { - "type": "string", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$" - }, - "Status": { - "$ref": "#/definitions/LandingZoneStatus" - }, - "LatestAvailableVersion": { - "type": "string", - "maxLength": 10, - "minLength": 3, - "pattern": "\\d+.\\d+" - }, - "DriftStatus": { - "$ref": "#/definitions/LandingZoneDriftStatus" - }, - "Manifest": {}, - "Version": { - "type": "string", - "maxLength": 10, - "minLength": 3, - "pattern": "\\d+.\\d+" - }, - "Tags": { - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - } - } - }, - "required": [ - "Manifest", - "Version" - ], - "readOnlyProperties": [ - "/properties/LandingZoneIdentifier", - "/properties/Arn", - "/properties/Status", - "/properties/LatestAvailableVersion", - "/properties/DriftStatus" - ], - "primaryIdentifier": [ - "/properties/LandingZoneIdentifier" - ], "tagging": { "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true }, "handlers": { + "read": { + "permissions": [ + "controltower:GetLandingZone", + "controltower:ListTagsForResource" + ] + }, "create": { "permissions": [ "controltower:CreateLandingZone", @@ -127,12 +48,6 @@ "sso:RegisterRegion" ] }, - "read": { - "permissions": [ - "controltower:GetLandingZone", - "controltower:ListTagsForResource" - ] - }, "update": { "permissions": [ "controltower:UpdateLandingZone", @@ -169,6 +84,11 @@ "sso:RegisterRegion" ] }, + "list": { + "permissions": [ + "controltower:ListLandingZones" + ] + }, "delete": { "permissions": [ "controltower:DeleteLandingZone", @@ -194,12 +114,92 @@ "iam:DetachRolePolicy", "iam:DeleteRole" ] + } + }, + "typeName": "AWS::ControlTower::LandingZone", + "readOnlyProperties": [ + "/properties/LandingZoneIdentifier", + "/properties/Arn", + "/properties/Status", + "/properties/LatestAvailableVersion", + "/properties/DriftStatus" + ], + "description": "Definition of AWS::ControlTower::LandingZone Resource Type", + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/LandingZoneIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "type": "object", + "properties": { + "Value": { + "minLength": 0, + "type": "string", + "maxLength": 256 + }, + "Key": { + "minLength": 1, + "type": "string", + "maxLength": 256 + } + } }, - "list": { - "permissions": [ - "controltower:ListLandingZones" + "LandingZoneStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "PROCESSING", + "FAILED" + ] + }, + "LandingZoneDriftStatus": { + "type": "string", + "enum": [ + "DRIFTED", + "IN_SYNC" ] } }, - "additionalProperties": false + "properties": { + "Status": { + "$ref": "#/definitions/LandingZoneStatus" + }, + "LatestAvailableVersion": { + "minLength": 3, + "pattern": "\\d+.\\d+", + "type": "string", + "maxLength": 10 + }, + "Version": { + "minLength": 3, + "pattern": "\\d+.\\d+", + "type": "string", + "maxLength": 10 + }, + "DriftStatus": { + "$ref": "#/definitions/LandingZoneDriftStatus" + }, + "Arn": { + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string", + "maxLength": 2048 + }, + "Manifest": {}, + "LandingZoneIdentifier": { + "type": "string" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "required": [ + "Manifest", + "Version" + ] } diff --git a/internal/service/cloudformation/schemas/AWS_Deadline_Fleet.json b/internal/service/cloudformation/schemas/AWS_Deadline_Fleet.json index 122e4f00b..19dbaac19 100644 --- a/internal/service/cloudformation/schemas/AWS_Deadline_Fleet.json +++ b/internal/service/cloudformation/schemas/AWS_Deadline_Fleet.json @@ -392,7 +392,8 @@ "ServiceManagedFleetOperatingSystemFamily": { "type": "string", "enum": [ - "LINUX" + "LINUX", + "WINDOWS" ] }, "Tag": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_CustomerGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_CustomerGateway.json index aa59ae1ef..c77cc521c 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_CustomerGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_CustomerGateway.json @@ -58,7 +58,7 @@ ], "definitions": { "Tag": { - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", "additionalProperties": false, "type": "object", "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_IPAM.json b/internal/service/cloudformation/schemas/AWS_EC2_IPAM.json index a5d131591..afbcc62ca 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_IPAM.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_IPAM.json @@ -95,6 +95,10 @@ "advanced" ] }, + "EnablePrivateGua": { + "description": "Enable provisioning of GUA space in private pools.", + "type": "boolean" + }, "Tags": { "description": "An array of key-value pairs to apply to this resource.", "type": "array", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json index 48cf8fc2a..f7d4b5449 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json @@ -24,7 +24,7 @@ "Value", "Key" ], - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications)." + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)." } }, "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_KeyPair.json b/internal/service/cloudformation/schemas/AWS_EC2_KeyPair.json index 499c71fcb..84d5e3209 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_KeyPair.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_KeyPair.json @@ -4,7 +4,7 @@ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "definitions": { "Tag": { - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", "type": "object", "properties": { "Key": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_LaunchTemplate.json b/internal/service/cloudformation/schemas/AWS_EC2_LaunchTemplate.json index 289031d01..108c1cf95 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_LaunchTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_LaunchTemplate.json @@ -999,7 +999,7 @@ } }, "Tag": { - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", "additionalProperties": false, "type": "object", "properties": { @@ -1126,7 +1126,7 @@ }, "TagSpecifications": { "uniqueItems": false, - "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", "type": "array", "items": { "$ref": "#/definitions/LaunchTemplateTagSpecification" diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json index 5ea4cea8b..83c713362 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json @@ -55,7 +55,7 @@ ], "definitions": { "Tag": { - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", "additionalProperties": false, "type": "object", "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_RouteTable.json b/internal/service/cloudformation/schemas/AWS_EC2_RouteTable.json index 1442d2038..d38b84fdd 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_RouteTable.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_RouteTable.json @@ -53,7 +53,7 @@ ], "definitions": { "Tag": { - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", "additionalProperties": false, "type": "object", "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json b/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json index ac4735f6d..2a9395415 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json @@ -129,7 +129,7 @@ "Value", "Key" ], - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications)." + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)." } }, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json index 4d8ca8c2a..cf2751240 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json @@ -1,53 +1,62 @@ { - "tagging": { - "taggable": false - }, - "handlers": { - "read": { - "permissions": [ - "ec2:DescribeVpcs" - ] + "typeName": "AWS::EC2::VPCCidrBlock", + "description": "Resource Type definition for AWS::EC2::VPCCidrBlock", + "additionalProperties": false, + "properties": { + "CidrBlock": { + "type": "string", + "description": "An IPv4 CIDR block to associate with the VPC." }, - "create": { - "permissions": [ - "ec2:AssociateVpcCidrBlock", - "ec2:DescribeVpcs", - "ec2:AllocateIpamPoolCidr" - ] + "Ipv6Pool": { + "type": "string", + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block." }, - "list": { - "permissions": [ - "ec2:DescribeVpcs" - ], - "handlerSchema": { - "properties": { - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "required": [ - "VpcId" - ] - } + "Id": { + "type": "string", + "description": "The Id of the VPC associated CIDR Block." }, - "delete": { - "permissions": [ - "ec2:DescribeVpcs", - "ec2:DisassociateVpcCidrBlock" - ] + "VpcId": { + "type": "string", + "description": "The ID of the VPC." + }, + "Ipv6CidrBlock": { + "type": "string", + "description": "An IPv6 CIDR block from the IPv6 address pool." + }, + "Ipv4IpamPoolId": { + "type": "string", + "description": "The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC." + }, + "Ipv4NetmaskLength": { + "type": "integer", + "description": "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool." + }, + "Ipv6IpamPoolId": { + "type": "string", + "description": "The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC." + }, + "Ipv6NetmaskLength": { + "type": "integer", + "description": "The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool." + }, + "AmazonProvidedIpv6CidrBlock": { + "type": "boolean", + "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block." + }, + "Ipv6AddressAttribute": { + "type": "string", + "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private." + }, + "IpSource": { + "type": "string", + "description": "The IP Source of an IPv6 VPC CIDR Block." } }, - "typeName": "AWS::EC2::VPCCidrBlock", - "readOnlyProperties": [ - "/properties/Id" - ], - "description": "Resource Type definition for AWS::EC2::VPCCidrBlock", - "writeOnlyProperties": [ - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" + "tagging": { + "taggable": false + }, + "required": [ + "VpcId" ], "createOnlyProperties": [ "/properties/Ipv6Pool", @@ -60,54 +69,55 @@ "/properties/Ipv6IpamPoolId", "/properties/Ipv6NetmaskLength" ], - "additionalProperties": false, "primaryIdentifier": [ "/properties/Id", "/properties/VpcId" ], - "properties": { - "Ipv6NetmaskLength": { - "description": "The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", - "type": "integer" - }, - "Ipv6IpamPoolId": { - "description": "The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC.", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - }, - "Ipv4NetmaskLength": { - "description": "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", - "type": "integer" - }, - "CidrBlock": { - "description": "An IPv4 CIDR block to associate with the VPC.", - "type": "string" - }, - "Ipv6Pool": { - "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.", - "type": "string" - }, - "Ipv4IpamPoolId": { - "description": "The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC.", - "type": "string" + "readOnlyProperties": [ + "/properties/Id", + "/properties/Ipv6AddressAttribute", + "/properties/IpSource" + ], + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateVpcCidrBlock", + "ec2:DescribeVpcs", + "ec2:AllocateIpamPoolCidr" + ] }, - "Id": { - "description": "The Id of the VPC associated CIDR Block.", - "type": "string" + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] }, - "Ipv6CidrBlock": { - "description": "An IPv6 CIDR block from the IPv6 address pool.", - "type": "string" + "delete": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DisassociateVpcCidrBlock" + ] }, - "AmazonProvidedIpv6CidrBlock": { - "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block.", - "type": "boolean" + "list": { + "handlerSchema": { + "properties": { + "VpcId": { + "type": "string", + "description": "The ID of the VPC." + } + }, + "required": [ + "VpcId" + ] + }, + "permissions": [ + "ec2:DescribeVpcs" + ] } - }, - "required": [ - "VpcId" - ] + } } diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPNGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_VPNGateway.json index 566d8f2d1..05b2ee59b 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_VPNGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPNGateway.json @@ -20,7 +20,7 @@ "Value", "Key" ], - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications)." + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)." } }, "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_Glue_Database.json b/internal/service/cloudformation/schemas/AWS_Glue_Database.json new file mode 100644 index 000000000..259720816 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Glue_Database.json @@ -0,0 +1,194 @@ +{ + "typeName": "AWS::Glue::Database", + "description": "Resource Type definition for AWS::Glue::Database", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string", + "description": "The AWS account ID for the account in which to create the catalog object." + }, + "DatabaseInput": { + "$ref": "#/definitions/DatabaseInput", + "description": "The metadata for the database." + }, + "DatabaseName": { + "type": "string", + "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is store." + } + }, + "definitions": { + "DatabaseIdentifier": { + "type": "object", + "description": "A structure that describes a target database for resource linking.", + "additionalProperties": false, + "properties": { + "DatabaseName": { + "type": "string", + "description": "The name of the catalog database." + }, + "Region": { + "type": "string", + "description": "Region of the target database." + }, + "CatalogId": { + "type": "string", + "description": "The ID of the Data Catalog in which the database resides." + } + } + }, + "PrincipalPrivileges": { + "type": "object", + "description": "The permissions granted to a principal.", + "additionalProperties": false, + "properties": { + "Permissions": { + "type": "array", + "description": "The permissions that are granted to the principal.", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "type": "string" + } + }, + "Principal": { + "$ref": "#/definitions/DataLakePrincipal", + "description": "The principal who is granted permissions." + } + } + }, + "DataLakePrincipal": { + "type": "object", + "description": "The AWS Lake Formation principal.", + "additionalProperties": false, + "properties": { + "DataLakePrincipalIdentifier": { + "type": "string", + "description": "An identifier for the AWS Lake Formation principal." + } + } + }, + "FederatedDatabase": { + "type": "object", + "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + "additionalProperties": false, + "properties": { + "ConnectionName": { + "type": "string", + "description": "The name of the connection to the external metastore." + }, + "Identifier": { + "type": "string", + "description": "A unique identifier for the federated database." + } + } + }, + "DatabaseInput": { + "type": "object", + "description": "The structure used to create or update a database.", + "additionalProperties": false, + "properties": { + "LocationUri": { + "type": "string", + "description": "The location of the database (for example, an HDFS path)." + }, + "CreateTableDefaultPermissions": { + "type": "array", + "description": "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrincipalPrivileges", + "description": "The permissions granted to a principal." + } + }, + "Description": { + "type": "string", + "description": "A description of the database." + }, + "Parameters": { + "type": "object", + "description": "These key-value pairs define parameters and properties of the database." + }, + "TargetDatabase": { + "$ref": "#/definitions/DatabaseIdentifier", + "description": "A DatabaseIdentifier structure that describes a target database for resource linking." + }, + "FederatedDatabase": { + "$ref": "#/definitions/FederatedDatabase", + "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog." + }, + "Name": { + "type": "string", + "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is stored." + } + } + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "required": [ + "DatabaseInput", + "CatalogId" + ], + "createOnlyProperties": [ + "/properties/DatabaseName" + ], + "primaryIdentifier": [ + "/properties/DatabaseName" + ], + "handlers": { + "create": { + "permissions": [ + "glue:CreateDatabase", + "glue:GetDatabase", + "glue:PassConnection", + "glue:CreateConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "read": { + "permissions": [ + "glue:GetDatabase", + "glue:GetConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "update": { + "permissions": [ + "glue:UpdateDatabase", + "glue:UpdateConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteDatabase", + "glue:GetDatabase", + "glue:DeleteConnection", + "glue:GetConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "list": { + "permissions": [ + "glue:GetDatabases", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json b/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json index c03f9f625..95e19c698 100644 --- a/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json @@ -3,6 +3,7 @@ "description": "Creates a new managed policy for your AWS-account.\n This operation creates a policy version with a version identifier of ``v1`` and sets v1 as the policy's default version. For more information about policy versions, see [Versioning for managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) in the *IAM User Guide*.\n As a best practice, you can validate your IAM policies. To learn more, see [Validating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) in the *IAM User Guide*.\n For more information about managed policies in general, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam", "additionalProperties": false, + "replacementStrategy": "delete_then_create", "properties": { "Description": { "type": "string", diff --git a/internal/service/cloudformation/schemas/AWS_IVS_Channel.json b/internal/service/cloudformation/schemas/AWS_IVS_Channel.json index 57fd7b52c..e39f481e8 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_Channel.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_Channel.json @@ -100,6 +100,7 @@ "description": "Optional transcode preset for the channel. This is selectable only for ADVANCED_HD and ADVANCED_SD channel types. For those channel types, the default preset is HIGHER_BANDWIDTH_DELIVERY. For other channel types (BASIC and STANDARD), preset is the empty string (\"\").", "type": "string", "enum": [ + "", "HIGHER_BANDWIDTH_DELIVERY", "CONSTRAINED_BANDWIDTH_DELIVERY" ] @@ -112,7 +113,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "readOnlyProperties": [ "/properties/Arn", @@ -140,14 +146,14 @@ "ivs:GetChannel", "ivs:UpdateChannel", "ivs:TagResource", - "ivs:UnTagResource", + "ivs:UntagResource", "ivs:ListTagsForResource" ] }, "delete": { "permissions": [ "ivs:DeleteChannel", - "ivs:UnTagResource" + "ivs:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json b/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json index bd9158e8b..f247e15fa 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json @@ -95,7 +95,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "readOnlyProperties": [ "/properties/Arn" diff --git a/internal/service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json b/internal/service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json index 7845d9aa4..2706ecd9d 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json @@ -64,7 +64,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "readOnlyProperties": [ "/properties/Arn", diff --git a/internal/service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json b/internal/service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json index ab558ffa6..352b3137f 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_PlaybackRestrictionPolicy.json @@ -87,7 +87,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "readOnlyProperties": [ "/properties/Arn" diff --git a/internal/service/cloudformation/schemas/AWS_IVS_PublicKey.json b/internal/service/cloudformation/schemas/AWS_IVS_PublicKey.json new file mode 100644 index 000000000..1257e9c2f --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IVS_PublicKey.json @@ -0,0 +1,120 @@ +{ + "typeName": "AWS::IVS::PublicKey", + "description": "Resource Type definition for AWS::IVS::PublicKey", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "minLength": 1, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Name": { + "description": "Name of the public key to be imported. The value does not need to be unique.", + "type": "string", + "pattern": "^[a-zA-Z0-9-_]*$", + "minLength": 0, + "maxLength": 128 + }, + "PublicKeyMaterial": { + "description": "The public portion of a customer-generated key pair.", + "type": "string", + "pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?" + }, + "Fingerprint": { + "description": "Key-pair identifier.", + "type": "string" + }, + "Arn": { + "description": "Key-pair identifier.", + "type": "string", + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$", + "minLength": 1, + "maxLength": 128 + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "maxItems": 50, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Fingerprint" + ], + "createOnlyProperties": [ + "/properties/PublicKeyMaterial", + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "ivs:ImportPublicKey", + "ivs:TagResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetPublicKey" + ] + }, + "update": { + "permissions": [ + "ivs:GetPublicKey", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeletePublicKey", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListPublicKeys", + "ivs:ListTagsForResource" + ] + } + } +} + diff --git a/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json b/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json index f76573aef..43697e197 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json @@ -192,7 +192,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "required": [ "DestinationConfiguration" diff --git a/internal/service/cloudformation/schemas/AWS_IVS_Stage.json b/internal/service/cloudformation/schemas/AWS_IVS_Stage.json index ecadb3764..de6673b11 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_Stage.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_Stage.json @@ -22,6 +22,41 @@ "Value", "Key" ] + }, + "AutoParticipantRecordingConfiguration": { + "description": "Configuration object for individual participant recording, to attach to the new stage.", + "type": "object", + "additionalProperties": false, + "properties": { + "StorageConfigurationArn": { + "description": "ARN of the StorageConfiguration resource to use for individual participant recording.", + "type": "string", + "pattern": "^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + "minLength": 0, + "maxLength": 128 + }, + "MediaTypes": { + "description": "Types of media to be recorded. Default: AUDIO_VIDEO.", + "type": "array", + "minItems": 0, + "maxItems": 1, + "uniqueItems": true, + "insertionOrder": false, + "items": { + "type": "string", + "enum": [ + "AUDIO_VIDEO", + "AUDIO_ONLY" + ] + }, + "default": [ + "AUDIO_VIDEO" + ] + } + }, + "required": [ + "StorageConfigurationArn" + ] } }, "properties": { @@ -39,6 +74,9 @@ "maxLength": 128, "pattern": "^[a-zA-Z0-9-_]*$" }, + "AutoParticipantRecordingConfiguration": { + "$ref": "#/definitions/AutoParticipantRecordingConfiguration" + }, "Tags": { "description": "An array of key-value pairs to apply to this resource.", "type": "array", @@ -62,7 +100,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "readOnlyProperties": [ "/properties/Arn", @@ -91,14 +134,14 @@ "ivs:GetStage", "ivs:UpdateStage", "ivs:TagResource", - "ivs:UnTagResource", + "ivs:UntagResource", "ivs:ListTagsForResource" ] }, "delete": { "permissions": [ "ivs:DeleteStage", - "ivs:UnTagResource" + "ivs:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json b/internal/service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json index d4eafdafd..a706d0e4a 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_StorageConfiguration.json @@ -76,7 +76,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "required": [ "S3" diff --git a/internal/service/cloudformation/schemas/AWS_IVS_StreamKey.json b/internal/service/cloudformation/schemas/AWS_IVS_StreamKey.json index 7bb60fda2..41a3efd5c 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_StreamKey.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_StreamKey.json @@ -62,7 +62,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] }, "createOnlyProperties": [ "/properties/ChannelArn" diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json index eb25500ad..068bc43a2 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json @@ -10,7 +10,8 @@ "read": { "permissions": [ "lambda:GetFunction", - "lambda:GetFunctionCodeSigningConfig" + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetFunctionRecursionConfig" ] }, "create": { @@ -34,7 +35,9 @@ "lambda:GetLayerVersion", "lambda:GetRuntimeManagementConfig", "lambda:PutRuntimeManagementConfig", - "lambda:TagResource" + "lambda:TagResource", + "lambda:PutFunctionRecursionConfig", + "lambda:GetFunctionRecursionConfig" ] }, "update": { @@ -62,7 +65,9 @@ "lambda:PutFunctionCodeSigningConfig", "lambda:DeleteFunctionCodeSigningConfig", "lambda:GetCodeSigningConfig", - "lambda:GetFunctionCodeSigningConfig" + "lambda:GetFunctionCodeSigningConfig", + "lambda:PutFunctionRecursionConfig", + "lambda:GetFunctionRecursionConfig" ] }, "list": { @@ -335,6 +340,14 @@ } } }, + "RecursiveLoop": { + "description": "The function recursion configuration.", + "type": "string", + "enum": [ + "Allow", + "Terminate" + ] + }, "Environment": { "description": "A function's environment variable settings. You can use environment variables to adjust your function's behavior without updating code. An environment variable is a pair of strings that are stored in a function's version-specific configuration.", "additionalProperties": false, @@ -537,6 +550,10 @@ "description": "The function's Amazon CloudWatch Logs configuration settings.", "$ref": "#/definitions/LoggingConfig" }, + "RecursiveLoop": { + "description": "", + "$ref": "#/definitions/RecursiveLoop" + }, "Environment": { "description": "Environment variables that are accessible from function code during execution.", "$ref": "#/definitions/Environment" diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json b/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json index 779ba4071..ddad238fe 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json @@ -1,36 +1,91 @@ { + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "propertyTransform": { + "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal" + }, + "handlers": { + "read": { + "permissions": [ + "lambda:GetPolicy" + ] + }, + "create": { + "permissions": [ + "lambda:AddPermission" + ] + }, + "list": { + "permissions": [ + "lambda:GetPolicy" + ], + "handlerSchema": { + "properties": { + "FunctionName": { + "minLength": 1, + "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-_]+))?$", + "description": "The name of the Lambda function, version, or alias.", + "type": "string", + "maxLength": 140 + } + }, + "required": [ + "FunctionName" + ] + } + }, + "delete": { + "permissions": [ + "lambda:RemovePermission" + ] + } + }, "typeName": "AWS::Lambda::Permission", + "readOnlyProperties": [ + "/properties/Id" + ], "description": "The ``AWS::Lambda::Permission`` resource grants an AWS service or another account permission to use a function. You can apply the policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.\n To grant permission to another account, specify the account ID as the ``Principal``. To grant permission to an organization defined in AOlong, specify the organization ID as the ``PrincipalOrgID``. For AWS services, the principal is a domain-style identifier defined by the service, like ``s3.amazonaws.com`` or ``sns.amazonaws.com``. For AWS services, you can also specify the ARN of the associated resource as the ``SourceArn``. If you grant permission to a service principal without specifying the source, other accounts could potentially configure resources in their account to invoke your Lambda function.\n If your function has a function URL, you can specify the ``FunctionUrlAuthType`` parameter. This adds a condition to your permission that only applies when your function URL's ``AuthType`` matches the specified ``FunctionUrlAuthType``. For more information about the ``AuthType`` parameter, see [Security and auth model for function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).\n This resource adds a statement to a resource-based permission policy for the function. For more information about function policies, see [Lambda Function Policies](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).", + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/FunctionUrlAuthType", + "/properties/SourceAccount", + "/properties/SourceArn", + "/properties/Principal", + "/properties/PrincipalOrgID", + "/properties/Action", + "/properties/EventSourceToken" + ], "additionalProperties": false, + "primaryIdentifier": [ + "/properties/FunctionName", + "/properties/Id" + ], "properties": { - "Id": { - "description": "", - "type": "string", - "pattern": "^.*$", + "FunctionName": { "minLength": 1, - "maxLength": 256 + "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-_]+))?$", + "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* \u2013 ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* \u2013 ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + "type": "string", + "maxLength": 140 }, "Action": { + "minLength": 1, + "pattern": "^(lambda:[*]|lambda:[a-zA-Z]+|[*])$", "description": "The action that the principal can use on the function. For example, ``lambda:InvokeFunction`` or ``lambda:GetFunction``.", "type": "string", - "pattern": "^(lambda:[*]|lambda:[a-zA-Z]+|[*])$", - "minLength": 1, "maxLength": 256 }, "EventSourceToken": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9._\\-]+$", "description": "For Alexa Smart Home functions, a token that the invoker must supply.", "type": "string", - "pattern": "^[a-zA-Z0-9._\\-]+$", - "minLength": 1, "maxLength": 256 }, - "FunctionName": { - "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* ? ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* ? ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* ? ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", - "type": "string", - "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-_]+))?$", - "minLength": 1, - "maxLength": 140 - }, "FunctionUrlAuthType": { "description": "The type of authentication that your function URL uses. Set to ``AWS_IAM`` if you want to restrict access to authenticated users only. Set to ``NONE`` if you want to bypass IAM authentication to create a public endpoint. For more information, see [Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).", "type": "string", @@ -39,100 +94,45 @@ "NONE" ] }, - "Principal": { - "description": "The AWS-service or AWS-account that invokes the function. If you specify a service, use ``SourceArn`` or ``SourceAccount`` to limit who can invoke the function through that service.", + "SourceArn": { + "minLength": 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})?:(.*)$", + "description": "For AWS-services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.\n Note that Lambda configures the comparison using the ``StringLike`` operator.", "type": "string", - "pattern": "^.*$", - "minLength": 1, - "maxLength": 256 + "maxLength": 1024 + }, + "SourceAccount": { + "minLength": 12, + "pattern": "^\\d{12}$", + "description": "For AWS-service, the ID of the AWS-account that owns the resource. Use this together with ``SourceArn`` to ensure that the specified account owns the resource. It is possible for an Amazon S3 bucket to be deleted by its owner and recreated by another account.", + "type": "string", + "maxLength": 12 }, "PrincipalOrgID": { + "minLength": 12, + "pattern": "^o-[a-z0-9]{10,32}$", "description": "The identifier for your organization in AOlong. Use this to grant permissions to all the AWS-accounts under this organization.", "type": "string", - "pattern": "^o-[a-z0-9]{10,32}$", - "minLength": 12, "maxLength": 34 }, - "SourceAccount": { - "description": "For AWS-service, the ID of the AWS-account that owns the resource. Use this together with ``SourceArn`` to ensure that the specified account owns the resource. It is possible for an Amazon S3 bucket to be deleted by its owner and recreated by another account.", + "Id": { + "minLength": 1, + "pattern": "^.*$", + "description": "", "type": "string", - "pattern": "^\\d{12}$", - "minLength": 12, - "maxLength": 12 + "maxLength": 256 }, - "SourceArn": { - "description": "For AWS-services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.\n Note that Lambda configures the comparison using the ``StringLike`` operator.", + "Principal": { + "minLength": 1, + "pattern": "^.*$", + "description": "The AWS-service or AWS-account that invokes the function. If you specify a service, use ``SourceArn`` or ``SourceAccount`` to limit who can invoke the function through that service.", "type": "string", - "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": 12, - "maxLength": 1024 + "maxLength": 256 } }, "required": [ "FunctionName", "Action", "Principal" - ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, - "createOnlyProperties": [ - "/properties/FunctionName", - "/properties/FunctionUrlAuthType", - "/properties/SourceAccount", - "/properties/SourceArn", - "/properties/Principal", - "/properties/PrincipalOrgID", - "/properties/Action", - "/properties/EventSourceToken" - ], - "primaryIdentifier": [ - "/properties/FunctionName", - "/properties/Id" - ], - "propertyTransform": { - "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal" - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "handlers": { - "create": { - "permissions": [ - "lambda:AddPermission" - ] - }, - "read": { - "permissions": [ - "lambda:GetPolicy" - ] - }, - "delete": { - "permissions": [ - "lambda:RemovePermission" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "description": "The name of the Lambda function, version, or alias.", - "type": "string", - "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-_]+))?$", - "minLength": 1, - "maxLength": 140 - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:GetPolicy" - ] - } - } + ] } diff --git a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json index e3e8aa2cf..7da6c5342 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json +++ b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json @@ -13,7 +13,7 @@ "minLength": 5, "pattern": "^geo:\\w*\\*?$" }, - "maxItems": 7, + "maxItems": 24, "minItems": 1, "insertionOrder": false }, @@ -24,7 +24,7 @@ "maxLength": 1600, "pattern": "(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)" }, - "maxItems": 5, + "maxItems": 8, "minItems": 1, "insertionOrder": false }, diff --git a/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json b/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json index 96aa3a389..3d7847710 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json +++ b/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json @@ -16,7 +16,7 @@ "type": "string", "maxLength": 256, "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$" + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$" } }, "additionalProperties": false diff --git a/internal/service/cloudformation/schemas/AWS_MSK_Replicator.json b/internal/service/cloudformation/schemas/AWS_MSK_Replicator.json index e64557522..32c9c4db6 100644 --- a/internal/service/cloudformation/schemas/AWS_MSK_Replicator.json +++ b/internal/service/cloudformation/schemas/AWS_MSK_Replicator.json @@ -7,7 +7,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "kafka:UntagResource", + "kafka:ListTagsForResource", + "kafka:TagResource" + ] }, "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk-replicator.git", "properties": { @@ -132,6 +137,10 @@ "StartingPosition": { "description": "Configuration for specifying the position in the topics to start replicating from.", "$ref": "#/definitions/ReplicationStartingPosition" + }, + "TopicNameConfiguration": { + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + "$ref": "#/definitions/ReplicationTopicNameConfiguration" } }, "required": [ @@ -157,6 +166,25 @@ "EARLIEST" ] }, + "ReplicationTopicNameConfiguration": { + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + "type": "object", + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/ReplicationTopicNameConfigurationType" + } + }, + "required": [] + }, + "ReplicationTopicNameConfigurationType": { + "description": "The type of replicated topic name.", + "type": "string", + "enum": [ + "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + "IDENTICAL" + ] + }, "ConsumerGroupReplication": { "description": "Configuration relating to consumer group replication.", "type": "object", @@ -330,8 +358,7 @@ "/properties/ReplicatorName", "/properties/Description", "/properties/KafkaClusters", - "/properties/ServiceExecutionRoleArn", - "/properties/ReplicationInfoList/-/TopicReplication/StartingPosition/Type" + "/properties/ServiceExecutionRoleArn" ], "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json b/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json index 6d7b27c8d..fad8b1a2c 100644 --- a/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json +++ b/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json @@ -88,7 +88,7 @@ "type": "boolean" }, "KmsKeyId": { - "description": "If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.", + "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", "type": "string" }, "Port": { @@ -125,7 +125,7 @@ "type": "string" }, "StorageEncrypted": { - "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.\n\nIf you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.", + "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", "type": "boolean" }, "Tags": { diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json index a55dd97dd..c9b3ba96e 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json @@ -405,7 +405,7 @@ "type": "string" }, "RestoreTime": { - "description": "The date and time to restore from.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + "description": "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", "type": "string", "format": "date-time" }, @@ -468,7 +468,7 @@ }, "UseLatestRestorableTime": { "type": "boolean", - "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided." + "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided." }, "VPCSecurityGroups": { "type": "array", diff --git a/internal/service/cloudformation/schemas/AWS_RDS_GlobalCluster.json b/internal/service/cloudformation/schemas/AWS_RDS_GlobalCluster.json index 5629c187e..82bfaeabb 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_GlobalCluster.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_GlobalCluster.json @@ -27,7 +27,9 @@ "GlobalClusterIdentifier": { "description": "The cluster identifier of the new global database cluster. This parameter is stored as a lowercase string.", "type": "string", - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$" + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "minLength": 1, + "maxLength": 63 }, "SourceDBClusterIdentifier": { "description": "The Amazon Resource Name (ARN) to use as the primary cluster of the global database. This parameter is optional. This parameter is stored as a lowercase string.",