diff --git a/CHANGELOG.md b/CHANGELOG.md index e478dd56c..7b34964de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,21 @@ ## 1.26.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_notifications_channel_association` +* **New Data Source:** `awscc_notifications_event_rule` +* **New Data Source:** `awscc_notifications_notification_configuration` +* **New Data Source:** `awscc_notifications_notification_configurations` +* **New Data Source:** `awscc_notifications_notification_hub` +* **New Data Source:** `awscc_notifications_notification_hubs` +* **New Data Source:** `awscc_notificationscontacts_email_contact` +* **New Data Source:** `awscc_notificationscontacts_email_contacts` +* **New Resource:** `awscc_notifications_channel_association` +* **New Resource:** `awscc_notifications_event_rule` +* **New Resource:** `awscc_notifications_notification_configuration` +* **New Resource:** `awscc_notifications_notification_hub` +* **New Resource:** `awscc_notificationscontacts_email_contact` + ## 1.25.0 (January 9, 2025) FEATURES: diff --git a/docs/data-sources/bedrock_knowledge_base.md b/docs/data-sources/bedrock_knowledge_base.md index 07fcc7db7..40539c8a9 100644 --- a/docs/data-sources/bedrock_knowledge_base.md +++ b/docs/data-sources/bedrock_knowledge_base.md @@ -40,6 +40,7 @@ Data Source schema for AWS::Bedrock::KnowledgeBase Read-Only: - `kendra_knowledge_base_configuration` (Attributes) Configurations for a Kendra knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--kendra_knowledge_base_configuration)) +- `sql_knowledge_base_configuration` (Attributes) Configurations for a SQL knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration)) - `type` (String) The type of a knowledge base. - `vector_knowledge_base_configuration` (Attributes) Contains details about the model used to create vector embeddings for the knowledge base. (see [below for nested schema](#nestedatt--knowledge_base_configuration--vector_knowledge_base_configuration)) @@ -51,6 +52,146 @@ Read-Only: - `kendra_index_arn` (String) Arn of a Kendra index + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration` + +Read-Only: + +- `redshift_configuration` (Attributes) Configurations for a Redshift knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration)) +- `type` (String) SQL query engine type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration` + +Read-Only: + +- `query_engine_configuration` (Attributes) Configurations for Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration)) +- `query_generation_configuration` (Attributes) Configurations for generating Redshift engine queries (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration)) +- `storage_configurations` (Attributes List) List of configurations for available Redshift query engine storage types (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration` + +Read-Only: + +- `provisioned_configuration` (Attributes) Configurations for provisioned Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--provisioned_configuration)) +- `serverless_configuration` (Attributes) Configurations for serverless Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--serverless_configuration)) +- `type` (String) Redshift query engine type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.provisioned_configuration` + +Read-Only: + +- `auth_configuration` (Attributes) Configurations for Redshift query engine provisioned auth setup (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--provisioned_configuration--auth_configuration)) +- `cluster_identifier` (String) Redshift cluster identifier + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.provisioned_configuration.auth_configuration` + +Read-Only: + +- `database_user` (String) Redshift database user +- `type` (String) Provisioned Redshift auth type +- `username_password_secret_arn` (String) Arn of a SecretsManager Secret + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.serverless_configuration` + +Read-Only: + +- `auth_configuration` (Attributes) Configurations for Redshift query engine serverless auth setup (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--serverless_configuration--auth_configuration)) +- `workgroup_arn` (String) Workgroup arn + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.serverless_configuration.auth_configuration` + +Read-Only: + +- `type` (String) Serverless Redshift auth type +- `username_password_secret_arn` (String) Arn of a SecretsManager Secret + + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration` + +Read-Only: + +- `execution_timeout_seconds` (Number) Max query execution timeout +- `generation_context` (Attributes) Context used to improve query generation (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context` + +Read-Only: + +- `curated_queries` (Attributes List) List of example queries and results (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--curated_queries)) +- `tables` (Attributes List) List of tables used for Redshift query generation context (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--tables)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.curated_queries` + +Read-Only: + +- `natural_language` (String) Question for the curated query +- `sql` (String) Answer for the curated query + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.tables` + +Read-Only: + +- `columns` (Attributes List) List of Redshift query generation columns (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--tables--columns)) +- `description` (String) Description for the attached entity +- `inclusion` (String) Include or Exclude status for an entity +- `name` (String) Query generation table name. Must follow three-part notation + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.tables.columns` + +Read-Only: + +- `description` (String) Description for the attached entity +- `inclusion` (String) Include or Exclude status for an entity +- `name` (String) Query generation column name + + + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations` + +Read-Only: + +- `aws_data_catalog_configuration` (Attributes) Configurations for Redshift query engine AWS Data Catalog backed storage (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations--aws_data_catalog_configuration)) +- `redshift_configuration` (Attributes) Configurations for Redshift query engine Redshift backed storage (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations--redshift_configuration)) +- `type` (String) Redshift query engine storage type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations.aws_data_catalog_configuration` + +Read-Only: + +- `table_names` (List of String) List of table names in AWS Data Catalog. Must follow two part notation + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations.redshift_configuration` + +Read-Only: + +- `database_name` (String) Redshift database name + + + + + ### Nested Schema for `knowledge_base_configuration.vector_knowledge_base_configuration` diff --git a/docs/data-sources/codepipeline_pipeline.md b/docs/data-sources/codepipeline_pipeline.md index 29caedfff..e02d0ae41 100644 --- a/docs/data-sources/codepipeline_pipeline.md +++ b/docs/data-sources/codepipeline_pipeline.md @@ -170,6 +170,7 @@ Read-Only: Read-Only: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--before_entry--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. @@ -230,6 +231,7 @@ Read-Only: Read-Only: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_failure--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. @@ -287,6 +289,7 @@ Read-Only: Read-Only: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_success--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. diff --git a/docs/data-sources/ecs_service.md b/docs/data-sources/ecs_service.md index 2bdf9ed5b..02057f4b3 100644 --- a/docs/data-sources/ecs_service.md +++ b/docs/data-sources/ecs_service.md @@ -378,6 +378,7 @@ Read-Only: - `tag_specifications` (Attributes List) The tags to apply to the volume. Amazon ECS applies service-managed tags by default. This parameter maps 1:1 with the ``TagSpecifications.N`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. (see [below for nested schema](#nestedatt--volume_configurations--managed_ebs_volume--tag_specifications)) - `throughput` (Number) The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. This parameter is only supported for the ``gp3`` volume type. +- `volume_initialization_rate` (Number) - `volume_type` (String) The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*. The following are the supported volume types. + General Purpose SSD: ``gp2``|``gp3`` diff --git a/docs/data-sources/elasticache_user_group.md b/docs/data-sources/elasticache_user_group.md index bc3aedb0b..7e1ed79d6 100644 --- a/docs/data-sources/elasticache_user_group.md +++ b/docs/data-sources/elasticache_user_group.md @@ -22,7 +22,7 @@ Data Source schema for AWS::ElastiCache::UserGroup ### Read-Only - `arn` (String) The Amazon Resource Name (ARN) of the user account. -- `engine` (String) Must be redis. +- `engine` (String) The target cache engine for the user group. - `status` (String) Indicates user group status. Can be "creating", "active", "modifying", "deleting". - `tags` (Attributes Set) An array of key-value pairs to apply to this user. (see [below for nested schema](#nestedatt--tags)) - `user_group_id` (String) The ID of the user group. diff --git a/docs/data-sources/iot_thing_type.md b/docs/data-sources/iot_thing_type.md index 87366f49a..2510740a1 100644 --- a/docs/data-sources/iot_thing_type.md +++ b/docs/data-sources/iot_thing_type.md @@ -33,8 +33,8 @@ Data Source schema for AWS::IoT::ThingType Read-Only: -- `key` (String) 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 -. -- `value` (String) The value for the tag. You can specify a value that is 1 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 -. +- `key` (String) Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-] +- `value` (String) Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-] diff --git a/docs/data-sources/notifications_channel_association.md b/docs/data-sources/notifications_channel_association.md new file mode 100644 index 000000000..c2197836b --- /dev/null +++ b/docs/data-sources/notifications_channel_association.md @@ -0,0 +1,27 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_channel_association Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Notifications::ChannelAssociation +--- + +# awscc_notifications_channel_association (Data Source) + +Data Source schema for AWS::Notifications::ChannelAssociation + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) ARN identifier of the channel. +Example: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops +- `notification_configuration_arn` (String) ARN identifier of the NotificationConfiguration. +Example: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1 diff --git a/docs/data-sources/notifications_event_rule.md b/docs/data-sources/notifications_event_rule.md new file mode 100644 index 000000000..bc2cb415b --- /dev/null +++ b/docs/data-sources/notifications_event_rule.md @@ -0,0 +1,40 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_event_rule Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Notifications::EventRule +--- + +# awscc_notifications_event_rule (Data Source) + +Data Source schema for AWS::Notifications::EventRule + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `event_pattern` (String) +- `event_type` (String) +- `managed_rules` (List of String) +- `notification_configuration_arn` (String) +- `regions` (List of String) +- `source` (String) +- `status_summary_by_region` (Attributes Map) (see [below for nested schema](#nestedatt--status_summary_by_region)) + + +### Nested Schema for `status_summary_by_region` + +Read-Only: + +- `reason` (String) +- `status` (String) diff --git a/docs/data-sources/notifications_notification_configuration.md b/docs/data-sources/notifications_notification_configuration.md new file mode 100644 index 000000000..3cbb66e8d --- /dev/null +++ b/docs/data-sources/notifications_notification_configuration.md @@ -0,0 +1,38 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_configuration Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Notifications::NotificationConfiguration +--- + +# awscc_notifications_notification_configuration (Data Source) + +Data Source schema for AWS::Notifications::NotificationConfiguration + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `aggregation_duration` (String) +- `arn` (String) +- `creation_time` (String) +- `description` (String) +- `name` (String) +- `status` (String) +- `tags` (Attributes List) A list of tags that are attached to the role. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/notifications_notification_configurations.md b/docs/data-sources/notifications_notification_configurations.md new file mode 100644 index 000000000..26a959e79 --- /dev/null +++ b/docs/data-sources/notifications_notification_configurations.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_configurations Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Notifications::NotificationConfiguration +--- + +# awscc_notifications_notification_configurations (Data Source) + +Plural Data Source schema for AWS::Notifications::NotificationConfiguration + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/notifications_notification_hub.md b/docs/data-sources/notifications_notification_hub.md new file mode 100644 index 000000000..9d8d5d6bb --- /dev/null +++ b/docs/data-sources/notifications_notification_hub.md @@ -0,0 +1,34 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_hub Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Notifications::NotificationHub +--- + +# awscc_notifications_notification_hub (Data Source) + +Data Source schema for AWS::Notifications::NotificationHub + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `creation_time` (String) +- `notification_hub_status_summary` (Attributes) (see [below for nested schema](#nestedatt--notification_hub_status_summary)) +- `region` (String) Region that NotificationHub is present in. + + +### Nested Schema for `notification_hub_status_summary` + +Read-Only: + +- `notification_hub_status` (String) +- `notification_hub_status_reason` (String) diff --git a/docs/data-sources/notifications_notification_hubs.md b/docs/data-sources/notifications_notification_hubs.md new file mode 100644 index 000000000..ba9c96b1a --- /dev/null +++ b/docs/data-sources/notifications_notification_hubs.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_hubs Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Notifications::NotificationHub +--- + +# awscc_notifications_notification_hubs (Data Source) + +Plural Data Source schema for AWS::Notifications::NotificationHub + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/notificationscontacts_email_contact.md b/docs/data-sources/notificationscontacts_email_contact.md new file mode 100644 index 000000000..da5b6c86d --- /dev/null +++ b/docs/data-sources/notificationscontacts_email_contact.md @@ -0,0 +1,49 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notificationscontacts_email_contact Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::NotificationsContacts::EmailContact +--- + +# awscc_notificationscontacts_email_contact (Data Source) + +Data Source schema for AWS::NotificationsContacts::EmailContact + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `email_address` (String) +- `email_contact` (Attributes) (see [below for nested schema](#nestedatt--email_contact)) +- `name` (String) +- `tags` (Attributes List) A list of tags that are attached to the role. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `email_contact` + +Read-Only: + +- `address` (String) +- `arn` (String) +- `creation_time` (String) +- `name` (String) +- `status` (String) +- `update_time` (String) + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/notificationscontacts_email_contacts.md b/docs/data-sources/notificationscontacts_email_contacts.md new file mode 100644 index 000000000..4a557fbbe --- /dev/null +++ b/docs/data-sources/notificationscontacts_email_contacts.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notificationscontacts_email_contacts Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::NotificationsContacts::EmailContact +--- + +# awscc_notificationscontacts_email_contacts (Data Source) + +Plural Data Source schema for AWS::NotificationsContacts::EmailContact + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/rds_db_shard_group.md b/docs/data-sources/rds_db_shard_group.md index 2a500f0fc..ae72bf00d 100644 --- a/docs/data-sources/rds_db_shard_group.md +++ b/docs/data-sources/rds_db_shard_group.md @@ -21,20 +21,33 @@ Data Source schema for AWS::RDS::DBShardGroup ### Read-Only -- `compute_redundancy` (Number) Specifies whether to create standby instances for the DB shard group. +- `compute_redundancy` (Number) Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following: + + 0 - Creates a DB shard group without a standby DB shard group. This is the default value. + + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ). + + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs. - `db_cluster_identifier` (String) The name of the primary DB cluster for the DB shard group. - `db_shard_group_identifier` (String) The name of the DB shard group. -- `db_shard_group_resource_id` (String) The Amazon Web Services Region-unique, immutable identifier for the DB shard group. -- `endpoint` (String) The connection endpoint for the DB shard group. +- `db_shard_group_resource_id` (String) +- `endpoint` (String) - `max_acu` (Number) The maximum capacity of the DB shard group in Aurora capacity units (ACUs). - `min_acu` (Number) The minimum capacity of the DB shard group in Aurora capacity units (ACUs). -- `publicly_accessible` (Boolean) Indicates whether the DB shard group is publicly accessible. -- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `publicly_accessible` (Boolean) Specifies whether the DB shard group is publicly accessible. + When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it. + When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address. + Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified. + If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies: + + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private. + + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public. + + If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies: + + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private. + + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public. +- `tags` (Attributes Set) An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group. (see [below for nested schema](#nestedatt--tags)) ### Nested Schema for `tags` Read-Only: -- `key` (String) 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 -. -- `value` (String) 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 -. +- `key` (String) A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"). +- `value` (String) A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"). diff --git a/docs/data-sources/securityhub_finding_aggregator.md b/docs/data-sources/securityhub_finding_aggregator.md index 20aa6b440..d708f7bf6 100644 --- a/docs/data-sources/securityhub_finding_aggregator.md +++ b/docs/data-sources/securityhub_finding_aggregator.md @@ -25,11 +25,9 @@ Data Source schema for AWS::SecurityHub::FindingAggregator - `finding_aggregator_arn` (String) - `region_linking_mode` (String) Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them. The selected option also determines how to use the Regions provided in the Regions list. - The options are as follows: - + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. - + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. - + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. - + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions. -- `regions` (Set of String) If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region. - If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. - An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``. + In CFN, the options for this property are as follows: + + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. + + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. + + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. +- `regions` (Set of String) If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region. + If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region. diff --git a/docs/data-sources/sns_topic.md b/docs/data-sources/sns_topic.md index bd9bdb23e..ee16ef180 100644 --- a/docs/data-sources/sns_topic.md +++ b/docs/data-sources/sns_topic.md @@ -39,6 +39,7 @@ Data Source schema for AWS::SNS::Topic Once configured, log entries are sent to Amazon CloudWatch Logs. (see [below for nested schema](#nestedatt--delivery_status_logging)) - `display_name` (String) The display name to use for an SNS topic with SMS subscriptions. The display name must be maximum 100 characters long, including hyphens (-), underscores (_), spaces, and tabs. +- `fifo_throughput_scope` (String) - `fifo_topic` (Boolean) Set to true to create a FIFO topic. - `kms_master_key_id` (String) The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*. This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html). diff --git a/docs/resources/bedrock_knowledge_base.md b/docs/resources/bedrock_knowledge_base.md index 226964176..8206c9df3 100644 --- a/docs/resources/bedrock_knowledge_base.md +++ b/docs/resources/bedrock_knowledge_base.md @@ -99,6 +99,7 @@ Required: Optional: - `kendra_knowledge_base_configuration` (Attributes) Configurations for a Kendra knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--kendra_knowledge_base_configuration)) +- `sql_knowledge_base_configuration` (Attributes) Configurations for a SQL knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration)) - `vector_knowledge_base_configuration` (Attributes) Contains details about the model used to create vector embeddings for the knowledge base. (see [below for nested schema](#nestedatt--knowledge_base_configuration--vector_knowledge_base_configuration)) @@ -109,6 +110,146 @@ Optional: - `kendra_index_arn` (String) Arn of a Kendra index + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration` + +Optional: + +- `redshift_configuration` (Attributes) Configurations for a Redshift knowledge base (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration)) +- `type` (String) SQL query engine type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration` + +Optional: + +- `query_engine_configuration` (Attributes) Configurations for Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration)) +- `query_generation_configuration` (Attributes) Configurations for generating Redshift engine queries (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration)) +- `storage_configurations` (Attributes List) List of configurations for available Redshift query engine storage types (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration` + +Optional: + +- `provisioned_configuration` (Attributes) Configurations for provisioned Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--provisioned_configuration)) +- `serverless_configuration` (Attributes) Configurations for serverless Redshift query engine (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--serverless_configuration)) +- `type` (String) Redshift query engine type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.provisioned_configuration` + +Optional: + +- `auth_configuration` (Attributes) Configurations for Redshift query engine provisioned auth setup (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--provisioned_configuration--auth_configuration)) +- `cluster_identifier` (String) Redshift cluster identifier + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.provisioned_configuration.auth_configuration` + +Optional: + +- `database_user` (String) Redshift database user +- `type` (String) Provisioned Redshift auth type +- `username_password_secret_arn` (String) Arn of a SecretsManager Secret + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.serverless_configuration` + +Optional: + +- `auth_configuration` (Attributes) Configurations for Redshift query engine serverless auth setup (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_engine_configuration--serverless_configuration--auth_configuration)) +- `workgroup_arn` (String) Workgroup arn + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_engine_configuration.serverless_configuration.auth_configuration` + +Optional: + +- `type` (String) Serverless Redshift auth type +- `username_password_secret_arn` (String) Arn of a SecretsManager Secret + + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration` + +Optional: + +- `execution_timeout_seconds` (Number) Max query execution timeout +- `generation_context` (Attributes) Context used to improve query generation (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context` + +Optional: + +- `curated_queries` (Attributes List) List of example queries and results (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--curated_queries)) +- `tables` (Attributes List) List of tables used for Redshift query generation context (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--tables)) + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.curated_queries` + +Optional: + +- `natural_language` (String) Question for the curated query +- `sql` (String) Answer for the curated query + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.tables` + +Optional: + +- `columns` (Attributes List) List of Redshift query generation columns (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--query_generation_configuration--generation_context--tables--columns)) +- `description` (String) Description for the attached entity +- `inclusion` (String) Include or Exclude status for an entity +- `name` (String) Query generation table name. Must follow three-part notation + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.query_generation_configuration.generation_context.tables.columns` + +Optional: + +- `description` (String) Description for the attached entity +- `inclusion` (String) Include or Exclude status for an entity +- `name` (String) Query generation column name + + + + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations` + +Optional: + +- `aws_data_catalog_configuration` (Attributes) Configurations for Redshift query engine AWS Data Catalog backed storage (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations--aws_data_catalog_configuration)) +- `redshift_configuration` (Attributes) Configurations for Redshift query engine Redshift backed storage (see [below for nested schema](#nestedatt--knowledge_base_configuration--sql_knowledge_base_configuration--redshift_configuration--storage_configurations--redshift_configuration)) +- `type` (String) Redshift query engine storage type + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations.aws_data_catalog_configuration` + +Optional: + +- `table_names` (List of String) List of table names in AWS Data Catalog. Must follow two part notation + + + +### Nested Schema for `knowledge_base_configuration.sql_knowledge_base_configuration.redshift_configuration.storage_configurations.redshift_configuration` + +Optional: + +- `database_name` (String) Redshift database name + + + + + ### Nested Schema for `knowledge_base_configuration.vector_knowledge_base_configuration` diff --git a/docs/resources/codepipeline_pipeline.md b/docs/resources/codepipeline_pipeline.md index ecc3837c9..40bf85acd 100644 --- a/docs/resources/codepipeline_pipeline.md +++ b/docs/resources/codepipeline_pipeline.md @@ -281,6 +281,7 @@ Optional: Optional: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--before_entry--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. @@ -341,6 +342,7 @@ Optional: Optional: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_failure--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. @@ -398,6 +400,7 @@ Optional: Optional: +- `commands` (List of String) The shell commands to run with your compute action in CodePipeline. - `configuration` (String) The rule's configuration. These are key-value pairs that specify input values for a rule. - `input_artifacts` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_success--conditions--rules--input_artifacts)) - `name` (String) The rule declaration's name. diff --git a/docs/resources/ecs_service.md b/docs/resources/ecs_service.md index dc3f2a3f7..e03eae335 100644 --- a/docs/resources/ecs_service.md +++ b/docs/resources/ecs_service.md @@ -430,6 +430,7 @@ Optional: - `tag_specifications` (Attributes List) The tags to apply to the volume. Amazon ECS applies service-managed tags by default. This parameter maps 1:1 with the ``TagSpecifications.N`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. (see [below for nested schema](#nestedatt--volume_configurations--managed_ebs_volume--tag_specifications)) - `throughput` (Number) The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. This parameter is only supported for the ``gp3`` volume type. +- `volume_initialization_rate` (Number) - `volume_type` (String) The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*. The following are the supported volume types. + General Purpose SSD: ``gp2``|``gp3`` diff --git a/docs/resources/elasticache_user_group.md b/docs/resources/elasticache_user_group.md index ddf6f27c8..836028b8c 100644 --- a/docs/resources/elasticache_user_group.md +++ b/docs/resources/elasticache_user_group.md @@ -66,7 +66,7 @@ resource "awscc_elasticache_user" "example2" { ### Required -- `engine` (String) Must be redis. +- `engine` (String) The target cache engine for the user group. - `user_group_id` (String) The ID of the user group. - `user_ids` (Set of String) List of users associated to this user group. diff --git a/docs/resources/iot_thing_type.md b/docs/resources/iot_thing_type.md index 4b199857b..5a86dccc7 100644 --- a/docs/resources/iot_thing_type.md +++ b/docs/resources/iot_thing_type.md @@ -63,8 +63,8 @@ resource "awscc_iot_thing_type" "example" { Optional: -- `key` (String) 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 -. -- `value` (String) The value for the tag. You can specify a value that is 1 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 -. +- `key` (String) Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-] +- `value` (String) Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-] diff --git a/docs/resources/notifications_channel_association.md b/docs/resources/notifications_channel_association.md new file mode 100644 index 000000000..99e9a92d0 --- /dev/null +++ b/docs/resources/notifications_channel_association.md @@ -0,0 +1,35 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_channel_association Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::Notifications::ChannelAssociation Resource Type +--- + +# awscc_notifications_channel_association (Resource) + +Definition of AWS::Notifications::ChannelAssociation Resource Type + + + + +## Schema + +### Required + +- `arn` (String) ARN identifier of the channel. +Example: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops +- `notification_configuration_arn` (String) ARN identifier of the NotificationConfiguration. +Example: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1 + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_notifications_channel_association.example "arn|notification_configuration_arn" +``` diff --git a/docs/resources/notifications_event_rule.md b/docs/resources/notifications_event_rule.md new file mode 100644 index 000000000..5185f7eb1 --- /dev/null +++ b/docs/resources/notifications_event_rule.md @@ -0,0 +1,51 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_event_rule Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::Notifications::EventRule Resource Type +--- + +# awscc_notifications_event_rule (Resource) + +Definition of AWS::Notifications::EventRule Resource Type + + + + +## Schema + +### Required + +- `event_type` (String) +- `notification_configuration_arn` (String) +- `regions` (List of String) +- `source` (String) + +### Optional + +- `event_pattern` (String) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `managed_rules` (List of String) +- `status_summary_by_region` (Attributes Map) (see [below for nested schema](#nestedatt--status_summary_by_region)) + + +### Nested Schema for `status_summary_by_region` + +Read-Only: + +- `reason` (String) +- `status` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_notifications_event_rule.example "arn" +``` diff --git a/docs/resources/notifications_notification_configuration.md b/docs/resources/notifications_notification_configuration.md new file mode 100644 index 000000000..abc1dc86f --- /dev/null +++ b/docs/resources/notifications_notification_configuration.md @@ -0,0 +1,49 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_configuration Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::Notifications::NotificationConfiguration Resource Type +--- + +# awscc_notifications_notification_configuration (Resource) + +Definition of AWS::Notifications::NotificationConfiguration Resource Type + + + + +## Schema + +### Required + +- `description` (String) +- `name` (String) + +### Optional + +- `aggregation_duration` (String) +- `tags` (Attributes List) A list of tags that are attached to the role. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `status` (String) + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_notifications_notification_configuration.example "arn" +``` diff --git a/docs/resources/notifications_notification_hub.md b/docs/resources/notifications_notification_hub.md new file mode 100644 index 000000000..85f5a41ed --- /dev/null +++ b/docs/resources/notifications_notification_hub.md @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notifications_notification_hub Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::Notifications::NotificationHub Resource Type +--- + +# awscc_notifications_notification_hub (Resource) + +Definition of AWS::Notifications::NotificationHub Resource Type + + + + +## Schema + +### Required + +- `region` (String) Region that NotificationHub is present in. + +### Read-Only + +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `notification_hub_status_summary` (Attributes) (see [below for nested schema](#nestedatt--notification_hub_status_summary)) + + +### Nested Schema for `notification_hub_status_summary` + +Read-Only: + +- `notification_hub_status` (String) +- `notification_hub_status_reason` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_notifications_notification_hub.example "region" +``` diff --git a/docs/resources/notificationscontacts_email_contact.md b/docs/resources/notificationscontacts_email_contact.md new file mode 100644 index 000000000..c42b609b1 --- /dev/null +++ b/docs/resources/notificationscontacts_email_contact.md @@ -0,0 +1,60 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_notificationscontacts_email_contact Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::NotificationsContacts::EmailContact Resource Type +--- + +# awscc_notificationscontacts_email_contact (Resource) + +Definition of AWS::NotificationsContacts::EmailContact Resource Type + + + + +## Schema + +### Required + +- `email_address` (String) +- `name` (String) + +### Optional + +- `tags` (Attributes List) A list of tags that are attached to the role. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `email_contact` (Attributes) (see [below for nested schema](#nestedatt--email_contact)) +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) +- `value` (String) + + + +### Nested Schema for `email_contact` + +Read-Only: + +- `address` (String) +- `arn` (String) +- `creation_time` (String) +- `name` (String) +- `status` (String) +- `update_time` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_notificationscontacts_email_contact.example "arn" +``` diff --git a/docs/resources/rds_db_shard_group.md b/docs/resources/rds_db_shard_group.md index 5c04fd732..e83a4eac8 100644 --- a/docs/resources/rds_db_shard_group.md +++ b/docs/resources/rds_db_shard_group.md @@ -3,12 +3,14 @@ page_title: "awscc_rds_db_shard_group Resource - terraform-provider-awscc" subcategory: "" description: |- - The AWS::RDS::DBShardGroup resource creates an Amazon Aurora Limitless DB Shard Group. + Creates a new DB shard group for Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. + Valid for: Aurora DB clusters only --- # awscc_rds_db_shard_group (Resource) -The AWS::RDS::DBShardGroup resource creates an Amazon Aurora Limitless DB Shard Group. +Creates a new DB shard group for Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. + Valid for: Aurora DB clusters only ## Example Usage @@ -123,16 +125,29 @@ resource "awscc_rds_db_shard_group" "example" { ### Optional -- `compute_redundancy` (Number) Specifies whether to create standby instances for the DB shard group. +- `compute_redundancy` (Number) Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following: + + 0 - Creates a DB shard group without a standby DB shard group. This is the default value. + + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ). + + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs. - `db_shard_group_identifier` (String) The name of the DB shard group. - `min_acu` (Number) The minimum capacity of the DB shard group in Aurora capacity units (ACUs). -- `publicly_accessible` (Boolean) Indicates whether the DB shard group is publicly accessible. -- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `publicly_accessible` (Boolean) Specifies whether the DB shard group is publicly accessible. + When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it. + When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address. + Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified. + If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies: + + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private. + + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public. + + If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies: + + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private. + + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public. +- `tags` (Attributes Set) An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group. (see [below for nested schema](#nestedatt--tags)) ### Read-Only -- `db_shard_group_resource_id` (String) The Amazon Web Services Region-unique, immutable identifier for the DB shard group. -- `endpoint` (String) The connection endpoint for the DB shard group. +- `db_shard_group_resource_id` (String) +- `endpoint` (String) - `id` (String) Uniquely identifies the resource. @@ -140,8 +155,8 @@ resource "awscc_rds_db_shard_group" "example" { Optional: -- `key` (String) 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 -. -- `value` (String) 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 -. +- `key` (String) A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"). +- `value` (String) A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"). ## Import diff --git a/docs/resources/securityhub_finding_aggregator.md b/docs/resources/securityhub_finding_aggregator.md index e782ce22f..2bc5969ab 100644 --- a/docs/resources/securityhub_finding_aggregator.md +++ b/docs/resources/securityhub_finding_aggregator.md @@ -58,17 +58,15 @@ resource "awscc_securityhub_finding_aggregator" "example" { - `region_linking_mode` (String) Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them. The selected option also determines how to use the Regions provided in the Regions list. - The options are as follows: - + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. - + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. - + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. - + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions. + In CFN, the options for this property are as follows: + + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. + + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. + + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. ### Optional -- `regions` (Set of String) If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region. - If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. - An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``. +- `regions` (Set of String) If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region. + If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region. ### Read-Only diff --git a/docs/resources/sns_topic.md b/docs/resources/sns_topic.md index 066f64a55..b8e9e82dd 100644 --- a/docs/resources/sns_topic.md +++ b/docs/resources/sns_topic.md @@ -69,6 +69,7 @@ resource "awscc_sns_topic" "sns_fifo_example" { Once configured, log entries are sent to Amazon CloudWatch Logs. (see [below for nested schema](#nestedatt--delivery_status_logging)) - `display_name` (String) The display name to use for an SNS topic with SMS subscriptions. The display name must be maximum 100 characters long, including hyphens (-), underscores (_), spaces, and tabs. +- `fifo_throughput_scope` (String) - `fifo_topic` (Boolean) Set to true to create a FIFO topic. - `kms_master_key_id` (String) The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*. This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html). diff --git a/examples/resources/awscc_notifications_channel_association/import.sh b/examples/resources/awscc_notifications_channel_association/import.sh new file mode 100644 index 000000000..f0c79cf0e --- /dev/null +++ b/examples/resources/awscc_notifications_channel_association/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_notifications_channel_association.example "arn|notification_configuration_arn" \ No newline at end of file diff --git a/examples/resources/awscc_notifications_event_rule/import.sh b/examples/resources/awscc_notifications_event_rule/import.sh new file mode 100644 index 000000000..4c1be8b47 --- /dev/null +++ b/examples/resources/awscc_notifications_event_rule/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_notifications_event_rule.example "arn" \ No newline at end of file diff --git a/examples/resources/awscc_notifications_notification_configuration/import.sh b/examples/resources/awscc_notifications_notification_configuration/import.sh new file mode 100644 index 000000000..93af458ec --- /dev/null +++ b/examples/resources/awscc_notifications_notification_configuration/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_notifications_notification_configuration.example "arn" \ No newline at end of file diff --git a/examples/resources/awscc_notifications_notification_hub/import.sh b/examples/resources/awscc_notifications_notification_hub/import.sh new file mode 100644 index 000000000..8dda1ad56 --- /dev/null +++ b/examples/resources/awscc_notifications_notification_hub/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_notifications_notification_hub.example "region" \ No newline at end of file diff --git a/examples/resources/awscc_notificationscontacts_email_contact/import.sh b/examples/resources/awscc_notificationscontacts_email_contact/import.sh new file mode 100644 index 000000000..499e14edc --- /dev/null +++ b/examples/resources/awscc_notificationscontacts_email_contact/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_notificationscontacts_email_contact.example "arn" \ No newline at end of file diff --git a/internal/aws/bedrock/data_source_resource_gen.go b/internal/aws/bedrock/data_source_resource_gen.go index c52fef1ff..d9cbc6ae8 100644 --- a/internal/aws/bedrock/data_source_resource_gen.go +++ b/internal/aws/bedrock/data_source_resource_gen.go @@ -522,7 +522,8 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { // "SALESFORCE", // "SHAREPOINT", // "WEB", - // "CUSTOM" + // "CUSTOM", + // "REDSHIFT_METADATA" // ], // "type": "string" // }, @@ -1302,6 +1303,7 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { "SHAREPOINT", "WEB", "CUSTOM", + "REDSHIFT_METADATA", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/bedrock/data_source_singular_data_source_gen.go b/internal/aws/bedrock/data_source_singular_data_source_gen.go index 12670acb3..a9cb58836 100644 --- a/internal/aws/bedrock/data_source_singular_data_source_gen.go +++ b/internal/aws/bedrock/data_source_singular_data_source_gen.go @@ -498,7 +498,8 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { // "SALESFORCE", // "SHAREPOINT", // "WEB", - // "CUSTOM" + // "CUSTOM", + // "REDSHIFT_METADATA" // ], // "type": "string" // }, diff --git a/internal/aws/bedrock/knowledge_base_resource_gen.go b/internal/aws/bedrock/knowledge_base_resource_gen.go index 27e2f597f..00171060f 100644 --- a/internal/aws/bedrock/knowledge_base_resource_gen.go +++ b/internal/aws/bedrock/knowledge_base_resource_gen.go @@ -131,11 +131,323 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "SqlKnowledgeBaseConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for a SQL knowledge base", + // "properties": { + // "RedshiftConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for a Redshift knowledge base", + // "properties": { + // "QueryEngineConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine", + // "properties": { + // "ProvisionedConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for provisioned Redshift query engine", + // "properties": { + // "AuthConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine provisioned auth setup", + // "properties": { + // "DatabaseUser": { + // "description": "Redshift database user", + // "type": "string" + // }, + // "Type": { + // "description": "Provisioned Redshift auth type", + // "enum": [ + // "IAM", + // "USERNAME_PASSWORD", + // "USERNAME" + // ], + // "type": "string" + // }, + // "UsernamePasswordSecretArn": { + // "description": "Arn of a SecretsManager Secret", + // "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "ClusterIdentifier": { + // "description": "Redshift cluster identifier", + // "maxLength": 63, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ClusterIdentifier", + // "AuthConfiguration" + // ], + // "type": "object" + // }, + // "ServerlessConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for serverless Redshift query engine", + // "properties": { + // "AuthConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine serverless auth setup", + // "properties": { + // "Type": { + // "description": "Serverless Redshift auth type", + // "enum": [ + // "IAM", + // "USERNAME_PASSWORD" + // ], + // "type": "string" + // }, + // "UsernamePasswordSecretArn": { + // "description": "Arn of a SecretsManager Secret", + // "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "WorkgroupArn": { + // "description": "Workgroup arn", + // "pattern": "^(arn:(aws(-[a-z]+)*):redshift-serverless:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:workgroup/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$", + // "type": "string" + // } + // }, + // "required": [ + // "WorkgroupArn", + // "AuthConfiguration" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Redshift query engine type", + // "enum": [ + // "SERVERLESS", + // "PROVISIONED" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "QueryGenerationConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for generating Redshift engine queries", + // "properties": { + // "ExecutionTimeoutSeconds": { + // "description": "Max query execution timeout", + // "maximum": 200, + // "minimum": 1, + // "type": "integer" + // }, + // "GenerationContext": { + // "additionalProperties": false, + // "description": "Context used to improve query generation", + // "properties": { + // "CuratedQueries": { + // "description": "List of example queries and results", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Curated query or question and answer pair", + // "properties": { + // "NaturalLanguage": { + // "description": "Question for the curated query", + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "Sql": { + // "description": "Answer for the curated query", + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "NaturalLanguage", + // "Sql" + // ], + // "type": "object" + // }, + // "maxItems": 10, + // "type": "array" + // }, + // "Tables": { + // "description": "List of tables used for Redshift query generation context", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Tables used for Redshift query generation context", + // "properties": { + // "Columns": { + // "description": "List of Redshift query generation columns", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Redshift query generation column", + // "properties": { + // "Description": { + // "description": "Description for the attached entity", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // }, + // "Inclusion": { + // "description": "Include or Exclude status for an entity", + // "enum": [ + // "INCLUDE", + // "EXCLUDE" + // ], + // "type": "string" + // }, + // "Name": { + // "description": "Query generation column name", + // "maxLength": 127, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "Description": { + // "description": "Description for the attached entity", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // }, + // "Inclusion": { + // "description": "Include or Exclude status for an entity", + // "enum": [ + // "INCLUDE", + // "EXCLUDE" + // ], + // "type": "string" + // }, + // "Name": { + // "description": "Query generation table name. Must follow three-part notation", + // "pattern": "^.*\\..*\\..*$", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "StorageConfigurations": { + // "description": "List of configurations for available Redshift query engine storage types", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Configurations for available Redshift query engine storage types", + // "properties": { + // "AwsDataCatalogConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine AWS Data Catalog backed storage", + // "properties": { + // "TableNames": { + // "description": "List of table names in AWS Data Catalog. Must follow two part notation", + // "insertionOrder": false, + // "items": { + // "description": "AWS Data Catalog table name", + // "maxLength": 200, + // "minLength": 1, + // "pattern": "^.*\\.*$", + // "type": "string" + // }, + // "maxItems": 1000, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "TableNames" + // ], + // "type": "object" + // }, + // "RedshiftConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine Redshift backed storage", + // "properties": { + // "DatabaseName": { + // "description": "Redshift database name", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "DatabaseName" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Redshift query engine storage type", + // "enum": [ + // "REDSHIFT", + // "AWS_DATA_CATALOG" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "maxItems": 1, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "StorageConfigurations", + // "QueryEngineConfiguration" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "SQL query engine type", + // "enum": [ + // "REDSHIFT" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, // "Type": { // "description": "The type of a knowledge base.", // "enum": [ // "VECTOR", - // "KENDRA" + // "KENDRA", + // "SQL" // ], // "type": "string" // }, @@ -255,6 +567,494 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { Description: "Configurations for a Kendra knowledge base", Optional: true, Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SqlKnowledgeBaseConfiguration + "sql_knowledge_base_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RedshiftConfiguration + "redshift_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: QueryEngineConfiguration + "query_engine_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ProvisionedConfiguration + "provisioned_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthConfiguration + "auth_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DatabaseUser + "database_user": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift database user", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Provisioned Redshift auth type", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "IAM", + "USERNAME_PASSWORD", + "USERNAME", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UsernamePasswordSecretArn + "username_password_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Arn of a SecretsManager Secret", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine provisioned auth setup", + Optional: true, + Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClusterIdentifier + "cluster_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift cluster identifier", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 63), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for provisioned Redshift query engine", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ServerlessConfiguration + "serverless_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthConfiguration + "auth_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Serverless Redshift auth type", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "IAM", + "USERNAME_PASSWORD", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UsernamePasswordSecretArn + "username_password_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Arn of a SecretsManager Secret", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine serverless auth setup", + Optional: true, + Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: WorkgroupArn + "workgroup_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Workgroup arn", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^(arn:(aws(-[a-z]+)*):redshift-serverless:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:workgroup/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for serverless Redshift query engine", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift query engine type", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "SERVERLESS", + "PROVISIONED", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine", + Optional: true, + Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: QueryGenerationConfiguration + "query_generation_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExecutionTimeoutSeconds + "execution_timeout_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Max query execution timeout", + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.Between(1, 200), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GenerationContext + "generation_context": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CuratedQueries + "curated_queries": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NaturalLanguage + "natural_language": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Question for the curated query", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 1000), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Sql + "sql": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Answer for the curated query", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 1000), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of example queries and results", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeAtMost(10), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tables + "tables": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Columns + "columns": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description for the attached entity", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 200), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Inclusion + "inclusion": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Include or Exclude status for an entity", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "INCLUDE", + "EXCLUDE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Query generation column name", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 127), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of Redshift query generation columns", + 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: "Description for the attached entity", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 200), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Inclusion + "inclusion": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Include or Exclude status for an entity", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "INCLUDE", + "EXCLUDE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Query generation table name. Must follow three-part notation", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^.*\\..*\\..*$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of tables used for Redshift query generation context", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeAtMost(50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Context used to improve query generation", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for generating Redshift engine queries", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: StorageConfigurations + "storage_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AwsDataCatalogConfiguration + "aws_data_catalog_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: TableNames + "table_names": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of table names in AWS Data Catalog. Must follow two part notation", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 1000), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 200), + stringvalidator.RegexMatches(regexp.MustCompile("^.*\\.*$"), ""), + ), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine AWS Data Catalog backed storage", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RedshiftConfiguration + "redshift_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DatabaseName + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift database name", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 200), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine Redshift backed storage", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift query engine storage type", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "REDSHIFT", + "AWS_DATA_CATALOG", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of configurations for available Redshift query engine storage types", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 1), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + listplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for a Redshift knowledge base", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "SQL query engine type", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "REDSHIFT", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for a SQL knowledge base", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -267,8 +1067,12 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { stringvalidator.OneOf( "VECTOR", "KENDRA", + "SQL", ), }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: VectorKnowledgeBaseConfiguration "vector_knowledge_base_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -396,14 +1200,12 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "Contains details about the embeddings model used for the knowledge base.", Required: true, - PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ - objectplanmodifier.RequiresReplace(), - }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: KnowledgeBaseId // CloudFormation resource type schema: @@ -1342,21 +2144,30 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::Bedrock::KnowledgeBase").WithTerraformTypeName("awscc_bedrock_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ + "auth_configuration": "AuthConfiguration", + "aws_data_catalog_configuration": "AwsDataCatalogConfiguration", "bedrock_embedding_model_configuration": "BedrockEmbeddingModelConfiguration", + "cluster_identifier": "ClusterIdentifier", "collection_arn": "CollectionArn", "collection_name": "CollectionName", + "columns": "Columns", "connection_string": "ConnectionString", "created_at": "CreatedAt", "credentials_secret_arn": "CredentialsSecretArn", + "curated_queries": "CuratedQueries", "database_name": "DatabaseName", + "database_user": "DatabaseUser", "description": "Description", "dimensions": "Dimensions", "embedding_model_arn": "EmbeddingModelArn", "embedding_model_configuration": "EmbeddingModelConfiguration", "endpoint": "Endpoint", "endpoint_service_name": "EndpointServiceName", + "execution_timeout_seconds": "ExecutionTimeoutSeconds", "failure_reasons": "FailureReasons", "field_mapping": "FieldMapping", + "generation_context": "GenerationContext", + "inclusion": "Inclusion", "kendra_index_arn": "KendraIndexArn", "kendra_knowledge_base_configuration": "KendraKnowledgeBaseConfiguration", "knowledge_base_arn": "KnowledgeBaseArn", @@ -1366,27 +2177,40 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { "mongo_db_atlas_configuration": "MongoDbAtlasConfiguration", "name": "Name", "namespace": "Namespace", + "natural_language": "NaturalLanguage", "opensearch_serverless_configuration": "OpensearchServerlessConfiguration", "pinecone_configuration": "PineconeConfiguration", "primary_key_field": "PrimaryKeyField", + "provisioned_configuration": "ProvisionedConfiguration", + "query_engine_configuration": "QueryEngineConfiguration", + "query_generation_configuration": "QueryGenerationConfiguration", "rds_configuration": "RdsConfiguration", + "redshift_configuration": "RedshiftConfiguration", "resource_arn": "ResourceArn", "role_arn": "RoleArn", "s3_location": "S3Location", + "serverless_configuration": "ServerlessConfiguration", + "sql": "Sql", + "sql_knowledge_base_configuration": "SqlKnowledgeBaseConfiguration", "status": "Status", "storage_configuration": "StorageConfiguration", + "storage_configurations": "StorageConfigurations", "supplemental_data_storage_configuration": "SupplementalDataStorageConfiguration", "supplemental_data_storage_location_type": "SupplementalDataStorageLocationType", "supplemental_data_storage_locations": "SupplementalDataStorageLocations", "table_name": "TableName", + "table_names": "TableNames", + "tables": "Tables", "tags": "Tags", "text_field": "TextField", "type": "Type", "updated_at": "UpdatedAt", "uri": "URI", + "username_password_secret_arn": "UsernamePasswordSecretArn", "vector_field": "VectorField", "vector_index_name": "VectorIndexName", "vector_knowledge_base_configuration": "VectorKnowledgeBaseConfiguration", + "workgroup_arn": "WorkgroupArn", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/bedrock/knowledge_base_singular_data_source_gen.go b/internal/aws/bedrock/knowledge_base_singular_data_source_gen.go index 31d8605a9..43ae0ac18 100644 --- a/internal/aws/bedrock/knowledge_base_singular_data_source_gen.go +++ b/internal/aws/bedrock/knowledge_base_singular_data_source_gen.go @@ -102,11 +102,323 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // ], // "type": "object" // }, + // "SqlKnowledgeBaseConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for a SQL knowledge base", + // "properties": { + // "RedshiftConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for a Redshift knowledge base", + // "properties": { + // "QueryEngineConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine", + // "properties": { + // "ProvisionedConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for provisioned Redshift query engine", + // "properties": { + // "AuthConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine provisioned auth setup", + // "properties": { + // "DatabaseUser": { + // "description": "Redshift database user", + // "type": "string" + // }, + // "Type": { + // "description": "Provisioned Redshift auth type", + // "enum": [ + // "IAM", + // "USERNAME_PASSWORD", + // "USERNAME" + // ], + // "type": "string" + // }, + // "UsernamePasswordSecretArn": { + // "description": "Arn of a SecretsManager Secret", + // "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "ClusterIdentifier": { + // "description": "Redshift cluster identifier", + // "maxLength": 63, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ClusterIdentifier", + // "AuthConfiguration" + // ], + // "type": "object" + // }, + // "ServerlessConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for serverless Redshift query engine", + // "properties": { + // "AuthConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine serverless auth setup", + // "properties": { + // "Type": { + // "description": "Serverless Redshift auth type", + // "enum": [ + // "IAM", + // "USERNAME_PASSWORD" + // ], + // "type": "string" + // }, + // "UsernamePasswordSecretArn": { + // "description": "Arn of a SecretsManager Secret", + // "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "WorkgroupArn": { + // "description": "Workgroup arn", + // "pattern": "^(arn:(aws(-[a-z]+)*):redshift-serverless:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:workgroup/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$", + // "type": "string" + // } + // }, + // "required": [ + // "WorkgroupArn", + // "AuthConfiguration" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Redshift query engine type", + // "enum": [ + // "SERVERLESS", + // "PROVISIONED" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "QueryGenerationConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for generating Redshift engine queries", + // "properties": { + // "ExecutionTimeoutSeconds": { + // "description": "Max query execution timeout", + // "maximum": 200, + // "minimum": 1, + // "type": "integer" + // }, + // "GenerationContext": { + // "additionalProperties": false, + // "description": "Context used to improve query generation", + // "properties": { + // "CuratedQueries": { + // "description": "List of example queries and results", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Curated query or question and answer pair", + // "properties": { + // "NaturalLanguage": { + // "description": "Question for the curated query", + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "Sql": { + // "description": "Answer for the curated query", + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "NaturalLanguage", + // "Sql" + // ], + // "type": "object" + // }, + // "maxItems": 10, + // "type": "array" + // }, + // "Tables": { + // "description": "List of tables used for Redshift query generation context", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Tables used for Redshift query generation context", + // "properties": { + // "Columns": { + // "description": "List of Redshift query generation columns", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Redshift query generation column", + // "properties": { + // "Description": { + // "description": "Description for the attached entity", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // }, + // "Inclusion": { + // "description": "Include or Exclude status for an entity", + // "enum": [ + // "INCLUDE", + // "EXCLUDE" + // ], + // "type": "string" + // }, + // "Name": { + // "description": "Query generation column name", + // "maxLength": 127, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "Description": { + // "description": "Description for the attached entity", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // }, + // "Inclusion": { + // "description": "Include or Exclude status for an entity", + // "enum": [ + // "INCLUDE", + // "EXCLUDE" + // ], + // "type": "string" + // }, + // "Name": { + // "description": "Query generation table name. Must follow three-part notation", + // "pattern": "^.*\\..*\\..*$", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "StorageConfigurations": { + // "description": "List of configurations for available Redshift query engine storage types", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Configurations for available Redshift query engine storage types", + // "properties": { + // "AwsDataCatalogConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine AWS Data Catalog backed storage", + // "properties": { + // "TableNames": { + // "description": "List of table names in AWS Data Catalog. Must follow two part notation", + // "insertionOrder": false, + // "items": { + // "description": "AWS Data Catalog table name", + // "maxLength": 200, + // "minLength": 1, + // "pattern": "^.*\\.*$", + // "type": "string" + // }, + // "maxItems": 1000, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "TableNames" + // ], + // "type": "object" + // }, + // "RedshiftConfiguration": { + // "additionalProperties": false, + // "description": "Configurations for Redshift query engine Redshift backed storage", + // "properties": { + // "DatabaseName": { + // "description": "Redshift database name", + // "maxLength": 200, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "DatabaseName" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Redshift query engine storage type", + // "enum": [ + // "REDSHIFT", + // "AWS_DATA_CATALOG" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, + // "maxItems": 1, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "StorageConfigurations", + // "QueryEngineConfiguration" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "SQL query engine type", + // "enum": [ + // "REDSHIFT" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // }, // "Type": { // "description": "The type of a knowledge base.", // "enum": [ // "VECTOR", - // "KENDRA" + // "KENDRA", + // "SQL" // ], // "type": "string" // }, @@ -218,6 +530,225 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) Description: "Configurations for a Kendra knowledge base", Computed: true, }, /*END ATTRIBUTE*/ + // Property: SqlKnowledgeBaseConfiguration + "sql_knowledge_base_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RedshiftConfiguration + "redshift_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: QueryEngineConfiguration + "query_engine_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ProvisionedConfiguration + "provisioned_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthConfiguration + "auth_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DatabaseUser + "database_user": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift database user", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Provisioned Redshift auth type", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UsernamePasswordSecretArn + "username_password_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Arn of a SecretsManager Secret", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine provisioned auth setup", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClusterIdentifier + "cluster_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift cluster identifier", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for provisioned Redshift query engine", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ServerlessConfiguration + "serverless_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthConfiguration + "auth_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Serverless Redshift auth type", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UsernamePasswordSecretArn + "username_password_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Arn of a SecretsManager Secret", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine serverless auth setup", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: WorkgroupArn + "workgroup_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Workgroup arn", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for serverless Redshift query engine", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift query engine type", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: QueryGenerationConfiguration + "query_generation_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExecutionTimeoutSeconds + "execution_timeout_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Max query execution timeout", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GenerationContext + "generation_context": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CuratedQueries + "curated_queries": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NaturalLanguage + "natural_language": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Question for the curated query", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Sql + "sql": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Answer for the curated query", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of example queries and results", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tables + "tables": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Columns + "columns": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description for the attached entity", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Inclusion + "inclusion": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Include or Exclude status for an entity", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Query generation column name", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of Redshift query generation columns", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description for the attached entity", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Inclusion + "inclusion": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Include or Exclude status for an entity", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Query generation table name. Must follow three-part notation", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of tables used for Redshift query generation context", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Context used to improve query generation", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for generating Redshift engine queries", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: StorageConfigurations + "storage_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AwsDataCatalogConfiguration + "aws_data_catalog_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: TableNames + "table_names": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of table names in AWS Data Catalog. Must follow two part notation", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine AWS Data Catalog backed storage", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RedshiftConfiguration + "redshift_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DatabaseName + "database_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift database name", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for Redshift query engine Redshift backed storage", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Redshift query engine storage type", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of configurations for available Redshift query engine storage types", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for a Redshift knowledge base", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "SQL query engine type", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configurations for a SQL knowledge base", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Type "type": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The type of a knowledge base.", @@ -904,21 +1435,30 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithCloudFormationTypeName("AWS::Bedrock::KnowledgeBase").WithTerraformTypeName("awscc_bedrock_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ + "auth_configuration": "AuthConfiguration", + "aws_data_catalog_configuration": "AwsDataCatalogConfiguration", "bedrock_embedding_model_configuration": "BedrockEmbeddingModelConfiguration", + "cluster_identifier": "ClusterIdentifier", "collection_arn": "CollectionArn", "collection_name": "CollectionName", + "columns": "Columns", "connection_string": "ConnectionString", "created_at": "CreatedAt", "credentials_secret_arn": "CredentialsSecretArn", + "curated_queries": "CuratedQueries", "database_name": "DatabaseName", + "database_user": "DatabaseUser", "description": "Description", "dimensions": "Dimensions", "embedding_model_arn": "EmbeddingModelArn", "embedding_model_configuration": "EmbeddingModelConfiguration", "endpoint": "Endpoint", "endpoint_service_name": "EndpointServiceName", + "execution_timeout_seconds": "ExecutionTimeoutSeconds", "failure_reasons": "FailureReasons", "field_mapping": "FieldMapping", + "generation_context": "GenerationContext", + "inclusion": "Inclusion", "kendra_index_arn": "KendraIndexArn", "kendra_knowledge_base_configuration": "KendraKnowledgeBaseConfiguration", "knowledge_base_arn": "KnowledgeBaseArn", @@ -928,27 +1468,40 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) "mongo_db_atlas_configuration": "MongoDbAtlasConfiguration", "name": "Name", "namespace": "Namespace", + "natural_language": "NaturalLanguage", "opensearch_serverless_configuration": "OpensearchServerlessConfiguration", "pinecone_configuration": "PineconeConfiguration", "primary_key_field": "PrimaryKeyField", + "provisioned_configuration": "ProvisionedConfiguration", + "query_engine_configuration": "QueryEngineConfiguration", + "query_generation_configuration": "QueryGenerationConfiguration", "rds_configuration": "RdsConfiguration", + "redshift_configuration": "RedshiftConfiguration", "resource_arn": "ResourceArn", "role_arn": "RoleArn", "s3_location": "S3Location", + "serverless_configuration": "ServerlessConfiguration", + "sql": "Sql", + "sql_knowledge_base_configuration": "SqlKnowledgeBaseConfiguration", "status": "Status", "storage_configuration": "StorageConfiguration", + "storage_configurations": "StorageConfigurations", "supplemental_data_storage_configuration": "SupplementalDataStorageConfiguration", "supplemental_data_storage_location_type": "SupplementalDataStorageLocationType", "supplemental_data_storage_locations": "SupplementalDataStorageLocations", "table_name": "TableName", + "table_names": "TableNames", + "tables": "Tables", "tags": "Tags", "text_field": "TextField", "type": "Type", "updated_at": "UpdatedAt", "uri": "URI", + "username_password_secret_arn": "UsernamePasswordSecretArn", "vector_field": "VectorField", "vector_index_name": "VectorIndexName", "vector_knowledge_base_configuration": "VectorKnowledgeBaseConfiguration", + "workgroup_arn": "WorkgroupArn", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/codepipeline/pipeline_resource_gen.go b/internal/aws/codepipeline/pipeline_resource_gen.go index 4bb3e9b8b..4e5c91421 100644 --- a/internal/aws/codepipeline/pipeline_resource_gen.go +++ b/internal/aws/codepipeline/pipeline_resource_gen.go @@ -655,6 +655,14 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -776,6 +784,14 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -890,6 +906,14 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -1198,6 +1222,16 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, @@ -1409,6 +1443,16 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, @@ -1614,6 +1658,16 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, diff --git a/internal/aws/codepipeline/pipeline_singular_data_source_gen.go b/internal/aws/codepipeline/pipeline_singular_data_source_gen.go index 2fc590593..0b925ba5c 100644 --- a/internal/aws/codepipeline/pipeline_singular_data_source_gen.go +++ b/internal/aws/codepipeline/pipeline_singular_data_source_gen.go @@ -492,6 +492,14 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -613,6 +621,14 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -727,6 +743,14 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Represents information about condition.", // "properties": { + // "Commands": { + // "description": "The shell commands to run with your compute action in CodePipeline.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, // "Configuration": { // "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", // "type": "object" @@ -944,6 +968,12 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, @@ -1056,6 +1086,12 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, @@ -1162,6 +1198,12 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { "rules": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Commands + "commands": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The shell commands to run with your compute action in CodePipeline.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Configuration "configuration": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: jsontypes.NormalizedType{}, diff --git a/internal/aws/connect/routing_profile_resource_gen.go b/internal/aws/connect/routing_profile_resource_gen.go index 4932a9eae..493deb1c0 100644 --- a/internal/aws/connect/routing_profile_resource_gen.go +++ b/internal/aws/connect/routing_profile_resource_gen.go @@ -121,7 +121,8 @@ func routingProfileResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "VOICE", // "CHAT", - // "TASK" + // "TASK", + // "EMAIL" // ], // "type": "string" // }, @@ -170,6 +171,7 @@ func routingProfileResource(ctx context.Context) (resource.Resource, error) { "VOICE", "CHAT", "TASK", + "EMAIL", ), }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ @@ -263,7 +265,8 @@ func routingProfileResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "VOICE", // "CHAT", - // "TASK" + // "TASK", + // "EMAIL" // ], // "type": "string" // }, @@ -332,6 +335,7 @@ func routingProfileResource(ctx context.Context) (resource.Resource, error) { "VOICE", "CHAT", "TASK", + "EMAIL", ), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ diff --git a/internal/aws/connect/routing_profile_singular_data_source_gen.go b/internal/aws/connect/routing_profile_singular_data_source_gen.go index e5d634b83..8d42f8f48 100644 --- a/internal/aws/connect/routing_profile_singular_data_source_gen.go +++ b/internal/aws/connect/routing_profile_singular_data_source_gen.go @@ -89,7 +89,8 @@ func routingProfileDataSource(ctx context.Context) (datasource.DataSource, error // "enum": [ // "VOICE", // "CHAT", - // "TASK" + // "TASK", + // "EMAIL" // ], // "type": "string" // }, @@ -200,7 +201,8 @@ func routingProfileDataSource(ctx context.Context) (datasource.DataSource, error // "enum": [ // "VOICE", // "CHAT", - // "TASK" + // "TASK", + // "EMAIL" // ], // "type": "string" // }, diff --git a/internal/aws/ecs/service_resource_gen.go b/internal/aws/ecs/service_resource_gen.go index 9ee16e37e..56e1d925a 100644 --- a/internal/aws/ecs/service_resource_gen.go +++ b/internal/aws/ecs/service_resource_gen.go @@ -1538,6 +1538,10 @@ func serviceResource(ctx context.Context) (resource.Resource, error) { // "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", // "type": "integer" // }, + // "VolumeInitializationRate": { + // "description": "", + // "type": "integer" + // }, // "VolumeType": { // "description": "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", // "type": "string" @@ -1712,6 +1716,15 @@ func serviceResource(ctx context.Context) (resource.Resource, error) { int64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: VolumeInitializationRate + "volume_initialization_rate": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: VolumeType "volume_type": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", @@ -1933,6 +1946,7 @@ func serviceResource(ctx context.Context) (resource.Resource, error) { "value": "Value", "value_from": "ValueFrom", "volume_configurations": "VolumeConfigurations", + "volume_initialization_rate": "VolumeInitializationRate", "volume_type": "VolumeType", "vpc_lattice_configurations": "VpcLatticeConfigurations", "weight": "Weight", diff --git a/internal/aws/ecs/service_singular_data_source_gen.go b/internal/aws/ecs/service_singular_data_source_gen.go index 12e2cc0d6..1c146fbba 100644 --- a/internal/aws/ecs/service_singular_data_source_gen.go +++ b/internal/aws/ecs/service_singular_data_source_gen.go @@ -1117,6 +1117,10 @@ func serviceDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", // "type": "integer" // }, + // "VolumeInitializationRate": { + // "description": "", + // "type": "integer" + // }, // "VolumeType": { // "description": "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", // "type": "string" @@ -1223,6 +1227,11 @@ func serviceDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: VolumeInitializationRate + "volume_initialization_rate": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: VolumeType "volume_type": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", @@ -1394,6 +1403,7 @@ func serviceDataSource(ctx context.Context) (datasource.DataSource, error) { "value": "Value", "value_from": "ValueFrom", "volume_configurations": "VolumeConfigurations", + "volume_initialization_rate": "VolumeInitializationRate", "volume_type": "VolumeType", "vpc_lattice_configurations": "VpcLatticeConfigurations", "weight": "Weight", diff --git a/internal/aws/eks/cluster_resource_gen.go b/internal/aws/eks/cluster_resource_gen.go index 11dcd973d..52efac4f8 100644 --- a/internal/aws/eks/cluster_resource_gen.go +++ b/internal/aws/eks/cluster_resource_gen.go @@ -408,6 +408,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ServiceIpv4Cidr @@ -417,6 +418,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ServiceIpv6Cidr @@ -433,7 +435,6 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), - objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Logging diff --git a/internal/aws/eks/nodegroup_resource_gen.go b/internal/aws/eks/nodegroup_resource_gen.go index 236828853..589d0a2fc 100644 --- a/internal/aws/eks/nodegroup_resource_gen.go +++ b/internal/aws/eks/nodegroup_resource_gen.go @@ -593,6 +593,10 @@ func nodegroupResource(ctx context.Context) (resource.Resource, error) { // "maximum": 100, // "minimum": 1, // "type": "number" + // }, + // "UpdateStrategy": { + // "description": "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + // "type": "string" // } // }, // "type": "object" @@ -623,6 +627,15 @@ func nodegroupResource(ctx context.Context) (resource.Resource, error) { float64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: UpdateStrategy + "update_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The node group update configuration.", Optional: true, @@ -700,6 +713,7 @@ func nodegroupResource(ctx context.Context) (resource.Resource, error) { "tags": "Tags", "taints": "Taints", "update_config": "UpdateConfig", + "update_strategy": "UpdateStrategy", "value": "Value", "version": "Version", }) diff --git a/internal/aws/eks/nodegroup_singular_data_source_gen.go b/internal/aws/eks/nodegroup_singular_data_source_gen.go index c9f4131ef..96e7ad30d 100644 --- a/internal/aws/eks/nodegroup_singular_data_source_gen.go +++ b/internal/aws/eks/nodegroup_singular_data_source_gen.go @@ -412,6 +412,10 @@ func nodegroupDataSource(ctx context.Context) (datasource.DataSource, error) { // "maximum": 100, // "minimum": 1, // "type": "number" + // }, + // "UpdateStrategy": { + // "description": "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + // "type": "string" // } // }, // "type": "object" @@ -428,6 +432,11 @@ func nodegroupDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The maximum percentage of nodes unavailable during a version update. This percentage of nodes will be updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: UpdateStrategy + "update_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The node group update configuration.", Computed: true, @@ -492,6 +501,7 @@ func nodegroupDataSource(ctx context.Context) (datasource.DataSource, error) { "tags": "Tags", "taints": "Taints", "update_config": "UpdateConfig", + "update_strategy": "UpdateStrategy", "value": "Value", "version": "Version", }) diff --git a/internal/aws/elasticache/user_group_resource_gen.go b/internal/aws/elasticache/user_group_resource_gen.go index 797be1601..50ec094c7 100644 --- a/internal/aws/elasticache/user_group_resource_gen.go +++ b/internal/aws/elasticache/user_group_resource_gen.go @@ -49,23 +49,22 @@ func userGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Must be redis.", + // "description": "The target cache engine for the user group.", // "enum": [ - // "redis" + // "redis", + // "valkey" // ], // "type": "string" // } "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Must be redis.", + Description: "The target cache engine for the user group.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "redis", + "valkey", ), }, /*END VALIDATORS*/ - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), - }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Status // CloudFormation resource type schema: diff --git a/internal/aws/elasticache/user_group_singular_data_source_gen.go b/internal/aws/elasticache/user_group_singular_data_source_gen.go index 51c2b5a3a..35220a9ec 100644 --- a/internal/aws/elasticache/user_group_singular_data_source_gen.go +++ b/internal/aws/elasticache/user_group_singular_data_source_gen.go @@ -38,14 +38,15 @@ func userGroupDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "Must be redis.", + // "description": "The target cache engine for the user group.", // "enum": [ - // "redis" + // "redis", + // "valkey" // ], // "type": "string" // } "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Must be redis.", + Description: "The target cache engine for the user group.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Status diff --git a/internal/aws/iot/thing_type_resource_gen.go b/internal/aws/iot/thing_type_resource_gen.go index 4e80a0dea..4cf001627 100644 --- a/internal/aws/iot/thing_type_resource_gen.go +++ b/internal/aws/iot/thing_type_resource_gen.go @@ -83,14 +83,14 @@ func thingTypeResource(ctx context.Context) (resource.Resource, error) { // "description": "A key-value pair to associate with a resource.", // "properties": { // "Key": { - // "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 -. ", + // "description": "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", // "maxLength": 128, // "minLength": 1, // "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", // "type": "string" // }, // "Value": { - // "description": "The value for the tag. You can specify a value that is 1 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 -. ", + // "description": "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", // "maxLength": 256, // "minLength": 1, // "type": "string" @@ -111,7 +111,7 @@ func thingTypeResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -125,7 +125,7 @@ func thingTypeResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value for the tag. You can specify a value that is 1 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 -. ", + Description: "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ diff --git a/internal/aws/iot/thing_type_singular_data_source_gen.go b/internal/aws/iot/thing_type_singular_data_source_gen.go index 559ee7611..f6ea41cc1 100644 --- a/internal/aws/iot/thing_type_singular_data_source_gen.go +++ b/internal/aws/iot/thing_type_singular_data_source_gen.go @@ -61,14 +61,14 @@ func thingTypeDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "A key-value pair to associate with a resource.", // "properties": { // "Key": { - // "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 -. ", + // "description": "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", // "maxLength": 128, // "minLength": 1, // "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", // "type": "string" // }, // "Value": { - // "description": "The value for the tag. You can specify a value that is 1 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 -. ", + // "description": "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", // "maxLength": 256, // "minLength": 1, // "type": "string" @@ -89,12 +89,12 @@ func thingTypeDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", Computed: true, }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value for the tag. You can specify a value that is 1 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 -. ", + Description: "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ diff --git a/internal/aws/kafkaconnect/connector_resource_gen.go b/internal/aws/kafkaconnect/connector_resource_gen.go index dfd4207c5..36d87fd78 100644 --- a/internal/aws/kafkaconnect/connector_resource_gen.go +++ b/internal/aws/kafkaconnect/connector_resource_gen.go @@ -16,7 +16,6 @@ import ( "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/mapplanmodifier" "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" @@ -332,9 +331,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { ElementType: types.StringType, Description: "The configuration for the connector.", Required: true, - PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ - mapplanmodifier.RequiresReplace(), - }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ConnectorDescription // CloudFormation resource type schema: diff --git a/internal/aws/notifications/channel_association_resource_gen.go b/internal/aws/notifications/channel_association_resource_gen.go new file mode 100644 index 000000000..33821dd9e --- /dev/null +++ b/internal/aws/notifications/channel_association_resource_gen.go @@ -0,0 +1,103 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + "regexp" + + "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/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_notifications_channel_association", channelAssociationResource) +} + +// channelAssociationResource returns the Terraform awscc_notifications_channel_association resource. +// This Terraform resource corresponds to the CloudFormation AWS::Notifications::ChannelAssociation resource. +func channelAssociationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + // "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NotificationConfigurationArn + // CloudFormation resource type schema: + // + // { + // "description": "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + // "type": "string" + // } + "notification_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*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: "Definition of AWS::Notifications::ChannelAssociation Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::ChannelAssociation").WithTerraformTypeName("awscc_notifications_channel_association") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "notification_configuration_arn": "NotificationConfigurationArn", + }) + + opts = opts.IsImmutableType(true) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/channel_association_resource_gen_test.go b/internal/aws/notifications/channel_association_resource_gen_test.go new file mode 100644 index 000000000..c5a96a5ae --- /dev/null +++ b/internal/aws/notifications/channel_association_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsChannelAssociation_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::ChannelAssociation", "awscc_notifications_channel_association", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/notifications/channel_association_singular_data_source_gen.go b/internal/aws/notifications/channel_association_singular_data_source_gen.go new file mode 100644 index 000000000..5272ce70c --- /dev/null +++ b/internal/aws/notifications/channel_association_singular_data_source_gen.go @@ -0,0 +1,77 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package notifications + +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_notifications_channel_association", channelAssociationDataSource) +} + +// channelAssociationDataSource returns the Terraform awscc_notifications_channel_association data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::ChannelAssociation resource. +func channelAssociationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + // "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NotificationConfigurationArn + // CloudFormation resource type schema: + // + // { + // "description": "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + // "type": "string" + // } + "notification_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + 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::Notifications::ChannelAssociation", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::ChannelAssociation").WithTerraformTypeName("awscc_notifications_channel_association") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "notification_configuration_arn": "NotificationConfigurationArn", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/channel_association_singular_data_source_gen_test.go b/internal/aws/notifications/channel_association_singular_data_source_gen_test.go new file mode 100644 index 000000000..b0ed20616 --- /dev/null +++ b/internal/aws/notifications/channel_association_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsChannelAssociationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::ChannelAssociation", "awscc_notifications_channel_association", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSNotificationsChannelAssociationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::ChannelAssociation", "awscc_notifications_channel_association", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/notifications/event_rule_resource_gen.go b/internal/aws/notifications/event_rule_resource_gen.go new file mode 100644 index 000000000..9bfdfa2f7 --- /dev/null +++ b/internal/aws/notifications/event_rule_resource_gen.go @@ -0,0 +1,272 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "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/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "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/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_notifications_event_rule", eventRuleResource) +} + +// eventRuleResource returns the Terraform awscc_notifications_event_rule resource. +// This Terraform resource corresponds to the CloudFormation AWS::Notifications::EventRule resource. +func eventRuleResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}/rule/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EventPattern + // CloudFormation resource type schema: + // + // { + // "maxLength": 4096, + // "minLength": 0, + // "type": "string" + // } + "event_pattern": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 4096), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EventType + // CloudFormation resource type schema: + // + // { + // "maxLength": 128, + // "minLength": 1, + // "pattern": "^([a-zA-Z0-9 \\-\\(\\)])+$", + // "type": "string" + // } + "event_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + stringvalidator.RegexMatches(regexp.MustCompile("^([a-zA-Z0-9 \\-\\(\\)])+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ManagedRules + // CloudFormation resource type schema: + // + // { + // "items": { + // "pattern": "", + // "type": "string" + // }, + // "type": "array" + // } + "managed_rules": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NotificationConfigurationArn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + // "type": "string" + // } + "notification_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Regions + // CloudFormation resource type schema: + // + // { + // "items": { + // "maxLength": 25, + // "minLength": 2, + // "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // } + "regions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Required: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeAtLeast(1), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(2, 25), + stringvalidator.RegexMatches(regexp.MustCompile("^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$"), ""), + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^aws.([a-z0-9\\-])+$", + // "type": "string" + // } + "source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 36), + stringvalidator.RegexMatches(regexp.MustCompile("^aws.([a-z0-9\\-])+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: StatusSummaryByRegion + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "additionalProperties": false, + // "properties": { + // "Reason": { + // "type": "string" + // }, + // "Status": { + // "enum": [ + // "ACTIVE", + // "INACTIVE", + // "CREATING", + // "UPDATING", + // "DELETING" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Reason", + // "Status" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "status_summary_by_region": // Pattern: "" + schema.MapNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Reason + "reason": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.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: "Definition of AWS::Notifications::EventRule Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::EventRule").WithTerraformTypeName("awscc_notifications_event_rule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "event_pattern": "EventPattern", + "event_type": "EventType", + "managed_rules": "ManagedRules", + "notification_configuration_arn": "NotificationConfigurationArn", + "reason": "Reason", + "regions": "Regions", + "source": "Source", + "status": "Status", + "status_summary_by_region": "StatusSummaryByRegion", + }) + + 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/notifications/event_rule_resource_gen_test.go b/internal/aws/notifications/event_rule_resource_gen_test.go new file mode 100644 index 000000000..e8df48427 --- /dev/null +++ b/internal/aws/notifications/event_rule_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsEventRule_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::EventRule", "awscc_notifications_event_rule", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/notifications/event_rule_singular_data_source_gen.go b/internal/aws/notifications/event_rule_singular_data_source_gen.go new file mode 100644 index 000000000..dd4e3fec9 --- /dev/null +++ b/internal/aws/notifications/event_rule_singular_data_source_gen.go @@ -0,0 +1,209 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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_notifications_event_rule", eventRuleDataSource) +} + +// eventRuleDataSource returns the Terraform awscc_notifications_event_rule data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::EventRule resource. +func eventRuleDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}/rule/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EventPattern + // CloudFormation resource type schema: + // + // { + // "maxLength": 4096, + // "minLength": 0, + // "type": "string" + // } + "event_pattern": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EventType + // CloudFormation resource type schema: + // + // { + // "maxLength": 128, + // "minLength": 1, + // "pattern": "^([a-zA-Z0-9 \\-\\(\\)])+$", + // "type": "string" + // } + "event_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ManagedRules + // CloudFormation resource type schema: + // + // { + // "items": { + // "pattern": "", + // "type": "string" + // }, + // "type": "array" + // } + "managed_rules": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NotificationConfigurationArn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + // "type": "string" + // } + "notification_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Regions + // CloudFormation resource type schema: + // + // { + // "items": { + // "maxLength": 25, + // "minLength": 2, + // "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // } + "regions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^aws.([a-z0-9\\-])+$", + // "type": "string" + // } + "source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: StatusSummaryByRegion + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "additionalProperties": false, + // "properties": { + // "Reason": { + // "type": "string" + // }, + // "Status": { + // "enum": [ + // "ACTIVE", + // "INACTIVE", + // "CREATING", + // "UPDATING", + // "DELETING" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Reason", + // "Status" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "status_summary_by_region": // Pattern: "" + schema.MapNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Reason + "reason": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + 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::Notifications::EventRule", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::EventRule").WithTerraformTypeName("awscc_notifications_event_rule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "event_pattern": "EventPattern", + "event_type": "EventType", + "managed_rules": "ManagedRules", + "notification_configuration_arn": "NotificationConfigurationArn", + "reason": "Reason", + "regions": "Regions", + "source": "Source", + "status": "Status", + "status_summary_by_region": "StatusSummaryByRegion", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/event_rule_singular_data_source_gen_test.go b/internal/aws/notifications/event_rule_singular_data_source_gen_test.go new file mode 100644 index 000000000..962392872 --- /dev/null +++ b/internal/aws/notifications/event_rule_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsEventRuleDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::EventRule", "awscc_notifications_event_rule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSNotificationsEventRuleDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::EventRule", "awscc_notifications_event_rule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/notifications/notification_configuration_plural_data_source_gen.go b/internal/aws/notifications/notification_configuration_plural_data_source_gen.go new file mode 100644 index 000000000..f97ca926a --- /dev/null +++ b/internal/aws/notifications/notification_configuration_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 notifications + +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_notifications_notification_configurations", notificationConfigurationsDataSource) +} + +// notificationConfigurationsDataSource returns the Terraform awscc_notifications_notification_configurations data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::NotificationConfiguration resource. +func notificationConfigurationsDataSource(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::Notifications::NotificationConfiguration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationConfiguration").WithTerraformTypeName("awscc_notifications_notification_configurations") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/notification_configuration_plural_data_source_gen_test.go b/internal/aws/notifications/notification_configuration_plural_data_source_gen_test.go new file mode 100644 index 000000000..f1f07ca6d --- /dev/null +++ b/internal/aws/notifications/notification_configuration_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 notifications_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationConfigurationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationConfiguration", "awscc_notifications_notification_configurations", "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/notifications/notification_configuration_resource_gen.go b/internal/aws/notifications/notification_configuration_resource_gen.go new file mode 100644 index 000000000..b62a5d0c7 --- /dev/null +++ b/internal/aws/notifications/notification_configuration_resource_gen.go @@ -0,0 +1,245 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "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" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_notifications_notification_configuration", notificationConfigurationResource) +} + +// notificationConfigurationResource returns the Terraform awscc_notifications_notification_configuration resource. +// This Terraform resource corresponds to the CloudFormation AWS::Notifications::NotificationConfiguration resource. +func notificationConfigurationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AggregationDuration + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "LONG", + // "SHORT", + // "NONE" + // ], + // "type": "string" + // } + "aggregation_duration": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "LONG", + "SHORT", + "NONE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "maxLength": 256, + // "minLength": 0, + // "pattern": "", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "^[A-Za-z0-9_\\-]+$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 64), + stringvalidator.RegexMatches(regexp.MustCompile("^[A-Za-z0-9_\\-]+$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "ACTIVE", + // "PARTIALLY_ACTIVE", + // "INACTIVE", + // "DELETING" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags that are attached to the role.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of tags that are attached to the role.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + listplanmodifier.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: "Definition of AWS::Notifications::NotificationConfiguration Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationConfiguration").WithTerraformTypeName("awscc_notifications_notification_configuration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "aggregation_duration": "AggregationDuration", + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "key": "Key", + "name": "Name", + "status": "Status", + "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/notifications/notification_configuration_resource_gen_test.go b/internal/aws/notifications/notification_configuration_resource_gen_test.go new file mode 100644 index 000000000..af047d29c --- /dev/null +++ b/internal/aws/notifications/notification_configuration_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationConfiguration_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationConfiguration", "awscc_notifications_notification_configuration", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/notifications/notification_configuration_singular_data_source_gen.go b/internal/aws/notifications/notification_configuration_singular_data_source_gen.go new file mode 100644 index 000000000..bed1dbcd6 --- /dev/null +++ b/internal/aws/notifications/notification_configuration_singular_data_source_gen.go @@ -0,0 +1,180 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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_notifications_notification_configuration", notificationConfigurationDataSource) +} + +// notificationConfigurationDataSource returns the Terraform awscc_notifications_notification_configuration data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::NotificationConfiguration resource. +func notificationConfigurationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AggregationDuration + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "LONG", + // "SHORT", + // "NONE" + // ], + // "type": "string" + // } + "aggregation_duration": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "maxLength": 256, + // "minLength": 0, + // "pattern": "", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "^[A-Za-z0-9_\\-]+$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "ACTIVE", + // "PARTIALLY_ACTIVE", + // "INACTIVE", + // "DELETING" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags that are attached to the role.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*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 tags that are attached to the role.", + 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::Notifications::NotificationConfiguration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationConfiguration").WithTerraformTypeName("awscc_notifications_notification_configuration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "aggregation_duration": "AggregationDuration", + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "key": "Key", + "name": "Name", + "status": "Status", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/notification_configuration_singular_data_source_gen_test.go b/internal/aws/notifications/notification_configuration_singular_data_source_gen_test.go new file mode 100644 index 000000000..374689f21 --- /dev/null +++ b/internal/aws/notifications/notification_configuration_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationConfigurationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationConfiguration", "awscc_notifications_notification_configuration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSNotificationsNotificationConfigurationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationConfiguration", "awscc_notifications_notification_configuration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/notifications/notification_hub_plural_data_source_gen.go b/internal/aws/notifications/notification_hub_plural_data_source_gen.go new file mode 100644 index 000000000..3791cd3c4 --- /dev/null +++ b/internal/aws/notifications/notification_hub_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 notifications + +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_notifications_notification_hubs", notificationHubsDataSource) +} + +// notificationHubsDataSource returns the Terraform awscc_notifications_notification_hubs data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::NotificationHub resource. +func notificationHubsDataSource(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::Notifications::NotificationHub", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationHub").WithTerraformTypeName("awscc_notifications_notification_hubs") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/notification_hub_plural_data_source_gen_test.go b/internal/aws/notifications/notification_hub_plural_data_source_gen_test.go new file mode 100644 index 000000000..09e6d3bf0 --- /dev/null +++ b/internal/aws/notifications/notification_hub_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 notifications_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationHubsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationHub", "awscc_notifications_notification_hubs", "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/notifications/notification_hub_resource_gen.go b/internal/aws/notifications/notification_hub_resource_gen.go new file mode 100644 index 000000000..ba92cdef8 --- /dev/null +++ b/internal/aws/notifications/notification_hub_resource_gen.go @@ -0,0 +1,148 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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/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_notifications_notification_hub", notificationHubResource) +} + +// notificationHubResource returns the Terraform awscc_notifications_notification_hub resource. +// This Terraform resource corresponds to the CloudFormation AWS::Notifications::NotificationHub resource. +func notificationHubResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NotificationHubStatusSummary + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "NotificationHubStatus": { + // "enum": [ + // "ACTIVE", + // "REGISTERING", + // "DEREGISTERING", + // "INACTIVE" + // ], + // "type": "string" + // }, + // "NotificationHubStatusReason": { + // "type": "string" + // } + // }, + // "required": [ + // "NotificationHubStatus", + // "NotificationHubStatusReason" + // ], + // "type": "object" + // } + "notification_hub_status_summary": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NotificationHubStatus + "notification_hub_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NotificationHubStatusReason + "notification_hub_status_reason": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Region + // CloudFormation resource type schema: + // + // { + // "description": "Region that NotificationHub is present in.", + // "maxLength": 25, + // "minLength": 2, + // "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + // "type": "string" + // } + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Region that NotificationHub is present in.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(2, 25), + stringvalidator.RegexMatches(regexp.MustCompile("^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*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: "Definition of AWS::Notifications::NotificationHub Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationHub").WithTerraformTypeName("awscc_notifications_notification_hub") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "creation_time": "CreationTime", + "notification_hub_status": "NotificationHubStatus", + "notification_hub_status_reason": "NotificationHubStatusReason", + "notification_hub_status_summary": "NotificationHubStatusSummary", + "region": "Region", + }) + + 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/notifications/notification_hub_resource_gen_test.go b/internal/aws/notifications/notification_hub_resource_gen_test.go new file mode 100644 index 000000000..0aa1966e1 --- /dev/null +++ b/internal/aws/notifications/notification_hub_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationHub_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationHub", "awscc_notifications_notification_hub", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/notifications/notification_hub_singular_data_source_gen.go b/internal/aws/notifications/notification_hub_singular_data_source_gen.go new file mode 100644 index 000000000..2dfff1f0e --- /dev/null +++ b/internal/aws/notifications/notification_hub_singular_data_source_gen.go @@ -0,0 +1,120 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package notifications + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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_notifications_notification_hub", notificationHubDataSource) +} + +// notificationHubDataSource returns the Terraform awscc_notifications_notification_hub data source. +// This Terraform data source corresponds to the CloudFormation AWS::Notifications::NotificationHub resource. +func notificationHubDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "format": "date-time", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NotificationHubStatusSummary + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "NotificationHubStatus": { + // "enum": [ + // "ACTIVE", + // "REGISTERING", + // "DEREGISTERING", + // "INACTIVE" + // ], + // "type": "string" + // }, + // "NotificationHubStatusReason": { + // "type": "string" + // } + // }, + // "required": [ + // "NotificationHubStatus", + // "NotificationHubStatusReason" + // ], + // "type": "object" + // } + "notification_hub_status_summary": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NotificationHubStatus + "notification_hub_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NotificationHubStatusReason + "notification_hub_status_reason": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Region + // CloudFormation resource type schema: + // + // { + // "description": "Region that NotificationHub is present in.", + // "maxLength": 25, + // "minLength": 2, + // "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + // "type": "string" + // } + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Region that NotificationHub is present in.", + 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::Notifications::NotificationHub", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Notifications::NotificationHub").WithTerraformTypeName("awscc_notifications_notification_hub") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "creation_time": "CreationTime", + "notification_hub_status": "NotificationHubStatus", + "notification_hub_status_reason": "NotificationHubStatusReason", + "notification_hub_status_summary": "NotificationHubStatusSummary", + "region": "Region", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notifications/notification_hub_singular_data_source_gen_test.go b/internal/aws/notifications/notification_hub_singular_data_source_gen_test.go new file mode 100644 index 000000000..8667b5e2b --- /dev/null +++ b/internal/aws/notifications/notification_hub_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 notifications_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsNotificationHubDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationHub", "awscc_notifications_notification_hub", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSNotificationsNotificationHubDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Notifications::NotificationHub", "awscc_notifications_notification_hub", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/notificationscontacts/email_contact_plural_data_source_gen.go b/internal/aws/notificationscontacts/email_contact_plural_data_source_gen.go new file mode 100644 index 000000000..557e0ccc8 --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_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 notificationscontacts + +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_notificationscontacts_email_contacts", emailContactsDataSource) +} + +// emailContactsDataSource returns the Terraform awscc_notificationscontacts_email_contacts data source. +// This Terraform data source corresponds to the CloudFormation AWS::NotificationsContacts::EmailContact resource. +func emailContactsDataSource(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::NotificationsContacts::EmailContact", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::NotificationsContacts::EmailContact").WithTerraformTypeName("awscc_notificationscontacts_email_contacts") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notificationscontacts/email_contact_plural_data_source_gen_test.go b/internal/aws/notificationscontacts/email_contact_plural_data_source_gen_test.go new file mode 100644 index 000000000..68f9b2c04 --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_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 notificationscontacts_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsContactsEmailContactsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::NotificationsContacts::EmailContact", "awscc_notificationscontacts_email_contacts", "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/notificationscontacts/email_contact_resource_gen.go b/internal/aws/notificationscontacts/email_contact_resource_gen.go new file mode 100644 index 000000000..5f29e7321 --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_resource_gen.go @@ -0,0 +1,286 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package notificationscontacts + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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/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/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_notificationscontacts_email_contact", emailContactResource) +} + +// emailContactResource returns the Terraform awscc_notificationscontacts_email_contact resource. +// This Terraform resource corresponds to the CloudFormation AWS::NotificationsContacts::EmailContact resource. +func emailContactResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EmailAddress + // CloudFormation resource type schema: + // + // { + // "maxLength": 254, + // "minLength": 6, + // "pattern": "^(.+)@(.+)$", + // "type": "string" + // } + "email_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(6, 254), + stringvalidator.RegexMatches(regexp.MustCompile("^(.+)@(.+)$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + // EmailAddress is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: EmailContact + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "Address": { + // "maxLength": 254, + // "minLength": 6, + // "pattern": "^(.+)@(.+)$", + // "type": "string" + // }, + // "Arn": { + // "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + // "type": "string" + // }, + // "CreationTime": { + // "format": "date-time", + // "type": "string" + // }, + // "Name": { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "[\\w-.~]+", + // "type": "string" + // }, + // "Status": { + // "enum": [ + // "inactive", + // "active" + // ], + // "type": "string" + // }, + // "UpdateTime": { + // "format": "date-time", + // "type": "string" + // } + // }, + // "required": [ + // "Address", + // "Arn", + // "CreationTime", + // "Name", + // "Status", + // "UpdateTime" + // ], + // "type": "object" + // } + "email_contact": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Address + "address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CreationTime + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UpdateTime + "update_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "[\\w-.~]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 64), + stringvalidator.RegexMatches(regexp.MustCompile("[\\w-.~]+"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + // Name is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags that are attached to the role.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of tags that are attached to the role.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + listplanmodifier.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: "Definition of AWS::NotificationsContacts::EmailContact Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::NotificationsContacts::EmailContact").WithTerraformTypeName("awscc_notificationscontacts_email_contact") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "address": "Address", + "arn": "Arn", + "creation_time": "CreationTime", + "email_address": "EmailAddress", + "email_contact": "EmailContact", + "key": "Key", + "name": "Name", + "status": "Status", + "tags": "Tags", + "update_time": "UpdateTime", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EmailAddress", + "/properties/Name", + }) + 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/notificationscontacts/email_contact_resource_gen_test.go b/internal/aws/notificationscontacts/email_contact_resource_gen_test.go new file mode 100644 index 000000000..89ae9c5ae --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_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 notificationscontacts_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsContactsEmailContact_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::NotificationsContacts::EmailContact", "awscc_notificationscontacts_email_contact", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/notificationscontacts/email_contact_singular_data_source_gen.go b/internal/aws/notificationscontacts/email_contact_singular_data_source_gen.go new file mode 100644 index 000000000..90e47e373 --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_singular_data_source_gen.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package notificationscontacts + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "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_notificationscontacts_email_contact", emailContactDataSource) +} + +// emailContactDataSource returns the Terraform awscc_notificationscontacts_email_contact data source. +// This Terraform data source corresponds to the CloudFormation AWS::NotificationsContacts::EmailContact resource. +func emailContactDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EmailAddress + // CloudFormation resource type schema: + // + // { + // "maxLength": 254, + // "minLength": 6, + // "pattern": "^(.+)@(.+)$", + // "type": "string" + // } + "email_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EmailContact + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "Address": { + // "maxLength": 254, + // "minLength": 6, + // "pattern": "^(.+)@(.+)$", + // "type": "string" + // }, + // "Arn": { + // "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + // "type": "string" + // }, + // "CreationTime": { + // "format": "date-time", + // "type": "string" + // }, + // "Name": { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "[\\w-.~]+", + // "type": "string" + // }, + // "Status": { + // "enum": [ + // "inactive", + // "active" + // ], + // "type": "string" + // }, + // "UpdateTime": { + // "format": "date-time", + // "type": "string" + // } + // }, + // "required": [ + // "Address", + // "Arn", + // "CreationTime", + // "Name", + // "Status", + // "UpdateTime" + // ], + // "type": "object" + // } + "email_contact": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Address + "address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CreationTime + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UpdateTime + "update_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 64, + // "minLength": 1, + // "pattern": "[\\w-.~]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags that are attached to the role.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*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 tags that are attached to the role.", + 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::NotificationsContacts::EmailContact", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::NotificationsContacts::EmailContact").WithTerraformTypeName("awscc_notificationscontacts_email_contact") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "address": "Address", + "arn": "Arn", + "creation_time": "CreationTime", + "email_address": "EmailAddress", + "email_contact": "EmailContact", + "key": "Key", + "name": "Name", + "status": "Status", + "tags": "Tags", + "update_time": "UpdateTime", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/notificationscontacts/email_contact_singular_data_source_gen_test.go b/internal/aws/notificationscontacts/email_contact_singular_data_source_gen_test.go new file mode 100644 index 000000000..8c645cbb6 --- /dev/null +++ b/internal/aws/notificationscontacts/email_contact_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 notificationscontacts_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSNotificationsContactsEmailContactDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::NotificationsContacts::EmailContact", "awscc_notificationscontacts_email_contact", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSNotificationsContactsEmailContactDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::NotificationsContacts::EmailContact", "awscc_notificationscontacts_email_contact", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/rds/db_shard_group_resource_gen.go b/internal/aws/rds/db_shard_group_resource_gen.go index 87167c0bf..9ace86690 100644 --- a/internal/aws/rds/db_shard_group_resource_gen.go +++ b/internal/aws/rds/db_shard_group_resource_gen.go @@ -37,12 +37,12 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies whether to create standby instances for the DB shard group.", + // "description": "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", // "minimum": 0, // "type": "integer" // } "compute_redundancy": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether to create standby instances for the DB shard group.", + Description: "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -96,11 +96,11 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", + // "description": "", // "type": "string" // } "db_shard_group_resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", + Description: "", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -110,11 +110,11 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The connection endpoint for the DB shard group.", + // "description": "", // "type": "string" // } "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The connection endpoint for the DB shard group.", + Description: "", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -151,11 +151,11 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Indicates whether the DB shard group is publicly accessible.", + // "description": "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", // "type": "boolean" // } "publicly_accessible": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether the DB shard group is publicly accessible.", + Description: "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ @@ -167,20 +167,20 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "An array of key-value pairs to apply to this resource.", + // "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "A key-value pair to associate with a resource.", + // "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", // "properties": { // "Key": { - // "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 -. ", + // "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", // "maxLength": 128, // "minLength": 1, // "type": "string" // }, // "Value": { - // "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 -. ", + // "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", // "maxLength": 256, // "minLength": 0, // "type": "string" @@ -200,7 +200,7 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -213,7 +213,7 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -225,7 +225,7 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "An array of key-value pairs to apply to this resource.", + Description: "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", Optional: true, Computed: true, Validators: []validator.Set{ /*START VALIDATORS*/ @@ -247,7 +247,7 @@ func dBShardGroupResource(ctx context.Context) (resource.Resource, error) { } schema := schema.Schema{ - Description: "The AWS::RDS::DBShardGroup resource creates an Amazon Aurora Limitless DB Shard Group.", + Description: "Creates a new DB shard group for Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.\n Valid for: Aurora DB clusters only", Version: 1, Attributes: attributes, } diff --git a/internal/aws/rds/db_shard_group_singular_data_source_gen.go b/internal/aws/rds/db_shard_group_singular_data_source_gen.go index f63072307..2d389b343 100644 --- a/internal/aws/rds/db_shard_group_singular_data_source_gen.go +++ b/internal/aws/rds/db_shard_group_singular_data_source_gen.go @@ -26,12 +26,12 @@ func dBShardGroupDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "Specifies whether to create standby instances for the DB shard group.", + // "description": "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", // "minimum": 0, // "type": "integer" // } "compute_redundancy": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether to create standby instances for the DB shard group.", + Description: "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", Computed: true, }, /*END ATTRIBUTE*/ // Property: DBClusterIdentifier @@ -64,22 +64,22 @@ func dBShardGroupDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", + // "description": "", // "type": "string" // } "db_shard_group_resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: Endpoint // CloudFormation resource type schema: // // { - // "description": "The connection endpoint for the DB shard group.", + // "description": "", // "type": "string" // } "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The connection endpoint for the DB shard group.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: MaxACU @@ -108,31 +108,31 @@ func dBShardGroupDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "Indicates whether the DB shard group is publicly accessible.", + // "description": "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", // "type": "boolean" // } "publicly_accessible": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether the DB shard group is publicly accessible.", + Description: "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // // { - // "description": "An array of key-value pairs to apply to this resource.", + // "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "A key-value pair to associate with a resource.", + // "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", // "properties": { // "Key": { - // "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 -. ", + // "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", // "maxLength": 128, // "minLength": 1, // "type": "string" // }, // "Value": { - // "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 -. ", + // "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", // "maxLength": 256, // "minLength": 0, // "type": "string" @@ -152,17 +152,17 @@ func dBShardGroupDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", Computed: true, }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - 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 -. ", + Description: "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "An array of key-value pairs to apply to this resource.", + Description: "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/securityhub/finding_aggregator_resource_gen.go b/internal/aws/securityhub/finding_aggregator_resource_gen.go index d7666ff70..9675b1593 100644 --- a/internal/aws/securityhub/finding_aggregator_resource_gen.go +++ b/internal/aws/securityhub/finding_aggregator_resource_gen.go @@ -62,7 +62,7 @@ func findingAggregatorResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", + // "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", // "enum": [ // "ALL_REGIONS", // "ALL_REGIONS_EXCEPT_SPECIFIED", @@ -71,7 +71,7 @@ func findingAggregatorResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // } "region_linking_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", + Description: "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( @@ -85,7 +85,7 @@ func findingAggregatorResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", + // "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", // "insertionOrder": false, // "items": { // "pattern": "^[a-zA-Z0-9-]{1,32}$", @@ -98,7 +98,7 @@ func findingAggregatorResource(ctx context.Context) (resource.Resource, error) { // } "regions": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", + Description: "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", Optional: true, Computed: true, Validators: []validator.Set{ /*START VALIDATORS*/ diff --git a/internal/aws/securityhub/finding_aggregator_singular_data_source_gen.go b/internal/aws/securityhub/finding_aggregator_singular_data_source_gen.go index 0351d06bc..f75c0b187 100644 --- a/internal/aws/securityhub/finding_aggregator_singular_data_source_gen.go +++ b/internal/aws/securityhub/finding_aggregator_singular_data_source_gen.go @@ -49,7 +49,7 @@ func findingAggregatorDataSource(ctx context.Context) (datasource.DataSource, er // CloudFormation resource type schema: // // { - // "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", + // "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", // "enum": [ // "ALL_REGIONS", // "ALL_REGIONS_EXCEPT_SPECIFIED", @@ -58,14 +58,14 @@ func findingAggregatorDataSource(ctx context.Context) (datasource.DataSource, er // "type": "string" // } "region_linking_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", + Description: "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Regions // CloudFormation resource type schema: // // { - // "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", + // "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", // "insertionOrder": false, // "items": { // "pattern": "^[a-zA-Z0-9-]{1,32}$", @@ -78,7 +78,7 @@ func findingAggregatorDataSource(ctx context.Context) (datasource.DataSource, er // } "regions": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", + Description: "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/sns/topic_resource_gen.go b/internal/aws/sns/topic_resource_gen.go index 7ed7584f1..0fd1ee4cb 100644 --- a/internal/aws/sns/topic_resource_gen.go +++ b/internal/aws/sns/topic_resource_gen.go @@ -193,6 +193,21 @@ func topicResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: FifoThroughputScope + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "fifo_throughput_scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: FifoTopic // CloudFormation resource type schema: // @@ -443,6 +458,7 @@ func topicResource(ctx context.Context) (resource.Resource, error) { "display_name": "DisplayName", "endpoint": "Endpoint", "failure_feedback_role_arn": "FailureFeedbackRoleArn", + "fifo_throughput_scope": "FifoThroughputScope", "fifo_topic": "FifoTopic", "key": "Key", "kms_master_key_id": "KmsMasterKeyId", diff --git a/internal/aws/sns/topic_singular_data_source_gen.go b/internal/aws/sns/topic_singular_data_source_gen.go index e2056b268..f14a16318 100644 --- a/internal/aws/sns/topic_singular_data_source_gen.go +++ b/internal/aws/sns/topic_singular_data_source_gen.go @@ -139,6 +139,17 @@ func topicDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The display name to use for an SNS topic with SMS subscriptions. The display name must be maximum 100 characters long, including hyphens (-), underscores (_), spaces, and tabs.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: FifoThroughputScope + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "fifo_throughput_scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: FifoTopic // CloudFormation resource type schema: // @@ -321,6 +332,7 @@ func topicDataSource(ctx context.Context) (datasource.DataSource, error) { "display_name": "DisplayName", "endpoint": "Endpoint", "failure_feedback_role_arn": "FailureFeedbackRoleArn", + "fifo_throughput_scope": "FifoThroughputScope", "fifo_topic": "FifoTopic", "key": "Key", "kms_master_key_id": "KmsMasterKeyId", diff --git a/internal/aws/workspaces/connection_alias_resource_gen.go b/internal/aws/workspaces/connection_alias_resource_gen.go index 6cb1a5f8c..2edbdfbe8 100644 --- a/internal/aws/workspaces/connection_alias_resource_gen.go +++ b/internal/aws/workspaces/connection_alias_resource_gen.go @@ -48,6 +48,7 @@ func connectionAliasResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "insertionOrder": false, // "items": { // "additionalProperties": false, // "properties": { @@ -106,6 +107,7 @@ func connectionAliasResource(ctx context.Context) (resource.Resource, error) { }, /*END NESTED OBJECT*/ Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ @@ -149,6 +151,7 @@ func connectionAliasResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "insertionOrder": false, // "items": { // "additionalProperties": false, // "properties": { @@ -198,6 +201,7 @@ func connectionAliasResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ diff --git a/internal/aws/workspaces/connection_alias_singular_data_source_gen.go b/internal/aws/workspaces/connection_alias_singular_data_source_gen.go index 0def7818d..c4ec6d698 100644 --- a/internal/aws/workspaces/connection_alias_singular_data_source_gen.go +++ b/internal/aws/workspaces/connection_alias_singular_data_source_gen.go @@ -38,6 +38,7 @@ func connectionAliasDataSource(ctx context.Context) (datasource.DataSource, erro // CloudFormation resource type schema: // // { + // "insertionOrder": false, // "items": { // "additionalProperties": false, // "properties": { @@ -126,6 +127,7 @@ func connectionAliasDataSource(ctx context.Context) (datasource.DataSource, erro // CloudFormation resource type schema: // // { + // "insertionOrder": false, // "items": { // "additionalProperties": false, // "properties": { diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index cfb0fc9a4..71cdda04e 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -3581,6 +3581,28 @@ resource_schema "aws_nimblestudio_studio_component" { suppress_plural_data_source_generation = true } +resource_schema "aws_notifications_channel_association" { + cloudformation_type_name = "AWS::Notifications::ChannelAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_notifications_event_rule" { + cloudformation_type_name = "AWS::Notifications::EventRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_notifications_notification_configuration" { + cloudformation_type_name = "AWS::Notifications::NotificationConfiguration" +} + +resource_schema "aws_notifications_notification_hub" { + cloudformation_type_name = "AWS::Notifications::NotificationHub" +} + +resource_schema "aws_notificationscontacts_email_contact" { + cloudformation_type_name = "AWS::NotificationsContacts::EmailContact" +} + resource_schema "aws_osis_pipeline" { cloudformation_type_name = "AWS::OSIS::Pipeline" } diff --git a/internal/provider/generators/allschemas/available_schemas.2025-01-16.hcl b/internal/provider/generators/allschemas/available_schemas.2025-01-16.hcl new file mode 100644 index 000000000..768c3ce04 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2025-01-16.hcl @@ -0,0 +1,4821 @@ +# 1134 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_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +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_base_path_mapping_v2" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMappingV2" + 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_domain_name_access_association" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameAccessAssociation" +} + +resource_schema "aws_apigateway_domain_name_v2" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameV2" +} + +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" + suppress_plural_data_source_generation = true +} + +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_deployment" { + cloudformation_type_name = "AWS::AppConfig::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +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_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_channel_namespace" { + cloudformation_type_name = "AWS::AppSync::ChannelNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +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_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +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_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +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_definition" { + cloudformation_type_name = "AWS::Batch::JobDefinition" +} + +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_application_inference_profile" { + cloudformation_type_name = "AWS::Bedrock::ApplicationInferenceProfile" +} + +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_cassandra_type" { + cloudformation_type_name = "AWS::Cassandra::Type" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_custom_action" { + cloudformation_type_name = "AWS::Chatbot::CustomAction" +} + +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_guard_hook" { + cloudformation_type_name = "AWS::CloudFormation::GuardHook" +} + +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_lambda_hook" { + cloudformation_type_name = "AWS::CloudFormation::LambdaHook" +} + +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_anycast_ip_list" { + cloudformation_type_name = "AWS::CloudFront::AnycastIpList" +} + +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_dashboard" { + cloudformation_type_name = "AWS::CloudTrail::Dashboard" +} + +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_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + 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_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + 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_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +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_email_address" { + cloudformation_type_name = "AWS::Connect::EmailAddress" + 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_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + 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_connectcampaignsv2_campaign" { + cloudformation_type_name = "AWS::ConnectCampaignsV2::Campaign" + suppress_plural_data_source_generation = true +} + +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_event_trigger" { + cloudformation_type_name = "AWS::CustomerProfiles::EventTrigger" + 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_customerprofiles_segment_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::SegmentDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +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_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + 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_security_group_vpc_association" { + cloudformation_type_name = "AWS::EC2::SecurityGroupVpcAssociation" +} + +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_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + +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_fleet" { + cloudformation_type_name = "AWS::GameLift::ContainerFleet" +} + +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_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +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_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +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_ingest_configuration" { + cloudformation_type_name = "AWS::IVS::IngestConfiguration" +} + +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_invoicing_invoice_unit" { + cloudformation_type_name = "AWS::Invoicing::InvoiceUnit" +} + +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_command" { + cloudformation_type_name = "AWS::IoT::Command" +} + +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" +} + +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_state_template" { + cloudformation_type_name = "AWS::IoTFleetWise::StateTemplate" +} + +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_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +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_integration" { + cloudformation_type_name = "AWS::Logs::Integration" +} + +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_logs_transformer" { + cloudformation_type_name = "AWS::Logs::Transformer" +} + +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_deployment" { + cloudformation_type_name = "AWS::M2::Deployment" + suppress_plural_data_source_generation = true +} + +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_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +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_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +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_multi_region_cluster" { + cloudformation_type_name = "AWS::MemoryDB::MultiRegionCluster" +} + +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_direct_connect_gateway_attachment" { + cloudformation_type_name = "AWS::NetworkManager::DirectConnectGatewayAttachment" +} + +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_notifications_channel_association" { + cloudformation_type_name = "AWS::Notifications::ChannelAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_notifications_event_rule" { + cloudformation_type_name = "AWS::Notifications::EventRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_notifications_notification_configuration" { + cloudformation_type_name = "AWS::Notifications::NotificationConfiguration" +} + +resource_schema "aws_notifications_notification_hub" { + cloudformation_type_name = "AWS::Notifications::NotificationHub" +} + +resource_schema "aws_notificationscontacts_email_contact" { + cloudformation_type_name = "AWS::NotificationsContacts::EmailContact" +} + +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_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +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_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_pcs_cluster" { + cloudformation_type_name = "AWS::PCS::Cluster" +} + +resource_schema "aws_pcs_compute_node_group" { + cloudformation_type_name = "AWS::PCS::ComputeNodeGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcs_queue" { + cloudformation_type_name = "AWS::PCS::Queue" + 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_accessor" { + cloudformation_type_name = "AWS::QBusiness::DataAccessor" + suppress_plural_data_source_generation = true +} + +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_permission" { + cloudformation_type_name = "AWS::QBusiness::Permission" + 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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_custom_permissions" { + cloudformation_type_name = "AWS::QuickSight::CustomPermissions" +} + +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_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +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_ram_resource_share" { + cloudformation_type_name = "AWS::RAM::ResourceShare" +} + +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_shard_group" { + cloudformation_type_name = "AWS::RDS::DBShardGroup" +} + +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_rbin_rule" { + cloudformation_type_name = "AWS::Rbin::Rule" + suppress_plural_data_source_generation = true +} + +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_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +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_resourcegroups_tag_sync_task" { + cloudformation_type_name = "AWS::ResourceGroups::TagSyncTask" +} + +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_s3tables_table_bucket" { + cloudformation_type_name = "AWS::S3Tables::TableBucket" +} + +resource_schema "aws_s3tables_table_bucket_policy" { + cloudformation_type_name = "AWS::S3Tables::TableBucketPolicy" +} + +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_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +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_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +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_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +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_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +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_partner_app" { + cloudformation_type_name = "AWS::SageMaker::PartnerApp" +} + +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_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +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_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_user" { + cloudformation_type_name = "AWS::Transfer::User" + suppress_plural_data_source_generation = true +} + +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_configuration" { + cloudformation_type_name = "AWS::VpcLattice::ResourceConfiguration" +} + +resource_schema "aws_vpclattice_resource_gateway" { + cloudformation_type_name = "AWS::VpcLattice::ResourceGateway" +} + +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_resource_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkResourceAssociation" +} + +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_ai_agent" { + cloudformation_type_name = "AWS::Wisdom::AIAgent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent_version" { + cloudformation_type_name = "AWS::Wisdom::AIAgentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_guardrail" { + cloudformation_type_name = "AWS::Wisdom::AIGuardrail" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_guardrail_version" { + cloudformation_type_name = "AWS::Wisdom::AIGuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt_version" { + cloudformation_type_name = "AWS::Wisdom::AIPromptVersion" + 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_wisdom_message_template" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_message_template_version" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplateVersion" + suppress_plural_data_source_generation = true +} + +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_data_protection_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::DataProtectionSettings" +} + +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/import_examples_gen.json b/internal/provider/import_examples_gen.json index 7844dbec5..e30596ab8 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -3879,6 +3879,31 @@ "identifier": ["StudioComponentId"], "path": "./examples/resources/awscc_nimblestudio_studio_component/import.sh" }, + { + "resource": "awscc_notifications_channel_association", + "identifier": ["Arn","NotificationConfigurationArn"], + "path": "./examples/resources/awscc_notifications_channel_association/import.sh" + }, + { + "resource": "awscc_notifications_event_rule", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_notifications_event_rule/import.sh" + }, + { + "resource": "awscc_notifications_notification_configuration", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_notifications_notification_configuration/import.sh" + }, + { + "resource": "awscc_notifications_notification_hub", + "identifier": ["Region"], + "path": "./examples/resources/awscc_notifications_notification_hub/import.sh" + }, + { + "resource": "awscc_notificationscontacts_email_contact", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_notificationscontacts_email_contact/import.sh" + }, { "resource": "awscc_osis_pipeline", "identifier": ["PipelineArn"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index 5d05838cc..6967b798d 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -588,6 +588,9 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_networkmanager_transit_gateway_route_table_attachments -cftype AWS::NetworkManager::TransitGatewayRouteTableAttachment -package networkmanager ../aws/networkmanager/transit_gateway_route_table_attachment_plural_data_source_gen.go ../aws/networkmanager/transit_gateway_route_table_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_networkmanager_vpc_attachments -cftype AWS::NetworkManager::VpcAttachment -package networkmanager ../aws/networkmanager/vpc_attachment_plural_data_source_gen.go ../aws/networkmanager/vpc_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_nimblestudio_studios -cftype AWS::NimbleStudio::Studio -package nimblestudio ../aws/nimblestudio/studio_plural_data_source_gen.go ../aws/nimblestudio/studio_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_notifications_notification_configurations -cftype AWS::Notifications::NotificationConfiguration -package notifications ../aws/notifications/notification_configuration_plural_data_source_gen.go ../aws/notifications/notification_configuration_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_notifications_notification_hubs -cftype AWS::Notifications::NotificationHub -package notifications ../aws/notifications/notification_hub_plural_data_source_gen.go ../aws/notifications/notification_hub_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_notificationscontacts_email_contacts -cftype AWS::NotificationsContacts::EmailContact -package notificationscontacts ../aws/notificationscontacts/email_contact_plural_data_source_gen.go ../aws/notificationscontacts/email_contact_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_osis_pipelines -cftype AWS::OSIS::Pipeline -package osis ../aws/osis/pipeline_plural_data_source_gen.go ../aws/osis/pipeline_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_oam_links -cftype AWS::Oam::Link -package oam ../aws/oam/link_plural_data_source_gen.go ../aws/oam/link_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_oam_sinks -cftype AWS::Oam::Sink -package oam ../aws/oam/sink_plural_data_source_gen.go ../aws/oam/sink_plural_data_source_gen_test.go @@ -989,6 +992,8 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkfirewall" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkmanager" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/nimblestudio" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notifications" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notificationscontacts" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/oam" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/omics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opensearchserverless" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 53bdbbd7c..56a927a17 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -778,6 +778,11 @@ //go:generate go run generators/resource/main.go -resource awscc_nimblestudio_streaming_image -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_StreamingImage.json -package nimblestudio -- ../aws/nimblestudio/streaming_image_resource_gen.go ../aws/nimblestudio/streaming_image_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_nimblestudio_studio -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_Studio.json -package nimblestudio -- ../aws/nimblestudio/studio_resource_gen.go ../aws/nimblestudio/studio_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_nimblestudio_studio_component -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_StudioComponent.json -package nimblestudio -- ../aws/nimblestudio/studio_component_resource_gen.go ../aws/nimblestudio/studio_component_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_notifications_channel_association -cfschema ../service/cloudformation/schemas/AWS_Notifications_ChannelAssociation.json -package notifications -- ../aws/notifications/channel_association_resource_gen.go ../aws/notifications/channel_association_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_notifications_event_rule -cfschema ../service/cloudformation/schemas/AWS_Notifications_EventRule.json -package notifications -- ../aws/notifications/event_rule_resource_gen.go ../aws/notifications/event_rule_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_notifications_notification_configuration -cfschema ../service/cloudformation/schemas/AWS_Notifications_NotificationConfiguration.json -package notifications -- ../aws/notifications/notification_configuration_resource_gen.go ../aws/notifications/notification_configuration_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_notifications_notification_hub -cfschema ../service/cloudformation/schemas/AWS_Notifications_NotificationHub.json -package notifications -- ../aws/notifications/notification_hub_resource_gen.go ../aws/notifications/notification_hub_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_notificationscontacts_email_contact -cfschema ../service/cloudformation/schemas/AWS_NotificationsContacts_EmailContact.json -package notificationscontacts -- ../aws/notificationscontacts/email_contact_resource_gen.go ../aws/notificationscontacts/email_contact_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_osis_pipeline -cfschema ../service/cloudformation/schemas/AWS_OSIS_Pipeline.json -package osis -- ../aws/osis/pipeline_resource_gen.go ../aws/osis/pipeline_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_oam_link -cfschema ../service/cloudformation/schemas/AWS_Oam_Link.json -package oam -- ../aws/oam/link_resource_gen.go ../aws/oam/link_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_oam_sink -cfschema ../service/cloudformation/schemas/AWS_Oam_Sink.json -package oam -- ../aws/oam/sink_resource_gen.go ../aws/oam/sink_resource_gen_test.go @@ -1259,6 +1264,8 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkfirewall" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkmanager" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/nimblestudio" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notifications" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notificationscontacts" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/oam" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/omics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opensearchserverless" diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index a5f00a5d4..e45f865d9 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -778,6 +778,11 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_nimblestudio_streaming_image -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_StreamingImage.json -package nimblestudio ../aws/nimblestudio/streaming_image_singular_data_source_gen.go ../aws/nimblestudio/streaming_image_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_nimblestudio_studio -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_Studio.json -package nimblestudio ../aws/nimblestudio/studio_singular_data_source_gen.go ../aws/nimblestudio/studio_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_nimblestudio_studio_component -cfschema ../service/cloudformation/schemas/AWS_NimbleStudio_StudioComponent.json -package nimblestudio ../aws/nimblestudio/studio_component_singular_data_source_gen.go ../aws/nimblestudio/studio_component_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_notifications_channel_association -cfschema ../service/cloudformation/schemas/AWS_Notifications_ChannelAssociation.json -package notifications ../aws/notifications/channel_association_singular_data_source_gen.go ../aws/notifications/channel_association_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_notifications_event_rule -cfschema ../service/cloudformation/schemas/AWS_Notifications_EventRule.json -package notifications ../aws/notifications/event_rule_singular_data_source_gen.go ../aws/notifications/event_rule_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_notifications_notification_configuration -cfschema ../service/cloudformation/schemas/AWS_Notifications_NotificationConfiguration.json -package notifications ../aws/notifications/notification_configuration_singular_data_source_gen.go ../aws/notifications/notification_configuration_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_notifications_notification_hub -cfschema ../service/cloudformation/schemas/AWS_Notifications_NotificationHub.json -package notifications ../aws/notifications/notification_hub_singular_data_source_gen.go ../aws/notifications/notification_hub_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_notificationscontacts_email_contact -cfschema ../service/cloudformation/schemas/AWS_NotificationsContacts_EmailContact.json -package notificationscontacts ../aws/notificationscontacts/email_contact_singular_data_source_gen.go ../aws/notificationscontacts/email_contact_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_osis_pipeline -cfschema ../service/cloudformation/schemas/AWS_OSIS_Pipeline.json -package osis ../aws/osis/pipeline_singular_data_source_gen.go ../aws/osis/pipeline_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_oam_link -cfschema ../service/cloudformation/schemas/AWS_Oam_Link.json -package oam ../aws/oam/link_singular_data_source_gen.go ../aws/oam/link_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_oam_sink -cfschema ../service/cloudformation/schemas/AWS_Oam_Sink.json -package oam ../aws/oam/sink_singular_data_source_gen.go ../aws/oam/sink_singular_data_source_gen_test.go @@ -1259,6 +1264,8 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkfirewall" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkmanager" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/nimblestudio" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notifications" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/notificationscontacts" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/oam" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/omics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opensearchserverless" diff --git a/internal/service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json b/internal/service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json index a705bce2b..c6cf1caa9 100644 --- a/internal/service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json +++ b/internal/service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json @@ -402,7 +402,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority" + ] }, "additionalProperties": false, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainName.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainName.json index bb6de2634..b3a9d0c10 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainName.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainName.json @@ -10,27 +10,32 @@ "handlers": { "read": { "permissions": [ - "apigateway:*" + "apigateway:GET" ] }, "create": { "permissions": [ - "apigateway:*" + "apigateway:POST", + "apigateway:PUT", + "apigateway:GET" ] }, "update": { "permissions": [ - "apigateway:*" + "apigateway:GET", + "apigateway:PUT", + "apigateway:PATCH" ] }, "list": { "permissions": [ - "apigateway:*" + "apigateway:GET" ] }, "delete": { "permissions": [ - "apigateway:*" + "apigateway:GET", + "apigateway:DELETE" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_DataSource.json b/internal/service/cloudformation/schemas/AWS_Bedrock_DataSource.json index 0bcc77c77..c7ddc5915 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_DataSource.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_DataSource.json @@ -128,7 +128,8 @@ "SALESFORCE", "SHAREPOINT", "WEB", - "CUSTOM" + "CUSTOM", + "REDSHIFT_METADATA" ] }, "DataDeletionPolicy": { diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_KnowledgeBase.json b/internal/service/cloudformation/schemas/AWS_Bedrock_KnowledgeBase.json index ee1389d94..124fc7252 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_KnowledgeBase.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_KnowledgeBase.json @@ -14,6 +14,9 @@ }, "KendraKnowledgeBaseConfiguration": { "$ref": "#/definitions/KendraKnowledgeBaseConfiguration" + }, + "SqlKnowledgeBaseConfiguration": { + "$ref": "#/definitions/SqlKnowledgeBaseConfiguration" } }, "required": [ @@ -48,7 +51,8 @@ "description": "The type of a knowledge base.", "enum": [ "VECTOR", - "KENDRA" + "KENDRA", + "SQL" ] }, "OpenSearchServerlessConfiguration": { @@ -572,6 +576,415 @@ "type": "string", "description": "Arn of a Kendra index", "pattern": "^arn:aws(|-cn|-us-gov):kendra:[a-z0-9-]{1,20}:([0-9]{12}|):index\/([a-zA-Z0-9][a-zA-Z0-9-]{35}|[a-zA-Z0-9][a-zA-Z0-9-]{35}-[a-zA-Z0-9][a-zA-Z0-9-]{35})$" + }, + "SqlKnowledgeBaseConfiguration": { + "type": "object", + "description": "Configurations for a SQL knowledge base", + "properties": { + "Type": { + "$ref": "#/definitions/QueryEngineType" + }, + "RedshiftConfiguration": { + "$ref": "#/definitions/RedshiftConfiguration" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false + }, + "QueryEngineType": { + "type": "string", + "description": "SQL query engine type", + "enum": [ + "REDSHIFT" + ] + }, + "RedshiftConfiguration": { + "type": "object", + "description": "Configurations for a Redshift knowledge base", + "properties": { + "StorageConfigurations": { + "$ref": "#/definitions/RedshiftQueryEngineStorageConfigurations" + }, + "QueryEngineConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineConfiguration" + }, + "QueryGenerationConfiguration": { + "$ref": "#/definitions/QueryGenerationConfiguration" + } + }, + "required": [ + "StorageConfigurations", + "QueryEngineConfiguration" + ], + "additionalProperties": false + }, + "RedshiftQueryEngineStorageConfigurations": { + "type": "array", + "description": "List of configurations for available Redshift query engine storage types", + "minItems": 1, + "maxItems": 1, + "items": { + "$ref": "#/definitions/RedshiftQueryEngineStorageConfiguration" + }, + "insertionOrder": false + }, + "RedshiftQueryEngineStorageConfiguration": { + "type": "object", + "description": "Configurations for available Redshift query engine storage types", + "properties": { + "Type": { + "$ref": "#/definitions/RedshiftQueryEngineStorageType" + }, + "AwsDataCatalogConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineAwsDataCatalogStorageConfiguration" + }, + "RedshiftConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineRedshiftStorageConfiguration" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false + }, + "RedshiftQueryEngineStorageType": { + "type": "string", + "description": "Redshift query engine storage type", + "enum": [ + "REDSHIFT", + "AWS_DATA_CATALOG" + ] + }, + "RedshiftQueryEngineAwsDataCatalogStorageConfiguration": { + "type": "object", + "description": "Configurations for Redshift query engine AWS Data Catalog backed storage", + "properties": { + "TableNames": { + "$ref": "#/definitions/AwsDataCatalogTableNames" + } + }, + "required": [ + "TableNames" + ], + "additionalProperties": false + }, + "AwsDataCatalogTableNames": { + "type": "array", + "description": "List of table names in AWS Data Catalog. Must follow two part notation", + "items": { + "$ref": "#/definitions/AwsDataCatalogTableName" + }, + "minItems": 1, + "maxItems": 1000, + "insertionOrder": false + }, + "AwsDataCatalogTableName": { + "type": "string", + "description": "AWS Data Catalog table name", + "pattern": "^.*\\.*$", + "minLength": 1, + "maxLength": 200 + }, + "RedshiftQueryEngineRedshiftStorageConfiguration": { + "type": "object", + "description": "Configurations for Redshift query engine Redshift backed storage", + "properties": { + "DatabaseName": { + "$ref": "#/definitions/RedshiftDatabase" + } + }, + "required": [ + "DatabaseName" + ], + "additionalProperties": false + }, + "RedshiftDatabase": { + "type": "string", + "description": "Redshift database name", + "minLength": 1, + "maxLength": 200 + }, + "RedshiftQueryEngineConfiguration": { + "type": "object", + "description": "Configurations for Redshift query engine", + "properties": { + "Type": { + "$ref": "#/definitions/RedshiftQueryEngineType" + }, + "ServerlessConfiguration": { + "$ref": "#/definitions/RedshiftServerlessConfiguration" + }, + "ProvisionedConfiguration": { + "$ref": "#/definitions/RedshiftProvisionedConfiguration" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false + }, + "RedshiftQueryEngineType": { + "type": "string", + "description": "Redshift query engine type", + "enum": [ + "SERVERLESS", + "PROVISIONED" + ] + }, + "RedshiftServerlessConfiguration": { + "type": "object", + "description": "Configurations for serverless Redshift query engine", + "properties": { + "WorkgroupArn": { + "$ref": "#/definitions/WorkgroupArn" + }, + "AuthConfiguration": { + "$ref": "#/definitions/RedshiftServerlessAuthConfiguration" + } + }, + "required": [ + "WorkgroupArn", + "AuthConfiguration" + ], + "additionalProperties": false + }, + "WorkgroupArn": { + "type": "string", + "description": "Workgroup arn", + "pattern": "^(arn:(aws(-[a-z]+)*):redshift-serverless:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:workgroup\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$" + }, + "RedshiftServerlessAuthConfiguration": { + "type": "object", + "description": "Configurations for Redshift query engine serverless auth setup", + "properties": { + "Type": { + "$ref": "#/definitions/RedshiftServerlessAuthType" + }, + "UsernamePasswordSecretArn": { + "$ref": "#/definitions/SecretArn" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false + }, + "RedshiftServerlessAuthType": { + "type": "string", + "description": "Serverless Redshift auth type", + "enum": [ + "IAM", + "USERNAME_PASSWORD" + ] + }, + "SecretArn": { + "type": "string", + "description": "Arn of a SecretsManager Secret", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$" + }, + "RedshiftProvisionedConfiguration": { + "type": "object", + "description": "Configurations for provisioned Redshift query engine", + "properties": { + "ClusterIdentifier": { + "$ref": "#/definitions/RedshiftClusterIdentifier" + }, + "AuthConfiguration": { + "$ref": "#/definitions/RedshiftProvisionedAuthConfiguration" + } + }, + "required": [ + "ClusterIdentifier", + "AuthConfiguration" + ], + "additionalProperties": false + }, + "RedshiftClusterIdentifier": { + "type": "string", + "description": "Redshift cluster identifier", + "minLength": 1, + "maxLength": 63 + }, + "RedshiftProvisionedAuthConfiguration": { + "type": "object", + "description": "Configurations for Redshift query engine provisioned auth setup", + "properties": { + "Type": { + "$ref": "#/definitions/RedshiftProvisionedAuthType" + }, + "DatabaseUser": { + "type": "string", + "description": "Redshift database user" + }, + "UsernamePasswordSecretArn": { + "$ref": "#/definitions/SecretArn" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false + }, + "RedshiftProvisionedAuthType": { + "type": "string", + "description": "Provisioned Redshift auth type", + "enum": [ + "IAM", + "USERNAME_PASSWORD", + "USERNAME" + ] + }, + "QueryGenerationConfiguration": { + "type": "object", + "description": "Configurations for generating Redshift engine queries", + "properties": { + "ExecutionTimeoutSeconds": { + "$ref": "#/definitions/QueryExecutionTimeoutSeconds" + }, + "GenerationContext": { + "$ref": "#/definitions/QueryGenerationContext" + } + }, + "additionalProperties": false + }, + "QueryExecutionTimeoutSeconds": { + "type": "integer", + "description": "Max query execution timeout", + "minimum": 1, + "maximum": 200 + }, + "QueryGenerationContext": { + "type": "object", + "description": "Context used to improve query generation", + "properties": { + "Tables": { + "$ref": "#/definitions/QueryGenerationTables" + }, + "CuratedQueries": { + "$ref": "#/definitions/CuratedQueries" + } + }, + "additionalProperties": false + }, + "QueryGenerationTables": { + "type": "array", + "description": "List of tables used for Redshift query generation context", + "items": { + "$ref": "#/definitions/QueryGenerationTable" + }, + "maxItems": 50, + "insertionOrder": false + }, + "QueryGenerationTable": { + "type": "object", + "description": "Tables used for Redshift query generation context", + "properties": { + "Name": { + "$ref": "#/definitions/QueryGenerationTableName" + }, + "Description": { + "$ref": "#/definitions/DescriptionString" + }, + "Inclusion": { + "$ref": "#/definitions/InclusionType" + }, + "Columns": { + "$ref": "#/definitions/QueryGenerationColumns" + } + }, + "required": [ + "Name" + ], + "additionalProperties": false + }, + "QueryGenerationTableName": { + "type": "string", + "description": "Query generation table name. Must follow three-part notation", + "pattern": "^.*\\..*\\..*$" + }, + "DescriptionString": { + "type": "string", + "description": "Description for the attached entity", + "minLength": 1, + "maxLength": 200 + }, + "InclusionType": { + "type": "string", + "description": "Include or Exclude status for an entity", + "enum": [ + "INCLUDE", + "EXCLUDE" + ] + }, + "QueryGenerationColumns": { + "type": "array", + "description": "List of Redshift query generation columns", + "items": { + "$ref": "#/definitions/QueryGenerationColumn" + }, + "insertionOrder": false + }, + "QueryGenerationColumn": { + "type": "object", + "description": "Redshift query generation column", + "properties": { + "Name": { + "$ref": "#/definitions/QueryGenerationColumnName" + }, + "Description": { + "$ref": "#/definitions/DescriptionString" + }, + "Inclusion": { + "$ref": "#/definitions/InclusionType" + } + }, + "additionalProperties": false + }, + "QueryGenerationColumnName": { + "type": "string", + "description": "Query generation column name", + "minLength": 1, + "maxLength": 127 + }, + "CuratedQueries": { + "type": "array", + "description": "List of example queries and results", + "maxItems": 10, + "items": { + "$ref": "#/definitions/CuratedQuery" + }, + "insertionOrder": false + }, + "CuratedQuery": { + "type": "object", + "description": "Curated query or question and answer pair", + "properties": { + "NaturalLanguage": { + "$ref": "#/definitions/NaturalLanguageString" + }, + "Sql": { + "$ref": "#/definitions/SqlString" + } + }, + "required": [ + "NaturalLanguage", + "Sql" + ], + "additionalProperties": false + }, + "NaturalLanguageString": { + "type": "string", + "description": "Question for the curated query", + "minLength": 1, + "maxLength": 1000 + }, + "SqlString": { + "type": "string", + "description": "Answer for the curated query", + "minLength": 1, + "maxLength": 1000 } }, "properties": { @@ -651,7 +1064,12 @@ ], "createOnlyProperties": [ "/properties/StorageConfiguration", - "/properties/KnowledgeBaseConfiguration" + "/properties/KnowledgeBaseConfiguration/Type", + "/properties/KnowledgeBaseConfiguration/VectorKnowledgeBaseConfiguration", + "/properties/KnowledgeBaseConfiguration/KendraKnowledgeBaseConfiguration", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/Type", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/RedshiftConfiguration/StorageConfigurations", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/RedshiftConfiguration/QueryEngineConfiguration" ], "primaryIdentifier": [ "/properties/KnowledgeBaseId" diff --git a/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json b/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json index 99a29a267..b4d02c315 100644 --- a/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json +++ b/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json @@ -589,6 +589,14 @@ "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", "type": "object" }, + "Commands": { + "description": "The shell commands to run with your compute action in CodePipeline.", + "type": "array", + "uniqueItems": false, + "items": { + "type": "string" + } + }, "InputArtifacts": { "type": "array", "uniqueItems": true, diff --git a/internal/service/cloudformation/schemas/AWS_Connect_RoutingProfile.json b/internal/service/cloudformation/schemas/AWS_Connect_RoutingProfile.json index 406a1dbab..3fb7b90a5 100644 --- a/internal/service/cloudformation/schemas/AWS_Connect_RoutingProfile.json +++ b/internal/service/cloudformation/schemas/AWS_Connect_RoutingProfile.json @@ -9,7 +9,8 @@ "enum": [ "VOICE", "CHAT", - "TASK" + "TASK", + "EMAIL" ] }, "Concurrency": { diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json index 951d3e734..50ca59c34 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json @@ -459,6 +459,7 @@ "create": { "permissions": [ "databrew:CreateDataset", + "databrew:DescribeDataset", "databrew:TagResource", "databrew:UntagResource", "glue:GetConnection", diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Job.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Job.json index e1595a9c3..8d3ccf9e9 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Job.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Job.json @@ -608,6 +608,7 @@ "permissions": [ "databrew:CreateProfileJob", "databrew:CreateRecipeJob", + "databrew:DescribeJob", "databrew:TagResource", "databrew:UntagResource", "iam:PassRole" diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Project.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Project.json index 48dc616e0..ab724b277 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Project.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Project.json @@ -114,6 +114,7 @@ "create": { "permissions": [ "databrew:CreateProject", + "databrew:DescribeProject", "databrew:TagResource", "databrew:UntagResource", "iam:PassRole" diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Recipe.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Recipe.json index a843e0ac3..345e2d8cf 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Recipe.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Recipe.json @@ -567,6 +567,7 @@ "create": { "permissions": [ "databrew:CreateRecipe", + "databrew:DescribeRecipe", "databrew:TagResource", "databrew:UntagResource", "iam:PassRole" diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Ruleset.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Ruleset.json index f5b26bca1..3aaea28b9 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Ruleset.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Ruleset.json @@ -229,6 +229,7 @@ "create": { "permissions": [ "databrew:CreateRuleset", + "databrew:DescribeRuleset", "databrew:TagResource", "databrew:UntagResource", "iam:PassRole" diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Schedule.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Schedule.json index 29cd3a113..f8dd52392 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Schedule.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Schedule.json @@ -89,6 +89,7 @@ "create": { "permissions": [ "databrew:CreateSchedule", + "databrew:DescribeSchedule", "databrew:TagResource", "databrew:UntagResource", "iam:PassRole" diff --git a/internal/service/cloudformation/schemas/AWS_Detective_Graph.json b/internal/service/cloudformation/schemas/AWS_Detective_Graph.json index 173d1f208..2d2c4edfe 100644 --- a/internal/service/cloudformation/schemas/AWS_Detective_Graph.json +++ b/internal/service/cloudformation/schemas/AWS_Detective_Graph.json @@ -47,6 +47,18 @@ "primaryIdentifier": [ "/properties/Arn" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "detective:UntagResource", + "detective:TagResource", + "detective:ListTagsForResource" + ] + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_Detective_MemberInvitation.json b/internal/service/cloudformation/schemas/AWS_Detective_MemberInvitation.json index fce5833cd..cc9c4f903 100644 --- a/internal/service/cloudformation/schemas/AWS_Detective_MemberInvitation.json +++ b/internal/service/cloudformation/schemas/AWS_Detective_MemberInvitation.json @@ -48,6 +48,9 @@ "/properties/Message", "/properties/DisableEmailNotification" ], + "tagging": { + "taggable": false + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_ECS_Service.json b/internal/service/cloudformation/schemas/AWS_ECS_Service.json index b7dc11b0d..3003fa418 100644 --- a/internal/service/cloudformation/schemas/AWS_ECS_Service.json +++ b/internal/service/cloudformation/schemas/AWS_ECS_Service.json @@ -426,6 +426,10 @@ "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", "type": "integer" }, + "VolumeInitializationRate": { + "description": "", + "type": "integer" + }, "Iops": { "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type.\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n This parameter is required for ``io1`` and ``io2`` volume types. The default for ``gp3`` volumes is ``3,000 IOPS``. This parameter is not supported for ``st1``, ``sc1``, or ``standard`` volume types.\n This parameter maps 1:1 with the ``Iops`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", "type": "integer" diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json index 28c43c2fa..b4c23037f 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json @@ -507,7 +507,8 @@ "createOnlyProperties": [ "/properties/OutpostConfig", "/properties/EncryptionConfig", - "/properties/KubernetesNetworkConfig", + "/properties/KubernetesNetworkConfig/IpFamily", + "/properties/KubernetesNetworkConfig/ServiceIpv4Cidr", "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", "/properties/Name", "/properties/RoleArn", diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Nodegroup.json b/internal/service/cloudformation/schemas/AWS_EKS_Nodegroup.json index 8572e59a3..1ae8a60be 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Nodegroup.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Nodegroup.json @@ -96,6 +96,10 @@ "type": "number", "minimum": 1, "maximum": 100 + }, + "UpdateStrategy": { + "description": "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + "type": "string" } } }, diff --git a/internal/service/cloudformation/schemas/AWS_ElastiCache_UserGroup.json b/internal/service/cloudformation/schemas/AWS_ElastiCache_UserGroup.json index c4b0d7f20..7972da8a7 100644 --- a/internal/service/cloudformation/schemas/AWS_ElastiCache_UserGroup.json +++ b/internal/service/cloudformation/schemas/AWS_ElastiCache_UserGroup.json @@ -39,10 +39,11 @@ "type": "string" }, "Engine": { - "description": "Must be redis.", + "description": "The target cache engine for the user group.", "type": "string", "enum": [ - "redis" + "redis", + "valkey" ] }, "UserIds": { @@ -81,8 +82,7 @@ "/properties/Arn" ], "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" + "/properties/UserGroupId" ], "primaryIdentifier": [ "/properties/UserGroupId" diff --git a/internal/service/cloudformation/schemas/AWS_IoT_ThingType.json b/internal/service/cloudformation/schemas/AWS_IoT_ThingType.json index 25a06cf8f..5da1ef3ab 100644 --- a/internal/service/cloudformation/schemas/AWS_IoT_ThingType.json +++ b/internal/service/cloudformation/schemas/AWS_IoT_ThingType.json @@ -72,14 +72,14 @@ "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 -. ", + "description": "Tag key (1-128 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "minLength": 1, "maxLength": 128, "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" }, "Value": { "type": "string", - "description": "The value for the tag. You can specify a value that is 1 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 -. ", + "description": "Tag value (1-256 chars). No 'aws:' prefix. Allows: [A-Za-z0-9 _.:/=+-]", "minLength": 1, "maxLength": 256 } diff --git a/internal/service/cloudformation/schemas/AWS_KafkaConnect_Connector.json b/internal/service/cloudformation/schemas/AWS_KafkaConnect_Connector.json index ef1b60eb1..4565c0489 100644 --- a/internal/service/cloudformation/schemas/AWS_KafkaConnect_Connector.json +++ b/internal/service/cloudformation/schemas/AWS_KafkaConnect_Connector.json @@ -501,7 +501,6 @@ ], "replacementStrategy": "delete_then_create", "createOnlyProperties": [ - "/properties/ConnectorConfiguration", "/properties/ConnectorDescription", "/properties/ConnectorName", "/properties/KafkaCluster", @@ -555,7 +554,9 @@ "update": { "permissions": [ "kafkaconnect:UpdateConnector", + "kafkaconnect:UpdateConnectorConfiguration", "kafkaconnect:DescribeConnector", + "kafkaconnect:DescribeConnectorOperation", "kafkaconnect:TagResource", "kafkaconnect:ListTagsForResource", "kafkaconnect:UntagResource", diff --git a/internal/service/cloudformation/schemas/AWS_NotificationsContacts_EmailContact.json b/internal/service/cloudformation/schemas/AWS_NotificationsContacts_EmailContact.json new file mode 100644 index 000000000..69b426aa7 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_NotificationsContacts_EmailContact.json @@ -0,0 +1,175 @@ +{ + "typeName": "AWS::NotificationsContacts::EmailContact", + "description": "Definition of AWS::NotificationsContacts::EmailContact Resource Type", + "definitions": { + "EmailContact": { + "type": "object", + "properties": { + "Arn": { + "type": "string", + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$" + }, + "Name": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+" + }, + "Address": { + "type": "string", + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$" + }, + "Status": { + "$ref": "#/definitions/EmailContactStatus" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "UpdateTime": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "Address", + "Arn", + "CreationTime", + "Name", + "Status", + "UpdateTime" + ], + "additionalProperties": false + }, + "EmailContactStatus": { + "type": "string", + "enum": [ + "inactive", + "active" + ] + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "Arn": { + "type": "string", + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$" + }, + "EmailAddress": { + "type": "string", + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$" + }, + "Name": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+" + }, + "EmailContact": { + "$ref": "#/definitions/EmailContact" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "required": [ + "EmailAddress", + "Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/EmailContact", + "/properties/EmailContact/Arn", + "/properties/EmailContact/Address", + "/properties/EmailContact/Name", + "/properties/EmailContact/Status", + "/properties/EmailContact/CreationTime", + "/properties/EmailContact/UpdateTime" + ], + "writeOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name" + ], + "createOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name", + "/properties/Tags" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "handlers": { + "create": { + "permissions": [ + "notifications-contacts:CreateEmailContact", + "notifications-contacts:GetEmailContact", + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "notifications-contacts:GetEmailContact", + "notifications-contacts:ListTagsForResource", + "notifications-contacts:TagResource" + ] + }, + "delete": { + "permissions": [ + "notifications-contacts:DeleteEmailContact", + "notifications-contacts:GetEmailContact" + ] + }, + "list": { + "permissions": [ + "notifications-contacts:ListEmailContacts" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": false, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ] + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_Notifications_ChannelAssociation.json b/internal/service/cloudformation/schemas/AWS_Notifications_ChannelAssociation.json new file mode 100644 index 000000000..f71694dfa --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Notifications_ChannelAssociation.json @@ -0,0 +1,66 @@ +{ + "typeName": "AWS::Notifications::ChannelAssociation", + "description": "Definition of AWS::Notifications::ChannelAssociation Resource Type", + "properties": { + "Arn": { + "type": "string", + "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops" + }, + "NotificationConfigurationArn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "description": "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1" + } + }, + "required": [ + "Arn", + "NotificationConfigurationArn" + ], + "createOnlyProperties": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "primaryIdentifier": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateChannel", + "notifications:ListChannels" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateChannel" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListChannels" + ] + }, + "read": { + "permissions": [ + "notifications:ListChannels" + ] + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_Notifications_EventRule.json b/internal/service/cloudformation/schemas/AWS_Notifications_EventRule.json new file mode 100644 index 000000000..beaabb9f4 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Notifications_EventRule.json @@ -0,0 +1,163 @@ +{ + "typeName": "AWS::Notifications::EventRule", + "description": "Definition of AWS::Notifications::EventRule Resource Type", + "definitions": { + "EventRuleStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "CREATING", + "UPDATING", + "DELETING" + ] + }, + "EventRuleStatusSummary": { + "type": "object", + "properties": { + "Status": { + "$ref": "#/definitions/EventRuleStatus" + }, + "Reason": { + "type": "string" + } + }, + "required": [ + "Reason", + "Status" + ], + "additionalProperties": false + }, + "StatusSummaryByRegion": { + "type": "object", + "patternProperties": { + "": { + "$ref": "#/definitions/EventRuleStatusSummary" + } + }, + "additionalProperties": false + }, + "Unit": { + "type": "object", + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}/rule/[a-z0-9]{27}$" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "EventPattern": { + "type": "string", + "maxLength": 4096, + "minLength": 0 + }, + "EventType": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "pattern": "^([a-zA-Z0-9 \\-\\(\\)])+$" + }, + "ManagedRules": { + "type": "array", + "items": { + "type": "string", + "pattern": "" + } + }, + "NotificationConfigurationArn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$" + }, + "Regions": { + "type": "array", + "items": { + "type": "string", + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$" + }, + "minItems": 1 + }, + "Source": { + "type": "string", + "maxLength": 36, + "minLength": 1, + "pattern": "^aws.([a-z0-9\\-])+$" + }, + "StatusSummaryByRegion": { + "$ref": "#/definitions/StatusSummaryByRegion" + } + }, + "required": [ + "EventType", + "NotificationConfigurationArn", + "Regions", + "Source" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/ManagedRules", + "/properties/StatusSummaryByRegion" + ], + "createOnlyProperties": [ + "/properties/EventType", + "/properties/NotificationConfigurationArn", + "/properties/Source" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "handlers": { + "create": { + "permissions": [ + "notifications:CreateEventRule", + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + }, + "read": { + "permissions": [ + "notifications:GetEventRule" + ] + }, + "update": { + "permissions": [ + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteEventRule", + "notifications:GetEventRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListEventRules", + "notifications:GetEventRule" + ] + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_Notifications_NotificationConfiguration.json b/internal/service/cloudformation/schemas/AWS_Notifications_NotificationConfiguration.json new file mode 100644 index 000000000..15c4529f3 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Notifications_NotificationConfiguration.json @@ -0,0 +1,153 @@ +{ + "typeName": "AWS::Notifications::NotificationConfiguration", + "description": "Definition of AWS::Notifications::NotificationConfiguration Resource Type", + "definitions": { + "AggregationDuration": { + "type": "string", + "enum": [ + "LONG", + "SHORT", + "NONE" + ] + }, + "NotificationConfigurationStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "PARTIALLY_ACTIVE", + "INACTIVE", + "DELETING" + ] + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "AggregationDuration": { + "$ref": "#/definitions/AggregationDuration" + }, + "Arn": { + "type": "string", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "Description": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "pattern": "" + }, + "Name": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9_\\-]+$" + }, + "Status": { + "$ref": "#/definitions/NotificationConfigurationStatus" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "required": [ + "Description", + "Name" + ], + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Status", + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Tags" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "handlers": { + "create": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "read": { + "permissions": [ + "notifications:GetNotificationConfiguration", + "notifications:ListTagsForResource", + "notifications:TagResource", + "notifications:UntagResource" + ] + }, + "update": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteNotificationConfiguration" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationConfigurations", + "notifications:ListTagsForResource" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": false, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ] + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_Notifications_NotificationHub.json b/internal/service/cloudformation/schemas/AWS_Notifications_NotificationHub.json new file mode 100644 index 000000000..f11afab70 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Notifications_NotificationHub.json @@ -0,0 +1,92 @@ +{ + "typeName": "AWS::Notifications::NotificationHub", + "description": "Definition of AWS::Notifications::NotificationHub Resource Type", + "definitions": { + "NotificationHubStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "REGISTERING", + "DEREGISTERING", + "INACTIVE" + ] + }, + "NotificationHubStatusSummary": { + "type": "object", + "properties": { + "NotificationHubStatus": { + "$ref": "#/definitions/NotificationHubStatus" + }, + "NotificationHubStatusReason": { + "type": "string" + } + }, + "required": [ + "NotificationHubStatus", + "NotificationHubStatusReason" + ], + "additionalProperties": false + }, + "Region": { + "type": "string", + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + "description": "Region that NotificationHub is present in." + } + }, + "properties": { + "Region": { + "$ref": "#/definitions/Region" + }, + "NotificationHubStatusSummary": { + "$ref": "#/definitions/NotificationHubStatusSummary" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "Region" + ], + "primaryIdentifier": [ + "/properties/Region" + ], + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/NotificationHubStatusSummary" + ], + "createOnlyProperties": [ + "/properties/Region" + ], + "handlers": { + "read": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + }, + "create": { + "permissions": [ + "notifications:RegisterNotificationHub", + "notifications:ListNotificationHubs", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "notifications:DeregisterNotificationHub", + "notifications:ListNotificationHubs" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBShardGroup.json b/internal/service/cloudformation/schemas/AWS_RDS_DBShardGroup.json index 85c2a8875..099e97fff 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBShardGroup.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBShardGroup.json @@ -1,6 +1,6 @@ { "typeName": "AWS::RDS::DBShardGroup", - "description": "The AWS::RDS::DBShardGroup resource creates an Amazon Aurora Limitless DB Shard Group.", + "description": "Creates a new DB shard group for Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.\n Valid for: Aurora DB clusters only", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", "tagging": { "cloudFormationSystemTags": true, @@ -9,13 +9,13 @@ "rds:RemoveTagsFromResource" ], "taggable": true, - "tagOnCreate": false, + "tagOnCreate": true, "tagUpdatable": true, "tagProperty": "/properties/Tags" }, "properties": { "DBShardGroupResourceId": { - "description": "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", + "description": "", "type": "string" }, "DBShardGroupIdentifier": { @@ -31,7 +31,7 @@ "maxLength": 63 }, "ComputeRedundancy": { - "description": "Specifies whether to create standby instances for the DB shard group.", + "description": "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", "minimum": 0, "type": "integer" }, @@ -44,11 +44,11 @@ "type": "number" }, "PubliclyAccessible": { - "description": "Indicates whether the DB shard group is publicly accessible.", + "description": "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn?t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", "type": "boolean" }, "Endpoint": { - "description": "The connection endpoint for the DB shard group.", + "description": "", "type": "string" }, "Tags": { @@ -56,7 +56,7 @@ "maxItems": 50, "uniqueItems": true, "insertionOrder": false, - "description": "An array of key-value pairs to apply to this resource.", + "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", "items": { "$ref": "#/definitions/Tag" } @@ -64,19 +64,19 @@ }, "definitions": { "Tag": { - "description": "A key-value pair to associate with a resource.", + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", "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 -. ", + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", "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 -. ", + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", "minLength": 0, "maxLength": 256 } diff --git a/internal/service/cloudformation/schemas/AWS_SNS_Topic.json b/internal/service/cloudformation/schemas/AWS_SNS_Topic.json index 546956571..f3e4c6968 100644 --- a/internal/service/cloudformation/schemas/AWS_SNS_Topic.json +++ b/internal/service/cloudformation/schemas/AWS_SNS_Topic.json @@ -37,6 +37,10 @@ "description": "The archive policy determines the number of days SNS retains messages. You can set a retention period from 1 to 365 days.", "type": "object" }, + "FifoThroughputScope": { + "description": "", + "type": "string" + }, "Tags": { "type": "array", "uniqueItems": false, diff --git a/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json b/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json index abdaf1b6c..349e50e21 100644 --- a/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json +++ b/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json @@ -29,11 +29,11 @@ }, "End": { "$ref": "#/definitions/ISO8601DateString", - "description": "A timestamp that provides the end date for the date filter.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)" + "description": "A timestamp that provides the end date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)." }, "Start": { "$ref": "#/definitions/ISO8601DateString", - "description": "A timestamp that provides the start date for the date filter.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)" + "description": "A timestamp that provides the start date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)." } }, "type": "object", @@ -463,7 +463,7 @@ "maxItems": 20 }, "FirstObservedAt": { - "description": "A timestamp that indicates when the potential security issue captured by a finding was first observed by the security findings product. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "description": "A timestamp that indicates when the potential security issue captured by a finding was first observed by the security findings product. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", "items": { "$ref": "#/definitions/DateFilter" }, @@ -471,7 +471,7 @@ "maxItems": 20 }, "LastObservedAt": { - "description": "A timestamp that indicates when the potential security issue captured by a finding was most recently observed by the security findings product. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "description": "A timestamp that indicates when the security findings provider most recently observed a change in the resource that is involved in the finding. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", "items": { "$ref": "#/definitions/DateFilter" }, @@ -479,7 +479,7 @@ "maxItems": 20 }, "CreatedAt": { - "description": "A timestamp that indicates when this finding record was created. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "description": "A timestamp that indicates when this finding record was created. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", "items": { "$ref": "#/definitions/DateFilter" }, @@ -487,7 +487,7 @@ "maxItems": 20 }, "UpdatedAt": { - "description": "A timestamp that indicates when the finding record was most recently updated. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "description": "A timestamp that indicates when the finding record was most recently updated. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", "items": { "$ref": "#/definitions/DateFilter" }, @@ -679,7 +679,7 @@ "maxItems": 20 }, "NoteUpdatedAt": { - "description": "The timestamp of when the note was updated.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "description": "The timestamp of when the note was updated.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", "items": { "$ref": "#/definitions/DateFilter" }, diff --git a/internal/service/cloudformation/schemas/AWS_SecurityHub_FindingAggregator.json b/internal/service/cloudformation/schemas/AWS_SecurityHub_FindingAggregator.json index 5350c237d..61d84ba51 100644 --- a/internal/service/cloudformation/schemas/AWS_SecurityHub_FindingAggregator.json +++ b/internal/service/cloudformation/schemas/AWS_SecurityHub_FindingAggregator.json @@ -15,7 +15,7 @@ "pattern": "arn:aws\\S*:securityhub:\\S*" }, "RegionLinkingMode": { - "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", + "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", "type": "string", "enum": [ "ALL_REGIONS", @@ -24,7 +24,7 @@ ] }, "Regions": { - "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", + "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", "type": "array", "insertionOrder": false, "uniqueItems": true, diff --git a/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_BrowserSettings.json b/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_BrowserSettings.json index 63f910c9b..284af46dc 100644 --- a/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_BrowserSettings.json +++ b/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_BrowserSettings.json @@ -142,7 +142,9 @@ }, "list": { "permissions": [ - "workspaces-web:ListBrowserSettings" + "workspaces-web:ListBrowserSettings", + "kms:Decrypt", + "kms:DescribeKey" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_IpAccessSettings.json b/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_IpAccessSettings.json index a4312f36b..407422da9 100644 --- a/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_IpAccessSettings.json +++ b/internal/service/cloudformation/schemas/AWS_WorkSpacesWeb_IpAccessSettings.json @@ -187,7 +187,9 @@ }, "list": { "permissions": [ - "workspaces-web:ListIpAccessSettings" + "workspaces-web:ListIpAccessSettings", + "kms:Decrypt", + "kms:DescribeKey" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_WorkSpaces_ConnectionAlias.json b/internal/service/cloudformation/schemas/AWS_WorkSpaces_ConnectionAlias.json index 58eb0fc97..57935000a 100644 --- a/internal/service/cloudformation/schemas/AWS_WorkSpaces_ConnectionAlias.json +++ b/internal/service/cloudformation/schemas/AWS_WorkSpaces_ConnectionAlias.json @@ -55,6 +55,7 @@ "type": "array", "maxLength": 25, "minLength": 1, + "insertionOrder": false, "items": { "$ref": "#/definitions/ConnectionAliasAssociation" } @@ -82,6 +83,7 @@ "Tags": { "type": "array", "uniqueItems": false, + "insertionOrder": false, "items": { "$ref": "#/definitions/Tag" } @@ -106,17 +108,24 @@ "handlers": { "create": { "permissions": [ - "workspaces:CreateConnectionAlias" + "workspaces:CreateConnectionAlias", + "workspaces:CreateTags", + "workspaces:DescribeConnectionAliases", + "workspaces:DescribeTags" ] }, "read": { "permissions": [ - "workspaces:DescribeConnectionAliases" + "workspaces:DescribeConnectionAliases", + "workspaces:DescribeTags" ] }, "delete": { "permissions": [ - "workspaces:DeleteConnectionAlias" + "workspaces:DeleteConnectionAlias", + "workspaces:DeleteTags", + "workspaces:DescribeTags", + "workspaces:DescribeConnectionAliases" ] } }