diff --git a/.go-version b/.go-version index 013173af5..87b26e8b1 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.22.6 +1.22.7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fbed2892..f7e363238 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ BUG FIXES: * Prevent resource drift when default value is not set on a `required` attribute during refresh ([#2022](https://github.com/hashicorp/terraform-provider-awscc/pull/2022)) +FEATURES: + +* **New Data Source:** `awscc_connect_agent_status` +* **New Data Source:** `awscc_connect_user_hierarchy_structure` +* **New Data Source:** `awscc_datazone_environment_actions` +* **New Resource:** `awscc_connect_agent_status` +* **New Resource:** `awscc_connect_user_hierarchy_structure` +* **New Resource:** `awscc_datazone_environment_actions` + ## 1.14.0 (September 12, 2024) FEATURES: diff --git a/docs/data-sources/connect_agent_status.md b/docs/data-sources/connect_agent_status.md new file mode 100644 index 000000000..89182f4cf --- /dev/null +++ b/docs/data-sources/connect_agent_status.md @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_agent_status Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Connect::AgentStatus +--- + +# awscc_connect_agent_status (Data Source) + +Data Source schema for AWS::Connect::AgentStatus + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `agent_status_arn` (String) The Amazon Resource Name (ARN) of the agent status. +- `description` (String) The description of the status. +- `display_order` (Number) The display order of the status. +- `instance_arn` (String) The identifier of the Amazon Connect instance. +- `last_modified_region` (String) Last modified region. +- `last_modified_time` (Number) Last modified time. +- `name` (String) The name of the status. +- `reset_order_number` (Boolean) A number indicating the reset order of the agent status. +- `state` (String) The state of the status. +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `type` (String) The type of agent status. + + +### 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 -. diff --git a/docs/data-sources/connect_user_hierarchy_structure.md b/docs/data-sources/connect_user_hierarchy_structure.md new file mode 100644 index 000000000..892b918c2 --- /dev/null +++ b/docs/data-sources/connect_user_hierarchy_structure.md @@ -0,0 +1,86 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_user_hierarchy_structure Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Connect::UserHierarchyStructure +--- + +# awscc_connect_user_hierarchy_structure (Data Source) + +Data Source schema for AWS::Connect::UserHierarchyStructure + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `instance_arn` (String) The identifier of the Amazon Connect instance. +- `user_hierarchy_structure` (Attributes) Information about the hierarchy structure. (see [below for nested schema](#nestedatt--user_hierarchy_structure)) +- `user_hierarchy_structure_arn` (String) The identifier of the User Hierarchy Structure. + + +### Nested Schema for `user_hierarchy_structure` + +Read-Only: + +- `level_five` (Attributes) Information about level five. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_five)) +- `level_four` (Attributes) Information about level four. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_four)) +- `level_one` (Attributes) Information about level one. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_one)) +- `level_three` (Attributes) Information about level three. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_three)) +- `level_two` (Attributes) Information about level two. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_two)) + + +### Nested Schema for `user_hierarchy_structure.level_five` + +Read-Only: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_four` + +Read-Only: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_one` + +Read-Only: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_three` + +Read-Only: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_two` + +Read-Only: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. diff --git a/docs/data-sources/datazone_environment.md b/docs/data-sources/datazone_environment.md index 45903a46a..fd3f83e8e 100644 --- a/docs/data-sources/datazone_environment.md +++ b/docs/data-sources/datazone_environment.md @@ -28,10 +28,13 @@ Data Source schema for AWS::DataZone::Environment - `description` (String) The description of the Amazon DataZone environment. - `domain_id` (String) The identifier of the Amazon DataZone domain in which the environment is created. - `domain_identifier` (String) The identifier of the Amazon DataZone domain in which the environment would be created. +- `environment_account_identifier` (String) The AWS account in which the Amazon DataZone environment is created. +- `environment_account_region` (String) The AWS region in which the Amazon DataZone environment is created. - `environment_blueprint_id` (String) The ID of the blueprint with which the Amazon DataZone environment was created. - `environment_id` (String) The ID of the Amazon DataZone environment. - `environment_profile_id` (String) The ID of the environment profile with which the Amazon DataZone environment was created. - `environment_profile_identifier` (String) The ID of the environment profile with which the Amazon DataZone environment would be created. +- `environment_role_arn` (String) Environment role arn for custom aws environment permissions - `glossary_terms` (List of String) The glossary terms that can be used in the Amazon DataZone environment. - `name` (String) The name of the environment. - `project_id` (String) The ID of the Amazon DataZone project in which the environment is created. diff --git a/docs/data-sources/datazone_environment_actions.md b/docs/data-sources/datazone_environment_actions.md new file mode 100644 index 000000000..d0ded3bd3 --- /dev/null +++ b/docs/data-sources/datazone_environment_actions.md @@ -0,0 +1,39 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_datazone_environment_actions Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::DataZone::EnvironmentActions +--- + +# awscc_datazone_environment_actions (Data Source) + +Data Source schema for AWS::DataZone::EnvironmentActions + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `description` (String) The description of the Amazon DataZone environment action. +- `domain_id` (String) The identifier of the Amazon DataZone domain in which the environment is created. +- `domain_identifier` (String) The identifier of the Amazon DataZone domain in which the environment would be created. +- `environment_actions_id` (String) The ID of the Amazon DataZone environment action. +- `environment_id` (String) The identifier of the Amazon DataZone environment in which the action is taking place +- `environment_identifier` (String) The identifier of the Amazon DataZone environment in which the action is taking place +- `identifier` (String) The ID of the Amazon DataZone environment action. +- `name` (String) The name of the environment action. +- `parameters` (Attributes) The parameters of the environment action. (see [below for nested schema](#nestedatt--parameters)) + + +### Nested Schema for `parameters` + +Read-Only: + +- `uri` (String) The URI of the console link specified as part of the environment action. diff --git a/docs/data-sources/ec2_subnet.md b/docs/data-sources/ec2_subnet.md index 2721a3d3c..9af8cda5d 100644 --- a/docs/data-sources/ec2_subnet.md +++ b/docs/data-sources/ec2_subnet.md @@ -35,7 +35,7 @@ Data Source schema for AWS::EC2::Subnet - `ipv_4_netmask_length` (Number) An IPv4 netmask length for the subnet. - `ipv_6_cidr_block` (String) The IPv6 CIDR block. If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block. -- `ipv_6_cidr_blocks` (List of String) The IPv6 network ranges for the subnet, in CIDR notation. +- `ipv_6_cidr_blocks` (List of String) - `ipv_6_ipam_pool_id` (String) An IPv6 IPAM pool ID for the subnet. - `ipv_6_native` (Boolean) Indicates whether this is an IPv6 only subnet. For more information, see [Subnet basics](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#subnet-basics) in the *User Guide*. - `ipv_6_netmask_length` (Number) An IPv6 netmask length for the subnet. diff --git a/docs/data-sources/iotfleetwise_campaign.md b/docs/data-sources/iotfleetwise_campaign.md index 8165e3a0c..5971d4a4a 100644 --- a/docs/data-sources/iotfleetwise_campaign.md +++ b/docs/data-sources/iotfleetwise_campaign.md @@ -37,6 +37,7 @@ Data Source schema for AWS::IoTFleetWise::Campaign - `priority` (Number) - `signal_catalog_arn` (String) - `signals_to_collect` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_collect)) +- `signals_to_fetch` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_fetch)) - `spooling_mode` (String) - `start_time` (String) - `status` (String) @@ -120,6 +121,43 @@ Read-Only: - `name` (String) + +### Nested Schema for `signals_to_fetch` + +Read-Only: + +- `actions` (List of String) +- `condition_language_version` (Number) +- `fully_qualified_name` (String) +- `signal_fetch_config` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config)) + + +### Nested Schema for `signals_to_fetch.signal_fetch_config` + +Read-Only: + +- `condition_based` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config--condition_based)) +- `time_based` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config--time_based)) + + +### Nested Schema for `signals_to_fetch.signal_fetch_config.condition_based` + +Read-Only: + +- `condition_expression` (String) +- `trigger_mode` (String) + + + +### Nested Schema for `signals_to_fetch.signal_fetch_config.time_based` + +Read-Only: + +- `execution_frequency_ms` (Number) + + + + ### Nested Schema for `tags` diff --git a/docs/data-sources/lambda_code_signing_config.md b/docs/data-sources/lambda_code_signing_config.md index da22af660..edeeea905 100644 --- a/docs/data-sources/lambda_code_signing_config.md +++ b/docs/data-sources/lambda_code_signing_config.md @@ -26,6 +26,7 @@ Data Source schema for AWS::Lambda::CodeSigningConfig - `code_signing_config_id` (String) A unique identifier for CodeSigningConfig resource - `code_signing_policies` (Attributes) Policies to control how to act if a signature is invalid (see [below for nested schema](#nestedatt--code_signing_policies)) - `description` (String) A description of the CodeSigningConfig +- `tags` (Attributes Set) A list of tags to apply to CodeSigningConfig resource (see [below for nested schema](#nestedatt--tags)) ### Nested Schema for `allowed_publishers` @@ -41,3 +42,12 @@ Read-Only: Read-Only: - `untrusted_artifact_on_deployment` (String) Indicates how Lambda operations involve updating the code artifact will operate. Default to Warn if not provided + + + +### 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 -. diff --git a/docs/data-sources/lambda_event_source_mapping.md b/docs/data-sources/lambda_event_source_mapping.md index 9ff83cc93..d871ba0de 100644 --- a/docs/data-sources/lambda_event_source_mapping.md +++ b/docs/data-sources/lambda_event_source_mapping.md @@ -42,6 +42,7 @@ Data Source schema for AWS::Lambda::EventSourceMapping + *Amazon Managed Streaming for Apache Kafka* ? The ARN of the cluster or the ARN of the VPC connection (for [cross-account event source mappings](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#msk-multi-vpc)). + *Amazon MQ* ? The ARN of the broker. + *Amazon DocumentDB* ? The ARN of the DocumentDB change stream. +- `event_source_mapping_arn` (String) - `event_source_mapping_id` (String) - `filter_criteria` (Attributes) An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html). (see [below for nested schema](#nestedatt--filter_criteria)) - `function_name` (String) The name or ARN of the Lambda function. @@ -52,9 +53,9 @@ Data Source schema for AWS::Lambda::EventSourceMapping + *Partial ARN* ? ``123456789012:function:MyFunction``. The length constraint applies only to the full ARN. If you specify only the function name, it's limited to 64 characters in length. -- `function_response_types` (List of String) (Streams and SQS) A list of current response type enums applied to the event source mapping. +- `function_response_types` (List of String) (Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping. Valid Values: ``ReportBatchItemFailures`` -- `kms_key_arn` (String) +- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics). - `maximum_batching_window_in_seconds` (Number) The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function. *Default (, , event sources)*: 0 *Default (, Kafka, , event sources)*: 500 ms @@ -73,6 +74,7 @@ Data Source schema for AWS::Lambda::EventSourceMapping + *TRIM_HORIZON* - Process all available records. + *AT_TIMESTAMP* - Specify a time from which to start reading records. - `starting_position_timestamp` (Number) With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future. +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) - `topics` (List of String) The name of the Kafka topic. - `tumbling_window_in_seconds` (Number) (Kinesis and DynamoDB Streams only) The duration in seconds of a processing window for DynamoDB and Kinesis Streams event sources. A value of 0 seconds indicates no tumbling window. @@ -177,3 +179,12 @@ Read-Only: + ``CLIENT_CERTIFICATE_TLS_AUTH`` ? (Amazon MSK, self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the certificate chain (X.509 PEM), private key (PKCS#8 PEM), and private key password (optional) used for mutual TLS authentication of your MSK/Apache Kafka brokers. + ``SERVER_ROOT_CA_CERTIFICATE`` ? (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the root CA certificate (X.509 PEM) used for TLS encryption of your Apache Kafka brokers. - `uri` (String) The value for your chosen configuration in ``Type``. For example: ``"URI": "arn:aws:secretsmanager:us-east-1:01234567890:secret:MyBrokerSecretName"``. + + + +### 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 -. diff --git a/docs/data-sources/s3express_directory_bucket.md b/docs/data-sources/s3express_directory_bucket.md index c9cc1a40f..e9c9f0f5f 100644 --- a/docs/data-sources/s3express_directory_bucket.md +++ b/docs/data-sources/s3express_directory_bucket.md @@ -22,6 +22,8 @@ Data Source schema for AWS::S3Express::DirectoryBucket ### Read-Only - `arn` (String) Returns the Amazon Resource Name (ARN) of the specified bucket. +- `availability_zone_name` (String) Returns the code for the Availability Zone where the directory bucket was created. +- `bucket_encryption` (String) - `bucket_name` (String) Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name. - `data_redundancy` (String) Specifies the number of Availability Zone that's used for redundancy for the bucket. - `location_name` (String) Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'. diff --git a/docs/data-sources/synthetics_canary.md b/docs/data-sources/synthetics_canary.md index 205a8d193..e8ca01c96 100644 --- a/docs/data-sources/synthetics_canary.md +++ b/docs/data-sources/synthetics_canary.md @@ -29,6 +29,7 @@ Data Source schema for AWS::Synthetics::Canary - `execution_role_arn` (String) Lambda Execution role used to run your canaries - `failure_retention_period` (Number) Retention period of failed canary runs represented in number of days - `name` (String) Name of the canary. +- `resources_to_replicate_tags` (List of String) List of resources which canary tags should be replicated to. - `run_config` (Attributes) Provide canary run configuration (see [below for nested schema](#nestedatt--run_config)) - `runtime_version` (String) Runtime version of Synthetics Library - `schedule` (Attributes) Frequency to run your canaries (see [below for nested schema](#nestedatt--schedule)) diff --git a/docs/resources/connect_agent_status.md b/docs/resources/connect_agent_status.md new file mode 100644 index 000000000..df8bf2b74 --- /dev/null +++ b/docs/resources/connect_agent_status.md @@ -0,0 +1,53 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_agent_status Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Connect::AgentStatus +--- + +# awscc_connect_agent_status (Resource) + +Resource Type definition for AWS::Connect::AgentStatus + + + + +## Schema + +### Required + +- `instance_arn` (String) The identifier of the Amazon Connect instance. +- `name` (String) The name of the status. +- `state` (String) The state of the status. + +### Optional + +- `description` (String) The description of the status. +- `display_order` (Number) The display order of the status. +- `reset_order_number` (Boolean) A number indicating the reset order of the agent status. +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `type` (String) The type of agent status. + +### Read-Only + +- `agent_status_arn` (String) The Amazon Resource Name (ARN) of the agent status. +- `id` (String) Uniquely identifies the resource. +- `last_modified_region` (String) Last modified region. +- `last_modified_time` (Number) Last modified time. + + +### Nested Schema for `tags` + +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 -. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_connect_agent_status.example "agent_status_arn" +``` diff --git a/docs/resources/connect_user_hierarchy_structure.md b/docs/resources/connect_user_hierarchy_structure.md new file mode 100644 index 000000000..316950321 --- /dev/null +++ b/docs/resources/connect_user_hierarchy_structure.md @@ -0,0 +1,97 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_user_hierarchy_structure Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Connect::UserHierarchyStructure +--- + +# awscc_connect_user_hierarchy_structure (Resource) + +Resource Type definition for AWS::Connect::UserHierarchyStructure + + + + +## Schema + +### Required + +- `instance_arn` (String) The identifier of the Amazon Connect instance. + +### Optional + +- `user_hierarchy_structure` (Attributes) Information about the hierarchy structure. (see [below for nested schema](#nestedatt--user_hierarchy_structure)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `user_hierarchy_structure_arn` (String) The identifier of the User Hierarchy Structure. + + +### Nested Schema for `user_hierarchy_structure` + +Optional: + +- `level_five` (Attributes) Information about level five. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_five)) +- `level_four` (Attributes) Information about level four. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_four)) +- `level_one` (Attributes) Information about level one. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_one)) +- `level_three` (Attributes) Information about level three. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_three)) +- `level_two` (Attributes) Information about level two. (see [below for nested schema](#nestedatt--user_hierarchy_structure--level_two)) + + +### Nested Schema for `user_hierarchy_structure.level_five` + +Optional: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_four` + +Optional: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_one` + +Optional: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_three` + +Optional: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + + + +### Nested Schema for `user_hierarchy_structure.level_two` + +Optional: + +- `hierarchy_level_arn` (String) The Amazon Resource Name (ARN) of the hierarchy level. +- `hierarchy_level_id` (String) The identifier of the hierarchy level. +- `name` (String) The name of the hierarchy level. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_connect_user_hierarchy_structure.example "user_hierarchy_structure_arn" +``` diff --git a/docs/resources/datazone_environment.md b/docs/resources/datazone_environment.md index 6e50dfb07..a9ab7d8b8 100644 --- a/docs/resources/datazone_environment.md +++ b/docs/resources/datazone_environment.md @@ -18,13 +18,16 @@ Definition of AWS::DataZone::Environment Resource Type ### Required - `domain_identifier` (String) The identifier of the Amazon DataZone domain in which the environment would be created. -- `environment_profile_identifier` (String) The ID of the environment profile with which the Amazon DataZone environment would be created. - `name` (String) The name of the environment. - `project_identifier` (String) The ID of the Amazon DataZone project in which the environment would be created. ### Optional - `description` (String) The description of the Amazon DataZone environment. +- `environment_account_identifier` (String) The AWS account in which the Amazon DataZone environment is created. +- `environment_account_region` (String) The AWS region in which the Amazon DataZone environment is created. +- `environment_profile_identifier` (String) The ID of the environment profile with which the Amazon DataZone environment would be created. +- `environment_role_arn` (String) Environment role arn for custom aws environment permissions - `glossary_terms` (List of String) The glossary terms that can be used in the Amazon DataZone environment. - `user_parameters` (Attributes List) The user parameters of the Amazon DataZone environment. (see [below for nested schema](#nestedatt--user_parameters)) diff --git a/docs/resources/datazone_environment_actions.md b/docs/resources/datazone_environment_actions.md new file mode 100644 index 000000000..eecc9d897 --- /dev/null +++ b/docs/resources/datazone_environment_actions.md @@ -0,0 +1,50 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_datazone_environment_actions Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::DataZone::EnvironmentActions Resource Type +--- + +# awscc_datazone_environment_actions (Resource) + +Definition of AWS::DataZone::EnvironmentActions Resource Type + + + + +## Schema + +### Required + +- `name` (String) The name of the environment action. + +### Optional + +- `description` (String) The description of the Amazon DataZone environment action. +- `domain_identifier` (String) The identifier of the Amazon DataZone domain in which the environment would be created. +- `environment_identifier` (String) The identifier of the Amazon DataZone environment in which the action is taking place +- `identifier` (String) The ID of the Amazon DataZone environment action. +- `parameters` (Attributes) The parameters of the environment action. (see [below for nested schema](#nestedatt--parameters)) + +### Read-Only + +- `domain_id` (String) The identifier of the Amazon DataZone domain in which the environment is created. +- `environment_actions_id` (String) The ID of the Amazon DataZone environment action. +- `environment_id` (String) The identifier of the Amazon DataZone environment in which the action is taking place +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `parameters` + +Optional: + +- `uri` (String) The URI of the console link specified as part of the environment action. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_datazone_environment_actions.example "domain_id|environment_id|id" +``` diff --git a/docs/resources/ec2_subnet.md b/docs/resources/ec2_subnet.md index 5306f74d8..4bff837be 100644 --- a/docs/resources/ec2_subnet.md +++ b/docs/resources/ec2_subnet.md @@ -73,7 +73,7 @@ resource "awscc_ec2_subnet" "main" { ### Read-Only - `id` (String) Uniquely identifies the resource. -- `ipv_6_cidr_blocks` (List of String) The IPv6 network ranges for the subnet, in CIDR notation. +- `ipv_6_cidr_blocks` (List of String) - `network_acl_association_id` (String) - `subnet_id` (String) diff --git a/docs/resources/iotfleetwise_campaign.md b/docs/resources/iotfleetwise_campaign.md index 5dbccada0..ede3029e8 100644 --- a/docs/resources/iotfleetwise_campaign.md +++ b/docs/resources/iotfleetwise_campaign.md @@ -34,6 +34,7 @@ Definition of AWS::IoTFleetWise::Campaign Resource Type - `post_trigger_collection_duration` (Number) - `priority` (Number) - `signals_to_collect` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_collect)) +- `signals_to_fetch` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_fetch)) - `spooling_mode` (String) - `start_time` (String) - `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) @@ -123,6 +124,43 @@ Optional: - `name` (String) + +### Nested Schema for `signals_to_fetch` + +Optional: + +- `actions` (List of String) +- `condition_language_version` (Number) +- `fully_qualified_name` (String) +- `signal_fetch_config` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config)) + + +### Nested Schema for `signals_to_fetch.signal_fetch_config` + +Optional: + +- `condition_based` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config--condition_based)) +- `time_based` (Attributes) (see [below for nested schema](#nestedatt--signals_to_fetch--signal_fetch_config--time_based)) + + +### Nested Schema for `signals_to_fetch.signal_fetch_config.condition_based` + +Optional: + +- `condition_expression` (String) +- `trigger_mode` (String) + + + +### Nested Schema for `signals_to_fetch.signal_fetch_config.time_based` + +Optional: + +- `execution_frequency_ms` (Number) + + + + ### Nested Schema for `tags` diff --git a/docs/resources/lambda_code_signing_config.md b/docs/resources/lambda_code_signing_config.md index 248a0cc2d..066d0b343 100644 --- a/docs/resources/lambda_code_signing_config.md +++ b/docs/resources/lambda_code_signing_config.md @@ -23,6 +23,7 @@ Resource Type definition for AWS::Lambda::CodeSigningConfig. - `code_signing_policies` (Attributes) Policies to control how to act if a signature is invalid (see [below for nested schema](#nestedatt--code_signing_policies)) - `description` (String) A description of the CodeSigningConfig +- `tags` (Attributes Set) A list of tags to apply to CodeSigningConfig resource (see [below for nested schema](#nestedatt--tags)) ### Read-Only @@ -45,6 +46,15 @@ Optional: - `untrusted_artifact_on_deployment` (String) Indicates how Lambda operations involve updating the code artifact will operate. Default to Warn if not provided + + +### Nested Schema for `tags` + +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 -. + ## Import Import is supported using the following syntax: diff --git a/docs/resources/lambda_event_source_mapping b/docs/resources/lambda_event_source_mapping index a0d31b9f3..d84b4aeda 100644 --- a/docs/resources/lambda_event_source_mapping +++ b/docs/resources/lambda_event_source_mapping @@ -83,9 +83,9 @@ resource "awscc_lambda_permission" "example" { + *Amazon MQ* ? The ARN of the broker. + *Amazon DocumentDB* ? The ARN of the DocumentDB change stream. - `filter_criteria` (Attributes) An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html). (see [below for nested schema](#nestedatt--filter_criteria)) -- `function_response_types` (List of String) (Streams and SQS) A list of current response type enums applied to the event source mapping. +- `function_response_types` (List of String) (Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping. Valid Values: ``ReportBatchItemFailures`` -- `kms_key_arn` (String) +- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics). - `maximum_batching_window_in_seconds` (Number) The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function. *Default (, , event sources)*: 0 *Default (, Kafka, , event sources)*: 500 ms @@ -104,11 +104,13 @@ resource "awscc_lambda_permission" "example" { + *TRIM_HORIZON* - Process all available records. + *AT_TIMESTAMP* - Specify a time from which to start reading records. - `starting_position_timestamp` (Number) With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future. +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) - `topics` (List of String) The name of the Kafka topic. - `tumbling_window_in_seconds` (Number) (Kinesis and DynamoDB Streams only) The duration in seconds of a processing window for DynamoDB and Kinesis Streams event sources. A value of 0 seconds indicates no tumbling window. ### Read-Only +- `event_source_mapping_arn` (String) - `event_source_mapping_id` (String) - `id` (String) Uniquely identifies the resource. @@ -214,6 +216,15 @@ Optional: + ``SERVER_ROOT_CA_CERTIFICATE`` ? (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the root CA certificate (X.509 PEM) used for TLS encryption of your Apache Kafka brokers. - `uri` (String) The value for your chosen configuration in ``Type``. For example: ``"URI": "arn:aws:secretsmanager:us-east-1:01234567890:secret:MyBrokerSecretName"``. + + +### Nested Schema for `tags` + +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 -. + ## Import Import is supported using the following syntax: diff --git a/docs/resources/lambda_event_source_mapping.md b/docs/resources/lambda_event_source_mapping.md index 508c958f6..d59d62cca 100644 --- a/docs/resources/lambda_event_source_mapping.md +++ b/docs/resources/lambda_event_source_mapping.md @@ -60,9 +60,9 @@ The ``AWS::Lambda::EventSourceMapping`` resource creates a mapping between an ev + *Amazon MQ* ? The ARN of the broker. + *Amazon DocumentDB* ? The ARN of the DocumentDB change stream. - `filter_criteria` (Attributes) An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html). (see [below for nested schema](#nestedatt--filter_criteria)) -- `function_response_types` (List of String) (Streams and SQS) A list of current response type enums applied to the event source mapping. +- `function_response_types` (List of String) (Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping. Valid Values: ``ReportBatchItemFailures`` -- `kms_key_arn` (String) +- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics). - `maximum_batching_window_in_seconds` (Number) The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function. *Default (, , event sources)*: 0 *Default (, Kafka, , event sources)*: 500 ms @@ -81,11 +81,13 @@ The ``AWS::Lambda::EventSourceMapping`` resource creates a mapping between an ev + *TRIM_HORIZON* - Process all available records. + *AT_TIMESTAMP* - Specify a time from which to start reading records. - `starting_position_timestamp` (Number) With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future. +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) - `topics` (List of String) The name of the Kafka topic. - `tumbling_window_in_seconds` (Number) (Kinesis and DynamoDB Streams only) The duration in seconds of a processing window for DynamoDB and Kinesis Streams event sources. A value of 0 seconds indicates no tumbling window. ### Read-Only +- `event_source_mapping_arn` (String) - `event_source_mapping_id` (String) - `id` (String) Uniquely identifies the resource. @@ -191,6 +193,15 @@ Optional: + ``SERVER_ROOT_CA_CERTIFICATE`` ? (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the root CA certificate (X.509 PEM) used for TLS encryption of your Apache Kafka brokers. - `uri` (String) The value for your chosen configuration in ``Type``. For example: ``"URI": "arn:aws:secretsmanager:us-east-1:01234567890:secret:MyBrokerSecretName"``. + + +### Nested Schema for `tags` + +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 -. + ## Import Import is supported using the following syntax: diff --git a/docs/resources/s3express_directory_bucket.md b/docs/resources/s3express_directory_bucket.md index 7781a44bd..acf11c821 100644 --- a/docs/resources/s3express_directory_bucket.md +++ b/docs/resources/s3express_directory_bucket.md @@ -31,11 +31,13 @@ resource "awscc_s3express_directory_bucket" "example" { ### Optional +- `bucket_encryption` (String) - `bucket_name` (String) Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name. ### Read-Only - `arn` (String) Returns the Amazon Resource Name (ARN) of the specified bucket. +- `availability_zone_name` (String) Returns the code for the Availability Zone where the directory bucket was created. - `id` (String) Uniquely identifies the resource. ## Import diff --git a/docs/resources/synthetics_canary.md b/docs/resources/synthetics_canary.md index 3a999c838..6eab47d33 100644 --- a/docs/resources/synthetics_canary.md +++ b/docs/resources/synthetics_canary.md @@ -29,6 +29,7 @@ Resource Type definition for AWS::Synthetics::Canary - `artifact_config` (Attributes) Provide artifact configuration (see [below for nested schema](#nestedatt--artifact_config)) - `delete_lambda_resources_on_canary_deletion` (Boolean) Deletes associated lambda resources created by Synthetics if set to True. Default is False - `failure_retention_period` (Number) Retention period of failed canary runs represented in number of days +- `resources_to_replicate_tags` (List of String) List of resources which canary tags should be replicated to. - `run_config` (Attributes) Provide canary run configuration (see [below for nested schema](#nestedatt--run_config)) - `start_canary_after_creation` (Boolean) Runs canary if set to True. Default is False - `success_retention_period` (Number) Retention period of successful canary runs represented in number of days diff --git a/examples/resources/awscc_connect_agent_status/import.sh b/examples/resources/awscc_connect_agent_status/import.sh new file mode 100644 index 000000000..bfe44ccc5 --- /dev/null +++ b/examples/resources/awscc_connect_agent_status/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_connect_agent_status.example "agent_status_arn" \ No newline at end of file diff --git a/examples/resources/awscc_connect_user_hierarchy_structure/import.sh b/examples/resources/awscc_connect_user_hierarchy_structure/import.sh new file mode 100644 index 000000000..3e244f8b1 --- /dev/null +++ b/examples/resources/awscc_connect_user_hierarchy_structure/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_connect_user_hierarchy_structure.example "user_hierarchy_structure_arn" \ No newline at end of file diff --git a/examples/resources/awscc_datazone_environment_actions/import.sh b/examples/resources/awscc_datazone_environment_actions/import.sh new file mode 100644 index 000000000..cca0a6a57 --- /dev/null +++ b/examples/resources/awscc_datazone_environment_actions/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_datazone_environment_actions.example "domain_id|environment_id|id" \ No newline at end of file diff --git a/go.mod b/go.mod index b75796199..af57155e8 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-awscc -go 1.22.6 +go 1.22.7 require ( github.com/aws/aws-sdk-go-v2 v1.30.5 diff --git a/internal/aws/connect/agent_status_resource_gen.go b/internal/aws/connect/agent_status_resource_gen.go new file mode 100644 index 000000000..992bcd899 --- /dev/null +++ b/internal/aws/connect/agent_status_resource_gen.go @@ -0,0 +1,337 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package connect + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "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_connect_agent_status", agentStatusResource) +} + +// agentStatusResource returns the Terraform awscc_connect_agent_status resource. +// This Terraform resource corresponds to the CloudFormation AWS::Connect::AgentStatus resource. +func agentStatusResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AgentStatusArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the agent status.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-state/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "agent_status_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the agent status.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "The description of the status.", + // "maxLength": 250, + // "minLength": 1, + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the status.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 250), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DisplayOrder + // CloudFormation resource type schema: + // + // { + // "description": "The display order of the status.", + // "maximum": 50, + // "minimum": 1, + // "type": "integer" + // } + "display_order": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The display order of the status.", + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.Between(1, 50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: LastModifiedRegion + // CloudFormation resource type schema: + // + // { + // "description": "Last modified region.", + // "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + // "type": "string" + // } + "last_modified_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Last modified region.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LastModifiedTime + // CloudFormation resource type schema: + // + // { + // "description": "Last modified time.", + // "type": "number" + // } + "last_modified_time": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Last modified time.", + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the status.", + // "maxLength": 127, + // "minLength": 1, + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the status.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 127), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: ResetOrderNumber + // CloudFormation resource type schema: + // + // { + // "description": "A number indicating the reset order of the agent status.", + // "type": "boolean" + // } + "reset_order_number": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A number indicating the reset order of the agent status.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: State + // CloudFormation resource type schema: + // + // { + // "description": "The state of the status.", + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + "state": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The state of the status.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ENABLED", + "DISABLED", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "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 -.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "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 -.", + // "maxLength": 256, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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*/ + 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 -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Optional: true, + Computed: true, + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeAtMost(50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + // CloudFormation resource type schema: + // + // { + // "description": "The type of agent status.", + // "enum": [ + // "ROUTABLE", + // "CUSTOM", + // "OFFLINE" + // ], + // "type": "string" + // } + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of agent status.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ROUTABLE", + "CUSTOM", + "OFFLINE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Connect::AgentStatus", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::AgentStatus").WithTerraformTypeName("awscc_connect_agent_status") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "agent_status_arn": "AgentStatusArn", + "description": "Description", + "display_order": "DisplayOrder", + "instance_arn": "InstanceArn", + "key": "Key", + "last_modified_region": "LastModifiedRegion", + "last_modified_time": "LastModifiedTime", + "name": "Name", + "reset_order_number": "ResetOrderNumber", + "state": "State", + "tags": "Tags", + "type": "Type", + "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/connect/agent_status_resource_gen_test.go b/internal/aws/connect/agent_status_resource_gen_test.go new file mode 100644 index 000000000..fd35a1d35 --- /dev/null +++ b/internal/aws/connect/agent_status_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 connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectAgentStatus_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::AgentStatus", "awscc_connect_agent_status", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/connect/agent_status_singular_data_source_gen.go b/internal/aws/connect/agent_status_singular_data_source_gen.go new file mode 100644 index 000000000..0935f7f14 --- /dev/null +++ b/internal/aws/connect/agent_status_singular_data_source_gen.go @@ -0,0 +1,243 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package connect + +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_connect_agent_status", agentStatusDataSource) +} + +// agentStatusDataSource returns the Terraform awscc_connect_agent_status data source. +// This Terraform data source corresponds to the CloudFormation AWS::Connect::AgentStatus resource. +func agentStatusDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AgentStatusArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the agent status.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-state/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "agent_status_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the agent status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "The description of the status.", + // "maxLength": 250, + // "minLength": 1, + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DisplayOrder + // CloudFormation resource type schema: + // + // { + // "description": "The display order of the status.", + // "maximum": 50, + // "minimum": 1, + // "type": "integer" + // } + "display_order": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The display order of the status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LastModifiedRegion + // CloudFormation resource type schema: + // + // { + // "description": "Last modified region.", + // "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + // "type": "string" + // } + "last_modified_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Last modified region.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LastModifiedTime + // CloudFormation resource type schema: + // + // { + // "description": "Last modified time.", + // "type": "number" + // } + "last_modified_time": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Last modified time.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the status.", + // "maxLength": 127, + // "minLength": 1, + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResetOrderNumber + // CloudFormation resource type schema: + // + // { + // "description": "A number indicating the reset order of the agent status.", + // "type": "boolean" + // } + "reset_order_number": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A number indicating the reset order of the agent status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: State + // CloudFormation resource type schema: + // + // { + // "description": "The state of the status.", + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + "state": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The state of the status.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "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 -.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "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 -.", + // "maxLength": 256, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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 -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + // CloudFormation resource type schema: + // + // { + // "description": "The type of agent status.", + // "enum": [ + // "ROUTABLE", + // "CUSTOM", + // "OFFLINE" + // ], + // "type": "string" + // } + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of agent status.", + 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::Connect::AgentStatus", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::AgentStatus").WithTerraformTypeName("awscc_connect_agent_status") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "agent_status_arn": "AgentStatusArn", + "description": "Description", + "display_order": "DisplayOrder", + "instance_arn": "InstanceArn", + "key": "Key", + "last_modified_region": "LastModifiedRegion", + "last_modified_time": "LastModifiedTime", + "name": "Name", + "reset_order_number": "ResetOrderNumber", + "state": "State", + "tags": "Tags", + "type": "Type", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/connect/agent_status_singular_data_source_gen_test.go b/internal/aws/connect/agent_status_singular_data_source_gen_test.go new file mode 100644 index 000000000..bdf25ec76 --- /dev/null +++ b/internal/aws/connect/agent_status_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 connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectAgentStatusDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::AgentStatus", "awscc_connect_agent_status", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSConnectAgentStatusDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::AgentStatus", "awscc_connect_agent_status", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/connect/user_hierarchy_structure_resource_gen.go b/internal/aws/connect/user_hierarchy_structure_resource_gen.go new file mode 100644 index 000000000..9d411b867 --- /dev/null +++ b/internal/aws/connect/user_hierarchy_structure_resource_gen.go @@ -0,0 +1,466 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package connect + +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/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_connect_user_hierarchy_structure", userHierarchyStructureResource) +} + +// userHierarchyStructureResource returns the Terraform awscc_connect_user_hierarchy_structure resource. +// This Terraform resource corresponds to the CloudFormation AWS::Connect::UserHierarchyStructure resource. +func userHierarchyStructureResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserHierarchyStructure + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Information about the hierarchy structure.", + // "properties": { + // "LevelFive": { + // "additionalProperties": false, + // "description": "Information about level five.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelFour": { + // "additionalProperties": false, + // "description": "Information about level four.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelOne": { + // "additionalProperties": false, + // "description": "Information about level one.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelThree": { + // "additionalProperties": false, + // "description": "Information about level three.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelTwo": { + // "additionalProperties": false, + // "description": "Information about level two.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "user_hierarchy_structure": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelFive + "level_five": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level five.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LevelFour + "level_four": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level four.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LevelOne + "level_one": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level one.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LevelThree + "level_three": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level three.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LevelTwo + "level_two": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level two.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about the hierarchy structure.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserHierarchyStructureArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the User Hierarchy Structure.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/user-hierarchy-structure", + // "type": "string" + // } + "user_hierarchy_structure_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the User Hierarchy Structure.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Connect::UserHierarchyStructure", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::UserHierarchyStructure").WithTerraformTypeName("awscc_connect_user_hierarchy_structure") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "hierarchy_level_arn": "HierarchyLevelArn", + "hierarchy_level_id": "HierarchyLevelId", + "instance_arn": "InstanceArn", + "level_five": "LevelFive", + "level_four": "LevelFour", + "level_one": "LevelOne", + "level_three": "LevelThree", + "level_two": "LevelTwo", + "name": "Name", + "user_hierarchy_structure": "UserHierarchyStructure", + "user_hierarchy_structure_arn": "UserHierarchyStructureArn", + }) + + 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/connect/user_hierarchy_structure_resource_gen_test.go b/internal/aws/connect/user_hierarchy_structure_resource_gen_test.go new file mode 100644 index 000000000..94ae3f917 --- /dev/null +++ b/internal/aws/connect/user_hierarchy_structure_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 connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectUserHierarchyStructure_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::UserHierarchyStructure", "awscc_connect_user_hierarchy_structure", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/connect/user_hierarchy_structure_singular_data_source_gen.go b/internal/aws/connect/user_hierarchy_structure_singular_data_source_gen.go new file mode 100644 index 000000000..5f1708489 --- /dev/null +++ b/internal/aws/connect/user_hierarchy_structure_singular_data_source_gen.go @@ -0,0 +1,327 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package connect + +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_connect_user_hierarchy_structure", userHierarchyStructureDataSource) +} + +// userHierarchyStructureDataSource returns the Terraform awscc_connect_user_hierarchy_structure data source. +// This Terraform data source corresponds to the CloudFormation AWS::Connect::UserHierarchyStructure resource. +func userHierarchyStructureDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserHierarchyStructure + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Information about the hierarchy structure.", + // "properties": { + // "LevelFive": { + // "additionalProperties": false, + // "description": "Information about level five.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelFour": { + // "additionalProperties": false, + // "description": "Information about level four.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelOne": { + // "additionalProperties": false, + // "description": "Information about level one.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelThree": { + // "additionalProperties": false, + // "description": "Information about level three.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "LevelTwo": { + // "additionalProperties": false, + // "description": "Information about level two.", + // "properties": { + // "HierarchyLevelArn": { + // "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + // "type": "string" + // }, + // "HierarchyLevelId": { + // "description": "The identifier of the hierarchy level.", + // "type": "string" + // }, + // "Name": { + // "description": "The name of the hierarchy level.", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "user_hierarchy_structure": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelFive + "level_five": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level five.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LevelFour + "level_four": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level four.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LevelOne + "level_one": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level one.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LevelThree + "level_three": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level three.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LevelTwo + "level_two": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HierarchyLevelArn + "hierarchy_level_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchyLevelId + "hierarchy_level_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hierarchy level.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about level two.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Information about the hierarchy structure.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserHierarchyStructureArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the User Hierarchy Structure.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/user-hierarchy-structure", + // "type": "string" + // } + "user_hierarchy_structure_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the User Hierarchy Structure.", + 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::Connect::UserHierarchyStructure", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::UserHierarchyStructure").WithTerraformTypeName("awscc_connect_user_hierarchy_structure") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "hierarchy_level_arn": "HierarchyLevelArn", + "hierarchy_level_id": "HierarchyLevelId", + "instance_arn": "InstanceArn", + "level_five": "LevelFive", + "level_four": "LevelFour", + "level_one": "LevelOne", + "level_three": "LevelThree", + "level_two": "LevelTwo", + "name": "Name", + "user_hierarchy_structure": "UserHierarchyStructure", + "user_hierarchy_structure_arn": "UserHierarchyStructureArn", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/connect/user_hierarchy_structure_singular_data_source_gen_test.go b/internal/aws/connect/user_hierarchy_structure_singular_data_source_gen_test.go new file mode 100644 index 000000000..fb05969b9 --- /dev/null +++ b/internal/aws/connect/user_hierarchy_structure_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 connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectUserHierarchyStructureDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::UserHierarchyStructure", "awscc_connect_user_hierarchy_structure", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSConnectUserHierarchyStructureDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::UserHierarchyStructure", "awscc_connect_user_hierarchy_structure", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/datazone/environment_actions_resource_gen.go b/internal/aws/datazone/environment_actions_resource_gen.go new file mode 100644 index 000000000..8d8fa5f7f --- /dev/null +++ b/internal/aws/datazone/environment_actions_resource_gen.go @@ -0,0 +1,273 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package datazone + +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/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_datazone_environment_actions", environmentActionsResource) +} + +// environmentActionsResource returns the Terraform awscc_datazone_environment_actions resource. +// This Terraform resource corresponds to the CloudFormation AWS::DataZone::EnvironmentActions resource. +func environmentActionsResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "The description of the Amazon DataZone environment action.", + // "maxLength": 2048, + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the Amazon DataZone environment action.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(2048), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DomainId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone domain in which the environment is created.", + // "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "domain_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone domain in which the environment is created.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DomainIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", + // "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "domain_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone domain in which the environment would be created.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^dzd[-_][a-zA-Z0-9_-]{1,36}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // DomainIdentifier is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: EnvironmentId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone environment in which the action is taking place", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EnvironmentIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone environment in which the action is taking place", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 36), + stringvalidator.RegexMatches(regexp.MustCompile("[a-zA-Z0-9_-]{1,36}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // EnvironmentIdentifier is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon DataZone environment action.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_actions_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon DataZone environment action.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Identifier + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon DataZone environment action.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon DataZone environment action.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 36), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9_-]{1,36}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // Identifier is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the environment action.", + // "maxLength": 64, + // "minLength": 1, + // "pattern": "^[\\w -]+$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the environment action.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 64), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\w -]+$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Parameters + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The parameters of the environment action.", + // "properties": { + // "Uri": { + // "description": "The URI of the console link specified as part of the environment action.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Uri + "uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URI of the console link specified as part of the environment action.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The parameters of the environment action.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.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::DataZone::EnvironmentActions Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DataZone::EnvironmentActions").WithTerraformTypeName("awscc_datazone_environment_actions") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "domain_id": "DomainId", + "domain_identifier": "DomainIdentifier", + "environment_actions_id": "Id", + "environment_id": "EnvironmentId", + "environment_identifier": "EnvironmentIdentifier", + "identifier": "Identifier", + "name": "Name", + "parameters": "Parameters", + "uri": "Uri", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EnvironmentIdentifier", + "/properties/DomainIdentifier", + "/properties/Identifier", + }) + 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/datazone/environment_actions_resource_gen_test.go b/internal/aws/datazone/environment_actions_resource_gen_test.go new file mode 100644 index 000000000..5cf64f99b --- /dev/null +++ b/internal/aws/datazone/environment_actions_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 datazone_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDataZoneEnvironmentActions_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataZone::EnvironmentActions", "awscc_datazone_environment_actions", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/datazone/environment_actions_singular_data_source_gen.go b/internal/aws/datazone/environment_actions_singular_data_source_gen.go new file mode 100644 index 000000000..70b45c9b2 --- /dev/null +++ b/internal/aws/datazone/environment_actions_singular_data_source_gen.go @@ -0,0 +1,194 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package datazone + +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_datazone_environment_actions", environmentActionsDataSource) +} + +// environmentActionsDataSource returns the Terraform awscc_datazone_environment_actions data source. +// This Terraform data source corresponds to the CloudFormation AWS::DataZone::EnvironmentActions resource. +func environmentActionsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "The description of the Amazon DataZone environment action.", + // "maxLength": 2048, + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the Amazon DataZone environment action.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DomainId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone domain in which the environment is created.", + // "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "domain_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone domain in which the environment is created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DomainIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", + // "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "domain_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone domain in which the environment would be created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EnvironmentId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone environment in which the action is taking place", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EnvironmentIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon DataZone environment in which the action is taking place", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon DataZone environment action.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "environment_actions_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon DataZone environment action.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Identifier + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon DataZone environment action.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "type": "string" + // } + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon DataZone environment action.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the environment action.", + // "maxLength": 64, + // "minLength": 1, + // "pattern": "^[\\w -]+$", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the environment action.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Parameters + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The parameters of the environment action.", + // "properties": { + // "Uri": { + // "description": "The URI of the console link specified as part of the environment action.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Uri + "uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URI of the console link specified as part of the environment action.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The parameters of the environment action.", + 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::DataZone::EnvironmentActions", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DataZone::EnvironmentActions").WithTerraformTypeName("awscc_datazone_environment_actions") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "domain_id": "DomainId", + "domain_identifier": "DomainIdentifier", + "environment_actions_id": "Id", + "environment_id": "EnvironmentId", + "environment_identifier": "EnvironmentIdentifier", + "identifier": "Identifier", + "name": "Name", + "parameters": "Parameters", + "uri": "Uri", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/datazone/environment_actions_singular_data_source_gen_test.go b/internal/aws/datazone/environment_actions_singular_data_source_gen_test.go new file mode 100644 index 000000000..d8f5de4f0 --- /dev/null +++ b/internal/aws/datazone/environment_actions_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 datazone_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDataZoneEnvironmentActionsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataZone::EnvironmentActions", "awscc_datazone_environment_actions", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSDataZoneEnvironmentActionsDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataZone::EnvironmentActions", "awscc_datazone_environment_actions", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/datazone/environment_resource_gen.go b/internal/aws/datazone/environment_resource_gen.go index b72e98e4b..a47dbc4e2 100644 --- a/internal/aws/datazone/environment_resource_gen.go +++ b/internal/aws/datazone/environment_resource_gen.go @@ -144,6 +144,48 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ // DomainIdentifier is a write-only property. }, /*END ATTRIBUTE*/ + // Property: EnvironmentAccountIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The AWS account in which the Amazon DataZone environment is created.", + // "pattern": "^\\d{12}$", + // "type": "string" + // } + "environment_account_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS account in which the Amazon DataZone environment is created.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^\\d{12}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // EnvironmentAccountIdentifier is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: EnvironmentAccountRegion + // CloudFormation resource type schema: + // + // { + // "description": "The AWS region in which the Amazon DataZone environment is created.", + // "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + // "type": "string" + // } + "environment_account_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS region in which the Amazon DataZone environment is created.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[a-z]{2}-[a-z]{4,10}-\\d$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // EnvironmentAccountRegion is a write-only property. + }, /*END ATTRIBUTE*/ // Property: EnvironmentBlueprintId // CloudFormation resource type schema: // @@ -164,7 +206,7 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The ID of the environment profile with which the Amazon DataZone environment was created.", - // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "pattern": "^[a-zA-Z0-9_-]{0,36}$", // "type": "string" // } "environment_profile_id": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -179,20 +221,38 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The ID of the environment profile with which the Amazon DataZone environment would be created.", - // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "pattern": "^[a-zA-Z0-9_-]{0,36}$", // "type": "string" // } "environment_profile_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The ID of the environment profile with which the Amazon DataZone environment would be created.", - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9_-]{1,36}$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9_-]{0,36}$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ // EnvironmentProfileIdentifier is a write-only property. }, /*END ATTRIBUTE*/ + // Property: EnvironmentRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "Environment role arn for custom aws environment permissions", + // "type": "string" + // } + "environment_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Environment role arn for custom aws environment permissions", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // EnvironmentRoleArn is a write-only property. + }, /*END ATTRIBUTE*/ // Property: GlossaryTerms // CloudFormation resource type schema: // @@ -433,10 +493,13 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { "description": "Description", "domain_id": "DomainId", "domain_identifier": "DomainIdentifier", + "environment_account_identifier": "EnvironmentAccountIdentifier", + "environment_account_region": "EnvironmentAccountRegion", "environment_blueprint_id": "EnvironmentBlueprintId", "environment_id": "Id", "environment_profile_id": "EnvironmentProfileId", "environment_profile_identifier": "EnvironmentProfileIdentifier", + "environment_role_arn": "EnvironmentRoleArn", "glossary_terms": "GlossaryTerms", "name": "Name", "project_id": "ProjectId", @@ -452,6 +515,9 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { "/properties/EnvironmentProfileIdentifier", "/properties/ProjectIdentifier", "/properties/DomainIdentifier", + "/properties/EnvironmentAccountIdentifier", + "/properties/EnvironmentAccountRegion", + "/properties/EnvironmentRoleArn", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/datazone/environment_singular_data_source_gen.go b/internal/aws/datazone/environment_singular_data_source_gen.go index 4d103de0e..3a9629c7a 100644 --- a/internal/aws/datazone/environment_singular_data_source_gen.go +++ b/internal/aws/datazone/environment_singular_data_source_gen.go @@ -108,6 +108,30 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The identifier of the Amazon DataZone domain in which the environment would be created.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: EnvironmentAccountIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The AWS account in which the Amazon DataZone environment is created.", + // "pattern": "^\\d{12}$", + // "type": "string" + // } + "environment_account_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS account in which the Amazon DataZone environment is created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EnvironmentAccountRegion + // CloudFormation resource type schema: + // + // { + // "description": "The AWS region in which the Amazon DataZone environment is created.", + // "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + // "type": "string" + // } + "environment_account_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS region in which the Amazon DataZone environment is created.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: EnvironmentBlueprintId // CloudFormation resource type schema: // @@ -125,7 +149,7 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The ID of the environment profile with which the Amazon DataZone environment was created.", - // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "pattern": "^[a-zA-Z0-9_-]{0,36}$", // "type": "string" // } "environment_profile_id": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -137,13 +161,24 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The ID of the environment profile with which the Amazon DataZone environment would be created.", - // "pattern": "^[a-zA-Z0-9_-]{1,36}$", + // "pattern": "^[a-zA-Z0-9_-]{0,36}$", // "type": "string" // } "environment_profile_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The ID of the environment profile with which the Amazon DataZone environment would be created.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: EnvironmentRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "Environment role arn for custom aws environment permissions", + // "type": "string" + // } + "environment_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Environment role arn for custom aws environment permissions", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: GlossaryTerms // CloudFormation resource type schema: // @@ -328,10 +363,13 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { "description": "Description", "domain_id": "DomainId", "domain_identifier": "DomainIdentifier", + "environment_account_identifier": "EnvironmentAccountIdentifier", + "environment_account_region": "EnvironmentAccountRegion", "environment_blueprint_id": "EnvironmentBlueprintId", "environment_id": "Id", "environment_profile_id": "EnvironmentProfileId", "environment_profile_identifier": "EnvironmentProfileIdentifier", + "environment_role_arn": "EnvironmentRoleArn", "glossary_terms": "GlossaryTerms", "name": "Name", "project_id": "ProjectId", diff --git a/internal/aws/dms/instance_profile_resource_gen.go b/internal/aws/dms/instance_profile_resource_gen.go index 07e46e861..9d0d15915 100644 --- a/internal/aws/dms/instance_profile_resource_gen.go +++ b/internal/aws/dms/instance_profile_resource_gen.go @@ -171,7 +171,6 @@ func instanceProfileResource(ctx context.Context) (resource.Resource, error) { // "description": "The property describes a network type for the instance profile.", // "enum": [ // "IPV4", - // "IPV6", // "DUAL" // ], // "type": "string" @@ -183,7 +182,6 @@ func instanceProfileResource(ctx context.Context) (resource.Resource, error) { Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "IPV4", - "IPV6", "DUAL", ), }, /*END VALIDATORS*/ diff --git a/internal/aws/dms/instance_profile_singular_data_source_gen.go b/internal/aws/dms/instance_profile_singular_data_source_gen.go index 3869d9b5f..09855e5db 100644 --- a/internal/aws/dms/instance_profile_singular_data_source_gen.go +++ b/internal/aws/dms/instance_profile_singular_data_source_gen.go @@ -121,7 +121,6 @@ func instanceProfileDataSource(ctx context.Context) (datasource.DataSource, erro // "description": "The property describes a network type for the instance profile.", // "enum": [ // "IPV4", - // "IPV6", // "DUAL" // ], // "type": "string" diff --git a/internal/aws/ec2/subnet_resource_gen.go b/internal/aws/ec2/subnet_resource_gen.go index 87b882299..fddb06516 100644 --- a/internal/aws/ec2/subnet_resource_gen.go +++ b/internal/aws/ec2/subnet_resource_gen.go @@ -178,7 +178,7 @@ func subnetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The IPv6 network ranges for the subnet, in CIDR notation.", + // "description": "", // "items": { // "type": "string" // }, @@ -187,7 +187,7 @@ func subnetResource(ctx context.Context) (resource.Resource, error) { // } "ipv_6_cidr_blocks": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IPv6 network ranges for the subnet, in CIDR notation.", + Description: "", Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), diff --git a/internal/aws/ec2/subnet_singular_data_source_gen.go b/internal/aws/ec2/subnet_singular_data_source_gen.go index 2deeb5047..d17babf39 100644 --- a/internal/aws/ec2/subnet_singular_data_source_gen.go +++ b/internal/aws/ec2/subnet_singular_data_source_gen.go @@ -126,7 +126,7 @@ func subnetDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The IPv6 network ranges for the subnet, in CIDR notation.", + // "description": "", // "items": { // "type": "string" // }, @@ -135,7 +135,7 @@ func subnetDataSource(ctx context.Context) (datasource.DataSource, error) { // } "ipv_6_cidr_blocks": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IPv6 network ranges for the subnet, in CIDR notation.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: Ipv6IpamPoolId diff --git a/internal/aws/ec2/volume_resource_gen.go b/internal/aws/ec2/volume_resource_gen.go index d64c75b63..4d9edd5fc 100644 --- a/internal/aws/ec2/volume_resource_gen.go +++ b/internal/aws/ec2/volume_resource_gen.go @@ -168,7 +168,7 @@ func volumeResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/ec2/volume_singular_data_source_gen.go b/internal/aws/ec2/volume_singular_data_source_gen.go index b1d5766ee..8ca82415c 100644 --- a/internal/aws/ec2/volume_singular_data_source_gen.go +++ b/internal/aws/ec2/volume_singular_data_source_gen.go @@ -129,7 +129,7 @@ func volumeDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + // "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", // "properties": { // "Key": { // "description": "The tag key.", diff --git a/internal/aws/fms/policy_resource_gen.go b/internal/aws/fms/policy_resource_gen.go index 45d69d386..9b13f46d1 100644 --- a/internal/aws/fms/policy_resource_gen.go +++ b/internal/aws/fms/policy_resource_gen.go @@ -558,7 +558,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { // }, // "Protocol": { // "description": "Protocol.", - // "pattern": "^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", + // "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", // "type": "string" // }, // "RuleAction": { @@ -654,7 +654,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { // }, // "Protocol": { // "description": "Protocol.", - // "pattern": "^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", + // "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", // "type": "string" // }, // "RuleAction": { @@ -893,7 +893,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -1067,7 +1067,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/fms/policy_singular_data_source_gen.go b/internal/aws/fms/policy_singular_data_source_gen.go index dc60545aa..5736c2dcd 100644 --- a/internal/aws/fms/policy_singular_data_source_gen.go +++ b/internal/aws/fms/policy_singular_data_source_gen.go @@ -420,7 +420,7 @@ func policyDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "Protocol": { // "description": "Protocol.", - // "pattern": "^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", + // "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", // "type": "string" // }, // "RuleAction": { @@ -516,7 +516,7 @@ func policyDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "Protocol": { // "description": "Protocol.", - // "pattern": "^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", + // "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", // "type": "string" // }, // "RuleAction": { diff --git a/internal/aws/iotfleetwise/campaign_resource_gen.go b/internal/aws/iotfleetwise/campaign_resource_gen.go index fe84124b8..5a4261b3f 100644 --- a/internal/aws/iotfleetwise/campaign_resource_gen.go +++ b/internal/aws/iotfleetwise/campaign_resource_gen.go @@ -117,7 +117,7 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "properties": { // "PeriodMs": { - // "maximum": 60000, + // "maximum": 86400000, // "minimum": 10000, // "type": "number" // } @@ -198,7 +198,7 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.Float64{ /*START VALIDATORS*/ - float64validator.Between(10000.000000, 60000.000000), + float64validator.Between(10000.000000, 86400000.000000), fwvalidators.NotNullFloat64(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ @@ -763,6 +763,214 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: SignalsToFetch + // CloudFormation resource type schema: + // + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Actions": { + // "items": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 1, + // "type": "array" + // }, + // "ConditionLanguageVersion": { + // "maximum": 1, + // "minimum": 1, + // "type": "number" + // }, + // "FullyQualifiedName": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_.]+$", + // "type": "string" + // }, + // "SignalFetchConfig": { + // "properties": { + // "ConditionBased": { + // "additionalProperties": false, + // "properties": { + // "ConditionExpression": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "TriggerMode": { + // "enum": [ + // "ALWAYS", + // "RISING_EDGE" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ConditionExpression", + // "TriggerMode" + // ], + // "type": "object" + // }, + // "TimeBased": { + // "additionalProperties": false, + // "properties": { + // "ExecutionFrequencyMs": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "ExecutionFrequencyMs" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "Actions", + // "FullyQualifiedName", + // "SignalFetchConfig" + // ], + // "type": "object" + // }, + // "maxItems": 10, + // "minItems": 0, + // "type": "array" + // } + "signals_to_fetch": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Actions + "actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 5), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 2048), + ), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ConditionLanguageVersion + "condition_language_version": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 1.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FullyQualifiedName + "fully_qualified_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 150), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9_.]+$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SignalFetchConfig + "signal_fetch_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConditionBased + "condition_based": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConditionExpression + "condition_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TriggerMode + "trigger_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ALWAYS", + "RISING_EDGE", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TimeBased + "time_based": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExecutionFrequencyMs + "execution_frequency_ms": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + 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*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(0, 10), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: SpoolingMode // CloudFormation resource type schema: // @@ -928,11 +1136,14 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "action": "Action", + "actions": "Actions", "arn": "Arn", "bucket_arn": "BucketArn", "collection_scheme": "CollectionScheme", "compression": "Compression", + "condition_based": "ConditionBased", "condition_based_collection_scheme": "ConditionBasedCollectionScheme", + "condition_expression": "ConditionExpression", "condition_language_version": "ConditionLanguageVersion", "creation_time": "CreationTime", "data_destination_configs": "DataDestinationConfigs", @@ -940,9 +1151,11 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { "data_format": "DataFormat", "description": "Description", "diagnostics_mode": "DiagnosticsMode", + "execution_frequency_ms": "ExecutionFrequencyMs", "execution_role_arn": "ExecutionRoleArn", "expiry_time": "ExpiryTime", "expression": "Expression", + "fully_qualified_name": "FullyQualifiedName", "key": "Key", "last_modification_time": "LastModificationTime", "max_sample_count": "MaxSampleCount", @@ -957,13 +1170,16 @@ func campaignResource(ctx context.Context) (resource.Resource, error) { "priority": "Priority", "s3_config": "S3Config", "signal_catalog_arn": "SignalCatalogArn", + "signal_fetch_config": "SignalFetchConfig", "signals_to_collect": "SignalsToCollect", + "signals_to_fetch": "SignalsToFetch", "spooling_mode": "SpoolingMode", "start_time": "StartTime", "status": "Status", "storage_compression_format": "StorageCompressionFormat", "tags": "Tags", "target_arn": "TargetArn", + "time_based": "TimeBased", "time_based_collection_scheme": "TimeBasedCollectionScheme", "timestream_config": "TimestreamConfig", "timestream_table_arn": "TimestreamTableArn", diff --git a/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go b/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go index 376aedc8f..33c460552 100644 --- a/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go +++ b/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go @@ -87,7 +87,7 @@ func campaignDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "properties": { // "PeriodMs": { - // "maximum": 60000, + // "maximum": 86400000, // "minimum": 10000, // "type": "number" // } @@ -477,6 +477,137 @@ func campaignDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END NESTED OBJECT*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: SignalsToFetch + // CloudFormation resource type schema: + // + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Actions": { + // "items": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 1, + // "type": "array" + // }, + // "ConditionLanguageVersion": { + // "maximum": 1, + // "minimum": 1, + // "type": "number" + // }, + // "FullyQualifiedName": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_.]+$", + // "type": "string" + // }, + // "SignalFetchConfig": { + // "properties": { + // "ConditionBased": { + // "additionalProperties": false, + // "properties": { + // "ConditionExpression": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "TriggerMode": { + // "enum": [ + // "ALWAYS", + // "RISING_EDGE" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ConditionExpression", + // "TriggerMode" + // ], + // "type": "object" + // }, + // "TimeBased": { + // "additionalProperties": false, + // "properties": { + // "ExecutionFrequencyMs": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "ExecutionFrequencyMs" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "Actions", + // "FullyQualifiedName", + // "SignalFetchConfig" + // ], + // "type": "object" + // }, + // "maxItems": 10, + // "minItems": 0, + // "type": "array" + // } + "signals_to_fetch": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Actions + "actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ConditionLanguageVersion + "condition_language_version": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FullyQualifiedName + "fully_qualified_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SignalFetchConfig + "signal_fetch_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConditionBased + "condition_based": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ConditionExpression + "condition_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TriggerMode + "trigger_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TimeBased + "time_based": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExecutionFrequencyMs + "execution_frequency_ms": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: SpoolingMode // CloudFormation resource type schema: // @@ -590,11 +721,14 @@ func campaignDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "action": "Action", + "actions": "Actions", "arn": "Arn", "bucket_arn": "BucketArn", "collection_scheme": "CollectionScheme", "compression": "Compression", + "condition_based": "ConditionBased", "condition_based_collection_scheme": "ConditionBasedCollectionScheme", + "condition_expression": "ConditionExpression", "condition_language_version": "ConditionLanguageVersion", "creation_time": "CreationTime", "data_destination_configs": "DataDestinationConfigs", @@ -602,9 +736,11 @@ func campaignDataSource(ctx context.Context) (datasource.DataSource, error) { "data_format": "DataFormat", "description": "Description", "diagnostics_mode": "DiagnosticsMode", + "execution_frequency_ms": "ExecutionFrequencyMs", "execution_role_arn": "ExecutionRoleArn", "expiry_time": "ExpiryTime", "expression": "Expression", + "fully_qualified_name": "FullyQualifiedName", "key": "Key", "last_modification_time": "LastModificationTime", "max_sample_count": "MaxSampleCount", @@ -619,13 +755,16 @@ func campaignDataSource(ctx context.Context) (datasource.DataSource, error) { "priority": "Priority", "s3_config": "S3Config", "signal_catalog_arn": "SignalCatalogArn", + "signal_fetch_config": "SignalFetchConfig", "signals_to_collect": "SignalsToCollect", + "signals_to_fetch": "SignalsToFetch", "spooling_mode": "SpoolingMode", "start_time": "StartTime", "status": "Status", "storage_compression_format": "StorageCompressionFormat", "tags": "Tags", "target_arn": "TargetArn", + "time_based": "TimeBased", "time_based_collection_scheme": "TimeBasedCollectionScheme", "timestream_config": "TimestreamConfig", "timestream_table_arn": "TimestreamTableArn", diff --git a/internal/aws/iotfleetwise/signal_catalog_resource_gen.go b/internal/aws/iotfleetwise/signal_catalog_resource_gen.go index 86e010873..725cfb8bb 100644 --- a/internal/aws/iotfleetwise/signal_catalog_resource_gen.go +++ b/internal/aws/iotfleetwise/signal_catalog_resource_gen.go @@ -425,7 +425,7 @@ func signalCatalogResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, - // "maxItems": 500, + // "maxItems": 5000, // "minItems": 1, // "type": "array", // "uniqueItems": true @@ -821,7 +821,7 @@ func signalCatalogResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.Set{ /*START VALIDATORS*/ - setvalidator.SizeBetween(1, 500), + setvalidator.SizeBetween(1, 5000), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ setplanmodifier.UseStateForUnknown(), diff --git a/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go index 26f635c08..a3584f5ac 100644 --- a/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go +++ b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go @@ -369,7 +369,7 @@ func signalCatalogDataSource(ctx context.Context) (datasource.DataSource, error) // }, // "type": "object" // }, - // "maxItems": 500, + // "maxItems": 5000, // "minItems": 1, // "type": "array", // "uniqueItems": true diff --git a/internal/aws/lambda/code_signing_config_resource_gen.go b/internal/aws/lambda/code_signing_config_resource_gen.go index d28e231b9..3359bfa29 100644 --- a/internal/aws/lambda/code_signing_config_resource_gen.go +++ b/internal/aws/lambda/code_signing_config_resource_gen.go @@ -15,12 +15,14 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema" "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" ) func init() { @@ -173,6 +175,73 @@ func codeSigningConfigResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags to apply to CodeSigningConfig resource", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "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 -.", + // "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 -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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*/ + 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 -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + }, /*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 to apply to CodeSigningConfig resource", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ // Corresponds to CloudFormation primaryIdentifier. @@ -200,8 +269,11 @@ func codeSigningConfigResource(ctx context.Context) (resource.Resource, error) { "code_signing_config_id": "CodeSigningConfigId", "code_signing_policies": "CodeSigningPolicies", "description": "Description", + "key": "Key", "signing_profile_version_arns": "SigningProfileVersionArns", + "tags": "Tags", "untrusted_artifact_on_deployment": "UntrustedArtifactOnDeployment", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/lambda/code_signing_config_singular_data_source_gen.go b/internal/aws/lambda/code_signing_config_singular_data_source_gen.go index 46b374173..cb8584940 100644 --- a/internal/aws/lambda/code_signing_config_singular_data_source_gen.go +++ b/internal/aws/lambda/code_signing_config_singular_data_source_gen.go @@ -130,6 +130,54 @@ func codeSigningConfigDataSource(ctx context.Context) (datasource.DataSource, er Description: "A description of the CodeSigningConfig", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "A list of tags to apply to CodeSigningConfig resource", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "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 -.", + // "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 -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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 -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of tags to apply to CodeSigningConfig resource", + Computed: true, + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ attributes["id"] = schema.StringAttribute{ @@ -152,8 +200,11 @@ func codeSigningConfigDataSource(ctx context.Context) (datasource.DataSource, er "code_signing_config_id": "CodeSigningConfigId", "code_signing_policies": "CodeSigningPolicies", "description": "Description", + "key": "Key", "signing_profile_version_arns": "SigningProfileVersionArns", + "tags": "Tags", "untrusted_artifact_on_deployment": "UntrustedArtifactOnDeployment", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/lambda/event_source_mapping_resource_gen.go b/internal/aws/lambda/event_source_mapping_resource_gen.go index 0f3087067..c2f98c70b 100644 --- a/internal/aws/lambda/event_source_mapping_resource_gen.go +++ b/internal/aws/lambda/event_source_mapping_resource_gen.go @@ -20,11 +20,13 @@ import ( "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/setplanmodifier" "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" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" ) func init() { @@ -286,6 +288,23 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: EventSourceMappingArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "maxLength": 120, + // "minLength": 85, + // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:event-source-mapping:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + // "type": "string" + // } + "event_source_mapping_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: FilterCriteria // CloudFormation resource type schema: // @@ -379,7 +398,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // CloudFormation resource type schema: // // { - // "description": "(Streams and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + // "description": "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", // "items": { // "enum": [ // "ReportBatchItemFailures" @@ -393,7 +412,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // } "function_response_types": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "(Streams and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + Description: "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", Optional: true, Computed: true, Validators: []validator.List{ /*START VALIDATORS*/ @@ -429,14 +448,14 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // CloudFormation resource type schema: // // { - // "description": "", + // "description": "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", // "maxLength": 2048, // "minLength": 12, // "pattern": "(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()", // "type": "string" // } "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -837,6 +856,74 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) float64planmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "", + // "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 -.", + // "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 -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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*/ + 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 -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Topics // CloudFormation resource type schema: // @@ -924,6 +1011,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) "enabled": "Enabled", "endpoints": "Endpoints", "event_source_arn": "EventSourceArn", + "event_source_mapping_arn": "EventSourceMappingArn", "event_source_mapping_id": "Id", "filter_criteria": "FilterCriteria", "filters": "Filters", @@ -931,6 +1019,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) "function_name": "FunctionName", "function_response_types": "FunctionResponseTypes", "kafka_bootstrap_servers": "KafkaBootstrapServers", + "key": "Key", "kms_key_arn": "KmsKeyArn", "maximum_batching_window_in_seconds": "MaximumBatchingWindowInSeconds", "maximum_concurrency": "MaximumConcurrency", @@ -946,10 +1035,12 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) "source_access_configurations": "SourceAccessConfigurations", "starting_position": "StartingPosition", "starting_position_timestamp": "StartingPositionTimestamp", + "tags": "Tags", "topics": "Topics", "tumbling_window_in_seconds": "TumblingWindowInSeconds", "type": "Type", "uri": "URI", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/lambda/event_source_mapping_singular_data_source_gen.go b/internal/aws/lambda/event_source_mapping_singular_data_source_gen.go index 5db124ce1..2cd447789 100644 --- a/internal/aws/lambda/event_source_mapping_singular_data_source_gen.go +++ b/internal/aws/lambda/event_source_mapping_singular_data_source_gen.go @@ -193,6 +193,20 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e Description: "The Amazon Resource Name (ARN) of the event source.\n + *Amazon Kinesis* ? The ARN of the data stream or a stream consumer.\n + *Amazon DynamoDB Streams* ? The ARN of the stream.\n + *Amazon Simple Queue Service* ? The ARN of the queue.\n + *Amazon Managed Streaming for Apache Kafka* ? The ARN of the cluster or the ARN of the VPC connection (for [cross-account event source mappings](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#msk-multi-vpc)).\n + *Amazon MQ* ? The ARN of the broker.\n + *Amazon DocumentDB* ? The ARN of the DocumentDB change stream.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: EventSourceMappingArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "maxLength": 120, + // "minLength": 85, + // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:event-source-mapping:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + // "type": "string" + // } + "event_source_mapping_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: FilterCriteria // CloudFormation resource type schema: // @@ -262,7 +276,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // CloudFormation resource type schema: // // { - // "description": "(Streams and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + // "description": "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", // "items": { // "enum": [ // "ReportBatchItemFailures" @@ -276,7 +290,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // } "function_response_types": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "(Streams and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + Description: "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Id @@ -297,14 +311,14 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // CloudFormation resource type schema: // // { - // "description": "", + // "description": "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", // "maxLength": 2048, // "minLength": 12, // "pattern": "(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()", // "type": "string" // } "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", Computed: true, }, /*END ATTRIBUTE*/ // Property: MaximumBatchingWindowInSeconds @@ -566,6 +580,55 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e Description: "With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "", + // "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 -.", + // "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 -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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 -.", + 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 -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Topics // CloudFormation resource type schema: // @@ -629,6 +692,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e "enabled": "Enabled", "endpoints": "Endpoints", "event_source_arn": "EventSourceArn", + "event_source_mapping_arn": "EventSourceMappingArn", "event_source_mapping_id": "Id", "filter_criteria": "FilterCriteria", "filters": "Filters", @@ -636,6 +700,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e "function_name": "FunctionName", "function_response_types": "FunctionResponseTypes", "kafka_bootstrap_servers": "KafkaBootstrapServers", + "key": "Key", "kms_key_arn": "KmsKeyArn", "maximum_batching_window_in_seconds": "MaximumBatchingWindowInSeconds", "maximum_concurrency": "MaximumConcurrency", @@ -651,10 +716,12 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e "source_access_configurations": "SourceAccessConfigurations", "starting_position": "StartingPosition", "starting_position_timestamp": "StartingPositionTimestamp", + "tags": "Tags", "topics": "Topics", "tumbling_window_in_seconds": "TumblingWindowInSeconds", "type": "Type", "uri": "URI", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/s3express/directory_bucket_resource_gen.go b/internal/aws/s3express/directory_bucket_resource_gen.go index 6c7ad71ef..6fd0d0ceb 100644 --- a/internal/aws/s3express/directory_bucket_resource_gen.go +++ b/internal/aws/s3express/directory_bucket_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" @@ -41,6 +42,34 @@ func directoryBucketResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: AvailabilityZoneName + // CloudFormation resource type schema: + // + // { + // "description": "Returns the code for the Availability Zone where the directory bucket was created.", + // "examples": [ + // "us-east-1f" + // ], + // "type": "string" + // } + "availability_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Returns the code for the Availability Zone where the directory bucket was created.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BucketEncryption + // CloudFormation resource type schema: + // {} + "bucket_encryption": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: BucketName // CloudFormation resource type schema: // @@ -121,16 +150,18 @@ func directoryBucketResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::S3Express::DirectoryBucket").WithTerraformTypeName("awscc_s3express_directory_bucket") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "bucket_name": "BucketName", - "data_redundancy": "DataRedundancy", - "location_name": "LocationName", + "arn": "Arn", + "availability_zone_name": "AvailabilityZoneName", + "bucket_encryption": "BucketEncryption", + "bucket_name": "BucketName", + "data_redundancy": "DataRedundancy", + "location_name": "LocationName", }) - opts = opts.IsImmutableType(true) - opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + opts = opts.WithUpdateTimeoutInMinutes(0) + v, err := generic.NewResource(ctx, opts...) if err != nil { diff --git a/internal/aws/s3express/directory_bucket_singular_data_source_gen.go b/internal/aws/s3express/directory_bucket_singular_data_source_gen.go index 0fe4cc4a1..d42bc1504 100644 --- a/internal/aws/s3express/directory_bucket_singular_data_source_gen.go +++ b/internal/aws/s3express/directory_bucket_singular_data_source_gen.go @@ -8,6 +8,7 @@ package s3express import ( "context" + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" "github.com/hashicorp/terraform-provider-awscc/internal/generic" @@ -33,6 +34,27 @@ func directoryBucketDataSource(ctx context.Context) (datasource.DataSource, erro Description: "Returns the Amazon Resource Name (ARN) of the specified bucket.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: AvailabilityZoneName + // CloudFormation resource type schema: + // + // { + // "description": "Returns the code for the Availability Zone where the directory bucket was created.", + // "examples": [ + // "us-east-1f" + // ], + // "type": "string" + // } + "availability_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Returns the code for the Availability Zone where the directory bucket was created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BucketEncryption + // CloudFormation resource type schema: + // {} + "bucket_encryption": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Computed: true, + }, /*END ATTRIBUTE*/ // Property: BucketName // CloudFormation resource type schema: // @@ -88,10 +110,12 @@ func directoryBucketDataSource(ctx context.Context) (datasource.DataSource, erro opts = opts.WithCloudFormationTypeName("AWS::S3Express::DirectoryBucket").WithTerraformTypeName("awscc_s3express_directory_bucket") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "bucket_name": "BucketName", - "data_redundancy": "DataRedundancy", - "location_name": "LocationName", + "arn": "Arn", + "availability_zone_name": "AvailabilityZoneName", + "bucket_encryption": "BucketEncryption", + "bucket_name": "BucketName", + "data_redundancy": "DataRedundancy", + "location_name": "LocationName", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/synthetics/canary_resource_gen.go b/internal/aws/synthetics/canary_resource_gen.go index 5ed4ea321..b1451b641 100644 --- a/internal/aws/synthetics/canary_resource_gen.go +++ b/internal/aws/synthetics/canary_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "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" @@ -271,19 +272,52 @@ func canaryResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "Name of the canary.", - // "pattern": "^[0-9a-z_\\-]{1,21}$", + // "pattern": "^[0-9a-z_\\-]{1,255}$", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Name of the canary.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^[0-9a-z_\\-]{1,21}$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^[0-9a-z_\\-]{1,255}$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ResourcesToReplicateTags + // CloudFormation resource type schema: + // + // { + // "description": "List of resources which canary tags should be replicated to.", + // "items": { + // "description": "Specifies which resources canary tags should be replicated to.", + // "enum": [ + // "lambda-function" + // ], + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // } + "resources_to_replicate_tags": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of resources which canary tags should be replicated to.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + listvalidator.ValueStringsAre( + stringvalidator.OneOf( + "lambda-function", + ), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // ResourcesToReplicateTags is a write-only property. + }, /*END ATTRIBUTE*/ // Property: RunConfig // CloudFormation resource type schema: // @@ -737,6 +771,7 @@ func canaryResource(ctx context.Context) (resource.Resource, error) { "kms_key_arn": "KmsKeyArn", "memory_in_mb": "MemoryInMB", "name": "Name", + "resources_to_replicate_tags": "ResourcesToReplicateTags", "run_config": "RunConfig", "runtime_version": "RuntimeVersion", "s3_bucket": "S3Bucket", @@ -767,6 +802,7 @@ func canaryResource(ctx context.Context) (resource.Resource, error) { "/properties/Code/Script", "/properties/DeleteLambdaResourcesOnCanaryDeletion", "/properties/StartCanaryAfterCreation", + "/properties/ResourcesToReplicateTags", "/properties/RunConfig/EnvironmentVariables", "/properties/VisualReference", }) diff --git a/internal/aws/synthetics/canary_singular_data_source_gen.go b/internal/aws/synthetics/canary_singular_data_source_gen.go index 874cfed7d..dfa6c99ab 100644 --- a/internal/aws/synthetics/canary_singular_data_source_gen.go +++ b/internal/aws/synthetics/canary_singular_data_source_gen.go @@ -206,13 +206,33 @@ func canaryDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "Name of the canary.", - // "pattern": "^[0-9a-z_\\-]{1,21}$", + // "pattern": "^[0-9a-z_\\-]{1,255}$", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Name of the canary.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ResourcesToReplicateTags + // CloudFormation resource type schema: + // + // { + // "description": "List of resources which canary tags should be replicated to.", + // "items": { + // "description": "Specifies which resources canary tags should be replicated to.", + // "enum": [ + // "lambda-function" + // ], + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // } + "resources_to_replicate_tags": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of resources which canary tags should be replicated to.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: RunConfig // CloudFormation resource type schema: // @@ -555,6 +575,7 @@ func canaryDataSource(ctx context.Context) (datasource.DataSource, error) { "kms_key_arn": "KmsKeyArn", "memory_in_mb": "MemoryInMB", "name": "Name", + "resources_to_replicate_tags": "ResourcesToReplicateTags", "run_config": "RunConfig", "runtime_version": "RuntimeVersion", "s3_bucket": "S3Bucket", diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 4c89e28eb..95c5105e3 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -10,7 +10,7 @@ meta_schema { path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json" } -# 1053 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 1057 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -984,6 +984,11 @@ 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" } @@ -1094,6 +1099,11 @@ resource_schema "aws_connect_user_hierarchy_group" { 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 @@ -1287,6 +1297,11 @@ resource_schema "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 diff --git a/internal/provider/generators/allschemas/available_schemas.2024-09-18.hcl b/internal/provider/generators/allschemas/available_schemas.2024-09-18.hcl new file mode 100644 index 000000000..b38507209 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-09-18.hcl @@ -0,0 +1,4486 @@ +# 1057 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + 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_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_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_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_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_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_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_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_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_nimblestudio_launch_profile" { + cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_streaming_image" { + cloudformation_type_name = "AWS::NimbleStudio::StreamingImage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_studio" { + cloudformation_type_name = "AWS::NimbleStudio::Studio" +} + +resource_schema "aws_nimblestudio_studio_component" { + cloudformation_type_name = "AWS::NimbleStudio::StudioComponent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_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_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 78aedee56..8b6155cbe 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -1004,6 +1004,11 @@ "identifier": ["QueryName"], "path": "./examples/resources/awscc_config_stored_query/import.sh" }, + { + "resource": "awscc_connect_agent_status", + "identifier": ["AgentStatusArn"], + "path": "./examples/resources/awscc_connect_agent_status/import.sh" + }, { "resource": "awscc_connect_approved_origin", "identifier": ["InstanceId","Origin"], @@ -1099,6 +1104,11 @@ "identifier": ["UserHierarchyGroupArn"], "path": "./examples/resources/awscc_connect_user_hierarchy_group/import.sh" }, + { + "resource": "awscc_connect_user_hierarchy_structure", + "identifier": ["UserHierarchyStructureArn"], + "path": "./examples/resources/awscc_connect_user_hierarchy_structure/import.sh" + }, { "resource": "awscc_connect_view", "identifier": ["ViewArn"], @@ -1279,6 +1289,11 @@ "identifier": ["DomainId","Id"], "path": "./examples/resources/awscc_datazone_environment/import.sh" }, + { + "resource": "awscc_datazone_environment_actions", + "identifier": ["DomainId","EnvironmentId","Id"], + "path": "./examples/resources/awscc_datazone_environment_actions/import.sh" + }, { "resource": "awscc_datazone_environment_blueprint_configuration", "identifier": ["DomainId","EnvironmentBlueprintId"], diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 59f563ac1..ab051d087 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -203,6 +203,7 @@ //go:generate go run generators/resource/main.go -resource awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config -- ../aws/config/conformance_pack_resource_gen.go ../aws/config/conformance_pack_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config -- ../aws/config/organization_conformance_pack_resource_gen.go ../aws/config/organization_conformance_pack_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_stored_query -cfschema ../service/cloudformation/schemas/AWS_Config_StoredQuery.json -package config -- ../aws/config/stored_query_resource_gen.go ../aws/config/stored_query_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_connect_agent_status -cfschema ../service/cloudformation/schemas/AWS_Connect_AgentStatus.json -package connect -- ../aws/connect/agent_status_resource_gen.go ../aws/connect/agent_status_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_approved_origin -cfschema ../service/cloudformation/schemas/AWS_Connect_ApprovedOrigin.json -package connect -- ../aws/connect/approved_origin_resource_gen.go ../aws/connect/approved_origin_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_contact_flow -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlow.json -package connect -- ../aws/connect/contact_flow_resource_gen.go ../aws/connect/contact_flow_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_contact_flow_module -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlowModule.json -package connect -- ../aws/connect/contact_flow_module_resource_gen.go ../aws/connect/contact_flow_module_resource_gen_test.go @@ -222,6 +223,7 @@ //go:generate go run generators/resource/main.go -resource awscc_connect_traffic_distribution_group -cfschema ../service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json -package connect -- ../aws/connect/traffic_distribution_group_resource_gen.go ../aws/connect/traffic_distribution_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_user -cfschema ../service/cloudformation/schemas/AWS_Connect_User.json -package connect -- ../aws/connect/user_resource_gen.go ../aws/connect/user_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_user_hierarchy_group -cfschema ../service/cloudformation/schemas/AWS_Connect_UserHierarchyGroup.json -package connect -- ../aws/connect/user_hierarchy_group_resource_gen.go ../aws/connect/user_hierarchy_group_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_connect_user_hierarchy_structure -cfschema ../service/cloudformation/schemas/AWS_Connect_UserHierarchyStructure.json -package connect -- ../aws/connect/user_hierarchy_structure_resource_gen.go ../aws/connect/user_hierarchy_structure_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_view -cfschema ../service/cloudformation/schemas/AWS_Connect_View.json -package connect -- ../aws/connect/view_resource_gen.go ../aws/connect/view_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_view_version -cfschema ../service/cloudformation/schemas/AWS_Connect_ViewVersion.json -package connect -- ../aws/connect/view_version_resource_gen.go ../aws/connect/view_version_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connectcampaigns_campaign -cfschema ../service/cloudformation/schemas/AWS_ConnectCampaigns_Campaign.json -package connectcampaigns -- ../aws/connectcampaigns/campaign_resource_gen.go ../aws/connectcampaigns/campaign_resource_gen_test.go @@ -258,6 +260,7 @@ //go:generate go run generators/resource/main.go -resource awscc_datazone_data_source -cfschema ../service/cloudformation/schemas/AWS_DataZone_DataSource.json -package datazone -- ../aws/datazone/data_source_resource_gen.go ../aws/datazone/data_source_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datazone_domain -cfschema ../service/cloudformation/schemas/AWS_DataZone_Domain.json -package datazone -- ../aws/datazone/domain_resource_gen.go ../aws/datazone/domain_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datazone_environment -cfschema ../service/cloudformation/schemas/AWS_DataZone_Environment.json -package datazone -- ../aws/datazone/environment_resource_gen.go ../aws/datazone/environment_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_datazone_environment_actions -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentActions.json -package datazone -- ../aws/datazone/environment_actions_resource_gen.go ../aws/datazone/environment_actions_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datazone_environment_blueprint_configuration -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentBlueprintConfiguration.json -package datazone -- ../aws/datazone/environment_blueprint_configuration_resource_gen.go ../aws/datazone/environment_blueprint_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datazone_environment_profile -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentProfile.json -package datazone -- ../aws/datazone/environment_profile_resource_gen.go ../aws/datazone/environment_profile_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datazone_group_profile -cfschema ../service/cloudformation/schemas/AWS_DataZone_GroupProfile.json -package datazone -- ../aws/datazone/group_profile_resource_gen.go ../aws/datazone/group_profile_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index ebf160a06..7eb0add14 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -203,6 +203,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config ../aws/config/conformance_pack_singular_data_source_gen.go ../aws/config/conformance_pack_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config ../aws/config/organization_conformance_pack_singular_data_source_gen.go ../aws/config/organization_conformance_pack_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_stored_query -cfschema ../service/cloudformation/schemas/AWS_Config_StoredQuery.json -package config ../aws/config/stored_query_singular_data_source_gen.go ../aws/config/stored_query_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_agent_status -cfschema ../service/cloudformation/schemas/AWS_Connect_AgentStatus.json -package connect ../aws/connect/agent_status_singular_data_source_gen.go ../aws/connect/agent_status_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_approved_origin -cfschema ../service/cloudformation/schemas/AWS_Connect_ApprovedOrigin.json -package connect ../aws/connect/approved_origin_singular_data_source_gen.go ../aws/connect/approved_origin_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_contact_flow -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlow.json -package connect ../aws/connect/contact_flow_singular_data_source_gen.go ../aws/connect/contact_flow_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_contact_flow_module -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlowModule.json -package connect ../aws/connect/contact_flow_module_singular_data_source_gen.go ../aws/connect/contact_flow_module_singular_data_source_gen_test.go @@ -222,6 +223,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_traffic_distribution_group -cfschema ../service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json -package connect ../aws/connect/traffic_distribution_group_singular_data_source_gen.go ../aws/connect/traffic_distribution_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_user -cfschema ../service/cloudformation/schemas/AWS_Connect_User.json -package connect ../aws/connect/user_singular_data_source_gen.go ../aws/connect/user_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_user_hierarchy_group -cfschema ../service/cloudformation/schemas/AWS_Connect_UserHierarchyGroup.json -package connect ../aws/connect/user_hierarchy_group_singular_data_source_gen.go ../aws/connect/user_hierarchy_group_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_user_hierarchy_structure -cfschema ../service/cloudformation/schemas/AWS_Connect_UserHierarchyStructure.json -package connect ../aws/connect/user_hierarchy_structure_singular_data_source_gen.go ../aws/connect/user_hierarchy_structure_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_view -cfschema ../service/cloudformation/schemas/AWS_Connect_View.json -package connect ../aws/connect/view_singular_data_source_gen.go ../aws/connect/view_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_view_version -cfschema ../service/cloudformation/schemas/AWS_Connect_ViewVersion.json -package connect ../aws/connect/view_version_singular_data_source_gen.go ../aws/connect/view_version_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connectcampaigns_campaign -cfschema ../service/cloudformation/schemas/AWS_ConnectCampaigns_Campaign.json -package connectcampaigns ../aws/connectcampaigns/campaign_singular_data_source_gen.go ../aws/connectcampaigns/campaign_singular_data_source_gen_test.go @@ -258,6 +260,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_data_source -cfschema ../service/cloudformation/schemas/AWS_DataZone_DataSource.json -package datazone ../aws/datazone/data_source_singular_data_source_gen.go ../aws/datazone/data_source_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_domain -cfschema ../service/cloudformation/schemas/AWS_DataZone_Domain.json -package datazone ../aws/datazone/domain_singular_data_source_gen.go ../aws/datazone/domain_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_environment -cfschema ../service/cloudformation/schemas/AWS_DataZone_Environment.json -package datazone ../aws/datazone/environment_singular_data_source_gen.go ../aws/datazone/environment_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_environment_actions -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentActions.json -package datazone ../aws/datazone/environment_actions_singular_data_source_gen.go ../aws/datazone/environment_actions_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_environment_blueprint_configuration -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentBlueprintConfiguration.json -package datazone ../aws/datazone/environment_blueprint_configuration_singular_data_source_gen.go ../aws/datazone/environment_blueprint_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_environment_profile -cfschema ../service/cloudformation/schemas/AWS_DataZone_EnvironmentProfile.json -package datazone ../aws/datazone/environment_profile_singular_data_source_gen.go ../aws/datazone/environment_profile_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datazone_group_profile -cfschema ../service/cloudformation/schemas/AWS_DataZone_GroupProfile.json -package datazone ../aws/datazone/group_profile_singular_data_source_gen.go ../aws/datazone/group_profile_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json index db7805267..10a946388 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_Integration.json @@ -1,75 +1,167 @@ { "typeName": "AWS::ApiGatewayV2::Integration", - "description": "Resource Type definition for AWS::ApiGatewayV2::Integration", "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "TemplateSelectionExpression": { - "type": "string" + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "ResponseParameter": { + "description": "response parameter", + "type": "object", + "additionalProperties": false, + "properties": { + "Destination": { + "type": "string" + }, + "Source": { + "type": "string" + } + } }, - "ConnectionType": { - "type": "string" + "ResponseParameterList": { + "description": "list of response parameters", + "type": "array", + "items": { + "$ref": "#/definitions/ResponseParameter" + } }, - "ResponseParameters": { - "type": "object" + "ResponseParameterMap": { + "description": "map of response parameter lists", + "type": "object", + "additionalProperties": false, + "properties": { + "ResponseParameters": { + "$ref": "#/definitions/ResponseParameterList" + } + } }, - "IntegrationMethod": { - "type": "string" + "TlsConfig": { + "description": "The TlsConfig property specifies the TLS configuration for a private integration. Supported only for HTTP APIs.", + "type": "object", + "additionalProperties": false, + "properties": { + "ServerNameToVerify": { + "type": "string" + } + } }, - "PassthroughBehavior": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "ApiId": { + "description": "The API identifier.", "type": "string" }, - "RequestParameters": { - "type": "object" - }, "ConnectionId": { + "description": "The ID of the VPC link for a private integration. Supported only for HTTP APIs.", "type": "string" }, - "IntegrationUri": { + "ConnectionType": { + "description": "The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.", "type": "string" }, - "PayloadFormatVersion": { + "ContentHandlingStrategy": { + "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT.", "type": "string" }, "CredentialsArn": { + "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, don't specify this parameter.", "type": "string" }, - "RequestTemplates": { - "type": "object" + "Description": { + "description": "The description of the integration.", + "type": "string" }, - "TimeoutInMillis": { - "type": "integer" + "IntegrationMethod": { + "description": "Specifies the integration's HTTP method type.", + "type": "string" }, - "TlsConfig": { - "$ref": "#/definitions/TlsConfig" + "IntegrationSubtype": { + "description": "Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke.", + "type": "string" }, - "ContentHandlingStrategy": { + "IntegrationId": { + "description": "The integration ID.", "type": "string" }, - "Id": { + "IntegrationType": { + "description": "The integration type of an integration.", "type": "string" }, - "IntegrationSubtype": { + "IntegrationUri": { + "description": "For a Lambda integration, specify the URI of a Lambda function. For an HTTP integration, specify a fully-qualified URL. For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service.", "type": "string" }, - "ApiId": { + "PassthroughBehavior": { + "description": "Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.", "type": "string" }, - "IntegrationType": { + "PayloadFormatVersion": { + "description": "Specifies the format of the payload sent to an integration. Required for HTTP APIs. For HTTP APIs, supported values for Lambda proxy integrations are 1.0 and 2.0 For all other integrations, 1.0 is the only supported value.", "type": "string" - } - }, - "definitions": { - "TlsConfig": { + }, + "RequestParameters": { + "description": "A key-value map specifying parameters.", "type": "object", "additionalProperties": false, - "properties": { - "ServerNameToVerify": { + "patternProperties": { + "": { "type": "string" } } + }, + "RequestTemplates": { + "description": "A map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "ResponseParameters": { + "description": "Parameters that transform the HTTP response from a backend integration before returning the response to clients. Supported only for HTTP APIs.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "$ref": "#/definitions/ResponseParameterMap" + } + } + }, + "TemplateSelectionExpression": { + "description": "The template selection expression for the integration. Supported only for WebSocket APIs.", + "type": "string" + }, + "TimeoutInMillis": { + "description": "Custom timeout between 50 and 29000 milliseconds for WebSocket APIs and between 50 and 30000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.", + "type": "integer" + }, + "TlsConfig": { + "description": "The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.", + "$ref": "#/definitions/TlsConfig" } }, "required": [ @@ -79,10 +171,54 @@ "createOnlyProperties": [ "/properties/ApiId" ], + "readOnlyProperties": [ + "/properties/IntegrationId" + ], "primaryIdentifier": [ - "/properties/Id" + "/properties/ApiId", + "/properties/IntegrationId" ], - "readOnlyProperties": [ - "/properties/Id" - ] + "tagging": { + "taggable": false + }, + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + } + } } diff --git a/internal/service/cloudformation/schemas/AWS_ApplicationInsights_Application.json b/internal/service/cloudformation/schemas/AWS_ApplicationInsights_Application.json index 3dd482ff0..71b434290 100644 --- a/internal/service/cloudformation/schemas/AWS_ApplicationInsights_Application.json +++ b/internal/service/cloudformation/schemas/AWS_ApplicationInsights_Application.json @@ -699,31 +699,107 @@ "handlers": { "create": { "permissions": [ - "*" + "applicationinsights:CreateApplication", + "applicationinsights:DescribeApplication", + "applicationinsights:CreateComponent", + "applicationinsights:DescribeComponent", + "applicationinsights:CreateLogPattern", + "applicationinsights:DescribeLogPattern", + "applicationinsights:DescribeComponentConfigurationRecommendation", + "applicationinsights:UpdateComponentConfiguration", + "applicationinsights:ListComponents", + "applicationinsights:TagResource", + "ec2:DescribeInstances", + "ec2:DescribeVolumes", + "rds:DescribeDBInstances", + "rds:DescribeDBClusters", + "sqs:ListQueues", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:DescribeTargetHealth", + "autoscaling:DescribeAutoScalingGroups", + "lambda:ListFunctions", + "dynamodb:ListTables", + "s3:ListAllMyBuckets", + "sns:ListTopics", + "states:ListStateMachines", + "apigateway:GET", + "ecs:ListClusters", + "ecs:DescribeTaskDefinition", + "ecs:ListServices", + "ecs:ListTasks", + "eks:ListClusters", + "eks:ListNodegroups", + "fsx:DescribeFileSystems", + "logs:DescribeLogGroups", + "elasticfilesystem:DescribeFileSystems" ], "timeoutInMinutes": 600 }, "read": { "permissions": [ - "*" + "applicationinsights:DescribeApplication", + "applicationinsights:ListTagsForResource", + "applicationinsights:DescribeComponent", + "applicationinsights:ListComponents", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets" ] }, "update": { "permissions": [ - "*" + "applicationinsights:CreateApplication", + "applicationinsights:DescribeApplication", + "applicationinsights:UpdateApplication", + "applicationinsights:TagResource", + "applicationinsights:UntagResource", + "applicationinsights:ListTagsForResource", + "applicationinsights:CreateComponent", + "applicationinsights:DescribeComponent", + "applicationinsights:DeleteComponent", + "applicationinsights:ListComponents", + "applicationinsights:CreateLogPattern", + "applicationinsights:DeleteLogPattern", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets", + "applicationinsights:UpdateLogPattern", + "applicationinsights:DescribeComponentConfiguration", + "applicationinsights:DescribeComponentConfigurationRecommendation", + "applicationinsights:UpdateComponentConfiguration" ], "timeoutInMinutes": 600 }, "delete": { "permissions": [ - "*" + "applicationinsights:DeleteApplication", + "applicationinsights:DescribeApplication" ] }, "list": { "permissions": [ - "*" + "applicationinsights:ListApplications", + "applicationinsights:DescribeApplication", + "applicationinsights:ListTagsForResource", + "applicationinsights:DescribeComponent", + "applicationinsights:ListComponents", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets" ] } }, - "taggable": true + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "applicationinsights:ListTagsForResource", + "applicationinsights:TagResource", + "applicationinsights:UntagResource" + ] + } } diff --git a/internal/service/cloudformation/schemas/AWS_CodeGuruProfiler_ProfilingGroup.json b/internal/service/cloudformation/schemas/AWS_CodeGuruProfiler_ProfilingGroup.json index 71bdfdd80..a9cdd463e 100644 --- a/internal/service/cloudformation/schemas/AWS_CodeGuruProfiler_ProfilingGroup.json +++ b/internal/service/cloudformation/schemas/AWS_CodeGuruProfiler_ProfilingGroup.json @@ -144,7 +144,9 @@ "read": { "permissions": [ "codeguru-profiler:DescribeProfilingGroup", - "codeguru-profiler:ListTagsForResource" + "codeguru-profiler:ListTagsForResource", + "codeguru-profiler:GetNotificationConfiguration", + "codeguru-profiler:GetPolicy" ] }, "update": { diff --git a/internal/service/cloudformation/schemas/AWS_CodeStarConnections_RepositoryLink.json b/internal/service/cloudformation/schemas/AWS_CodeStarConnections_RepositoryLink.json index 264c74763..1afbc37a0 100644 --- a/internal/service/cloudformation/schemas/AWS_CodeStarConnections_RepositoryLink.json +++ b/internal/service/cloudformation/schemas/AWS_CodeStarConnections_RepositoryLink.json @@ -148,7 +148,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "codestar-connections:UntagResource", + "codestar-connections:ListTagsForResource", + "codestar-connections:TagResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json b/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json index ec937cd15..884cf97af 100644 --- a/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json +++ b/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json @@ -60,8 +60,7 @@ "handlers": { "create": { "permissions": [ - "cognito-idp:CreateResourceServer", - "iam:PassRole" + "cognito-idp:CreateResourceServer" ], "timeoutInMinutes": 2 }, @@ -72,8 +71,7 @@ }, "update": { "permissions": [ - "cognito-idp:UpdateResourceServer", - "iam:PassRole" + "cognito-idp:UpdateResourceServer" ], "timeoutInMinutes": 2 }, diff --git a/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json b/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json index 99e54159e..23be1f7a5 100644 --- a/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json +++ b/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json @@ -70,7 +70,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ] }, "primaryIdentifier": [ "/properties/AuthorizedAccountId", diff --git a/internal/service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json b/internal/service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json index 478c1443b..db3536985 100644 --- a/internal/service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json +++ b/internal/service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json @@ -116,7 +116,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ] }, "createOnlyProperties": [ "/properties/ConfigurationAggregatorName" diff --git a/internal/service/cloudformation/schemas/AWS_Connect_AgentStatus.json b/internal/service/cloudformation/schemas/AWS_Connect_AgentStatus.json new file mode 100644 index 000000000..67490796d --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Connect_AgentStatus.json @@ -0,0 +1,160 @@ +{ + "typeName": "AWS::Connect::AgentStatus", + "description": "Resource Type definition for AWS::Connect::AgentStatus", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128, + "pattern": "" + }, + "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 -.", + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$" + }, + "AgentStatusArn": { + "description": "The Amazon Resource Name (ARN) of the agent status.", + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-state/[-a-zA-Z0-9]*$" + }, + "Description": { + "description": "The description of the status.", + "type": "string", + "minLength": 1, + "maxLength": 250 + }, + "Name": { + "description": "The name of the status.", + "type": "string", + "minLength": 1, + "maxLength": 127 + }, + "DisplayOrder": { + "description": "The display order of the status.", + "type": "integer", + "minimum": 1, + "maximum": 50 + }, + "State": { + "type": "string", + "description": "The state of the status.", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "Type": { + "type": "string", + "description": "The type of agent status.", + "enum": [ + "ROUTABLE", + "CUSTOM", + "OFFLINE" + ] + }, + "ResetOrderNumber": { + "type": "boolean", + "description": "A number indicating the reset order of the agent status." + }, + "Tags": { + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + } + }, + "LastModifiedRegion": { + "description": "Last modified region.", + "type": "string", + "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?" + }, + "LastModifiedTime": { + "description": "Last modified time.", + "type": "number" + } + }, + "required": [ + "InstanceArn", + "Name", + "State" + ], + "handlers": { + "create": { + "permissions": [ + "connect:CreateAgentStatus", + "connect:TagResource", + "connect:ListAgentStatuses" + ] + }, + "read": { + "permissions": [ + "connect:DescribeAgentStatus" + ] + }, + "delete": { + "permissions": [] + }, + "update": { + "permissions": [ + "connect:UpdateAgentStatus", + "connect:UntagResource", + "connect:TagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListAgentStatuses" + ] + } + }, + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/AgentStatusArn" + ], + "readOnlyProperties": [ + "/properties/AgentStatusArn", + "/properties/LastModifiedRegion", + "/properties/LastModifiedTime" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Connect_UserHierarchyStructure.json b/internal/service/cloudformation/schemas/AWS_Connect_UserHierarchyStructure.json new file mode 100644 index 000000000..1169abd1c --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Connect_UserHierarchyStructure.json @@ -0,0 +1,190 @@ +{ + "typeName": "AWS::Connect::UserHierarchyStructure", + "description": "Resource Type definition for AWS::Connect::UserHierarchyStructure", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "definitions": { + "Name": { + "description": "The name of the hierarchy level.", + "type": "string" + }, + "HierarchyLevelArn": { + "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$" + }, + "HierarchyLevelId": { + "description": "The identifier of the hierarchy level.", + "type": "string" + }, + "LevelOne": { + "description": "Information about level one.", + "type": "object", + "additionalProperties": false, + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ] + }, + "LevelTwo": { + "description": "Information about level two.", + "type": "object", + "additionalProperties": false, + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ] + }, + "LevelThree": { + "description": "Information about level three.", + "type": "object", + "additionalProperties": false, + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ] + }, + "LevelFour": { + "description": "Information about level four.", + "type": "object", + "additionalProperties": false, + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ] + }, + "LevelFive": { + "description": "Information about level five.", + "type": "object", + "additionalProperties": false, + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ] + } + }, + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$" + }, + "UserHierarchyStructureArn": { + "description": "The identifier of the User Hierarchy Structure.", + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/user-hierarchy-structure" + }, + "UserHierarchyStructure": { + "description": "Information about the hierarchy structure.", + "type": "object", + "additionalProperties": false, + "properties": { + "LevelOne": { + "$ref": "#/definitions/LevelOne" + }, + "LevelTwo": { + "$ref": "#/definitions/LevelTwo" + }, + "LevelThree": { + "$ref": "#/definitions/LevelThree" + }, + "LevelFour": { + "$ref": "#/definitions/LevelFour" + }, + "LevelFive": { + "$ref": "#/definitions/LevelFive" + } + } + } + }, + "required": [ + "InstanceArn" + ], + "handlers": { + "create": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + }, + "read": { + "permissions": [ + "connect:DescribeUserHierarchyStructure" + ] + }, + "delete": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + }, + "update": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + } + }, + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn" + ], + "primaryIdentifier": [ + "/properties/UserHierarchyStructureArn" + ], + "readOnlyProperties": [ + "/properties/UserHierarchyStructureArn" + ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + } +} diff --git a/internal/service/cloudformation/schemas/AWS_DMS_InstanceProfile.json b/internal/service/cloudformation/schemas/AWS_DMS_InstanceProfile.json index 2603ff16f..204842789 100644 --- a/internal/service/cloudformation/schemas/AWS_DMS_InstanceProfile.json +++ b/internal/service/cloudformation/schemas/AWS_DMS_InstanceProfile.json @@ -76,7 +76,6 @@ "type": "string", "enum": [ "IPV4", - "IPV6", "DUAL" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_DataZone_Environment.json b/internal/service/cloudformation/schemas/AWS_DataZone_Environment.json index fa4d1be55..8e8c2f35c 100644 --- a/internal/service/cloudformation/schemas/AWS_DataZone_Environment.json +++ b/internal/service/cloudformation/schemas/AWS_DataZone_Environment.json @@ -49,6 +49,16 @@ "description": "The AWS region in which the Amazon DataZone environment is created.", "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$" }, + "EnvironmentAccountIdentifier": { + "type": "string", + "description": "The AWS account in which the Amazon DataZone environment is created.", + "pattern": "^\\d{12}$" + }, + "EnvironmentAccountRegion": { + "type": "string", + "description": "The AWS region in which the Amazon DataZone environment is created.", + "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$" + }, "CreatedAt": { "type": "string", "description": "The timestamp of when the environment was created.", @@ -81,12 +91,12 @@ "EnvironmentProfileId": { "type": "string", "description": "The ID of the environment profile with which the Amazon DataZone environment was created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$" + "pattern": "^[a-zA-Z0-9_-]{0,36}$" }, "EnvironmentProfileIdentifier": { "type": "string", "description": "The ID of the environment profile with which the Amazon DataZone environment would be created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$" + "pattern": "^[a-zA-Z0-9_-]{0,36}$" }, "GlossaryTerms": { "type": "array", @@ -99,6 +109,10 @@ "maxItems": 20, "minItems": 1 }, + "EnvironmentRoleArn": { + "type": "string", + "description": "Environment role arn for custom aws environment permissions" + }, "Id": { "type": "string", "description": "The ID of the Amazon DataZone environment.", @@ -144,7 +158,6 @@ } }, "required": [ - "EnvironmentProfileIdentifier", "Name", "ProjectIdentifier", "DomainIdentifier" @@ -166,13 +179,18 @@ "writeOnlyProperties": [ "/properties/EnvironmentProfileIdentifier", "/properties/ProjectIdentifier", - "/properties/DomainIdentifier" + "/properties/DomainIdentifier", + "/properties/EnvironmentAccountIdentifier", + "/properties/EnvironmentAccountRegion", + "/properties/EnvironmentRoleArn" ], "createOnlyProperties": [ "/properties/DomainIdentifier", "/properties/EnvironmentProfileIdentifier", "/properties/ProjectIdentifier", - "/properties/UserParameters" + "/properties/UserParameters", + "/properties/EnvironmentAccountIdentifier", + "/properties/EnvironmentAccountRegion" ], "primaryIdentifier": [ "/properties/DomainId", @@ -191,7 +209,9 @@ "permissions": [ "datazone:CreateEnvironment", "datazone:GetEnvironment", - "datazone:DeleteEnvironment" + "datazone:DeleteEnvironment", + "datazone:AssociateEnvironmentRole", + "iam:PassRole" ] }, "read": { @@ -203,7 +223,10 @@ "permissions": [ "datazone:UpdateEnvironment", "datazone:GetEnvironment", - "datazone:DeleteEnvironment" + "datazone:DeleteEnvironment", + "datazone:AssociateEnvironmentRole", + "datazone:DisassociateEnvironmentRole", + "iam:PassRole" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_DataZone_EnvironmentActions.json b/internal/service/cloudformation/schemas/AWS_DataZone_EnvironmentActions.json new file mode 100644 index 000000000..aac08f9af --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_DataZone_EnvironmentActions.json @@ -0,0 +1,156 @@ +{ + "typeName": "AWS::DataZone::EnvironmentActions", + "description": "Definition of AWS::DataZone::EnvironmentActions Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "definitions": { + "EnvironmentActionURI": { + "type": "string", + "description": "The URI of the console link specified as part of the environment action.", + "minLength": 1, + "maxLength": 2048 + }, + "AwsConsoleLinkParameters": { + "type": "object", + "description": "The parameters of the console link specified as part of the environment action", + "properties": { + "Uri": { + "$ref": "#/definitions/EnvironmentActionURI" + } + }, + "additionalProperties": false + } + }, + "properties": { + "Description": { + "type": "string", + "description": "The description of the Amazon DataZone environment action.", + "maxLength": 2048 + }, + "DomainId": { + "type": "string", + "description": "The identifier of the Amazon DataZone domain in which the environment is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$" + }, + "DomainIdentifier": { + "type": "string", + "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$" + }, + "EnvironmentId": { + "type": "string", + "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + "pattern": "[a-zA-Z0-9_-]{1,36}$", + "maxLength": 36, + "minLength": 1 + }, + "EnvironmentIdentifier": { + "type": "string", + "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + "pattern": "[a-zA-Z0-9_-]{1,36}$", + "maxLength": 36, + "minLength": 1 + }, + "Id": { + "type": "string", + "description": "The ID of the Amazon DataZone environment action.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "maxLength": 36, + "minLength": 1 + }, + "Identifier": { + "type": "string", + "description": "The ID of the Amazon DataZone environment action.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "maxLength": 36, + "minLength": 1 + }, + "Name": { + "type": "string", + "description": "The name of the environment action.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w -]+$" + }, + "Parameters": { + "description": "The parameters of the environment action.", + "$ref": "#/definitions/AwsConsoleLinkParameters" + } + }, + "required": [ + "Name" + ], + "readOnlyProperties": [ + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id" + ], + "writeOnlyProperties": [ + "/properties/EnvironmentIdentifier", + "/properties/DomainIdentifier", + "/properties/Identifier" + ], + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier" + ], + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id" + ], + "additionalIdentifiers": [ + [ + "/properties/EnvironmentIdentifier" + ] + ], + "tagging": { + "taggable": false + }, + "handlers": { + "create": { + "permissions": [ + "datazone:CreateEnvironmentAction", + "datazone:GetEnvironmentAction", + "datazone:DeleteEnvironmentAction" + ] + }, + "read": { + "permissions": [ + "datazone:GetEnvironmentAction" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateEnvironmentAction", + "datazone:GetEnvironmentAction", + "datazone:DeleteEnvironmentAction" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteEnvironmentAction", + "datazone:GetEnvironmentAction" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "DomainIdentifier", + "EnvironmentIdentifier" + ] + }, + "permissions": [ + "datazone:ListEnvironmentActions" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Instance.json b/internal/service/cloudformation/schemas/AWS_EC2_Instance.json index 5d874fa63..fee6b8b05 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_Instance.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_Instance.json @@ -1,5 +1,9 @@ { "tagging": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json b/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json index fe936f749..79d5b40f2 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_Subnet.json @@ -45,7 +45,7 @@ "items": { "type": "string" }, - "description": "The IPv6 network ranges for the subnet, in CIDR notation." + "description": "" }, "Ipv6CidrBlock": { "type": "string", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Volume.json b/internal/service/cloudformation/schemas/AWS_EC2_Volume.json index 9c6aec4df..e16e10ecb 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_Volume.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_Volume.json @@ -80,7 +80,7 @@ "Value", "Key" ], - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications)." + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)." } }, "tagging": { diff --git a/internal/service/cloudformation/schemas/AWS_FMS_Policy.json b/internal/service/cloudformation/schemas/AWS_FMS_Policy.json index eb2560cba..e2b97b3ca 100644 --- a/internal/service/cloudformation/schemas/AWS_FMS_Policy.json +++ b/internal/service/cloudformation/schemas/AWS_FMS_Policy.json @@ -194,7 +194,7 @@ "Protocol": { "description": "Protocol.", "type": "string", - "pattern": "^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$" + "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$" }, "RuleAction": { "description": "Rule Action.", diff --git a/internal/service/cloudformation/schemas/AWS_FSx_DataRepositoryAssociation.json b/internal/service/cloudformation/schemas/AWS_FSx_DataRepositoryAssociation.json index d048741d4..7edea5ec4 100644 --- a/internal/service/cloudformation/schemas/AWS_FSx_DataRepositoryAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_FSx_DataRepositoryAssociation.json @@ -142,7 +142,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "fsx:TagResource", + "fsx:UntagResource" + ] }, "additionalProperties": false, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json index 0e4cefbdd..599a6da5f 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json @@ -10,6 +10,24 @@ ], "default": "OFF" }, + "ConditionBasedSignalFetchConfig": { + "type": "object", + "properties": { + "ConditionExpression": { + "type": "string", + "maxLength": 2048, + "minLength": 1 + }, + "TriggerMode": { + "$ref": "#/definitions/TriggerMode" + } + }, + "required": [ + "ConditionExpression", + "TriggerMode" + ], + "additionalProperties": false + }, "DataDestinationConfig": { "oneOf": [ { @@ -175,12 +193,77 @@ "Name" ] }, + "SignalFetchConfig": { + "oneOf": [ + { + "type": "object", + "title": "TimeBased", + "properties": { + "TimeBased": { + "$ref": "#/definitions/TimeBasedSignalFetchConfig" + } + }, + "required": [ + "TimeBased" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "ConditionBased", + "properties": { + "ConditionBased": { + "$ref": "#/definitions/ConditionBasedSignalFetchConfig" + } + }, + "required": [ + "ConditionBased" + ], + "additionalProperties": false + } + ] + }, + "SignalFetchInformation": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string", + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$" + }, + "SignalFetchConfig": { + "$ref": "#/definitions/SignalFetchConfig" + }, + "ConditionLanguageVersion": { + "type": "number", + "maximum": 1, + "minimum": 1 + }, + "Actions": { + "type": "array", + "items": { + "type": "string", + "maxLength": 2048, + "minLength": 1 + }, + "maxItems": 5, + "minItems": 1 + } + }, + "required": [ + "Actions", + "FullyQualifiedName", + "SignalFetchConfig" + ], + "additionalProperties": false + }, "TimeBasedCollectionScheme": { "additionalProperties": false, "type": "object", "properties": { "PeriodMs": { - "maximum": 60000, + "maximum": 86400000, "type": "number", "minimum": 10000 } @@ -189,6 +272,19 @@ "PeriodMs" ] }, + "TimeBasedSignalFetchConfig": { + "type": "object", + "properties": { + "ExecutionFrequencyMs": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "ExecutionFrequencyMs" + ], + "additionalProperties": false + }, "SpoolingMode": { "type": "string", "enum": [ @@ -293,6 +389,32 @@ "Value" ], "additionalProperties": false + }, + "TimePeriod": { + "type": "object", + "properties": { + "Unit": { + "$ref": "#/definitions/TimeUnit" + }, + "Value": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "Unit", + "Value" + ], + "additionalProperties": false + }, + "TimeUnit": { + "type": "string", + "enum": [ + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR" + ] } }, "properties": { @@ -329,6 +451,15 @@ "$ref": "#/definitions/SignalInformation" } }, + "SignalsToFetch": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SignalFetchInformation" + }, + "maxItems": 10, + "minItems": 0 + }, "DataDestinationConfigs": { "minItems": 1, "maxItems": 1, diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json index c0f4c805a..41b044f8e 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json @@ -291,7 +291,7 @@ "items": { "$ref": "#/definitions/Node" }, - "maxItems": 500, + "maxItems": 5000, "minItems": 1 }, "Tags": { diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json b/internal/service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json index 75c28a58f..8b4f9754d 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json @@ -26,6 +26,15 @@ "description": "A unique Arn for CodeSigningConfig resource", "type": "string", "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}" + }, + "Tags": { + "description": "A list of tags to apply to CodeSigningConfig resource", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } } }, "definitions": { @@ -69,6 +78,27 @@ "required": [ "UntrustedArtifactOnDeployment" ] + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key" + ] } }, "required": [ @@ -81,20 +111,32 @@ "primaryIdentifier": [ "/properties/CodeSigningConfigArn" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "handlers": { "create": { "permissions": [ - "lambda:CreateCodeSigningConfig" + "lambda:CreateCodeSigningConfig", + "lambda:TagResource" ] }, "read": { "permissions": [ - "lambda:GetCodeSigningConfig" + "lambda:GetCodeSigningConfig", + "lambda:ListTags" ] }, "update": { "permissions": [ - "lambda:UpdateCodeSigningConfig" + "lambda:UpdateCodeSigningConfig", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json b/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json index 4c3d6e547..934be5e7a 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json @@ -35,12 +35,19 @@ "minLength": 12, "maxLength": 1024 }, + "EventSourceMappingArn": { + "description": "", + "type": "string", + "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:event-source-mapping:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "minLength": 85, + "maxLength": 120 + }, "FilterCriteria": { "description": "An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html).", "$ref": "#/definitions/FilterCriteria" }, "KmsKeyArn": { - "description": "", + "description": "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", "type": "string", "pattern": "(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()", "minLength": 12, @@ -88,6 +95,15 @@ "description": "With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future.", "type": "number" }, + "Tags": { + "description": "", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, "Topics": { "description": "The name of the Kafka topic.", "type": "array", @@ -131,7 +147,7 @@ "maximum": 900 }, "FunctionResponseTypes": { - "description": "(Streams and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + "description": "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", "type": "array", "uniqueItems": true, "items": { @@ -327,6 +343,28 @@ } } }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key" + ], + "description": "" + }, "DocumentDBEventSourceConfig": { "description": "Specific configuration settings for a DocumentDB event source.", "type": "object", @@ -367,7 +405,8 @@ "/properties/SelfManagedKafkaEventSourceConfig" ], "readOnlyProperties": [ - "/properties/Id" + "/properties/Id", + "/properties/EventSourceMappingArn" ], "primaryIdentifier": [ "/properties/Id" @@ -380,6 +419,7 @@ "permissions": [ "lambda:CreateEventSourceMapping", "lambda:GetEventSourceMapping", + "lambda:TagResource", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" @@ -400,6 +440,7 @@ "read": { "permissions": [ "lambda:GetEventSourceMapping", + "lambda:ListTags", "kms:Decrypt" ] }, @@ -407,6 +448,9 @@ "permissions": [ "lambda:UpdateEventSourceMapping", "lambda:GetEventSourceMapping", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" @@ -414,9 +458,10 @@ } }, "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" } } diff --git a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json index 7da6c5342..3f085d4fa 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json +++ b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json @@ -226,7 +226,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json b/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json index 3d7847710..c261e9579 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json +++ b/internal/service/cloudformation/schemas/AWS_Location_GeofenceCollection.json @@ -166,7 +166,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ] }, "required": [ "CollectionName" diff --git a/internal/service/cloudformation/schemas/AWS_Location_Map.json b/internal/service/cloudformation/schemas/AWS_Location_Map.json index 19cd7780e..110431f59 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_Map.json +++ b/internal/service/cloudformation/schemas/AWS_Location_Map.json @@ -186,7 +186,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_Location_RouteCalculator.json b/internal/service/cloudformation/schemas/AWS_Location_RouteCalculator.json index 8d5726095..7dc0f8464 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_RouteCalculator.json +++ b/internal/service/cloudformation/schemas/AWS_Location_RouteCalculator.json @@ -155,7 +155,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_Location_Tracker.json b/internal/service/cloudformation/schemas/AWS_Location_Tracker.json index 5840306f7..3dedb80aa 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_Tracker.json +++ b/internal/service/cloudformation/schemas/AWS_Location_Tracker.json @@ -183,7 +183,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ] }, "required": [ "TrackerName" diff --git a/internal/service/cloudformation/schemas/AWS_Rekognition_Collection.json b/internal/service/cloudformation/schemas/AWS_Rekognition_Collection.json index 46bc57130..dbb4b8741 100644 --- a/internal/service/cloudformation/schemas/AWS_Rekognition_Collection.json +++ b/internal/service/cloudformation/schemas/AWS_Rekognition_Collection.json @@ -58,7 +58,18 @@ } } }, - "taggable": true, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "rekognition:ListTagsForResource", + "rekognition:TagResource", + "rekognition:UntagResource" + ] + }, "additionalProperties": false, "required": [ "CollectionId" diff --git a/internal/service/cloudformation/schemas/AWS_Rekognition_StreamProcessor.json b/internal/service/cloudformation/schemas/AWS_Rekognition_StreamProcessor.json index 2ee14ae95..5e8c05322 100644 --- a/internal/service/cloudformation/schemas/AWS_Rekognition_StreamProcessor.json +++ b/internal/service/cloudformation/schemas/AWS_Rekognition_StreamProcessor.json @@ -312,7 +312,18 @@ } } }, - "taggable": true, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": false, + "permissions": [ + "rekognition:TagResource", + "rekognition:UntagResource", + "rekognition:ListTagsForResource" + ] + }, "additionalProperties": false, "required": [ "RoleArn", diff --git a/internal/service/cloudformation/schemas/AWS_S3Express_DirectoryBucket.json b/internal/service/cloudformation/schemas/AWS_S3Express_DirectoryBucket.json index 08eb5772a..d58aaced4 100644 --- a/internal/service/cloudformation/schemas/AWS_S3Express_DirectoryBucket.json +++ b/internal/service/cloudformation/schemas/AWS_S3Express_DirectoryBucket.json @@ -1,16 +1,81 @@ { + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "read": { + "permissions": [ + "s3express:ListAllMyDirectoryBuckets", + "ec2:DescribeAvailabilityZones", + "s3express:GetEncryptionConfiguration", + "s3express:ListAllMyDirectoryBuckets" + ] + }, + "create": { + "permissions": [ + "kms:GenerateDataKey", + "kms:Decrypt", + "s3express:CreateBucket", + "s3express:ListAllMyDirectoryBuckets", + "s3express:PutEncryptionConfiguration" + ] + }, + "update": { + "permissions": [ + "kms:GenerateDataKey", + "kms:Decrypt", + "s3express:PutEncryptionConfiguration" + ] + }, + "list": { + "permissions": [ + "s3express:ListAllMyDirectoryBuckets" + ] + }, + "delete": { + "permissions": [ + "s3express:DeleteBucket", + "s3express:ListAllMyDirectoryBuckets" + ] + } + }, "typeName": "AWS::S3Express::DirectoryBucket", + "readOnlyProperties": [ + "/properties/Arn", + "/properties/AvailabilityZoneName" + ], "description": "Resource Type definition for AWS::S3Express::DirectoryBucket.", + "createOnlyProperties": [ + "/properties/BucketName", + "/properties/LocationName", + "/properties/DataRedundancy" + ], "additionalProperties": false, + "primaryIdentifier": [ + "/properties/BucketName" + ], + "definitions": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified bucket.", + "type": "string" + } + }, "properties": { "BucketName": { - "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", - "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", - "type": "string" + "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", + "type": "string", + "maxLength": 63 }, - "LocationName": { - "description": "Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'.", + "BucketEncryption": {}, + "AvailabilityZoneName": { + "examples": [ + "us-east-1f" + ], + "description": "Returns the code for the Availability Zone where the directory bucket was created.", "type": "string" }, "DataRedundancy": { @@ -21,62 +86,19 @@ ] }, "Arn": { - "$ref": "#/definitions/Arn", - "description": "Returns the Amazon Resource Name (ARN) of the specified bucket.", "examples": [ "arn:aws:s3express:us-west-2:123456789123:bucket/DOC-EXAMPLE-BUCKET--usw2-az1--x-s3" - ] - } - }, - "definitions": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified bucket.", + ], + "description": "Returns the Amazon Resource Name (ARN) of the specified bucket.", + "$ref": "#/definitions/Arn" + }, + "LocationName": { + "description": "Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'.", "type": "string" } }, - "createOnlyProperties": [ - "/properties/BucketName", - "/properties/LocationName", - "/properties/DataRedundancy" - ], - "primaryIdentifier": [ - "/properties/BucketName" - ], - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, "required": [ "LocationName", "DataRedundancy" - ], - "handlers": { - "create": { - "permissions": [ - "s3express:CreateBucket", - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "read": { - "permissions": [ - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "delete": { - "permissions": [ - "s3express:DeleteBucket", - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "list": { - "permissions": [ - "s3express:ListAllMyDirectoryBuckets" - ] - } - } + ] } diff --git a/internal/service/cloudformation/schemas/AWS_Synthetics_Canary.json b/internal/service/cloudformation/schemas/AWS_Synthetics_Canary.json index f84dfc7f0..553a4efe3 100644 --- a/internal/service/cloudformation/schemas/AWS_Synthetics_Canary.json +++ b/internal/service/cloudformation/schemas/AWS_Synthetics_Canary.json @@ -6,7 +6,7 @@ "Name": { "description": "Name of the canary.", "type": "string", - "pattern": "^[0-9a-z_\\-]{1,21}$" + "pattern": "^[0-9a-z_\\-]{1,255}$" }, "Id": { "description": "Id of the canary", @@ -75,6 +75,14 @@ "DeleteLambdaResourcesOnCanaryDeletion": { "description": "Deletes associated lambda resources created by Synthetics if set to True. Default is False", "type": "boolean" + }, + "ResourcesToReplicateTags": { + "type": "array", + "uniqueItems": true, + "description": "List of resources which canary tags should be replicated to.", + "items": { + "$ref": "#/definitions/ResourceToTag" + } } }, "definitions": { @@ -272,6 +280,13 @@ "description": "KMS key Arn for encrypting artifacts when uploading to S3. You must specify KMS key Arn for SSE_KMS encryption mode only." } } + }, + "ResourceToTag": { + "type": "string", + "description": "Specifies which resources canary tags should be replicated to.", + "enum": [ + "lambda-function" + ] } }, "required": [ @@ -306,6 +321,7 @@ "lambda:GetLayerVersionByArn", "lambda:GetLayerVersion", "lambda:PublishLayerVersion", + "lambda:TagResource", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", @@ -332,6 +348,9 @@ "lambda:GetLayerVersionByArn", "lambda:GetLayerVersion", "lambda:PublishLayerVersion", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource", "iam:PassRole" ] }, @@ -376,6 +395,7 @@ "/properties/Code/Script", "/properties/DeleteLambdaResourcesOnCanaryDeletion", "/properties/StartCanaryAfterCreation", + "/properties/ResourcesToReplicateTags", "/properties/RunConfig/EnvironmentVariables", "/properties/VisualReference" ], diff --git a/internal/service/cloudformation/schemas/AWS_XRay_Group.json b/internal/service/cloudformation/schemas/AWS_XRay_Group.json index 5401a3b80..9379a6725 100644 --- a/internal/service/cloudformation/schemas/AWS_XRay_Group.json +++ b/internal/service/cloudformation/schemas/AWS_XRay_Group.json @@ -76,7 +76,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "xray:TagResource", + "xray:UntagResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_XRay_SamplingRule.json b/internal/service/cloudformation/schemas/AWS_XRay_SamplingRule.json index b7907006e..c1bf38df9 100644 --- a/internal/service/cloudformation/schemas/AWS_XRay_SamplingRule.json +++ b/internal/service/cloudformation/schemas/AWS_XRay_SamplingRule.json @@ -238,7 +238,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "xray:TagResource", + "xray:UntagResource" + ] }, "handlers": { "create": { diff --git a/tools/go.mod b/tools/go.mod index 166c23d9e..ecafb1a53 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-awscc/tools -go 1.22.6 +go 1.22.7 require ( github.com/client9/misspell v0.3.4