diff --git a/CHANGELOG.md b/CHANGELOG.md index 90f76e9e8..cca5465fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,17 @@ ## 1.23.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_invoicing_invoice_unit` +* **New Data Source:** `awscc_invoicing_invoice_units` +* **New Data Source:** `awscc_logs_integration` +* **New Data Source:** `awscc_logs_integrations` +* **New Data Source:** `awscc_memorydb_multi_region_cluster` +* **New Data Source:** `awscc_memorydb_multi_region_clusters` +* **New Resource:** `awscc_invoicing_invoice_unit` +* **New Resource:** `awscc_logs_integration` +* **New Resource:** `awscc_memorydb_multi_region_cluster` + ## 1.22.0 (November 27, 2024) FEATURES: diff --git a/docs/data-sources/apigateway_domain_name_v2.md b/docs/data-sources/apigateway_domain_name_v2.md index f4cb8f856..33e7ed96c 100644 --- a/docs/data-sources/apigateway_domain_name_v2.md +++ b/docs/data-sources/apigateway_domain_name_v2.md @@ -26,7 +26,6 @@ Data Source schema for AWS::ApiGateway::DomainNameV2 - `domain_name_arn` (String) The amazon resource name (ARN) of the domain name resource. - `domain_name_id` (String) - `endpoint_configuration` (Attributes) (see [below for nested schema](#nestedatt--endpoint_configuration)) -- `management_policy` (String) - `policy` (String) - `security_policy` (String) - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) diff --git a/docs/data-sources/events_connection.md b/docs/data-sources/events_connection.md index 93e1a242e..9dda2c3af 100644 --- a/docs/data-sources/events_connection.md +++ b/docs/data-sources/events_connection.md @@ -25,6 +25,7 @@ Data Source schema for AWS::Events::Connection - `auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters)) - `authorization_type` (String) - `description` (String) Description of the connection. +- `invocation_connectivity_parameters` (Attributes) The private resource the HTTP request will be sent to. (see [below for nested schema](#nestedatt--invocation_connectivity_parameters)) - `name` (String) Name of the connection. - `secret_arn` (String) The arn of the secrets manager secret created in the customer account. @@ -35,6 +36,7 @@ Read-Only: - `api_key_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--api_key_auth_parameters)) - `basic_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--basic_auth_parameters)) +- `connectivity_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--connectivity_parameters)) - `invocation_http_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--invocation_http_parameters)) - `o_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--o_auth_parameters)) @@ -56,6 +58,23 @@ Read-Only: - `username` (String) + +### Nested Schema for `auth_parameters.connectivity_parameters` + +Read-Only: + +- `resource_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--connectivity_parameters--resource_parameters)) + + +### Nested Schema for `auth_parameters.connectivity_parameters.resource_parameters` + +Read-Only: + +- `resource_association_arn` (String) +- `resource_configuration_arn` (String) + + + ### Nested Schema for `auth_parameters.invocation_http_parameters` @@ -152,3 +171,22 @@ Read-Only: - `is_value_secret` (Boolean) - `key` (String) - `value` (String) + + + + + + +### Nested Schema for `invocation_connectivity_parameters` + +Read-Only: + +- `resource_parameters` (Attributes) (see [below for nested schema](#nestedatt--invocation_connectivity_parameters--resource_parameters)) + + +### Nested Schema for `invocation_connectivity_parameters.resource_parameters` + +Read-Only: + +- `resource_association_arn` (String) +- `resource_configuration_arn` (String) diff --git a/docs/data-sources/invoicing_invoice_unit.md b/docs/data-sources/invoicing_invoice_unit.md new file mode 100644 index 000000000..3fb6d91c7 --- /dev/null +++ b/docs/data-sources/invoicing_invoice_unit.md @@ -0,0 +1,47 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_invoicing_invoice_unit Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Invoicing::InvoiceUnit +--- + +# awscc_invoicing_invoice_unit (Data Source) + +Data Source schema for AWS::Invoicing::InvoiceUnit + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `description` (String) +- `invoice_receiver` (String) +- `invoice_unit_arn` (String) +- `last_modified` (Number) +- `name` (String) +- `resource_tags` (Attributes List) (see [below for nested schema](#nestedatt--resource_tags)) +- `rule` (Attributes) (see [below for nested schema](#nestedatt--rule)) +- `tax_inheritance_disabled` (Boolean) + + +### Nested Schema for `resource_tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + + +### Nested Schema for `rule` + +Read-Only: + +- `linked_accounts` (List of String) diff --git a/docs/data-sources/invoicing_invoice_units.md b/docs/data-sources/invoicing_invoice_units.md new file mode 100644 index 000000000..f118b0336 --- /dev/null +++ b/docs/data-sources/invoicing_invoice_units.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_invoicing_invoice_units Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Invoicing::InvoiceUnit +--- + +# awscc_invoicing_invoice_units (Data Source) + +Plural Data Source schema for AWS::Invoicing::InvoiceUnit + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/lambda_event_source_mapping.md b/docs/data-sources/lambda_event_source_mapping.md index 70fbe41a5..63574b819 100644 --- a/docs/data-sources/lambda_event_source_mapping.md +++ b/docs/data-sources/lambda_event_source_mapping.md @@ -63,9 +63,9 @@ Data Source schema for AWS::Lambda::EventSourceMapping - `maximum_record_age_in_seconds` (Number) (Kinesis and DynamoDB Streams only) Discard records older than the specified age. The default value is -1, which sets the maximum age to infinite. When the value is set to infinite, Lambda never discards old records. The minimum valid value for maximum record age is 60s. Although values less than 60 and greater than -1 fall within the parameter's absolute range, they are not allowed - `maximum_retry_attempts` (Number) (Kinesis and DynamoDB Streams only) Discard records after the specified number of retries. The default value is -1, which sets the maximum number of retries to infinite. When MaximumRetryAttempts is infinite, Lambda retries failed records until the record expires in the event source. -- `metrics_config` (Attributes) (see [below for nested schema](#nestedatt--metrics_config)) +- `metrics_config` (Attributes) The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). (see [below for nested schema](#nestedatt--metrics_config)) - `parallelization_factor` (Number) (Kinesis and DynamoDB Streams only) The number of batches to process concurrently from each shard. The default value is 1. -- `provisioned_poller_config` (Attributes) (see [below for nested schema](#nestedatt--provisioned_poller_config)) +- `provisioned_poller_config` (Attributes) (Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode). (see [below for nested schema](#nestedatt--provisioned_poller_config)) - `queues` (List of String) (Amazon MQ) The name of the Amazon MQ broker destination queue to consume. - `scaling_config` (Attributes) (Amazon SQS only) The scaling configuration for the event source. For more information, see [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). (see [below for nested schema](#nestedatt--scaling_config)) - `self_managed_event_source` (Attributes) The self-managed Apache Kafka cluster for your event source. (see [below for nested schema](#nestedatt--self_managed_event_source)) @@ -102,9 +102,8 @@ Read-Only: Read-Only: - `destination` (String) The Amazon Resource Name (ARN) of the destination resource. - To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination. - To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination. - To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. + To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination. + To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. @@ -139,7 +138,7 @@ Read-Only: Read-Only: -- `metrics` (List of String) Metric groups to enable. +- `metrics` (List of String) The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). diff --git a/docs/data-sources/logs_integration.md b/docs/data-sources/logs_integration.md new file mode 100644 index 000000000..44dfab4dc --- /dev/null +++ b/docs/data-sources/logs_integration.md @@ -0,0 +1,45 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_logs_integration Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Logs::Integration +--- + +# awscc_logs_integration (Data Source) + +Data Source schema for AWS::Logs::Integration + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `integration_name` (String) User provided identifier for integration, unique to the user account. +- `integration_status` (String) Status of creation for the Integration and its resources +- `integration_type` (String) The type of the Integration. +- `resource_config` (Attributes) OpenSearchResourceConfig for the given Integration (see [below for nested schema](#nestedatt--resource_config)) + + +### Nested Schema for `resource_config` + +Read-Only: + +- `open_search_resource_config` (Attributes) (see [below for nested schema](#nestedatt--resource_config--open_search_resource_config)) + + +### Nested Schema for `resource_config.open_search_resource_config` + +Read-Only: + +- `application_arn` (String) +- `dashboard_viewer_principals` (List of String) +- `data_source_role_arn` (String) +- `kms_key_arn` (String) +- `retention_days` (Number) diff --git a/docs/data-sources/logs_integrations.md b/docs/data-sources/logs_integrations.md new file mode 100644 index 000000000..5510f936d --- /dev/null +++ b/docs/data-sources/logs_integrations.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_logs_integrations Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Logs::Integration +--- + +# awscc_logs_integrations (Data Source) + +Plural Data Source schema for AWS::Logs::Integration + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/memorydb_cluster.md b/docs/data-sources/memorydb_cluster.md index d2e54ea84..9ef7a1871 100644 --- a/docs/data-sources/memorydb_cluster.md +++ b/docs/data-sources/memorydb_cluster.md @@ -35,6 +35,7 @@ You cannot modify the value of AutoMinorVersionUpgrade after the cluster is crea - `final_snapshot_name` (String) The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward. - `kms_key_id` (String) The ID of the KMS key used to encrypt the cluster. - `maintenance_window` (String) Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. +- `multi_region_cluster_name` (String) The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix. - `node_type` (String) The compute and memory capacity of the nodes in the cluster. - `num_replicas_per_shard` (Number) The number of replicas to apply to each shard. The limit is 5. - `num_shards` (Number) The number of shards the cluster will contain. diff --git a/docs/data-sources/memorydb_multi_region_cluster.md b/docs/data-sources/memorydb_multi_region_cluster.md new file mode 100644 index 000000000..235e98145 --- /dev/null +++ b/docs/data-sources/memorydb_multi_region_cluster.md @@ -0,0 +1,46 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_memorydb_multi_region_cluster Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::MemoryDB::MultiRegionCluster +--- + +# awscc_memorydb_multi_region_cluster (Data Source) + +Data Source schema for AWS::MemoryDB::MultiRegionCluster + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) The Amazon Resource Name (ARN) of the multi region cluster. +- `description` (String) Description of the multi region cluster. +- `engine` (String) The engine type used by the multi region cluster. +- `engine_version` (String) The Redis engine version used by the multi region cluster. +- `multi_region_cluster_name` (String) The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix. +- `multi_region_cluster_name_suffix` (String) The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier. +- `multi_region_parameter_group_name` (String) The name of the parameter group associated with the multi region cluster. +- `node_type` (String) The compute and memory capacity of the nodes in the multi region cluster. +- `num_shards` (Number) The number of shards the multi region cluster will contain. +- `status` (String) The status of the multi region cluster. For example, Available, Updating, Creating. +- `tags` (Attributes Set) An array of key-value pairs to apply to this multi region cluster. (see [below for nested schema](#nestedatt--tags)) +- `tls_enabled` (Boolean) A flag that enables in-transit encryption when set to true. + +You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster. +- `update_strategy` (String) An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'. + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key for the tag. May not be null. +- `value` (String) The tag's value. May be null. diff --git a/docs/data-sources/memorydb_multi_region_clusters.md b/docs/data-sources/memorydb_multi_region_clusters.md new file mode 100644 index 000000000..10ebff6e7 --- /dev/null +++ b/docs/data-sources/memorydb_multi_region_clusters.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_memorydb_multi_region_clusters Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::MemoryDB::MultiRegionCluster +--- + +# awscc_memorydb_multi_region_clusters (Data Source) + +Plural Data Source schema for AWS::MemoryDB::MultiRegionCluster + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/sagemaker_cluster.md b/docs/data-sources/sagemaker_cluster.md index 60fcaa145..d5ea3270d 100644 --- a/docs/data-sources/sagemaker_cluster.md +++ b/docs/data-sources/sagemaker_cluster.md @@ -45,6 +45,7 @@ Read-Only: - `instance_type` (String) The instance type of the instance group of a SageMaker HyperPod cluster. - `life_cycle_config` (Attributes) The lifecycle configuration for a SageMaker HyperPod cluster. (see [below for nested schema](#nestedatt--instance_groups--life_cycle_config)) - `on_start_deep_health_checks` (List of String) Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in. +- `override_vpc_config` (Attributes) Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC. (see [below for nested schema](#nestedatt--instance_groups--override_vpc_config)) - `threads_per_core` (Number) The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading. @@ -72,6 +73,15 @@ Read-Only: - `source_s3_uri` (String) An Amazon S3 bucket path where your lifecycle scripts are stored. + +### Nested Schema for `instance_groups.override_vpc_config` + +Read-Only: + +- `security_group_ids` (List of String) The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field. +- `subnets` (List of String) The ID of the subnets in the VPC to which you want to connect your training job or model. + + ### Nested Schema for `orchestrator` diff --git a/docs/resources/apigateway_domain_name_v2.md b/docs/resources/apigateway_domain_name_v2.md index a1b7daf34..1d0d3dfc2 100644 --- a/docs/resources/apigateway_domain_name_v2.md +++ b/docs/resources/apigateway_domain_name_v2.md @@ -20,7 +20,6 @@ Resource Type definition for AWS::ApiGateway::DomainNameV2. - `certificate_arn` (String) - `domain_name` (String) - `endpoint_configuration` (Attributes) (see [below for nested schema](#nestedatt--endpoint_configuration)) -- `management_policy` (String) - `policy` (String) - `security_policy` (String) - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) diff --git a/docs/resources/events_connection.md b/docs/resources/events_connection.md index 9fd4561da..6c7ada81e 100644 --- a/docs/resources/events_connection.md +++ b/docs/resources/events_connection.md @@ -75,6 +75,7 @@ resource "awscc_events_connection" "auth0_connection" { - `auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters)) - `authorization_type` (String) - `description` (String) Description of the connection. +- `invocation_connectivity_parameters` (Attributes) The private resource the HTTP request will be sent to. (see [below for nested schema](#nestedatt--invocation_connectivity_parameters)) - `name` (String) Name of the connection. ### Read-Only @@ -90,6 +91,7 @@ Optional: - `api_key_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--api_key_auth_parameters)) - `basic_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--basic_auth_parameters)) +- `connectivity_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--connectivity_parameters)) - `invocation_http_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--invocation_http_parameters)) - `o_auth_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--o_auth_parameters)) @@ -111,6 +113,26 @@ Optional: - `username` (String) + +### Nested Schema for `auth_parameters.connectivity_parameters` + +Optional: + +- `resource_parameters` (Attributes) (see [below for nested schema](#nestedatt--auth_parameters--connectivity_parameters--resource_parameters)) + + +### Nested Schema for `auth_parameters.connectivity_parameters.resource_parameters` + +Optional: + +- `resource_configuration_arn` (String) + +Read-Only: + +- `resource_association_arn` (String) + + + ### Nested Schema for `auth_parameters.invocation_http_parameters` @@ -208,6 +230,28 @@ Optional: - `key` (String) - `value` (String) + + + + + +### Nested Schema for `invocation_connectivity_parameters` + +Optional: + +- `resource_parameters` (Attributes) (see [below for nested schema](#nestedatt--invocation_connectivity_parameters--resource_parameters)) + + +### Nested Schema for `invocation_connectivity_parameters.resource_parameters` + +Optional: + +- `resource_configuration_arn` (String) + +Read-Only: + +- `resource_association_arn` (String) + ## Import Import is supported using the following syntax: diff --git a/docs/resources/invoicing_invoice_unit.md b/docs/resources/invoicing_invoice_unit.md new file mode 100644 index 000000000..64489bd79 --- /dev/null +++ b/docs/resources/invoicing_invoice_unit.md @@ -0,0 +1,58 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_invoicing_invoice_unit Resource - terraform-provider-awscc" +subcategory: "" +description: |- + An invoice unit is a set of mutually exclusive accounts that correspond to your business entity. Invoice units allow you to separate AWS account costs and configures your invoice for each business entity. +--- + +# awscc_invoicing_invoice_unit (Resource) + +An invoice unit is a set of mutually exclusive accounts that correspond to your business entity. Invoice units allow you to separate AWS account costs and configures your invoice for each business entity. + + + + +## Schema + +### Required + +- `invoice_receiver` (String) +- `name` (String) +- `rule` (Attributes) (see [below for nested schema](#nestedatt--rule)) + +### Optional + +- `description` (String) +- `resource_tags` (Attributes List) (see [below for nested schema](#nestedatt--resource_tags)) +- `tax_inheritance_disabled` (Boolean) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `invoice_unit_arn` (String) +- `last_modified` (Number) + + +### Nested Schema for `rule` + +Required: + +- `linked_accounts` (List of String) + + + +### Nested Schema for `resource_tags` + +Optional: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_invoicing_invoice_unit.example "invoice_unit_arn" +``` diff --git a/docs/resources/lambda_event_source_mapping b/docs/resources/lambda_event_source_mapping index 5dc24a7f7..8c9807cef 100644 --- a/docs/resources/lambda_event_source_mapping +++ b/docs/resources/lambda_event_source_mapping @@ -93,9 +93,9 @@ resource "awscc_lambda_permission" "example" { - `maximum_record_age_in_seconds` (Number) (Kinesis and DynamoDB Streams only) Discard records older than the specified age. The default value is -1, which sets the maximum age to infinite. When the value is set to infinite, Lambda never discards old records. The minimum valid value for maximum record age is 60s. Although values less than 60 and greater than -1 fall within the parameter's absolute range, they are not allowed - `maximum_retry_attempts` (Number) (Kinesis and DynamoDB Streams only) Discard records after the specified number of retries. The default value is -1, which sets the maximum number of retries to infinite. When MaximumRetryAttempts is infinite, Lambda retries failed records until the record expires in the event source. -- `metrics_config` (Attributes) (see [below for nested schema](#nestedatt--metrics_config)) +- `metrics_config` (Attributes) The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). (see [below for nested schema](#nestedatt--metrics_config)) - `parallelization_factor` (Number) (Kinesis and DynamoDB Streams only) The number of batches to process concurrently from each shard. The default value is 1. -- `provisioned_poller_config` (Attributes) (see [below for nested schema](#nestedatt--provisioned_poller_config)) +- `provisioned_poller_config` (Attributes) (Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode). (see [below for nested schema](#nestedatt--provisioned_poller_config)) - `queues` (List of String) (Amazon MQ) The name of the Amazon MQ broker destination queue to consume. - `scaling_config` (Attributes) (Amazon SQS only) The scaling configuration for the event source. For more information, see [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). (see [below for nested schema](#nestedatt--scaling_config)) - `self_managed_event_source` (Attributes) The self-managed Apache Kafka cluster for your event source. (see [below for nested schema](#nestedatt--self_managed_event_source)) @@ -138,9 +138,8 @@ Optional: Optional: - `destination` (String) The Amazon Resource Name (ARN) of the destination resource. - To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination. - To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination. - To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. + To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination. + To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. @@ -175,7 +174,7 @@ Optional: Optional: -- `metrics` (List of String) Metric groups to enable. +- `metrics` (List of String) The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). diff --git a/docs/resources/lambda_event_source_mapping.md b/docs/resources/lambda_event_source_mapping.md index a05291815..cd82b86a1 100644 --- a/docs/resources/lambda_event_source_mapping.md +++ b/docs/resources/lambda_event_source_mapping.md @@ -70,9 +70,9 @@ The ``AWS::Lambda::EventSourceMapping`` resource creates a mapping between an ev - `maximum_record_age_in_seconds` (Number) (Kinesis and DynamoDB Streams only) Discard records older than the specified age. The default value is -1, which sets the maximum age to infinite. When the value is set to infinite, Lambda never discards old records. The minimum valid value for maximum record age is 60s. Although values less than 60 and greater than -1 fall within the parameter's absolute range, they are not allowed - `maximum_retry_attempts` (Number) (Kinesis and DynamoDB Streams only) Discard records after the specified number of retries. The default value is -1, which sets the maximum number of retries to infinite. When MaximumRetryAttempts is infinite, Lambda retries failed records until the record expires in the event source. -- `metrics_config` (Attributes) (see [below for nested schema](#nestedatt--metrics_config)) +- `metrics_config` (Attributes) The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). (see [below for nested schema](#nestedatt--metrics_config)) - `parallelization_factor` (Number) (Kinesis and DynamoDB Streams only) The number of batches to process concurrently from each shard. The default value is 1. -- `provisioned_poller_config` (Attributes) (see [below for nested schema](#nestedatt--provisioned_poller_config)) +- `provisioned_poller_config` (Attributes) (Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode). (see [below for nested schema](#nestedatt--provisioned_poller_config)) - `queues` (List of String) (Amazon MQ) The name of the Amazon MQ broker destination queue to consume. - `scaling_config` (Attributes) (Amazon SQS only) The scaling configuration for the event source. For more information, see [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). (see [below for nested schema](#nestedatt--scaling_config)) - `self_managed_event_source` (Attributes) The self-managed Apache Kafka cluster for your event source. (see [below for nested schema](#nestedatt--self_managed_event_source)) @@ -115,9 +115,8 @@ Optional: Optional: - `destination` (String) The Amazon Resource Name (ARN) of the destination resource. - To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination. - To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination. - To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. + To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination. + To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination. @@ -152,7 +151,7 @@ Optional: Optional: -- `metrics` (List of String) Metric groups to enable. +- `metrics` (List of String) The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics). diff --git a/docs/resources/logs_integration.md b/docs/resources/logs_integration.md new file mode 100644 index 000000000..dd38e3ce0 --- /dev/null +++ b/docs/resources/logs_integration.md @@ -0,0 +1,53 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_logs_integration Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Schema for Logs Integration Resource +--- + +# awscc_logs_integration (Resource) + +Resource Schema for Logs Integration Resource + + + + +## Schema + +### Required + +- `integration_name` (String) User provided identifier for integration, unique to the user account. +- `integration_type` (String) The type of the Integration. +- `resource_config` (Attributes) OpenSearchResourceConfig for the given Integration (see [below for nested schema](#nestedatt--resource_config)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `integration_status` (String) Status of creation for the Integration and its resources + + +### Nested Schema for `resource_config` + +Optional: + +- `open_search_resource_config` (Attributes) (see [below for nested schema](#nestedatt--resource_config--open_search_resource_config)) + + +### Nested Schema for `resource_config.open_search_resource_config` + +Optional: + +- `application_arn` (String) +- `dashboard_viewer_principals` (List of String) +- `data_source_role_arn` (String) +- `kms_key_arn` (String) +- `retention_days` (Number) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_logs_integration.example "integration_name" +``` diff --git a/docs/resources/memorydb_cluster.md b/docs/resources/memorydb_cluster.md index b326e8913..9ddfec0c3 100644 --- a/docs/resources/memorydb_cluster.md +++ b/docs/resources/memorydb_cluster.md @@ -34,6 +34,7 @@ You cannot modify the value of AutoMinorVersionUpgrade after the cluster is crea - `final_snapshot_name` (String) The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward. - `kms_key_id` (String) The ID of the KMS key used to encrypt the cluster. - `maintenance_window` (String) Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. +- `multi_region_cluster_name` (String) The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix. - `num_replicas_per_shard` (Number) The number of replicas to apply to each shard. The limit is 5. - `num_shards` (Number) The number of shards the cluster will contain. - `parameter_group_name` (String) The name of the parameter group associated with the cluster. diff --git a/docs/resources/memorydb_multi_region_cluster.md b/docs/resources/memorydb_multi_region_cluster.md new file mode 100644 index 000000000..644eb55ef --- /dev/null +++ b/docs/resources/memorydb_multi_region_cluster.md @@ -0,0 +1,57 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_memorydb_multi_region_cluster Resource - terraform-provider-awscc" +subcategory: "" +description: |- + The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster. +--- + +# awscc_memorydb_multi_region_cluster (Resource) + +The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster. + + + + +## Schema + +### Required + +- `node_type` (String) The compute and memory capacity of the nodes in the multi region cluster. + +### Optional + +- `description` (String) Description of the multi region cluster. +- `engine` (String) The engine type used by the multi region cluster. +- `engine_version` (String) The Redis engine version used by the multi region cluster. +- `multi_region_cluster_name_suffix` (String) The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier. +- `multi_region_parameter_group_name` (String) The name of the parameter group associated with the multi region cluster. +- `num_shards` (Number) The number of shards the multi region cluster will contain. +- `tags` (Attributes Set) An array of key-value pairs to apply to this multi region cluster. (see [below for nested schema](#nestedatt--tags)) +- `tls_enabled` (Boolean) A flag that enables in-transit encryption when set to true. + +You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster. +- `update_strategy` (String) An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'. + +### Read-Only + +- `arn` (String) The Amazon Resource Name (ARN) of the multi region cluster. +- `id` (String) Uniquely identifies the resource. +- `multi_region_cluster_name` (String) The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix. +- `status` (String) The status of the multi region cluster. For example, Available, Updating, Creating. + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key for the tag. May not be null. +- `value` (String) The tag's value. May be null. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_memorydb_multi_region_cluster.example "multi_region_cluster_name" +``` diff --git a/docs/resources/sagemaker_cluster.md b/docs/resources/sagemaker_cluster.md index 46f6f1ab6..fcb242807 100644 --- a/docs/resources/sagemaker_cluster.md +++ b/docs/resources/sagemaker_cluster.md @@ -154,6 +154,7 @@ Optional: - `current_count` (Number) The number of instances that are currently in the instance group of a SageMaker HyperPod cluster. - `instance_storage_configs` (Attributes List) The instance storage configuration for the instance group. (see [below for nested schema](#nestedatt--instance_groups--instance_storage_configs)) - `on_start_deep_health_checks` (List of String) Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in. +- `override_vpc_config` (Attributes) Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC. (see [below for nested schema](#nestedatt--instance_groups--override_vpc_config)) - `threads_per_core` (Number) The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading. @@ -181,6 +182,15 @@ Optional: + +### Nested Schema for `instance_groups.override_vpc_config` + +Optional: + +- `security_group_ids` (List of String) The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field. +- `subnets` (List of String) The ID of the subnets in the VPC to which you want to connect your training job or model. + + ### Nested Schema for `orchestrator` diff --git a/examples/resources/awscc_invoicing_invoice_unit/import.sh b/examples/resources/awscc_invoicing_invoice_unit/import.sh new file mode 100644 index 000000000..e6c07adf5 --- /dev/null +++ b/examples/resources/awscc_invoicing_invoice_unit/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_invoicing_invoice_unit.example "invoice_unit_arn" \ No newline at end of file diff --git a/examples/resources/awscc_logs_integration/import.sh b/examples/resources/awscc_logs_integration/import.sh new file mode 100644 index 000000000..ff7bff365 --- /dev/null +++ b/examples/resources/awscc_logs_integration/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_logs_integration.example "integration_name" \ No newline at end of file diff --git a/examples/resources/awscc_memorydb_multi_region_cluster/import.sh b/examples/resources/awscc_memorydb_multi_region_cluster/import.sh new file mode 100644 index 000000000..dc7f09ae3 --- /dev/null +++ b/examples/resources/awscc_memorydb_multi_region_cluster/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_memorydb_multi_region_cluster.example "multi_region_cluster_name" \ No newline at end of file diff --git a/internal/aws/apigateway/domain_name_v2_resource_gen.go b/internal/aws/apigateway/domain_name_v2_resource_gen.go index 251dd5687..3d64b7b9d 100644 --- a/internal/aws/apigateway/domain_name_v2_resource_gen.go +++ b/internal/aws/apigateway/domain_name_v2_resource_gen.go @@ -114,19 +114,6 @@ func domainNameV2Resource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ - // Property: ManagementPolicy - // CloudFormation resource type schema: - // - // { - // "type": "string" - // } - "management_policy": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: Policy // CloudFormation resource type schema: // @@ -227,7 +214,6 @@ func domainNameV2Resource(ctx context.Context) (resource.Resource, error) { "domain_name_id": "DomainNameId", "endpoint_configuration": "EndpointConfiguration", "key": "Key", - "management_policy": "ManagementPolicy", "policy": "Policy", "security_policy": "SecurityPolicy", "tags": "Tags", diff --git a/internal/aws/apigateway/domain_name_v2_singular_data_source_gen.go b/internal/aws/apigateway/domain_name_v2_singular_data_source_gen.go index f1189dbd3..95d3864e4 100644 --- a/internal/aws/apigateway/domain_name_v2_singular_data_source_gen.go +++ b/internal/aws/apigateway/domain_name_v2_singular_data_source_gen.go @@ -86,15 +86,6 @@ func domainNameV2DataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ - // Property: ManagementPolicy - // CloudFormation resource type schema: - // - // { - // "type": "string" - // } - "management_policy": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, - }, /*END ATTRIBUTE*/ // Property: Policy // CloudFormation resource type schema: // @@ -169,7 +160,6 @@ func domainNameV2DataSource(ctx context.Context) (datasource.DataSource, error) "domain_name_id": "DomainNameId", "endpoint_configuration": "EndpointConfiguration", "key": "Key", - "management_policy": "ManagementPolicy", "policy": "Policy", "security_policy": "SecurityPolicy", "tags": "Tags", diff --git a/internal/aws/cloudformation/public_type_version_resource_gen.go b/internal/aws/cloudformation/public_type_version_resource_gen.go index 16bd59bb4..2ec01e56c 100644 --- a/internal/aws/cloudformation/public_type_version_resource_gen.go +++ b/internal/aws/cloudformation/public_type_version_resource_gen.go @@ -218,7 +218,7 @@ func publicTypeVersionResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/Arn", }) - opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + opts = opts.WithCreateTimeoutInMinutes(2160).WithDeleteTimeoutInMinutes(0) v, err := generic.NewResource(ctx, opts...) diff --git a/internal/aws/cloudformation/type_activation_resource_gen.go b/internal/aws/cloudformation/type_activation_resource_gen.go index 8aacdff1d..1e3443d44 100644 --- a/internal/aws/cloudformation/type_activation_resource_gen.go +++ b/internal/aws/cloudformation/type_activation_resource_gen.go @@ -58,6 +58,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // AutoUpdate is a write-only property. }, /*END ATTRIBUTE*/ // Property: ExecutionRoleArn // CloudFormation resource type schema: @@ -72,8 +73,8 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ + // ExecutionRoleArn is a write-only property. }, /*END ATTRIBUTE*/ // Property: LoggingConfig // CloudFormation resource type schema: @@ -133,6 +134,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ + // LoggingConfig is a write-only property. }, /*END ATTRIBUTE*/ // Property: MajorVersion // CloudFormation resource type schema: @@ -153,6 +155,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // MajorVersion is a write-only property. }, /*END ATTRIBUTE*/ // Property: PublicTypeArn // CloudFormation resource type schema: @@ -173,7 +176,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: PublisherId @@ -196,7 +198,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Type @@ -224,8 +225,8 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ + // Type is a write-only property. }, /*END ATTRIBUTE*/ // Property: TypeName // CloudFormation resource type schema: @@ -244,7 +245,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: TypeNameAlias @@ -267,7 +267,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: VersionBump @@ -294,6 +293,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // VersionBump is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -332,6 +332,14 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { "version_bump": "VersionBump", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ExecutionRoleArn", + "/properties/Type", + "/properties/LoggingConfig", + "/properties/VersionBump", + "/properties/AutoUpdate", + "/properties/MajorVersion", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/events/connection_resource_gen.go b/internal/aws/events/connection_resource_gen.go index 9e53a9493..075bce3f2 100644 --- a/internal/aws/events/connection_resource_gen.go +++ b/internal/aws/events/connection_resource_gen.go @@ -106,6 +106,35 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "ConnectivityParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceAssociationArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$", + // "type": "string" + // }, + // "ResourceConfigurationArn": { + // "maxLength": 2048, + // "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + // "type": "string" + // } + // }, + // "required": [ + // "ResourceConfigurationArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ResourceParameters" + // ], + // "type": "object" + // }, // "InvocationHttpParameters": { // "additionalProperties": false, // "properties": { @@ -374,6 +403,49 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ConnectivityParameters + "connectivity_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceParameters + "resource_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceAssociationArn + "resource_association_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.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*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: InvocationHttpParameters "invocation_http_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -784,6 +856,82 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: InvocationConnectivityParameters + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The private resource the HTTP request will be sent to.", + // "properties": { + // "ResourceParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceAssociationArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$", + // "type": "string" + // }, + // "ResourceConfigurationArn": { + // "maxLength": 2048, + // "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + // "type": "string" + // } + // }, + // "required": [ + // "ResourceConfigurationArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ResourceParameters" + // ], + // "type": "object" + // } + "invocation_connectivity_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceParameters + "resource_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceAssociationArn + "resource_association_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.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*/ + Description: "The private resource the HTTP request will be sent to.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -844,32 +992,37 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::Events::Connection").WithTerraformTypeName("awscc_events_connection") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "api_key_auth_parameters": "ApiKeyAuthParameters", - "api_key_name": "ApiKeyName", - "api_key_value": "ApiKeyValue", - "arn": "Arn", - "auth_parameters": "AuthParameters", - "authorization_endpoint": "AuthorizationEndpoint", - "authorization_type": "AuthorizationType", - "basic_auth_parameters": "BasicAuthParameters", - "body_parameters": "BodyParameters", - "client_id": "ClientID", - "client_parameters": "ClientParameters", - "client_secret": "ClientSecret", - "description": "Description", - "header_parameters": "HeaderParameters", - "http_method": "HttpMethod", - "invocation_http_parameters": "InvocationHttpParameters", - "is_value_secret": "IsValueSecret", - "key": "Key", - "name": "Name", - "o_auth_http_parameters": "OAuthHttpParameters", - "o_auth_parameters": "OAuthParameters", - "password": "Password", - "query_string_parameters": "QueryStringParameters", - "secret_arn": "SecretArn", - "username": "Username", - "value": "Value", + "api_key_auth_parameters": "ApiKeyAuthParameters", + "api_key_name": "ApiKeyName", + "api_key_value": "ApiKeyValue", + "arn": "Arn", + "auth_parameters": "AuthParameters", + "authorization_endpoint": "AuthorizationEndpoint", + "authorization_type": "AuthorizationType", + "basic_auth_parameters": "BasicAuthParameters", + "body_parameters": "BodyParameters", + "client_id": "ClientID", + "client_parameters": "ClientParameters", + "client_secret": "ClientSecret", + "connectivity_parameters": "ConnectivityParameters", + "description": "Description", + "header_parameters": "HeaderParameters", + "http_method": "HttpMethod", + "invocation_connectivity_parameters": "InvocationConnectivityParameters", + "invocation_http_parameters": "InvocationHttpParameters", + "is_value_secret": "IsValueSecret", + "key": "Key", + "name": "Name", + "o_auth_http_parameters": "OAuthHttpParameters", + "o_auth_parameters": "OAuthParameters", + "password": "Password", + "query_string_parameters": "QueryStringParameters", + "resource_association_arn": "ResourceAssociationArn", + "resource_configuration_arn": "ResourceConfigurationArn", + "resource_parameters": "ResourceParameters", + "secret_arn": "SecretArn", + "username": "Username", + "value": "Value", }) opts = opts.WithWriteOnlyPropertyPaths([]string{ diff --git a/internal/aws/events/connection_singular_data_source_gen.go b/internal/aws/events/connection_singular_data_source_gen.go index b4d6e47fa..5a0183c5c 100644 --- a/internal/aws/events/connection_singular_data_source_gen.go +++ b/internal/aws/events/connection_singular_data_source_gen.go @@ -93,6 +93,35 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // ], // "type": "object" // }, + // "ConnectivityParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceAssociationArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$", + // "type": "string" + // }, + // "ResourceConfigurationArn": { + // "maxLength": 2048, + // "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + // "type": "string" + // } + // }, + // "required": [ + // "ResourceConfigurationArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ResourceParameters" + // ], + // "type": "object" + // }, // "InvocationHttpParameters": { // "additionalProperties": false, // "properties": { @@ -319,6 +348,26 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: ConnectivityParameters + "connectivity_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceParameters + "resource_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceAssociationArn + "resource_association_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: InvocationHttpParameters "invocation_http_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -508,6 +557,59 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Description of the connection.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: InvocationConnectivityParameters + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The private resource the HTTP request will be sent to.", + // "properties": { + // "ResourceParameters": { + // "additionalProperties": false, + // "properties": { + // "ResourceAssociationArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$", + // "type": "string" + // }, + // "ResourceConfigurationArn": { + // "maxLength": 2048, + // "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + // "type": "string" + // } + // }, + // "required": [ + // "ResourceConfigurationArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ResourceParameters" + // ], + // "type": "object" + // } + "invocation_connectivity_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceParameters + "resource_parameters": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ResourceAssociationArn + "resource_association_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The private resource the HTTP request will be sent to.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -551,32 +653,37 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithCloudFormationTypeName("AWS::Events::Connection").WithTerraformTypeName("awscc_events_connection") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "api_key_auth_parameters": "ApiKeyAuthParameters", - "api_key_name": "ApiKeyName", - "api_key_value": "ApiKeyValue", - "arn": "Arn", - "auth_parameters": "AuthParameters", - "authorization_endpoint": "AuthorizationEndpoint", - "authorization_type": "AuthorizationType", - "basic_auth_parameters": "BasicAuthParameters", - "body_parameters": "BodyParameters", - "client_id": "ClientID", - "client_parameters": "ClientParameters", - "client_secret": "ClientSecret", - "description": "Description", - "header_parameters": "HeaderParameters", - "http_method": "HttpMethod", - "invocation_http_parameters": "InvocationHttpParameters", - "is_value_secret": "IsValueSecret", - "key": "Key", - "name": "Name", - "o_auth_http_parameters": "OAuthHttpParameters", - "o_auth_parameters": "OAuthParameters", - "password": "Password", - "query_string_parameters": "QueryStringParameters", - "secret_arn": "SecretArn", - "username": "Username", - "value": "Value", + "api_key_auth_parameters": "ApiKeyAuthParameters", + "api_key_name": "ApiKeyName", + "api_key_value": "ApiKeyValue", + "arn": "Arn", + "auth_parameters": "AuthParameters", + "authorization_endpoint": "AuthorizationEndpoint", + "authorization_type": "AuthorizationType", + "basic_auth_parameters": "BasicAuthParameters", + "body_parameters": "BodyParameters", + "client_id": "ClientID", + "client_parameters": "ClientParameters", + "client_secret": "ClientSecret", + "connectivity_parameters": "ConnectivityParameters", + "description": "Description", + "header_parameters": "HeaderParameters", + "http_method": "HttpMethod", + "invocation_connectivity_parameters": "InvocationConnectivityParameters", + "invocation_http_parameters": "InvocationHttpParameters", + "is_value_secret": "IsValueSecret", + "key": "Key", + "name": "Name", + "o_auth_http_parameters": "OAuthHttpParameters", + "o_auth_parameters": "OAuthParameters", + "password": "Password", + "query_string_parameters": "QueryStringParameters", + "resource_association_arn": "ResourceAssociationArn", + "resource_configuration_arn": "ResourceConfigurationArn", + "resource_parameters": "ResourceParameters", + "secret_arn": "SecretArn", + "username": "Username", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/invoicing/invoice_unit_plural_data_source_gen.go b/internal/aws/invoicing/invoice_unit_plural_data_source_gen.go new file mode 100644 index 000000000..855a98c78 --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package invoicing + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_invoicing_invoice_units", invoiceUnitsDataSource) +} + +// invoiceUnitsDataSource returns the Terraform awscc_invoicing_invoice_units data source. +// This Terraform data source corresponds to the CloudFormation AWS::Invoicing::InvoiceUnit resource. +func invoiceUnitsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::Invoicing::InvoiceUnit", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Invoicing::InvoiceUnit").WithTerraformTypeName("awscc_invoicing_invoice_units") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/invoicing/invoice_unit_plural_data_source_gen_test.go b/internal/aws/invoicing/invoice_unit_plural_data_source_gen_test.go new file mode 100644 index 000000000..5b978b957 --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package invoicing_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSInvoicingInvoiceUnitsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Invoicing::InvoiceUnit", "awscc_invoicing_invoice_units", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/invoicing/invoice_unit_resource_gen.go b/internal/aws/invoicing/invoice_unit_resource_gen.go new file mode 100644 index 000000000..3bb8bfd60 --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_resource_gen.go @@ -0,0 +1,277 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package invoicing + +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" + "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/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-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() { + registry.AddResourceFactory("awscc_invoicing_invoice_unit", invoiceUnitResource) +} + +// invoiceUnitResource returns the Terraform awscc_invoicing_invoice_unit resource. +// This Terraform resource corresponds to the CloudFormation AWS::Invoicing::InvoiceUnit resource. +func invoiceUnitResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "maxLength": 500, + // "minLength": 0, + // "pattern": "^[\\S\\s]*$", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 500), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\S\\s]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InvoiceReceiver + // CloudFormation resource type schema: + // + // { + // "maxLength": 12, + // "minLength": 12, + // "pattern": "^\\d{12}$", + // "type": "string" + // } + "invoice_receiver": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(12, 12), + stringvalidator.RegexMatches(regexp.MustCompile("^\\d{12}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InvoiceUnitArn + // CloudFormation resource type schema: + // + // { + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + // "type": "string" + // } + "invoice_unit_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LastModified + // CloudFormation resource type schema: + // + // { + // "type": "number" + // } + "last_modified": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 50, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceTags + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 200, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "resource_tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 200), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Rule + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "LinkedAccounts": { + // "items": { + // "maxLength": 12, + // "minLength": 12, + // "pattern": "^\\d{12}$", + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "LinkedAccounts" + // ], + // "type": "object" + // } + "rule": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LinkedAccounts + "linked_accounts": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Required: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(12, 12), + stringvalidator.RegexMatches(regexp.MustCompile("^\\d{12}$"), ""), + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Required: true, + }, /*END ATTRIBUTE*/ + // Property: TaxInheritanceDisabled + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "tax_inheritance_disabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.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: "An invoice unit is a set of mutually exclusive accounts that correspond to your business entity. Invoice units allow you to separate AWS account costs and configures your invoice for each business entity.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Invoicing::InvoiceUnit").WithTerraformTypeName("awscc_invoicing_invoice_unit") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "invoice_receiver": "InvoiceReceiver", + "invoice_unit_arn": "InvoiceUnitArn", + "key": "Key", + "last_modified": "LastModified", + "linked_accounts": "LinkedAccounts", + "name": "Name", + "resource_tags": "ResourceTags", + "rule": "Rule", + "tax_inheritance_disabled": "TaxInheritanceDisabled", + "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/invoicing/invoice_unit_resource_gen_test.go b/internal/aws/invoicing/invoice_unit_resource_gen_test.go new file mode 100644 index 000000000..076ce20ad --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_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 invoicing_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSInvoicingInvoiceUnit_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Invoicing::InvoiceUnit", "awscc_invoicing_invoice_unit", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/invoicing/invoice_unit_singular_data_source_gen.go b/internal/aws/invoicing/invoice_unit_singular_data_source_gen.go new file mode 100644 index 000000000..9fb0e8306 --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_singular_data_source_gen.go @@ -0,0 +1,201 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package invoicing + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_invoicing_invoice_unit", invoiceUnitDataSource) +} + +// invoiceUnitDataSource returns the Terraform awscc_invoicing_invoice_unit data source. +// This Terraform data source corresponds to the CloudFormation AWS::Invoicing::InvoiceUnit resource. +func invoiceUnitDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "maxLength": 500, + // "minLength": 0, + // "pattern": "^[\\S\\s]*$", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InvoiceReceiver + // CloudFormation resource type schema: + // + // { + // "maxLength": 12, + // "minLength": 12, + // "pattern": "^\\d{12}$", + // "type": "string" + // } + "invoice_receiver": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InvoiceUnitArn + // CloudFormation resource type schema: + // + // { + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + // "type": "string" + // } + "invoice_unit_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LastModified + // CloudFormation resource type schema: + // + // { + // "type": "number" + // } + "last_modified": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "maxLength": 50, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceTags + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 200, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "resource_tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Rule + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "LinkedAccounts": { + // "items": { + // "maxLength": 12, + // "minLength": 12, + // "pattern": "^\\d{12}$", + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "LinkedAccounts" + // ], + // "type": "object" + // } + "rule": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LinkedAccounts + "linked_accounts": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TaxInheritanceDisabled + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "tax_inheritance_disabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + 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::Invoicing::InvoiceUnit", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Invoicing::InvoiceUnit").WithTerraformTypeName("awscc_invoicing_invoice_unit") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "invoice_receiver": "InvoiceReceiver", + "invoice_unit_arn": "InvoiceUnitArn", + "key": "Key", + "last_modified": "LastModified", + "linked_accounts": "LinkedAccounts", + "name": "Name", + "resource_tags": "ResourceTags", + "rule": "Rule", + "tax_inheritance_disabled": "TaxInheritanceDisabled", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/invoicing/invoice_unit_singular_data_source_gen_test.go b/internal/aws/invoicing/invoice_unit_singular_data_source_gen_test.go new file mode 100644 index 000000000..45055be6b --- /dev/null +++ b/internal/aws/invoicing/invoice_unit_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 invoicing_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSInvoicingInvoiceUnitDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Invoicing::InvoiceUnit", "awscc_invoicing_invoice_unit", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSInvoicingInvoiceUnitDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Invoicing::InvoiceUnit", "awscc_invoicing_invoice_unit", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/kendra/index_resource_gen.go b/internal/aws/kendra/index_resource_gen.go index 70e6c04e5..13e4d3cae 100644 --- a/internal/aws/kendra/index_resource_gen.go +++ b/internal/aws/kendra/index_resource_gen.go @@ -400,7 +400,8 @@ func indexResource(ctx context.Context) (resource.Resource, error) { // "description": "Edition of index", // "enum": [ // "DEVELOPER_EDITION", - // "ENTERPRISE_EDITION" + // "ENTERPRISE_EDITION", + // "GEN_AI_ENTERPRISE_EDITION" // ], // "type": "string" // } @@ -411,6 +412,7 @@ func indexResource(ctx context.Context) (resource.Resource, error) { stringvalidator.OneOf( "DEVELOPER_EDITION", "ENTERPRISE_EDITION", + "GEN_AI_ENTERPRISE_EDITION", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/kendra/index_singular_data_source_gen.go b/internal/aws/kendra/index_singular_data_source_gen.go index a852e8bb8..47e5a50cc 100644 --- a/internal/aws/kendra/index_singular_data_source_gen.go +++ b/internal/aws/kendra/index_singular_data_source_gen.go @@ -259,7 +259,8 @@ func indexDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "Edition of index", // "enum": [ // "DEVELOPER_EDITION", - // "ENTERPRISE_EDITION" + // "ENTERPRISE_EDITION", + // "GEN_AI_ENTERPRISE_EDITION" // ], // "type": "string" // } diff --git a/internal/aws/lambda/event_source_mapping_resource_gen.go b/internal/aws/lambda/event_source_mapping_resource_gen.go index a65d5520c..dbc7725b9 100644 --- a/internal/aws/lambda/event_source_mapping_resource_gen.go +++ b/internal/aws/lambda/event_source_mapping_resource_gen.go @@ -125,7 +125,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // "description": "The destination configuration for failed invocations.", // "properties": { // "Destination": { - // "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + // "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", // "maxLength": 1024, // "minLength": 12, // "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", @@ -144,7 +144,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Destination "destination": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + Description: "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -531,10 +531,10 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // // { // "additionalProperties": false, - // "description": "", + // "description": "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", // "properties": { // "Metrics": { - // "description": "Metric groups to enable.", + // "description": "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", // "items": { // "enum": [ // "EventCount" @@ -554,7 +554,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // Property: Metrics "metrics": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "Metric groups to enable.", + Description: "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", Optional: true, Computed: true, Validators: []validator.List{ /*START VALIDATORS*/ @@ -571,7 +571,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -603,7 +603,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) // // { // "additionalProperties": false, - // "description": "", + // "description": "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode).", // "properties": { // "MaximumPollers": { // "description": "The maximum number of event pollers this event source can scale up to.", @@ -647,7 +647,7 @@ func eventSourceMappingResource(ctx context.Context) (resource.Resource, error) }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode).", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ 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 665e1ceed..0d7fe0d51 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 @@ -87,7 +87,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // "description": "The destination configuration for failed invocations.", // "properties": { // "Destination": { - // "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + // "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", // "maxLength": 1024, // "minLength": 12, // "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", @@ -106,7 +106,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Destination "destination": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + Description: "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ @@ -365,10 +365,10 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // // { // "additionalProperties": false, - // "description": "", + // "description": "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", // "properties": { // "Metrics": { - // "description": "Metric groups to enable.", + // "description": "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", // "items": { // "enum": [ // "EventCount" @@ -388,11 +388,11 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // Property: Metrics "metrics": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "Metric groups to enable.", + Description: "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", Computed: true, }, /*END ATTRIBUTE*/ // Property: ParallelizationFactor @@ -413,7 +413,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e // // { // "additionalProperties": false, - // "description": "", + // "description": "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode).", // "properties": { // "MaximumPollers": { // "description": "The maximum number of event pollers this event source can scale up to.", @@ -443,7 +443,7 @@ func eventSourceMappingDataSource(ctx context.Context) (datasource.DataSource, e Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode).", Computed: true, }, /*END ATTRIBUTE*/ // Property: Queues diff --git a/internal/aws/logs/integration_plural_data_source_gen.go b/internal/aws/logs/integration_plural_data_source_gen.go new file mode 100644 index 000000000..f9bf83217 --- /dev/null +++ b/internal/aws/logs/integration_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package logs + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_logs_integrations", integrationsDataSource) +} + +// integrationsDataSource returns the Terraform awscc_logs_integrations data source. +// This Terraform data source corresponds to the CloudFormation AWS::Logs::Integration resource. +func integrationsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::Logs::Integration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Logs::Integration").WithTerraformTypeName("awscc_logs_integrations") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/logs/integration_plural_data_source_gen_test.go b/internal/aws/logs/integration_plural_data_source_gen_test.go new file mode 100644 index 000000000..24b91ec7f --- /dev/null +++ b/internal/aws/logs/integration_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package logs_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSLogsIntegrationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Logs::Integration", "awscc_logs_integrations", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/logs/integration_resource_gen.go b/internal/aws/logs/integration_resource_gen.go new file mode 100644 index 000000000..b41cc5f0f --- /dev/null +++ b/internal/aws/logs/integration_resource_gen.go @@ -0,0 +1,283 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package logs + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-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() { + registry.AddResourceFactory("awscc_logs_integration", integrationResource) +} + +// integrationResource returns the Terraform awscc_logs_integration resource. +// This Terraform resource corresponds to the CloudFormation AWS::Logs::Integration resource. +func integrationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: IntegrationName + // CloudFormation resource type schema: + // + // { + // "description": "User provided identifier for integration, unique to the user account.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "[\\.\\-_/#A-Za-z0-9]+", + // "type": "string" + // } + "integration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "User provided identifier for integration, unique to the user account.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + stringvalidator.RegexMatches(regexp.MustCompile("[\\.\\-_/#A-Za-z0-9]+"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IntegrationStatus + // CloudFormation resource type schema: + // + // { + // "description": "Status of creation for the Integration and its resources", + // "enum": [ + // "PROVISIONING", + // "ACTIVE", + // "FAILED" + // ], + // "type": "string" + // } + "integration_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Status of creation for the Integration and its resources", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IntegrationType + // CloudFormation resource type schema: + // + // { + // "description": "The type of the Integration.", + // "enum": [ + // "OPENSEARCH" + // ], + // "type": "string" + // } + "integration_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of the Integration.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "OPENSEARCH", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "OpenSearchResourceConfig for the given Integration", + // "properties": { + // "OpenSearchResourceConfig": { + // "additionalProperties": false, + // "properties": { + // "ApplicationARN": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "DashboardViewerPrincipals": { + // "items": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "type": "array" + // }, + // "DataSourceRoleArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "KmsKeyArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "RetentionDays": { + // "maximum": 3650, + // "minimum": 1, + // "type": "integer" + // } + // }, + // "required": [ + // "DataSourceRoleArn", + // "DashboardViewerPrincipals" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "resource_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: OpenSearchResourceConfig + "open_search_resource_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ApplicationARN + "application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(20, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("[\\w#+=/:,.@-]*\\*?"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DashboardViewerPrincipals + "dashboard_viewer_principals": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(20, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("[\\w#+=/:,.@-]*\\*?"), ""), + ), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataSourceRoleArn + "data_source_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(20, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("[\\w#+=/:,.@-]*\\*?"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: KmsKeyArn + "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(20, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("[\\w#+=/:,.@-]*\\*?"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RetentionDays + "retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.Between(1, 3650), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.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*/ + Description: "OpenSearchResourceConfig for the given Integration", + Required: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + // ResourceConfig is a write-only property. + }, /*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 Schema for Logs Integration Resource", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Logs::Integration").WithTerraformTypeName("awscc_logs_integration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "application_arn": "ApplicationARN", + "dashboard_viewer_principals": "DashboardViewerPrincipals", + "data_source_role_arn": "DataSourceRoleArn", + "integration_name": "IntegrationName", + "integration_status": "IntegrationStatus", + "integration_type": "IntegrationType", + "kms_key_arn": "KmsKeyArn", + "open_search_resource_config": "OpenSearchResourceConfig", + "resource_config": "ResourceConfig", + "retention_days": "RetentionDays", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ResourceConfig", + }) + 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/logs/integration_resource_gen_test.go b/internal/aws/logs/integration_resource_gen_test.go new file mode 100644 index 000000000..b21104944 --- /dev/null +++ b/internal/aws/logs/integration_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 logs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSLogsIntegration_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Logs::Integration", "awscc_logs_integration", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/logs/integration_singular_data_source_gen.go b/internal/aws/logs/integration_singular_data_source_gen.go new file mode 100644 index 000000000..5bd90d860 --- /dev/null +++ b/internal/aws/logs/integration_singular_data_source_gen.go @@ -0,0 +1,191 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package logs + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_logs_integration", integrationDataSource) +} + +// integrationDataSource returns the Terraform awscc_logs_integration data source. +// This Terraform data source corresponds to the CloudFormation AWS::Logs::Integration resource. +func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: IntegrationName + // CloudFormation resource type schema: + // + // { + // "description": "User provided identifier for integration, unique to the user account.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "[\\.\\-_/#A-Za-z0-9]+", + // "type": "string" + // } + "integration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "User provided identifier for integration, unique to the user account.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IntegrationStatus + // CloudFormation resource type schema: + // + // { + // "description": "Status of creation for the Integration and its resources", + // "enum": [ + // "PROVISIONING", + // "ACTIVE", + // "FAILED" + // ], + // "type": "string" + // } + "integration_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Status of creation for the Integration and its resources", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IntegrationType + // CloudFormation resource type schema: + // + // { + // "description": "The type of the Integration.", + // "enum": [ + // "OPENSEARCH" + // ], + // "type": "string" + // } + "integration_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of the Integration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "OpenSearchResourceConfig for the given Integration", + // "properties": { + // "OpenSearchResourceConfig": { + // "additionalProperties": false, + // "properties": { + // "ApplicationARN": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "DashboardViewerPrincipals": { + // "items": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "type": "array" + // }, + // "DataSourceRoleArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "KmsKeyArn": { + // "maxLength": 2048, + // "minLength": 20, + // "pattern": "[\\w#+=/:,.@-]*\\*?", + // "type": "string" + // }, + // "RetentionDays": { + // "maximum": 3650, + // "minimum": 1, + // "type": "integer" + // } + // }, + // "required": [ + // "DataSourceRoleArn", + // "DashboardViewerPrincipals" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "resource_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: OpenSearchResourceConfig + "open_search_resource_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ApplicationARN + "application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DashboardViewerPrincipals + "dashboard_viewer_principals": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataSourceRoleArn + "data_source_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: KmsKeyArn + "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RetentionDays + "retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "OpenSearchResourceConfig for the given Integration", + 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::Logs::Integration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Logs::Integration").WithTerraformTypeName("awscc_logs_integration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "application_arn": "ApplicationARN", + "dashboard_viewer_principals": "DashboardViewerPrincipals", + "data_source_role_arn": "DataSourceRoleArn", + "integration_name": "IntegrationName", + "integration_status": "IntegrationStatus", + "integration_type": "IntegrationType", + "kms_key_arn": "KmsKeyArn", + "open_search_resource_config": "OpenSearchResourceConfig", + "resource_config": "ResourceConfig", + "retention_days": "RetentionDays", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/logs/integration_singular_data_source_gen_test.go b/internal/aws/logs/integration_singular_data_source_gen_test.go new file mode 100644 index 000000000..8847d63f3 --- /dev/null +++ b/internal/aws/logs/integration_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 logs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSLogsIntegrationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Logs::Integration", "awscc_logs_integration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSLogsIntegrationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Logs::Integration", "awscc_logs_integration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/memorydb/cluster_resource_gen.go b/internal/aws/memorydb/cluster_resource_gen.go index f194eaf1f..16aa63903 100644 --- a/internal/aws/memorydb/cluster_resource_gen.go +++ b/internal/aws/memorydb/cluster_resource_gen.go @@ -259,6 +259,23 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + // "type": "string" + // } + "multi_region_cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // MultiRegionClusterName is a write-only property. + }, /*END ATTRIBUTE*/ // Property: NodeType // CloudFormation resource type schema: // @@ -626,6 +643,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "key": "Key", "kms_key_id": "KmsKeyId", "maintenance_window": "MaintenanceWindow", + "multi_region_cluster_name": "MultiRegionClusterName", "node_type": "NodeType", "num_replicas_per_shard": "NumReplicasPerShard", "num_shards": "NumShards", @@ -649,6 +667,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/SnapshotArns", "/properties/SnapshotName", + "/properties/MultiRegionClusterName", "/properties/FinalSnapshotName", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/memorydb/cluster_singular_data_source_gen.go b/internal/aws/memorydb/cluster_singular_data_source_gen.go index f480944f3..077f4f86a 100644 --- a/internal/aws/memorydb/cluster_singular_data_source_gen.go +++ b/internal/aws/memorydb/cluster_singular_data_source_gen.go @@ -184,6 +184,17 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + // "type": "string" + // } + "multi_region_cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: NodeType // CloudFormation resource type schema: // @@ -456,6 +467,7 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "key": "Key", "kms_key_id": "KmsKeyId", "maintenance_window": "MaintenanceWindow", + "multi_region_cluster_name": "MultiRegionClusterName", "node_type": "NodeType", "num_replicas_per_shard": "NumReplicasPerShard", "num_shards": "NumShards", diff --git a/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen.go b/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen.go new file mode 100644 index 000000000..fba713fa4 --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package memorydb + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_memorydb_multi_region_clusters", multiRegionClustersDataSource) +} + +// multiRegionClustersDataSource returns the Terraform awscc_memorydb_multi_region_clusters data source. +// This Terraform data source corresponds to the CloudFormation AWS::MemoryDB::MultiRegionCluster resource. +func multiRegionClustersDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::MemoryDB::MultiRegionCluster", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MemoryDB::MultiRegionCluster").WithTerraformTypeName("awscc_memorydb_multi_region_clusters") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen_test.go b/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen_test.go new file mode 100644 index 000000000..f9bfb2425 --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package memorydb_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMemoryDBMultiRegionClustersDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MemoryDB::MultiRegionCluster", "awscc_memorydb_multi_region_clusters", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/memorydb/multi_region_cluster_resource_gen.go b/internal/aws/memorydb/multi_region_cluster_resource_gen.go new file mode 100644 index 000000000..ddf8b32b0 --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_resource_gen.go @@ -0,0 +1,358 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package memorydb + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "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_memorydb_multi_region_cluster", multiRegionClusterResource) +} + +// multiRegionClusterResource returns the Terraform awscc_memorydb_multi_region_cluster resource. +// This Terraform resource corresponds to the CloudFormation AWS::MemoryDB::MultiRegionCluster resource. +func multiRegionClusterResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ARN + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the multi region cluster.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the multi region cluster.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "Description of the multi region cluster.", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description of the multi region cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine type used by the multi region cluster.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine type used by the multi region cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EngineVersion + // CloudFormation resource type schema: + // + // { + // "description": "The Redis engine version used by the multi region cluster.", + // "type": "string" + // } + "engine_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Redis engine version used by the multi region cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + // "type": "string" + // } + "multi_region_cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterNameSuffix + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + // "pattern": "[a-z][a-z0-9\\-]*", + // "type": "string" + // } + "multi_region_cluster_name_suffix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("[a-z][a-z0-9\\-]*"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // MultiRegionClusterNameSuffix is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: MultiRegionParameterGroupName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the parameter group associated with the multi region cluster.", + // "type": "string" + // } + "multi_region_parameter_group_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the parameter group associated with the multi region cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NodeType + // CloudFormation resource type schema: + // + // { + // "description": "The compute and memory capacity of the nodes in the multi region cluster.", + // "type": "string" + // } + "node_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The compute and memory capacity of the nodes in the multi region cluster.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: NumShards + // CloudFormation resource type schema: + // + // { + // "description": "The number of shards the multi region cluster will contain.", + // "type": "integer" + // } + "num_shards": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of shards the multi region cluster will contain.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The status of the multi region cluster. For example, Available, Updating, Creating.", + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the multi region cluster. For example, Available, Updating, Creating.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TLSEnabled + // CloudFormation resource type schema: + // + // { + // "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + // "type": "boolean" + // } + "tls_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + boolplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this multi region cluster.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key for the tag. May not be null.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "Value": { + // "description": "The tag's value. May be null.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "", + // "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 for the tag. May not be null.", + 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 tag's value. May be null.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 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 multi region cluster.", + 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: UpdateStrategy + // CloudFormation resource type schema: + // + // { + // "description": "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + // "enum": [ + // "COORDINATED", + // "UNCOORDINATED" + // ], + // "type": "string" + // } + "update_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "COORDINATED", + "UNCOORDINATED", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // UpdateStrategy is a write-only property. + }, /*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: "The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MemoryDB::MultiRegionCluster").WithTerraformTypeName("awscc_memorydb_multi_region_cluster") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "ARN", + "description": "Description", + "engine": "Engine", + "engine_version": "EngineVersion", + "key": "Key", + "multi_region_cluster_name": "MultiRegionClusterName", + "multi_region_cluster_name_suffix": "MultiRegionClusterNameSuffix", + "multi_region_parameter_group_name": "MultiRegionParameterGroupName", + "node_type": "NodeType", + "num_shards": "NumShards", + "status": "Status", + "tags": "Tags", + "tls_enabled": "TLSEnabled", + "update_strategy": "UpdateStrategy", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/MultiRegionClusterNameSuffix", + "/properties/UpdateStrategy", + }) + opts = opts.WithCreateTimeoutInMinutes(2160).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(2160) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/memorydb/multi_region_cluster_resource_gen_test.go b/internal/aws/memorydb/multi_region_cluster_resource_gen_test.go new file mode 100644 index 000000000..93f706715 --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_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 memorydb_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMemoryDBMultiRegionCluster_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MemoryDB::MultiRegionCluster", "awscc_memorydb_multi_region_cluster", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/memorydb/multi_region_cluster_singular_data_source_gen.go b/internal/aws/memorydb/multi_region_cluster_singular_data_source_gen.go new file mode 100644 index 000000000..ff316e0be --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_singular_data_source_gen.go @@ -0,0 +1,256 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package memorydb + +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_memorydb_multi_region_cluster", multiRegionClusterDataSource) +} + +// multiRegionClusterDataSource returns the Terraform awscc_memorydb_multi_region_cluster data source. +// This Terraform data source corresponds to the CloudFormation AWS::MemoryDB::MultiRegionCluster resource. +func multiRegionClusterDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ARN + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the multi region cluster.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "Description of the multi region cluster.", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description of the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine type used by the multi region cluster.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine type used by the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EngineVersion + // CloudFormation resource type schema: + // + // { + // "description": "The Redis engine version used by the multi region cluster.", + // "type": "string" + // } + "engine_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Redis engine version used by the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + // "type": "string" + // } + "multi_region_cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MultiRegionClusterNameSuffix + // CloudFormation resource type schema: + // + // { + // "description": "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + // "pattern": "[a-z][a-z0-9\\-]*", + // "type": "string" + // } + "multi_region_cluster_name_suffix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MultiRegionParameterGroupName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the parameter group associated with the multi region cluster.", + // "type": "string" + // } + "multi_region_parameter_group_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the parameter group associated with the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodeType + // CloudFormation resource type schema: + // + // { + // "description": "The compute and memory capacity of the nodes in the multi region cluster.", + // "type": "string" + // } + "node_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The compute and memory capacity of the nodes in the multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NumShards + // CloudFormation resource type schema: + // + // { + // "description": "The number of shards the multi region cluster will contain.", + // "type": "integer" + // } + "num_shards": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of shards the multi region cluster will contain.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The status of the multi region cluster. For example, Available, Updating, Creating.", + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the multi region cluster. For example, Available, Updating, Creating.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TLSEnabled + // CloudFormation resource type schema: + // + // { + // "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + // "type": "boolean" + // } + "tls_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this multi region cluster.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key for the tag. May not be null.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "Value": { + // "description": "The tag's value. May be null.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "", + // "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 for the tag. May not be null.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The tag's value. May be null.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this multi region cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UpdateStrategy + // CloudFormation resource type schema: + // + // { + // "description": "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + // "enum": [ + // "COORDINATED", + // "UNCOORDINATED" + // ], + // "type": "string" + // } + "update_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + 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::MemoryDB::MultiRegionCluster", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MemoryDB::MultiRegionCluster").WithTerraformTypeName("awscc_memorydb_multi_region_cluster") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "ARN", + "description": "Description", + "engine": "Engine", + "engine_version": "EngineVersion", + "key": "Key", + "multi_region_cluster_name": "MultiRegionClusterName", + "multi_region_cluster_name_suffix": "MultiRegionClusterNameSuffix", + "multi_region_parameter_group_name": "MultiRegionParameterGroupName", + "node_type": "NodeType", + "num_shards": "NumShards", + "status": "Status", + "tags": "Tags", + "tls_enabled": "TLSEnabled", + "update_strategy": "UpdateStrategy", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/memorydb/multi_region_cluster_singular_data_source_gen_test.go b/internal/aws/memorydb/multi_region_cluster_singular_data_source_gen_test.go new file mode 100644 index 000000000..6962c7223 --- /dev/null +++ b/internal/aws/memorydb/multi_region_cluster_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 memorydb_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMemoryDBMultiRegionClusterDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MemoryDB::MultiRegionCluster", "awscc_memorydb_multi_region_cluster", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSMemoryDBMultiRegionClusterDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MemoryDB::MultiRegionCluster", "awscc_memorydb_multi_region_cluster", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/sagemaker/cluster_resource_gen.go b/internal/aws/sagemaker/cluster_resource_gen.go index c95f21e89..a8404d4c5 100644 --- a/internal/aws/sagemaker/cluster_resource_gen.go +++ b/internal/aws/sagemaker/cluster_resource_gen.go @@ -226,6 +226,41 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "array" // }, + // "OverrideVpcConfig": { + // "additionalProperties": false, + // "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + // "properties": { + // "SecurityGroupIds": { + // "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + // "insertionOrder": false, + // "items": { + // "maxLength": 32, + // "pattern": "[-0-9a-zA-Z]+", + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 1, + // "type": "array" + // }, + // "Subnets": { + // "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", + // "insertionOrder": false, + // "items": { + // "maxLength": 32, + // "pattern": "[-0-9a-zA-Z]+", + // "type": "string" + // }, + // "maxItems": 16, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "SecurityGroupIds", + // "Subnets" + // ], + // "type": "object" + // }, // "ThreadsPerCore": { // "description": "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", // "maximum": 2, @@ -375,6 +410,55 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: OverrideVpcConfig + "override_vpc_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecurityGroupIds + "security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 5), + listvalidator.ValueStringsAre( + stringvalidator.LengthAtMost(32), + stringvalidator.RegexMatches(regexp.MustCompile("[-0-9a-zA-Z]+"), ""), + ), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Subnets + "subnets": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The ID of the subnets in the VPC to which you want to connect your training job or model.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 16), + listvalidator.ValueStringsAre( + stringvalidator.LengthAtMost(32), + stringvalidator.RegexMatches(regexp.MustCompile("[-0-9a-zA-Z]+"), ""), + ), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ThreadsPerCore "threads_per_core": schema.Int64Attribute{ /*START ATTRIBUTE*/ Description: "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", @@ -694,6 +778,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "on_create": "OnCreate", "on_start_deep_health_checks": "OnStartDeepHealthChecks", "orchestrator": "Orchestrator", + "override_vpc_config": "OverrideVpcConfig", "security_group_ids": "SecurityGroupIds", "source_s3_uri": "SourceS3Uri", "subnets": "Subnets", diff --git a/internal/aws/sagemaker/cluster_singular_data_source_gen.go b/internal/aws/sagemaker/cluster_singular_data_source_gen.go index be195b142..1f3462456 100644 --- a/internal/aws/sagemaker/cluster_singular_data_source_gen.go +++ b/internal/aws/sagemaker/cluster_singular_data_source_gen.go @@ -192,6 +192,41 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "array" // }, + // "OverrideVpcConfig": { + // "additionalProperties": false, + // "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + // "properties": { + // "SecurityGroupIds": { + // "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + // "insertionOrder": false, + // "items": { + // "maxLength": 32, + // "pattern": "[-0-9a-zA-Z]+", + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 1, + // "type": "array" + // }, + // "Subnets": { + // "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", + // "insertionOrder": false, + // "items": { + // "maxLength": 32, + // "pattern": "[-0-9a-zA-Z]+", + // "type": "string" + // }, + // "maxItems": 16, + // "minItems": 1, + // "type": "array" + // } + // }, + // "required": [ + // "SecurityGroupIds", + // "Subnets" + // ], + // "type": "object" + // }, // "ThreadsPerCore": { // "description": "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", // "maximum": 2, @@ -283,6 +318,25 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: OverrideVpcConfig + "override_vpc_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecurityGroupIds + "security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Subnets + "subnets": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The ID of the subnets in the VPC to which you want to connect your training job or model.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ThreadsPerCore "threads_per_core": schema.Int64Attribute{ /*START ATTRIBUTE*/ Description: "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", @@ -499,6 +553,7 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "on_create": "OnCreate", "on_start_deep_health_checks": "OnStartDeepHealthChecks", "orchestrator": "Orchestrator", + "override_vpc_config": "OverrideVpcConfig", "security_group_ids": "SecurityGroupIds", "source_s3_uri": "SourceS3Uri", "subnets": "Subnets", diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 0e21e8e69..913df48e0 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" } -# 1103 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 1106 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -2586,6 +2586,10 @@ resource_schema "aws_internetmonitor_monitor" { cloudformation_type_name = "AWS::InternetMonitor::Monitor" } +resource_schema "aws_invoicing_invoice_unit" { + cloudformation_type_name = "AWS::Invoicing::InvoiceUnit" +} + resource_schema "aws_iot_account_audit_configuration" { cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" } @@ -3122,6 +3126,10 @@ resource_schema "aws_logs_destination" { cloudformation_type_name = "AWS::Logs::Destination" } +resource_schema "aws_logs_integration" { + cloudformation_type_name = "AWS::Logs::Integration" +} + resource_schema "aws_logs_log_anomaly_detector" { cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" } @@ -3404,6 +3412,10 @@ resource_schema "aws_memorydb_cluster" { cloudformation_type_name = "AWS::MemoryDB::Cluster" } +resource_schema "aws_memorydb_multi_region_cluster" { + cloudformation_type_name = "AWS::MemoryDB::MultiRegionCluster" +} + resource_schema "aws_memorydb_parameter_group" { cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" } diff --git a/internal/provider/generators/allschemas/available_schemas.2024-12-05.hcl b/internal/provider/generators/allschemas/available_schemas.2024-12-05.hcl new file mode 100644 index 000000000..c53cfec5f --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-12-05.hcl @@ -0,0 +1,4699 @@ +# 1106 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping_v2" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMappingV2" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_domain_name_access_association" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameAccessAssociation" +} + +resource_schema "aws_apigateway_domain_name_v2" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameV2" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_channel_namespace" { + cloudformation_type_name = "AWS::AppSync::ChannelNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_application_inference_profile" { + cloudformation_type_name = "AWS::Bedrock::ApplicationInferenceProfile" +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_custom_action" { + cloudformation_type_name = "AWS::Chatbot::CustomAction" +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_guard_hook" { + cloudformation_type_name = "AWS::CloudFormation::GuardHook" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_lambda_hook" { + cloudformation_type_name = "AWS::CloudFormation::LambdaHook" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_dashboard" { + cloudformation_type_name = "AWS::CloudTrail::Dashboard" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_email_address" { + cloudformation_type_name = "AWS::Connect::EmailAddress" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_connectcampaignsv2_campaign" { + cloudformation_type_name = "AWS::ConnectCampaignsV2::Campaign" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_segment_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::SegmentDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_security_group_vpc_association" { + cloudformation_type_name = "AWS::EC2::SecurityGroupVpcAssociation" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_fleet" { + cloudformation_type_name = "AWS::GameLift::ContainerFleet" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_ingest_configuration" { + cloudformation_type_name = "AWS::IVS::IngestConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_invoicing_invoice_unit" { + cloudformation_type_name = "AWS::Invoicing::InvoiceUnit" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_state_template" { + cloudformation_type_name = "AWS::IoTFleetWise::StateTemplate" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_integration" { + cloudformation_type_name = "AWS::Logs::Integration" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_deployment" { + cloudformation_type_name = "AWS::M2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_multi_region_cluster" { + cloudformation_type_name = "AWS::MemoryDB::MultiRegionCluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_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_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_shard_group" { + cloudformation_type_name = "AWS::RDS::DBShardGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_rbin_rule" { + cloudformation_type_name = "AWS::Rbin::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_resourcegroups_tag_sync_task" { + cloudformation_type_name = "AWS::ResourceGroups::TagSyncTask" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_user" { + cloudformation_type_name = "AWS::Transfer::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_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_ai_agent" { + cloudformation_type_name = "AWS::Wisdom::AIAgent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent_version" { + cloudformation_type_name = "AWS::Wisdom::AIAgentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt_version" { + cloudformation_type_name = "AWS::Wisdom::AIPromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_wisdom_message_template" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_message_template_version" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplateVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_data_protection_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::DataProtectionSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 6f14faf2f..7ab8decda 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -2754,6 +2754,11 @@ "identifier": ["MonitorName"], "path": "./examples/resources/awscc_internetmonitor_monitor/import.sh" }, + { + "resource": "awscc_invoicing_invoice_unit", + "identifier": ["InvoiceUnitArn"], + "path": "./examples/resources/awscc_invoicing_invoice_unit/import.sh" + }, { "resource": "awscc_iot_account_audit_configuration", "identifier": ["AccountId"], @@ -3364,6 +3369,11 @@ "identifier": ["DestinationName"], "path": "./examples/resources/awscc_logs_destination/import.sh" }, + { + "resource": "awscc_logs_integration", + "identifier": ["IntegrationName"], + "path": "./examples/resources/awscc_logs_integration/import.sh" + }, { "resource": "awscc_logs_log_anomaly_detector", "identifier": ["AnomalyDetectorArn"], @@ -3684,6 +3694,11 @@ "identifier": ["ClusterName"], "path": "./examples/resources/awscc_memorydb_cluster/import.sh" }, + { + "resource": "awscc_memorydb_multi_region_cluster", + "identifier": ["MultiRegionClusterName"], + "path": "./examples/resources/awscc_memorydb_multi_region_cluster/import.sh" + }, { "resource": "awscc_memorydb_parameter_group", "identifier": ["ParameterGroupName"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index 4d4f45734..d8502c6a1 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -403,6 +403,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_inspectorv2_cis_scan_configurations -cftype AWS::InspectorV2::CisScanConfiguration -package inspectorv2 ../aws/inspectorv2/cis_scan_configuration_plural_data_source_gen.go ../aws/inspectorv2/cis_scan_configuration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_inspectorv2_filters -cftype AWS::InspectorV2::Filter -package inspectorv2 ../aws/inspectorv2/filter_plural_data_source_gen.go ../aws/inspectorv2/filter_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_internetmonitor_monitors -cftype AWS::InternetMonitor::Monitor -package internetmonitor ../aws/internetmonitor/monitor_plural_data_source_gen.go ../aws/internetmonitor/monitor_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_invoicing_invoice_units -cftype AWS::Invoicing::InvoiceUnit -package invoicing ../aws/invoicing/invoice_unit_plural_data_source_gen.go ../aws/invoicing/invoice_unit_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_account_audit_configurations -cftype AWS::IoT::AccountAuditConfiguration -package iot ../aws/iot/account_audit_configuration_plural_data_source_gen.go ../aws/iot/account_audit_configuration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_authorizers -cftype AWS::IoT::Authorizer -package iot ../aws/iot/authorizer_plural_data_source_gen.go ../aws/iot/authorizer_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_billing_groups -cftype AWS::IoT::BillingGroup -package iot ../aws/iot/billing_group_plural_data_source_gen.go ../aws/iot/billing_group_plural_data_source_gen_test.go @@ -512,6 +513,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_delivery_destinations -cftype AWS::Logs::DeliveryDestination -package logs ../aws/logs/delivery_destination_plural_data_source_gen.go ../aws/logs/delivery_destination_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_delivery_sources -cftype AWS::Logs::DeliverySource -package logs ../aws/logs/delivery_source_plural_data_source_gen.go ../aws/logs/delivery_source_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_destinations -cftype AWS::Logs::Destination -package logs ../aws/logs/destination_plural_data_source_gen.go ../aws/logs/destination_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_integrations -cftype AWS::Logs::Integration -package logs ../aws/logs/integration_plural_data_source_gen.go ../aws/logs/integration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_log_anomaly_detectors -cftype AWS::Logs::LogAnomalyDetector -package logs ../aws/logs/log_anomaly_detector_plural_data_source_gen.go ../aws/logs/log_anomaly_detector_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_log_groups -cftype AWS::Logs::LogGroup -package logs ../aws/logs/log_group_plural_data_source_gen.go ../aws/logs/log_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_logs_metric_filters -cftype AWS::Logs::MetricFilter -package logs ../aws/logs/metric_filter_plural_data_source_gen.go ../aws/logs/metric_filter_plural_data_source_gen_test.go @@ -560,6 +562,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_mediatailor_source_locations -cftype AWS::MediaTailor::SourceLocation -package mediatailor ../aws/mediatailor/source_location_plural_data_source_gen.go ../aws/mediatailor/source_location_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_acls -cftype AWS::MemoryDB::ACL -package memorydb ../aws/memorydb/acl_plural_data_source_gen.go ../aws/memorydb/acl_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_clusters -cftype AWS::MemoryDB::Cluster -package memorydb ../aws/memorydb/cluster_plural_data_source_gen.go ../aws/memorydb/cluster_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_multi_region_clusters -cftype AWS::MemoryDB::MultiRegionCluster -package memorydb ../aws/memorydb/multi_region_cluster_plural_data_source_gen.go ../aws/memorydb/multi_region_cluster_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_parameter_groups -cftype AWS::MemoryDB::ParameterGroup -package memorydb ../aws/memorydb/parameter_group_plural_data_source_gen.go ../aws/memorydb/parameter_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_subnet_groups -cftype AWS::MemoryDB::SubnetGroup -package memorydb ../aws/memorydb/subnet_group_plural_data_source_gen.go ../aws/memorydb/subnet_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_users -cftype AWS::MemoryDB::User -package memorydb ../aws/memorydb/user_plural_data_source_gen.go ../aws/memorydb/user_plural_data_source_gen_test.go @@ -926,6 +929,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspector" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspectorv2" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/internetmonitor" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/invoicing" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotanalytics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index cff0eb037..cc76b7e2d 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -553,6 +553,7 @@ //go:generate go run generators/resource/main.go -resource awscc_inspectorv2_cis_scan_configuration -cfschema ../service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json -package inspectorv2 -- ../aws/inspectorv2/cis_scan_configuration_resource_gen.go ../aws/inspectorv2/cis_scan_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_inspectorv2_filter -cfschema ../service/cloudformation/schemas/AWS_InspectorV2_Filter.json -package inspectorv2 -- ../aws/inspectorv2/filter_resource_gen.go ../aws/inspectorv2/filter_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_internetmonitor_monitor -cfschema ../service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json -package internetmonitor -- ../aws/internetmonitor/monitor_resource_gen.go ../aws/internetmonitor/monitor_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_invoicing_invoice_unit -cfschema ../service/cloudformation/schemas/AWS_Invoicing_InvoiceUnit.json -package invoicing -- ../aws/invoicing/invoice_unit_resource_gen.go ../aws/invoicing/invoice_unit_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iot_account_audit_configuration -cfschema ../service/cloudformation/schemas/AWS_IoT_AccountAuditConfiguration.json -package iot -- ../aws/iot/account_audit_configuration_resource_gen.go ../aws/iot/account_audit_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iot_authorizer -cfschema ../service/cloudformation/schemas/AWS_IoT_Authorizer.json -package iot -- ../aws/iot/authorizer_resource_gen.go ../aws/iot/authorizer_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iot_billing_group -cfschema ../service/cloudformation/schemas/AWS_IoT_BillingGroup.json -package iot -- ../aws/iot/billing_group_resource_gen.go ../aws/iot/billing_group_resource_gen_test.go @@ -675,6 +676,7 @@ //go:generate go run generators/resource/main.go -resource awscc_logs_delivery_destination -cfschema ../service/cloudformation/schemas/AWS_Logs_DeliveryDestination.json -package logs -- ../aws/logs/delivery_destination_resource_gen.go ../aws/logs/delivery_destination_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_logs_delivery_source -cfschema ../service/cloudformation/schemas/AWS_Logs_DeliverySource.json -package logs -- ../aws/logs/delivery_source_resource_gen.go ../aws/logs/delivery_source_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_logs_destination -cfschema ../service/cloudformation/schemas/AWS_Logs_Destination.json -package logs -- ../aws/logs/destination_resource_gen.go ../aws/logs/destination_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_logs_integration -cfschema ../service/cloudformation/schemas/AWS_Logs_Integration.json -package logs -- ../aws/logs/integration_resource_gen.go ../aws/logs/integration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_logs_log_anomaly_detector -cfschema ../service/cloudformation/schemas/AWS_Logs_LogAnomalyDetector.json -package logs -- ../aws/logs/log_anomaly_detector_resource_gen.go ../aws/logs/log_anomaly_detector_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_logs_log_group -cfschema ../service/cloudformation/schemas/AWS_Logs_LogGroup.json -package logs -- ../aws/logs/log_group_resource_gen.go ../aws/logs/log_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_logs_log_stream -cfschema ../service/cloudformation/schemas/AWS_Logs_LogStream.json -package logs -- ../aws/logs/log_stream_resource_gen.go ../aws/logs/log_stream_resource_gen_test.go @@ -739,6 +741,7 @@ //go:generate go run generators/resource/main.go -resource awscc_mediatailor_vod_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_VodSource.json -package mediatailor -- ../aws/mediatailor/vod_source_resource_gen.go ../aws/mediatailor/vod_source_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_acl -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ACL.json -package memorydb -- ../aws/memorydb/acl_resource_gen.go ../aws/memorydb/acl_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_Cluster.json -package memorydb -- ../aws/memorydb/cluster_resource_gen.go ../aws/memorydb/cluster_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_memorydb_multi_region_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_MultiRegionCluster.json -package memorydb -- ../aws/memorydb/multi_region_cluster_resource_gen.go ../aws/memorydb/multi_region_cluster_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_parameter_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ParameterGroup.json -package memorydb -- ../aws/memorydb/parameter_group_resource_gen.go ../aws/memorydb/parameter_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_subnet_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_SubnetGroup.json -package memorydb -- ../aws/memorydb/subnet_group_resource_gen.go ../aws/memorydb/subnet_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_user -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_User.json -package memorydb -- ../aws/memorydb/user_resource_gen.go ../aws/memorydb/user_resource_gen_test.go @@ -1188,6 +1191,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspector" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspectorv2" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/internetmonitor" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/invoicing" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotanalytics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 75fa0e77c..c4807ed46 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -553,6 +553,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_inspectorv2_cis_scan_configuration -cfschema ../service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json -package inspectorv2 ../aws/inspectorv2/cis_scan_configuration_singular_data_source_gen.go ../aws/inspectorv2/cis_scan_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_inspectorv2_filter -cfschema ../service/cloudformation/schemas/AWS_InspectorV2_Filter.json -package inspectorv2 ../aws/inspectorv2/filter_singular_data_source_gen.go ../aws/inspectorv2/filter_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_internetmonitor_monitor -cfschema ../service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json -package internetmonitor ../aws/internetmonitor/monitor_singular_data_source_gen.go ../aws/internetmonitor/monitor_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_invoicing_invoice_unit -cfschema ../service/cloudformation/schemas/AWS_Invoicing_InvoiceUnit.json -package invoicing ../aws/invoicing/invoice_unit_singular_data_source_gen.go ../aws/invoicing/invoice_unit_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_account_audit_configuration -cfschema ../service/cloudformation/schemas/AWS_IoT_AccountAuditConfiguration.json -package iot ../aws/iot/account_audit_configuration_singular_data_source_gen.go ../aws/iot/account_audit_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_authorizer -cfschema ../service/cloudformation/schemas/AWS_IoT_Authorizer.json -package iot ../aws/iot/authorizer_singular_data_source_gen.go ../aws/iot/authorizer_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_billing_group -cfschema ../service/cloudformation/schemas/AWS_IoT_BillingGroup.json -package iot ../aws/iot/billing_group_singular_data_source_gen.go ../aws/iot/billing_group_singular_data_source_gen_test.go @@ -675,6 +676,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_delivery_destination -cfschema ../service/cloudformation/schemas/AWS_Logs_DeliveryDestination.json -package logs ../aws/logs/delivery_destination_singular_data_source_gen.go ../aws/logs/delivery_destination_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_delivery_source -cfschema ../service/cloudformation/schemas/AWS_Logs_DeliverySource.json -package logs ../aws/logs/delivery_source_singular_data_source_gen.go ../aws/logs/delivery_source_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_destination -cfschema ../service/cloudformation/schemas/AWS_Logs_Destination.json -package logs ../aws/logs/destination_singular_data_source_gen.go ../aws/logs/destination_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_integration -cfschema ../service/cloudformation/schemas/AWS_Logs_Integration.json -package logs ../aws/logs/integration_singular_data_source_gen.go ../aws/logs/integration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_log_anomaly_detector -cfschema ../service/cloudformation/schemas/AWS_Logs_LogAnomalyDetector.json -package logs ../aws/logs/log_anomaly_detector_singular_data_source_gen.go ../aws/logs/log_anomaly_detector_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_log_group -cfschema ../service/cloudformation/schemas/AWS_Logs_LogGroup.json -package logs ../aws/logs/log_group_singular_data_source_gen.go ../aws/logs/log_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_logs_log_stream -cfschema ../service/cloudformation/schemas/AWS_Logs_LogStream.json -package logs ../aws/logs/log_stream_singular_data_source_gen.go ../aws/logs/log_stream_singular_data_source_gen_test.go @@ -739,6 +741,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_mediatailor_vod_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_VodSource.json -package mediatailor ../aws/mediatailor/vod_source_singular_data_source_gen.go ../aws/mediatailor/vod_source_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_acl -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ACL.json -package memorydb ../aws/memorydb/acl_singular_data_source_gen.go ../aws/memorydb/acl_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_Cluster.json -package memorydb ../aws/memorydb/cluster_singular_data_source_gen.go ../aws/memorydb/cluster_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_multi_region_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_MultiRegionCluster.json -package memorydb ../aws/memorydb/multi_region_cluster_singular_data_source_gen.go ../aws/memorydb/multi_region_cluster_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_parameter_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ParameterGroup.json -package memorydb ../aws/memorydb/parameter_group_singular_data_source_gen.go ../aws/memorydb/parameter_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_subnet_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_SubnetGroup.json -package memorydb ../aws/memorydb/subnet_group_singular_data_source_gen.go ../aws/memorydb/subnet_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_user -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_User.json -package memorydb ../aws/memorydb/user_singular_data_source_gen.go ../aws/memorydb/user_singular_data_source_gen_test.go @@ -1188,6 +1191,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspector" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspectorv2" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/internetmonitor" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/invoicing" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotanalytics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainNameV2.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainNameV2.json index 771a735ac..0d5b49cae 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainNameV2.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_DomainNameV2.json @@ -47,12 +47,6 @@ "string" ] }, - "ManagementPolicy": { - "type": [ - "object", - "string" - ] - }, "DomainNameId": { "type": "string" }, @@ -99,8 +93,7 @@ "permissions": [ "apigateway:POST", "apigateway:GET", - "apigateway:UpdateDomainNamePolicy", - "apigateway:UpdateDomainNameManagementPolicy" + "apigateway:UpdateDomainNamePolicy" ] }, "read": { @@ -113,16 +106,14 @@ "apigateway:GET", "apigateway:PUT", "apigateway:PATCH", - "apigateway:UpdateDomainNamePolicy", - "apigateway:UpdateDomainNameManagementPolicy" + "apigateway:UpdateDomainNamePolicy" ] }, "delete": { "permissions": [ "apigateway:DELETE", "apigateway:GET", - "apigateway:UpdateDomainNamePolicy", - "apigateway:UpdateDomainNameManagementPolicy" + "apigateway:UpdateDomainNamePolicy" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json index c3380da30..461f397f3 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json @@ -91,7 +91,8 @@ "cloudformation:DescribePublisher", "s3:GetObject", "s3:PutObject" - ] + ], + "timeoutInMinutes": 2160 }, "delete": { "permissions": [] diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json index 77164b9a8..f95ee7b69 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json @@ -108,13 +108,15 @@ "/properties/Arn" ], "createOnlyProperties": [ + "/properties/LoggingConfig" + ], + "writeOnlyProperties": [ "/properties/ExecutionRoleArn", - "/properties/LoggingConfig", - "/properties/TypeNameAlias", - "/properties/TypeName", "/properties/Type", - "/properties/PublisherId", - "/properties/PublicTypeArn" + "/properties/LoggingConfig", + "/properties/VersionBump", + "/properties/AutoUpdate", + "/properties/MajorVersion" ], "primaryIdentifier": [ "/properties/Arn" diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json index d6d44ad65..552890b02 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json @@ -103,6 +103,10 @@ "TrustStoreArn": { "description": "The Amazon Resource Name (ARN) of the trust store.", "type": "string" + }, + "AdvertiseTrustStoreCaNames": { + "description": "", + "type": "string" } } }, diff --git a/internal/service/cloudformation/schemas/AWS_Events_Connection.json b/internal/service/cloudformation/schemas/AWS_Events_Connection.json index 0abf30160..d52f9744a 100644 --- a/internal/service/cloudformation/schemas/AWS_Events_Connection.json +++ b/internal/service/cloudformation/schemas/AWS_Events_Connection.json @@ -1,73 +1,28 @@ { - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, - "handlers": { - "read": { - "permissions": [ - "events:DescribeConnection" - ] - }, - "create": { - "permissions": [ - "events:CreateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue", - "iam:CreateServiceLinkedRole" - ] - }, - "update": { - "permissions": [ - "events:UpdateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:UpdateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue" - ] - }, - "list": { - "permissions": [ - "events:ListConnections" - ] - }, - "delete": { - "permissions": [ - "events:DeleteConnection", - "events:DescribeConnection" - ] - } - }, "typeName": "AWS::Events::Connection", - "readOnlyProperties": [ - "/properties/Arn", - "/properties/SecretArn", - "/properties/AuthParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationIdentifier" - ], "description": "Resource Type definition for AWS::Events::Connection.", - "writeOnlyProperties": [ - "/properties/AuthParameters/BasicAuthParameters/Password", - "/properties/AuthParameters/ApiKeyAuthParameters/ApiKeyValue", - "/properties/AuthParameters/OAuthParameters/ClientParameters/ClientSecret", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", - "/properties/AuthParameters/InvocationHttpParameters" - ], - "createOnlyProperties": [ - "/properties/Name" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/Name" - ], "definitions": { "AuthParameters": { + "type": "object", + "minProperties": 1, + "maxProperties": 2, + "properties": { + "ApiKeyAuthParameters": { + "$ref": "#/definitions/ApiKeyAuthParameters" + }, + "BasicAuthParameters": { + "$ref": "#/definitions/BasicAuthParameters" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + }, + "InvocationHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" + }, + "ConnectivityParameters": { + "$ref": "#/definitions/ConnectivityParameters" + } + }, "oneOf": [ { "required": [ @@ -85,94 +40,37 @@ ] } ], - "maxProperties": 2, - "additionalProperties": false, - "type": "object", - "properties": { - "InvocationHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" - }, - "BasicAuthParameters": { - "$ref": "#/definitions/BasicAuthParameters" - }, - "ApiKeyAuthParameters": { - "$ref": "#/definitions/ApiKeyAuthParameters" - }, - "OAuthParameters": { - "$ref": "#/definitions/OAuthParameters" - } - }, - "minProperties": 1 - }, - "ClientParameters": { - "additionalProperties": false, - "type": "object", - "properties": { - "ClientSecret": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - }, - "ClientID": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - } - }, - "required": [ - "ClientID", - "ClientSecret" - ] + "additionalProperties": false }, "BasicAuthParameters": { - "additionalProperties": false, "type": "object", "properties": { "Username": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" }, "Password": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" } }, "required": [ "Username", "Password" - ] - }, - "ApiKeyAuthParameters": { - "additionalProperties": false, - "type": "object", - "properties": { - "ApiKeyValue": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - }, - "ApiKeyName": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - } - }, - "required": [ - "ApiKeyName", - "ApiKeyValue" - ] + ], + "additionalProperties": false }, "OAuthParameters": { - "additionalProperties": false, "type": "object", "properties": { "ClientParameters": { "$ref": "#/definitions/ClientParameters" }, - "OAuthHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" - }, "AuthorizationEndpoint": { - "minLength": 1, - "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", "type": "string", - "maxLength": 2048 + "minLength": 1, + "maxLength": 2048, + "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$" }, "HttpMethod": { "type": "string", @@ -181,36 +79,55 @@ "POST", "PUT" ] + }, + "OAuthHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" } }, "required": [ "ClientParameters", "AuthorizationEndpoint", "HttpMethod" - ] + ], + "additionalProperties": false }, - "Parameter": { - "additionalProperties": false, + "ApiKeyAuthParameters": { "type": "object", "properties": { - "Value": { - "type": "string" + "ApiKeyName": { + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" }, - "IsValueSecret": { - "default": true, - "type": "boolean" + "ApiKeyValue": { + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" + } + }, + "required": [ + "ApiKeyName", + "ApiKeyValue" + ], + "additionalProperties": false + }, + "ClientParameters": { + "type": "object", + "properties": { + "ClientID": { + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" }, - "Key": { - "type": "string" + "ClientSecret": { + "type": "string", + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$" } }, "required": [ - "Key", - "Value" - ] + "ClientID", + "ClientSecret" + ], + "additionalProperties": false }, "ConnectionHttpParameters": { - "additionalProperties": false, "type": "object", "properties": { "HeaderParameters": { @@ -231,28 +148,85 @@ "$ref": "#/definitions/Parameter" } } - } + }, + "additionalProperties": false + }, + "ConnectivityParameters": { + "type": "object", + "properties": { + "ResourceParameters": { + "$ref": "#/definitions/ResourceParameters" + } + }, + "required": [ + "ResourceParameters" + ], + "additionalProperties": false + }, + "ResourceParameters": { + "type": "object", + "properties": { + "ResourceConfigurationArn": { + "type": "string", + "maxLength": 2048, + "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$" + }, + "ResourceAssociationArn": { + "type": "string", + "minLength": 20, + "maxLength": 2048, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$" + } + }, + "required": [ + "ResourceConfigurationArn" + ], + "additionalProperties": false + }, + "Parameter": { + "type": "object", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + }, + "IsValueSecret": { + "type": "boolean", + "default": true + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false } }, "properties": { + "Name": { + "description": "Name of the connection.", + "type": "string", + "minLength": 1, + "maxLength": 64, + "pattern": "[\\.\\-_A-Za-z0-9]+" + }, + "Arn": { + "description": "The arn of the connection resource.", + "type": "string", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$" + }, "SecretArn": { - "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:([a-z]|\\d|\\-)*(!)*[\\/_+=\\.@\\-A-Za-z0-9]+$", "description": "The arn of the secrets manager secret created in the customer account.", - "type": "string" - }, - "AuthParameters": { - "$ref": "#/definitions/AuthParameters" + "type": "string", + "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:([a-z]|\\d|\\-)*(!)*[\\/_+=\\.@\\-A-Za-z0-9]+$" }, "Description": { "description": "Description of the connection.", "type": "string", "maxLength": 512 }, - "Arn": { - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", - "description": "The arn of the connection resource.", - "type": "string" - }, "AuthorizationType": { "type": "string", "enum": [ @@ -261,12 +235,87 @@ "OAUTH_CLIENT_CREDENTIALS" ] }, - "Name": { - "minLength": 1, - "pattern": "[\\.\\-_A-Za-z0-9]+", - "description": "Name of the connection.", - "type": "string", - "maxLength": 64 + "AuthParameters": { + "$ref": "#/definitions/AuthParameters" + }, + "InvocationConnectivityParameters": { + "description": "The private resource the HTTP request will be sent to.", + "type": "object", + "properties": { + "ResourceParameters": { + "$ref": "#/definitions/ResourceParameters" + } + }, + "required": [ + "ResourceParameters" + ], + "additionalProperties": false + } + }, + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/SecretArn", + "/properties/AuthParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationArn", + "/properties/InvocationConnectivityParameters/ResourceParameters/ResourceAssociationArn" + ], + "writeOnlyProperties": [ + "/properties/AuthParameters/BasicAuthParameters/Password", + "/properties/AuthParameters/ApiKeyAuthParameters/ApiKeyValue", + "/properties/AuthParameters/OAuthParameters/ClientParameters/ClientSecret", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", + "/properties/AuthParameters/InvocationHttpParameters" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "create": { + "permissions": [ + "events:CreateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "iam:CreateServiceLinkedRole" + ] + }, + "read": { + "permissions": [ + "events:DescribeConnection" + ] + }, + "update": { + "permissions": [ + "events:UpdateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:UpdateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue" + ] + }, + "delete": { + "permissions": [ + "events:DeleteConnection", + "events:DescribeConnection" + ] + }, + "list": { + "permissions": [ + "events:ListConnections" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_Invoicing_InvoiceUnit.json b/internal/service/cloudformation/schemas/AWS_Invoicing_InvoiceUnit.json new file mode 100644 index 000000000..4005bd115 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Invoicing_InvoiceUnit.json @@ -0,0 +1,167 @@ +{ + "typeName": "AWS::Invoicing::InvoiceUnit", + "description": "An invoice unit is a set of mutually exclusive accounts that correspond to your business entity. Invoice units allow you to separate AWS account costs and configures your invoice for each business entity.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "InvoiceUnitArn": { + "type": "string", + "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "minLength": 1, + "maxLength": 256 + }, + "InvoiceReceiver": { + "type": "string", + "pattern": "^\\d{12}$", + "minLength": 12, + "maxLength": 12 + }, + "Name": { + "type": "string", + "pattern": "", + "minLength": 1, + "maxLength": 50 + }, + "Description": { + "type": "string", + "pattern": "^[\\S\\s]*$", + "minLength": 0, + "maxLength": 500 + }, + "TaxInheritanceDisabled": { + "type": "boolean" + }, + "Rule": { + "type": "object", + "properties": { + "LinkedAccounts": { + "type": "array", + "items": { + "type": "string", + "pattern": "^\\d{12}$", + "minLength": 12, + "maxLength": 12 + } + } + }, + "required": [ + "LinkedAccounts" + ], + "additionalProperties": false + }, + "LastModified": { + "type": "number" + }, + "ResourceTag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "Value": { + "type": "string", + "minLength": 0, + "maxLength": 200 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + }, + "ResourceTags": { + "type": "array", + "items": { + "$ref": "#/definitions/ResourceTag" + } + } + }, + "properties": { + "InvoiceUnitArn": { + "$ref": "#/definitions/InvoiceUnitArn" + }, + "InvoiceReceiver": { + "$ref": "#/definitions/InvoiceReceiver" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "TaxInheritanceDisabled": { + "$ref": "#/definitions/TaxInheritanceDisabled" + }, + "Rule": { + "$ref": "#/definitions/Rule" + }, + "LastModified": { + "$ref": "#/definitions/LastModified" + }, + "ResourceTags": { + "$ref": "#/definitions/ResourceTags" + } + }, + "additionalProperties": false, + "required": [ + "InvoiceReceiver", + "Name", + "Rule" + ], + "primaryIdentifier": [ + "/properties/InvoiceUnitArn" + ], + "readOnlyProperties": [ + "/properties/InvoiceUnitArn", + "/properties/LastModified" + ], + "createOnlyProperties": [ + "/properties/InvoiceReceiver", + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "invoicing:CreateInvoiceUnit", + "invoicing:TagResource" + ] + }, + "read": { + "permissions": [ + "invoicing:GetInvoiceUnit", + "invoicing:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "invoicing:UpdateInvoiceUnit", + "invoicing:UntagResource", + "invoicing:TagResource" + ] + }, + "delete": { + "permissions": [ + "invoicing:DeleteInvoiceUnit" + ] + }, + "list": { + "permissions": [ + "invoicing:ListInvoiceUnits" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/ResourceTags", + "permissions": [ + "invoicing:TagResource", + "invoicing:UntagResource", + "invoicing:ListTagsForResource" + ] + } +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Gateway.json b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Gateway.json index 29780d76a..ad288d78c 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Gateway.json +++ b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Gateway.json @@ -156,7 +156,18 @@ } }, "additionalProperties": false, - "taggable": true, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ] + }, "required": [ "GatewayName", "GatewayPlatform" @@ -212,7 +223,8 @@ }, "list": { "permissions": [ - "iotsitewise:ListGateways" + "iotsitewise:ListGateways", + "iotsitewise:ListTagsForResource" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_Kendra_Index.json b/internal/service/cloudformation/schemas/AWS_Kendra_Index.json index 822e48c21..bfd324291 100644 --- a/internal/service/cloudformation/schemas/AWS_Kendra_Index.json +++ b/internal/service/cloudformation/schemas/AWS_Kendra_Index.json @@ -207,7 +207,8 @@ "type": "string", "enum": [ "DEVELOPER_EDITION", - "ENTERPRISE_EDITION" + "ENTERPRISE_EDITION", + "GEN_AI_ENTERPRISE_EDITION" ] }, "Name": { diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json b/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json index 4735afeca..237962755 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json @@ -180,11 +180,11 @@ "$ref": "#/definitions/DocumentDBEventSourceConfig" }, "ProvisionedPollerConfig": { - "description": "", + "description": "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode).", "$ref": "#/definitions/ProvisionedPollerConfig" }, "MetricsConfig": { - "description": "", + "description": "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", "$ref": "#/definitions/MetricsConfig" } }, @@ -237,7 +237,7 @@ "additionalProperties": false, "properties": { "Destination": { - "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", "type": "string", "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "minLength": 12, @@ -401,7 +401,7 @@ } }, "ProvisionedPollerConfig": { - "description": "", + "description": "The [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode) configuration for the event source. Use provisioned mode to customize the minimum and maximum number of event pollers for your event source.", "type": "object", "additionalProperties": false, "properties": { @@ -420,12 +420,12 @@ } }, "MetricsConfig": { - "description": "", + "description": "The metrics configuration for your event source. Use this configuration object to define which metrics you want your event source mapping to produce.", "type": "object", "additionalProperties": false, "properties": { "Metrics": { - "description": "Metric groups to enable.", + "description": "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", "type": "array", "uniqueItems": true, "items": { diff --git a/internal/service/cloudformation/schemas/AWS_Logs_Integration.json b/internal/service/cloudformation/schemas/AWS_Logs_Integration.json new file mode 100644 index 000000000..02113d53b --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Logs_Integration.json @@ -0,0 +1,166 @@ +{ + "typeName": "AWS::Logs::Integration", + "description": "Resource Schema for Logs Integration Resource", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "replacementStrategy": "delete_then_create", + "definitions": { + "Arn": { + "type": "string", + "minLength": 20, + "maxLength": 2048, + "pattern": "[\\w#+=/:,.@-]*\\*?" + }, + "OpenSearchResourceConfig": { + "type": "object", + "properties": { + "KmsKeyArn": { + "$ref": "#/definitions/Arn" + }, + "DataSourceRoleArn": { + "$ref": "#/definitions/Arn" + }, + "DashboardViewerPrincipals": { + "type": "array", + "items": { + "$ref": "#/definitions/Arn" + } + }, + "ApplicationARN": { + "$ref": "#/definitions/Arn" + }, + "RetentionDays": { + "type": "integer", + "minimum": 1, + "maximum": 3650 + } + }, + "required": [ + "DataSourceRoleArn", + "DashboardViewerPrincipals" + ], + "additionalProperties": false + } + }, + "properties": { + "IntegrationName": { + "description": "User provided identifier for integration, unique to the user account.", + "type": "string", + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "minLength": 1, + "maxLength": 256 + }, + "IntegrationType": { + "description": "The type of the Integration.", + "type": "string", + "enum": [ + "OPENSEARCH" + ] + }, + "ResourceConfig": { + "description": "OpenSearchResourceConfig for the given Integration", + "type": "object", + "properties": { + "OpenSearchResourceConfig": { + "$ref": "#/definitions/OpenSearchResourceConfig" + } + }, + "additionalProperties": false + }, + "IntegrationStatus": { + "description": "Status of creation for the Integration and its resources", + "type": "string", + "enum": [ + "PROVISIONING", + "ACTIVE", + "FAILED" + ] + } + }, + "additionalProperties": false, + "required": [ + "IntegrationName", + "IntegrationType", + "ResourceConfig" + ], + "createOnlyProperties": [ + "/properties/IntegrationName", + "/properties/IntegrationType", + "/properties/ResourceConfig" + ], + "readOnlyProperties": [ + "/properties/IntegrationStatus" + ], + "writeOnlyProperties": [ + "/properties/ResourceConfig" + ], + "primaryIdentifier": [ + "/properties/IntegrationName" + ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "create": { + "permissions": [ + "logs:PutIntegration", + "logs:GetIntegration", + "aoss:CreateCollection", + "aoss:CreateSecurityPolicy", + "aoss:CreateAccessPolicy", + "aoss:CreateLifeCyclePolicy", + "aoss:BatchGetCollection", + "aoss:DeleteCollection", + "aoss:DeleteSecurityPolicy", + "aoss:DeleteAccessPolicy", + "aoss:DeleteLifeCyclePolicy", + "aoss:GetAccessPolicy", + "aoss:GetSecurityPolicy", + "aoss:BatchGetLifecyclePolicy", + "aoss:TagResource", + "aoss:APIAccessAll", + "opensearch:AddDirectQueryDataSource", + "opensearch:DeleteDirectQueryDataSource", + "opensearch:GetDirectQueryDataSource", + "opensearch:CreateApplication", + "opensearch:GetApplication", + "opensearch:UpdateApplication", + "opensearch:DeleteApplication", + "opensearch:ApplicationAccessAll", + "opensearch:DashboardsAccessAll", + "opensearch:StartDirectQuery", + "opensearch:GetDirectQuery", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:AttachUserPolicy", + "es:AddDirectQueryDataSource", + "es:CreateApplication", + "es:UpdateApplication", + "es:GetApplication", + "es:DeleteApplication", + "es:DeleteDirectQueryDataSource", + "es:GetDirectQueryDataSource", + "es:AddTags", + "es:ListApplications" + ] + }, + "read": { + "permissions": [ + "logs:GetIntegration" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteIntegration" + ] + }, + "list": { + "permissions": [ + "logs:ListIntegrations" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json b/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json index 73fc33e40..b84873a69 100644 --- a/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json @@ -60,6 +60,10 @@ "description": "An optional description of the cluster.", "type": "string" }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, "Status": { "description": "The status of the cluster. For example, Available, Updating, Creating.", "type": "string" @@ -220,11 +224,13 @@ "/properties/Port", "/properties/SubnetGroupName", "/properties/SnapshotArns", + "/properties/MultiRegionClusterName", "/properties/SnapshotName" ], "writeOnlyProperties": [ "/properties/SnapshotArns", "/properties/SnapshotName", + "/properties/MultiRegionClusterName", "/properties/FinalSnapshotName" ], "primaryIdentifier": [ diff --git a/internal/service/cloudformation/schemas/AWS_MemoryDB_MultiRegionCluster.json b/internal/service/cloudformation/schemas/AWS_MemoryDB_MultiRegionCluster.json new file mode 100644 index 000000000..a83c1b49f --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_MemoryDB_MultiRegionCluster.json @@ -0,0 +1,169 @@ +{ + "typeName": "AWS::MemoryDB::MultiRegionCluster", + "description": "The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "pattern": "", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "description": "The tag's value. May be null.", + "type": "string", + "pattern": "", + "minLength": 1, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "MultiRegionClusterNameSuffix": { + "description": "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "Description": { + "description": "Description of the multi region cluster.", + "type": "string" + }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, + "Status": { + "description": "The status of the multi region cluster. For example, Available, Updating, Creating.", + "type": "string" + }, + "NodeType": { + "description": "The compute and memory capacity of the nodes in the multi region cluster.", + "type": "string" + }, + "NumShards": { + "description": "The number of shards the multi region cluster will contain.", + "type": "integer" + }, + "MultiRegionParameterGroupName": { + "description": "The name of the parameter group associated with the multi region cluster.", + "type": "string" + }, + "TLSEnabled": { + "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + "type": "boolean" + }, + "ARN": { + "description": "The Amazon Resource Name (ARN) of the multi region cluster.", + "type": "string" + }, + "Engine": { + "description": "The engine type used by the multi region cluster.", + "type": "string" + }, + "EngineVersion": { + "description": "The Redis engine version used by the multi region cluster.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this multi region cluster.", + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "UpdateStrategy": { + "description": "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + "type": "string", + "enum": [ + "COORDINATED", + "UNCOORDINATED" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ] + }, + "additionalProperties": false, + "readOnlyProperties": [ + "/properties/MultiRegionClusterName", + "/properties/Status", + "/properties/ARN" + ], + "writeOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/UpdateStrategy" + ], + "required": [ + "NodeType" + ], + "createOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/EngineVersion", + "/properties/MultiRegionParameterGroupName", + "/properties/TLSEnabled" + ], + "primaryIdentifier": [ + "/properties/MultiRegionClusterName" + ], + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:TagResource", + "memorydb:ListTags" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "memorydb:DeleteMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json b/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json index 75dfdc565..c64c59ff9 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json @@ -208,6 +208,9 @@ }, "OnStartDeepHealthChecks": { "$ref": "#/definitions/OnStartDeepHealthChecks" + }, + "OverrideVpcConfig": { + "$ref": "#/definitions/VpcConfig" } }, "required": [ @@ -328,6 +331,7 @@ "/properties/ClusterName", "/properties/VpcConfig", "/properties/Orchestrator", + "/properties/InstanceGroups/*/OverrideVpcConfig", "/properties/InstanceGroups/*/ExecutionRole", "/properties/InstanceGroups/*/InstanceGroupName", "/properties/InstanceGroups/*/InstanceType",