diff --git a/docs/data-sources/acmpca_permission.md b/docs/data-sources/acmpca_permission.md
new file mode 100644
index 0000000000..5795bdd38d
--- /dev/null
+++ b/docs/data-sources/acmpca_permission.md
@@ -0,0 +1,29 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_acmpca_permission Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::ACMPCA::Permission
+---
+
+# awscc_acmpca_permission (Data Source)
+
+Data Source schema for AWS::ACMPCA::Permission
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **actions** (List of String) The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.
+- **certificate_authority_arn** (String) The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.
+- **principal** (String) The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.
+- **source_account** (String) The ID of the calling account.
+
+
diff --git a/docs/data-sources/apigateway_account.md b/docs/data-sources/apigateway_account.md
new file mode 100644
index 0000000000..850c0fad1e
--- /dev/null
+++ b/docs/data-sources/apigateway_account.md
@@ -0,0 +1,26 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_apigateway_account Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::ApiGateway::Account
+---
+
+# awscc_apigateway_account (Data Source)
+
+Data Source schema for AWS::ApiGateway::Account
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **cloudwatch_role_arn** (String) The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.
+
+
diff --git a/docs/data-sources/apigateway_usage_plan.md b/docs/data-sources/apigateway_usage_plan.md
new file mode 100644
index 0000000000..593b8f6152
--- /dev/null
+++ b/docs/data-sources/apigateway_usage_plan.md
@@ -0,0 +1,77 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_apigateway_usage_plan Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::ApiGateway::UsagePlan
+---
+
+# awscc_apigateway_usage_plan (Data Source)
+
+Data Source schema for AWS::ApiGateway::UsagePlan
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **api_stages** (Attributes List) The API stages to associate with this usage plan. (see [below for nested schema](#nestedatt--api_stages))
+- **description** (String) A description of the usage plan.
+- **quota** (Attributes) (see [below for nested schema](#nestedatt--quota))
+- **tags** (Attributes List) An array of arbitrary tags (key-value pairs) to associate with the usage plan. (see [below for nested schema](#nestedatt--tags))
+- **throttle** (Attributes) (see [below for nested schema](#nestedatt--throttle))
+- **usage_plan_name** (String) A name for the usage plan.
+
+
+### Nested Schema for `api_stages`
+
+Read-Only:
+
+- **api_id** (String) The ID of an API that is in the specified Stage property that you want to associate with the usage plan.
+- **stage** (String) The name of the stage to associate with the usage plan.
+- **throttle** (Attributes Map) Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed. (see [below for nested schema](#nestedatt--api_stages--throttle))
+
+
+### Nested Schema for `api_stages.throttle`
+
+Read-Only:
+
+- **burst_limit** (Number) The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.
+- **rate_limit** (Number) The API request steady-state rate limit (average requests per second over an extended period of time).
+
+
+
+
+### Nested Schema for `quota`
+
+Read-Only:
+
+- **limit** (Number) The maximum number of requests that users can make within the specified time period.
+- **offset** (Number) For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.
+- **period** (String) The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.
+
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
+
+### Nested Schema for `throttle`
+
+Read-Only:
+
+- **burst_limit** (Number) The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.
+- **rate_limit** (Number) The API request steady-state rate limit (average requests per second over an extended period of time).
+
+
diff --git a/docs/data-sources/groundstation_configs.md b/docs/data-sources/apigateway_usage_plans.md
similarity index 54%
rename from docs/data-sources/groundstation_configs.md
rename to docs/data-sources/apigateway_usage_plans.md
index feebcab562..c275151cab 100644
--- a/docs/data-sources/groundstation_configs.md
+++ b/docs/data-sources/apigateway_usage_plans.md
@@ -1,14 +1,14 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "awscc_groundstation_configs Data Source - terraform-provider-awscc"
+page_title: "awscc_apigateway_usage_plans Data Source - terraform-provider-awscc"
subcategory: ""
description: |-
- Plural Data Source schema for AWS::GroundStation::Config
+ Plural Data Source schema for AWS::ApiGateway::UsagePlan
---
-# awscc_groundstation_configs (Data Source)
+# awscc_apigateway_usage_plans (Data Source)
-Plural Data Source schema for AWS::GroundStation::Config
+Plural Data Source schema for AWS::ApiGateway::UsagePlan
diff --git a/docs/data-sources/aps_workspace.md b/docs/data-sources/aps_workspace.md
new file mode 100644
index 0000000000..dce3355ce7
--- /dev/null
+++ b/docs/data-sources/aps_workspace.md
@@ -0,0 +1,38 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_aps_workspace Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::APS::Workspace
+---
+
+# awscc_aps_workspace (Data Source)
+
+Data Source schema for AWS::APS::Workspace
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **alias** (String) AMP Workspace alias.
+- **arn** (String) Workspace arn.
+- **prometheus_endpoint** (String) AMP Workspace prometheus endpoint
+- **tags** (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags))
+- **workspace_id** (String) Required to identify a specific APS Workspace.
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
diff --git a/docs/data-sources/opsworkscm_servers.md b/docs/data-sources/aps_workspaces.md
similarity index 55%
rename from docs/data-sources/opsworkscm_servers.md
rename to docs/data-sources/aps_workspaces.md
index 420c4d5688..5def0cbf7c 100644
--- a/docs/data-sources/opsworkscm_servers.md
+++ b/docs/data-sources/aps_workspaces.md
@@ -1,14 +1,14 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "awscc_opsworkscm_servers Data Source - terraform-provider-awscc"
+page_title: "awscc_aps_workspaces Data Source - terraform-provider-awscc"
subcategory: ""
description: |-
- Plural Data Source schema for AWS::OpsWorksCM::Server
+ Plural Data Source schema for AWS::APS::Workspace
---
-# awscc_opsworkscm_servers (Data Source)
+# awscc_aps_workspaces (Data Source)
-Plural Data Source schema for AWS::OpsWorksCM::Server
+Plural Data Source schema for AWS::APS::Workspace
diff --git a/docs/data-sources/cloudformation_stack_sets.md b/docs/data-sources/cloudformation_stack_sets.md
new file mode 100644
index 0000000000..a1be7979a7
--- /dev/null
+++ b/docs/data-sources/cloudformation_stack_sets.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_cloudformation_stack_sets Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::CloudFormation::StackSet
+---
+
+# awscc_cloudformation_stack_sets (Data Source)
+
+Plural Data Source schema for AWS::CloudFormation::StackSet
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/data-sources/config_aggregation_authorization.md b/docs/data-sources/config_aggregation_authorization.md
new file mode 100644
index 0000000000..2a07227fa4
--- /dev/null
+++ b/docs/data-sources/config_aggregation_authorization.md
@@ -0,0 +1,37 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_config_aggregation_authorization Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::Config::AggregationAuthorization
+---
+
+# awscc_config_aggregation_authorization (Data Source)
+
+Data Source schema for AWS::Config::AggregationAuthorization
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **aggregation_authorization_arn** (String) The ARN of the AggregationAuthorization.
+- **authorized_account_id** (String) The 12-digit account ID of the account authorized to aggregate data.
+- **authorized_aws_region** (String) The region authorized to collect aggregated data.
+- **tags** (Attributes List) The tags for the AggregationAuthorization. (see [below for nested schema](#nestedatt--tags))
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
diff --git a/docs/data-sources/config_aggregation_authorizations.md b/docs/data-sources/config_aggregation_authorizations.md
new file mode 100644
index 0000000000..e8d7d96f17
--- /dev/null
+++ b/docs/data-sources/config_aggregation_authorizations.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_config_aggregation_authorizations Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::Config::AggregationAuthorization
+---
+
+# awscc_config_aggregation_authorizations (Data Source)
+
+Plural Data Source schema for AWS::Config::AggregationAuthorization
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/data-sources/ec2_transit_gateway_vpc_attachment.md b/docs/data-sources/ec2_transit_gateway_vpc_attachment.md
new file mode 100644
index 0000000000..d93cdd2ca3
--- /dev/null
+++ b/docs/data-sources/ec2_transit_gateway_vpc_attachment.md
@@ -0,0 +1,50 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_ec2_transit_gateway_vpc_attachment Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::EC2::TransitGatewayVpcAttachment
+---
+
+# awscc_ec2_transit_gateway_vpc_attachment (Data Source)
+
+Data Source schema for AWS::EC2::TransitGatewayVpcAttachment
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **add_subnet_ids** (List of String)
+- **options** (Attributes) The options for the transit gateway vpc attachment. (see [below for nested schema](#nestedatt--options))
+- **remove_subnet_ids** (List of String)
+- **subnet_ids** (List of String)
+- **tags** (Attributes List) (see [below for nested schema](#nestedatt--tags))
+- **transit_gateway_id** (String)
+- **vpc_id** (String)
+
+
+### Nested Schema for `options`
+
+Read-Only:
+
+- **appliance_mode_support** (String) Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable
+- **dns_support** (String) Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable
+- **ipv_6_support** (String) Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable
+
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String)
+- **value** (String)
+
+
diff --git a/docs/data-sources/ec2_transit_gateway_vpc_attachments.md b/docs/data-sources/ec2_transit_gateway_vpc_attachments.md
new file mode 100644
index 0000000000..cf196a419d
--- /dev/null
+++ b/docs/data-sources/ec2_transit_gateway_vpc_attachments.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_ec2_transit_gateway_vpc_attachments Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::EC2::TransitGatewayVpcAttachment
+---
+
+# awscc_ec2_transit_gateway_vpc_attachments (Data Source)
+
+Plural Data Source schema for AWS::EC2::TransitGatewayVpcAttachment
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/data-sources/efs_mount_target.md b/docs/data-sources/efs_mount_target.md
new file mode 100644
index 0000000000..e1928392b9
--- /dev/null
+++ b/docs/data-sources/efs_mount_target.md
@@ -0,0 +1,29 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_efs_mount_target Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::EFS::MountTarget
+---
+
+# awscc_efs_mount_target (Data Source)
+
+Data Source schema for AWS::EFS::MountTarget
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **file_system_id** (String)
+- **ip_address** (String)
+- **security_groups** (Set of String)
+- **subnet_id** (String)
+
+
diff --git a/docs/data-sources/healthlake_fhir_datastore.md b/docs/data-sources/healthlake_fhir_datastore.md
new file mode 100644
index 0000000000..1d637106bc
--- /dev/null
+++ b/docs/data-sources/healthlake_fhir_datastore.md
@@ -0,0 +1,77 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_healthlake_fhir_datastore Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::HealthLake::FHIRDatastore
+---
+
+# awscc_healthlake_fhir_datastore (Data Source)
+
+Data Source schema for AWS::HealthLake::FHIRDatastore
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **created_at** (Attributes) The time that a Data Store was created. (see [below for nested schema](#nestedatt--created_at))
+- **datastore_arn** (String) The Amazon Resource Name used in the creation of the Data Store.
+- **datastore_endpoint** (String) The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.
+- **datastore_id** (String) The AWS-generated ID number for the Data Store.
+- **datastore_name** (String) The user-generated name for the Data Store.
+- **datastore_status** (String) The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.
+- **datastore_type_version** (String) The FHIR version. Only R4 version data is supported.
+- **preload_data_config** (Attributes) The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported. (see [below for nested schema](#nestedatt--preload_data_config))
+- **sse_configuration** (Attributes) The server-side encryption key configuration for a customer provided encryption key. (see [below for nested schema](#nestedatt--sse_configuration))
+- **tags** (Attributes List) (see [below for nested schema](#nestedatt--tags))
+
+
+### Nested Schema for `created_at`
+
+Read-Only:
+
+- **nanos** (Number) Nanoseconds.
+- **seconds** (String) Seconds since epoch.
+
+
+
+### Nested Schema for `preload_data_config`
+
+Read-Only:
+
+- **preload_data_type** (String) The type of preloaded data. Only Synthea preloaded data is supported.
+
+
+
+### Nested Schema for `sse_configuration`
+
+Read-Only:
+
+- **kms_encryption_config** (Attributes) The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption. (see [below for nested schema](#nestedatt--sse_configuration--kms_encryption_config))
+
+
+### Nested Schema for `sse_configuration.kms_encryption_config`
+
+Read-Only:
+
+- **cmk_type** (String) The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.
+- **kms_key_id** (String) The KMS encryption key id/alias used to encrypt the Data Store contents at rest.
+
+
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String) The key of the tag.
+- **value** (String) The value of the tag.
+
+
diff --git a/docs/data-sources/healthlake_fhir_datastores.md b/docs/data-sources/healthlake_fhir_datastores.md
new file mode 100644
index 0000000000..29d2e071de
--- /dev/null
+++ b/docs/data-sources/healthlake_fhir_datastores.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_healthlake_fhir_datastores Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::HealthLake::FHIRDatastore
+---
+
+# awscc_healthlake_fhir_datastores (Data Source)
+
+Plural Data Source schema for AWS::HealthLake::FHIRDatastore
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/data-sources/iot_fleet_metric.md b/docs/data-sources/iot_fleet_metric.md
new file mode 100644
index 0000000000..a88c187c0b
--- /dev/null
+++ b/docs/data-sources/iot_fleet_metric.md
@@ -0,0 +1,56 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_iot_fleet_metric Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::IoT::FleetMetric
+---
+
+# awscc_iot_fleet_metric (Data Source)
+
+Data Source schema for AWS::IoT::FleetMetric
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **aggregation_field** (String) The aggregation field to perform aggregation and metric emission
+- **aggregation_type** (Attributes) Aggregation types supported by Fleet Indexing (see [below for nested schema](#nestedatt--aggregation_type))
+- **creation_date** (Number) The creation date of a fleet metric
+- **description** (String) The description of a fleet metric
+- **index_name** (String) The index name of a fleet metric
+- **last_modified_date** (Number) The last modified date of a fleet metric
+- **metric_arn** (String) The Amazon Resource Number (ARN) of a fleet metric metric
+- **metric_name** (String) The name of the fleet metric
+- **period** (Number) The period of metric emission in seconds
+- **query_string** (String) The Fleet Indexing query used by a fleet metric
+- **query_version** (String) The version of a Fleet Indexing query used by a fleet metric
+- **tags** (Attributes Set) An array of key-value pairs to apply to this resource (see [below for nested schema](#nestedatt--tags))
+- **unit** (String) The unit of data points emitted by a fleet metric
+- **version** (Number) The version of a fleet metric
+
+
+### Nested Schema for `aggregation_type`
+
+Read-Only:
+
+- **name** (String) Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality
+- **values** (List of String) Fleet Indexing aggregation type values
+
+
+
+### Nested Schema for `tags`
+
+Read-Only:
+
+- **key** (String) The tag's key
+- **value** (String) The tag's value
+
+
diff --git a/docs/data-sources/redshift_clusters.md b/docs/data-sources/iot_fleet_metrics.md
similarity index 58%
rename from docs/data-sources/redshift_clusters.md
rename to docs/data-sources/iot_fleet_metrics.md
index 4d7e676900..c6efd8444c 100644
--- a/docs/data-sources/redshift_clusters.md
+++ b/docs/data-sources/iot_fleet_metrics.md
@@ -1,14 +1,14 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "awscc_redshift_clusters Data Source - terraform-provider-awscc"
+page_title: "awscc_iot_fleet_metrics Data Source - terraform-provider-awscc"
subcategory: ""
description: |-
- Plural Data Source schema for AWS::Redshift::Cluster
+ Plural Data Source schema for AWS::IoT::FleetMetric
---
-# awscc_redshift_clusters (Data Source)
+# awscc_iot_fleet_metrics (Data Source)
-Plural Data Source schema for AWS::Redshift::Cluster
+Plural Data Source schema for AWS::IoT::FleetMetric
diff --git a/docs/data-sources/robomaker_fleet.md b/docs/data-sources/robomaker_fleet.md
new file mode 100644
index 0000000000..08b0ebb6c4
--- /dev/null
+++ b/docs/data-sources/robomaker_fleet.md
@@ -0,0 +1,28 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_fleet Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::RoboMaker::Fleet
+---
+
+# awscc_robomaker_fleet (Data Source)
+
+Data Source schema for AWS::RoboMaker::Fleet
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **arn** (String)
+- **name** (String) The name of the fleet.
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+
diff --git a/docs/data-sources/synthetics_canaries.md b/docs/data-sources/robomaker_fleets.md
similarity index 55%
rename from docs/data-sources/synthetics_canaries.md
rename to docs/data-sources/robomaker_fleets.md
index ea5b05c2da..a4a1e3acee 100644
--- a/docs/data-sources/synthetics_canaries.md
+++ b/docs/data-sources/robomaker_fleets.md
@@ -1,14 +1,14 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "awscc_synthetics_canaries Data Source - terraform-provider-awscc"
+page_title: "awscc_robomaker_fleets Data Source - terraform-provider-awscc"
subcategory: ""
description: |-
- Plural Data Source schema for AWS::Synthetics::Canary
+ Plural Data Source schema for AWS::RoboMaker::Fleet
---
-# awscc_synthetics_canaries (Data Source)
+# awscc_robomaker_fleets (Data Source)
-Plural Data Source schema for AWS::Synthetics::Canary
+Plural Data Source schema for AWS::RoboMaker::Fleet
diff --git a/docs/data-sources/robomaker_robot.md b/docs/data-sources/robomaker_robot.md
new file mode 100644
index 0000000000..8503d93690
--- /dev/null
+++ b/docs/data-sources/robomaker_robot.md
@@ -0,0 +1,31 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_robot Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::RoboMaker::Robot
+---
+
+# awscc_robomaker_robot (Data Source)
+
+Data Source schema for AWS::RoboMaker::Robot
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **architecture** (String) The target architecture of the robot.
+- **arn** (String)
+- **fleet** (String) The Amazon Resource Name (ARN) of the fleet.
+- **greengrass_group_id** (String) The Greengrass group id.
+- **name** (String) The name for the robot.
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+
diff --git a/docs/data-sources/robomaker_robot_application_version.md b/docs/data-sources/robomaker_robot_application_version.md
new file mode 100644
index 0000000000..9f46fa4cab
--- /dev/null
+++ b/docs/data-sources/robomaker_robot_application_version.md
@@ -0,0 +1,29 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_robot_application_version Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::RoboMaker::RobotApplicationVersion
+---
+
+# awscc_robomaker_robot_application_version (Data Source)
+
+Data Source schema for AWS::RoboMaker::RobotApplicationVersion
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **application** (String)
+- **application_version** (String)
+- **arn** (String)
+- **current_revision_id** (String) The revision ID of robot application.
+
+
diff --git a/docs/data-sources/s3outposts_endpoints.md b/docs/data-sources/robomaker_robots.md
similarity index 55%
rename from docs/data-sources/s3outposts_endpoints.md
rename to docs/data-sources/robomaker_robots.md
index 01fb466ea0..b4bf81ce03 100644
--- a/docs/data-sources/s3outposts_endpoints.md
+++ b/docs/data-sources/robomaker_robots.md
@@ -1,14 +1,14 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "awscc_s3outposts_endpoints Data Source - terraform-provider-awscc"
+page_title: "awscc_robomaker_robots Data Source - terraform-provider-awscc"
subcategory: ""
description: |-
- Plural Data Source schema for AWS::S3Outposts::Endpoint
+ Plural Data Source schema for AWS::RoboMaker::Robot
---
-# awscc_s3outposts_endpoints (Data Source)
+# awscc_robomaker_robots (Data Source)
-Plural Data Source schema for AWS::S3Outposts::Endpoint
+Plural Data Source schema for AWS::RoboMaker::Robot
diff --git a/docs/data-sources/robomaker_simulation_application.md b/docs/data-sources/robomaker_simulation_application.md
new file mode 100644
index 0000000000..df51bf0e59
--- /dev/null
+++ b/docs/data-sources/robomaker_simulation_application.md
@@ -0,0 +1,70 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_simulation_application Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::RoboMaker::SimulationApplication
+---
+
+# awscc_robomaker_simulation_application (Data Source)
+
+Data Source schema for AWS::RoboMaker::SimulationApplication
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **arn** (String)
+- **current_revision_id** (String) The current revision id.
+- **environment** (String) The URI of the Docker image for the robot application.
+- **name** (String) The name of the simulation application.
+- **rendering_engine** (Attributes) Information about a rendering engine. (see [below for nested schema](#nestedatt--rendering_engine))
+- **robot_software_suite** (Attributes) Information about a robot software suite (ROS distribution). (see [below for nested schema](#nestedatt--robot_software_suite))
+- **simulation_software_suite** (Attributes) Information about a simulation software suite. (see [below for nested schema](#nestedatt--simulation_software_suite))
+- **sources** (Attributes List) The sources of the simulation application. (see [below for nested schema](#nestedatt--sources))
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+
+### Nested Schema for `rendering_engine`
+
+Read-Only:
+
+- **name** (String) The name of the rendering engine.
+- **version** (String) The version of the rendering engine.
+
+
+
+### Nested Schema for `robot_software_suite`
+
+Read-Only:
+
+- **name** (String) The name of the robot software suite (ROS distribution).
+- **version** (String) The version of the robot software suite (ROS distribution).
+
+
+
+### Nested Schema for `simulation_software_suite`
+
+Read-Only:
+
+- **name** (String) The name of the simulation software suite.
+- **version** (String) The version of the simulation software suite.
+
+
+
+### Nested Schema for `sources`
+
+Read-Only:
+
+- **architecture** (String) The target processor architecture for the application.
+- **s3_bucket** (String) The Amazon S3 bucket name.
+- **s3_key** (String) The s3 object key.
+
+
diff --git a/docs/data-sources/robomaker_simulation_applications.md b/docs/data-sources/robomaker_simulation_applications.md
new file mode 100644
index 0000000000..366c215aa0
--- /dev/null
+++ b/docs/data-sources/robomaker_simulation_applications.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_simulation_applications Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::RoboMaker::SimulationApplication
+---
+
+# awscc_robomaker_simulation_applications (Data Source)
+
+Plural Data Source schema for AWS::RoboMaker::SimulationApplication
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/data-sources/s3_multi_region_access_point.md b/docs/data-sources/s3_multi_region_access_point.md
new file mode 100644
index 0000000000..afb63517a0
--- /dev/null
+++ b/docs/data-sources/s3_multi_region_access_point.md
@@ -0,0 +1,53 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_s3_multi_region_access_point Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::S3::MultiRegionAccessPoint
+---
+
+# awscc_s3_multi_region_access_point (Data Source)
+
+Data Source schema for AWS::S3::MultiRegionAccessPoint
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **alias** (String) The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point
+- **created_at** (String) The timestamp of the when the Multi Region Access Point is created
+- **name** (String) The name you want to assign to this Multi Region Access Point.
+- **public_access_block_configuration** (Attributes) (see [below for nested schema](#nestedatt--public_access_block_configuration))
+- **regions** (Attributes List) The list of buckets that you want to associate this Multi Region Access Point with. (see [below for nested schema](#nestedatt--regions))
+
+
+### Nested Schema for `public_access_block_configuration`
+
+Read-Only:
+
+- **block_public_acls** (Boolean) Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:
+- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.
+ - PUT Object calls fail if the request includes a public ACL.
+. - PUT Bucket calls fail if the request includes a public ACL.
+Enabling this setting doesn't affect existing policies or ACLs.
+- **block_public_policy** (Boolean) Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.
+- **ignore_public_acls** (Boolean) Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.
+- **restrict_public_buckets** (Boolean) Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.
+Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.
+
+
+
+### Nested Schema for `regions`
+
+Read-Only:
+
+- **bucket** (String)
+
+
diff --git a/docs/data-sources/s3_multi_region_access_point_policy.md b/docs/data-sources/s3_multi_region_access_point_policy.md
new file mode 100644
index 0000000000..a03835bef6
--- /dev/null
+++ b/docs/data-sources/s3_multi_region_access_point_policy.md
@@ -0,0 +1,35 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_s3_multi_region_access_point_policy Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Data Source schema for AWS::S3::MultiRegionAccessPointPolicy
+---
+
+# awscc_s3_multi_region_access_point_policy (Data Source)
+
+Data Source schema for AWS::S3::MultiRegionAccessPointPolicy
+
+
+
+
+## Schema
+
+### Required
+
+- **id** (String) Uniquely identifies the resource.
+
+### Read-Only
+
+- **mrap_name** (String) The name of the Multi Region Access Point to apply policy
+- **policy** (Map of String) Policy document to apply to a Multi Region Access Point
+- **policy_status** (Attributes) The Policy Status associated with this Multi Region Access Point (see [below for nested schema](#nestedatt--policy_status))
+
+
+### Nested Schema for `policy_status`
+
+Read-Only:
+
+- **is_public** (String) Specifies whether the policy is public or not.
+
+
diff --git a/docs/data-sources/s3_multi_region_access_points.md b/docs/data-sources/s3_multi_region_access_points.md
new file mode 100644
index 0000000000..54a365fd13
--- /dev/null
+++ b/docs/data-sources/s3_multi_region_access_points.md
@@ -0,0 +1,23 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_s3_multi_region_access_points Data Source - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Plural Data Source schema for AWS::S3::MultiRegionAccessPoint
+---
+
+# awscc_s3_multi_region_access_points (Data Source)
+
+Plural Data Source schema for AWS::S3::MultiRegionAccessPoint
+
+
+
+
+## Schema
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the data source.
+- **ids** (Set of String) Set of Resource Identifiers.
+
+
diff --git a/docs/resources/acmpca_permission.md b/docs/resources/acmpca_permission.md
new file mode 100644
index 0000000000..ea05112c11
--- /dev/null
+++ b/docs/resources/acmpca_permission.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_acmpca_permission Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Permission set on private certificate authority
+---
+
+# awscc_acmpca_permission (Resource)
+
+Permission set on private certificate authority
+
+
+
+
+## Schema
+
+### Required
+
+- **actions** (List of String) The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.
+- **certificate_authority_arn** (String) The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.
+- **principal** (String) The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.
+
+### Optional
+
+- **source_account** (String) The ID of the calling account.
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the resource.
+
+
diff --git a/docs/resources/apigateway_account.md b/docs/resources/apigateway_account.md
new file mode 100644
index 0000000000..75d3979564
--- /dev/null
+++ b/docs/resources/apigateway_account.md
@@ -0,0 +1,26 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_apigateway_account Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::ApiGateway::Account
+---
+
+# awscc_apigateway_account (Resource)
+
+Resource Type definition for AWS::ApiGateway::Account
+
+
+
+
+## Schema
+
+### Optional
+
+- **cloudwatch_role_arn** (String) The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.
+
+### Read-Only
+
+- **id** (String) Primary identifier which is manually generated.
+
+
diff --git a/docs/resources/apigateway_usage_plan.md b/docs/resources/apigateway_usage_plan.md
new file mode 100644
index 0000000000..9b5f582fce
--- /dev/null
+++ b/docs/resources/apigateway_usage_plan.md
@@ -0,0 +1,77 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_apigateway_usage_plan Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::ApiGateway::UsagePlan
+---
+
+# awscc_apigateway_usage_plan (Resource)
+
+Resource Type definition for AWS::ApiGateway::UsagePlan
+
+
+
+
+## Schema
+
+### Optional
+
+- **api_stages** (Attributes List) The API stages to associate with this usage plan. (see [below for nested schema](#nestedatt--api_stages))
+- **description** (String) A description of the usage plan.
+- **quota** (Attributes) (see [below for nested schema](#nestedatt--quota))
+- **tags** (Attributes List) An array of arbitrary tags (key-value pairs) to associate with the usage plan. (see [below for nested schema](#nestedatt--tags))
+- **throttle** (Attributes) (see [below for nested schema](#nestedatt--throttle))
+- **usage_plan_name** (String) A name for the usage plan.
+
+### Read-Only
+
+- **id** (String) The provider-assigned unique ID for this managed resource.
+
+
+### Nested Schema for `api_stages`
+
+Optional:
+
+- **api_id** (String) The ID of an API that is in the specified Stage property that you want to associate with the usage plan.
+- **stage** (String) The name of the stage to associate with the usage plan.
+- **throttle** (Attributes Map) Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed. (see [below for nested schema](#nestedatt--api_stages--throttle))
+
+
+### Nested Schema for `api_stages.throttle`
+
+Optional:
+
+- **burst_limit** (Number) The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.
+- **rate_limit** (Number) The API request steady-state rate limit (average requests per second over an extended period of time).
+
+
+
+
+### Nested Schema for `quota`
+
+Optional:
+
+- **limit** (Number) The maximum number of requests that users can make within the specified time period.
+- **offset** (Number) For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.
+- **period** (String) The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.
+
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
+
+### Nested Schema for `throttle`
+
+Optional:
+
+- **burst_limit** (Number) The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.
+- **rate_limit** (Number) The API request steady-state rate limit (average requests per second over an extended period of time).
+
+
diff --git a/docs/resources/aps_workspace.md b/docs/resources/aps_workspace.md
new file mode 100644
index 0000000000..0f1fdf6b85
--- /dev/null
+++ b/docs/resources/aps_workspace.md
@@ -0,0 +1,38 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_aps_workspace Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::APS::Workspace
+---
+
+# awscc_aps_workspace (Resource)
+
+Resource Type definition for AWS::APS::Workspace
+
+
+
+
+## Schema
+
+### Optional
+
+- **alias** (String) AMP Workspace alias.
+- **tags** (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags))
+
+### Read-Only
+
+- **arn** (String) Workspace arn.
+- **id** (String) Uniquely identifies the resource.
+- **prometheus_endpoint** (String) AMP Workspace prometheus endpoint
+- **workspace_id** (String) Required to identify a specific APS Workspace.
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
diff --git a/docs/resources/config_aggregation_authorization.md b/docs/resources/config_aggregation_authorization.md
new file mode 100644
index 0000000000..aef19c547c
--- /dev/null
+++ b/docs/resources/config_aggregation_authorization.md
@@ -0,0 +1,40 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_config_aggregation_authorization Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::Config::AggregationAuthorization
+---
+
+# awscc_config_aggregation_authorization (Resource)
+
+Resource Type definition for AWS::Config::AggregationAuthorization
+
+
+
+
+## Schema
+
+### Required
+
+- **authorized_account_id** (String) The 12-digit account ID of the account authorized to aggregate data.
+- **authorized_aws_region** (String) The region authorized to collect aggregated data.
+
+### Optional
+
+- **tags** (Attributes List, Max: 50) The tags for the AggregationAuthorization. (see [below for nested schema](#nestedatt--tags))
+
+### Read-Only
+
+- **aggregation_authorization_arn** (String) The ARN of the AggregationAuthorization.
+- **id** (String) Uniquely identifies the resource.
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String) The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+- **value** (String) The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
+
+
diff --git a/docs/resources/ec2_transit_gateway_vpc_attachment.md b/docs/resources/ec2_transit_gateway_vpc_attachment.md
new file mode 100644
index 0000000000..ea165dc632
--- /dev/null
+++ b/docs/resources/ec2_transit_gateway_vpc_attachment.md
@@ -0,0 +1,50 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_ec2_transit_gateway_vpc_attachment Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment
+---
+
+# awscc_ec2_transit_gateway_vpc_attachment (Resource)
+
+Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment
+
+
+
+
+## Schema
+
+### Optional
+
+- **add_subnet_ids** (List of String)
+- **options** (Attributes) The options for the transit gateway vpc attachment. (see [below for nested schema](#nestedatt--options))
+- **remove_subnet_ids** (List of String)
+- **subnet_ids** (List of String)
+- **tags** (Attributes List) (see [below for nested schema](#nestedatt--tags))
+- **transit_gateway_id** (String)
+- **vpc_id** (String)
+
+### Read-Only
+
+- **id** (String) The ID of this resource.
+
+
+### Nested Schema for `options`
+
+Optional:
+
+- **appliance_mode_support** (String) Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable
+- **dns_support** (String) Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable
+- **ipv_6_support** (String) Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable
+
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String)
+- **value** (String)
+
+
diff --git a/docs/resources/efs_mount_target.md b/docs/resources/efs_mount_target.md
new file mode 100644
index 0000000000..a3c94660c7
--- /dev/null
+++ b/docs/resources/efs_mount_target.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_efs_mount_target Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ Resource Type definition for AWS::EFS::MountTarget
+---
+
+# awscc_efs_mount_target (Resource)
+
+Resource Type definition for AWS::EFS::MountTarget
+
+
+
+
+## Schema
+
+### Required
+
+- **file_system_id** (String)
+- **security_groups** (Set of String)
+- **subnet_id** (String)
+
+### Optional
+
+- **ip_address** (String)
+
+### Read-Only
+
+- **id** (String) The ID of this resource.
+
+
diff --git a/docs/resources/healthlake_fhir_datastore.md b/docs/resources/healthlake_fhir_datastore.md
new file mode 100644
index 0000000000..317c3f791a
--- /dev/null
+++ b/docs/resources/healthlake_fhir_datastore.md
@@ -0,0 +1,80 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_healthlake_fhir_datastore Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ HealthLake FHIR Datastore
+---
+
+# awscc_healthlake_fhir_datastore (Resource)
+
+HealthLake FHIR Datastore
+
+
+
+
+## Schema
+
+### Required
+
+- **datastore_type_version** (String) The FHIR version. Only R4 version data is supported.
+
+### Optional
+
+- **datastore_name** (String) The user-generated name for the Data Store.
+- **preload_data_config** (Attributes) The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported. (see [below for nested schema](#nestedatt--preload_data_config))
+- **sse_configuration** (Attributes) The server-side encryption key configuration for a customer provided encryption key. (see [below for nested schema](#nestedatt--sse_configuration))
+- **tags** (Attributes List) (see [below for nested schema](#nestedatt--tags))
+
+### Read-Only
+
+- **created_at** (Attributes) The time that a Data Store was created. (see [below for nested schema](#nestedatt--created_at))
+- **datastore_arn** (String) The Amazon Resource Name used in the creation of the Data Store.
+- **datastore_endpoint** (String) The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.
+- **datastore_id** (String) The AWS-generated ID number for the Data Store.
+- **datastore_status** (String) The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.
+- **id** (String) Uniquely identifies the resource.
+
+
+### Nested Schema for `preload_data_config`
+
+Optional:
+
+- **preload_data_type** (String) The type of preloaded data. Only Synthea preloaded data is supported.
+
+
+
+### Nested Schema for `sse_configuration`
+
+Optional:
+
+- **kms_encryption_config** (Attributes) The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption. (see [below for nested schema](#nestedatt--sse_configuration--kms_encryption_config))
+
+
+### Nested Schema for `sse_configuration.kms_encryption_config`
+
+Optional:
+
+- **cmk_type** (String) The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.
+- **kms_key_id** (String) The KMS encryption key id/alias used to encrypt the Data Store contents at rest.
+
+
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String) The key of the tag.
+- **value** (String) The value of the tag.
+
+
+
+### Nested Schema for `created_at`
+
+Read-Only:
+
+- **nanos** (Number) Nanoseconds.
+- **seconds** (String) Seconds since epoch.
+
+
diff --git a/docs/resources/iot_fleet_metric.md b/docs/resources/iot_fleet_metric.md
new file mode 100644
index 0000000000..52a0eeadf2
--- /dev/null
+++ b/docs/resources/iot_fleet_metric.md
@@ -0,0 +1,59 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_iot_fleet_metric Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ An aggregated metric of certain devices in your fleet
+---
+
+# awscc_iot_fleet_metric (Resource)
+
+An aggregated metric of certain devices in your fleet
+
+
+
+
+## Schema
+
+### Required
+
+- **metric_name** (String) The name of the fleet metric
+
+### Optional
+
+- **aggregation_field** (String) The aggregation field to perform aggregation and metric emission
+- **aggregation_type** (Attributes) Aggregation types supported by Fleet Indexing (see [below for nested schema](#nestedatt--aggregation_type))
+- **description** (String) The description of a fleet metric
+- **index_name** (String) The index name of a fleet metric
+- **period** (Number) The period of metric emission in seconds
+- **query_string** (String) The Fleet Indexing query used by a fleet metric
+- **query_version** (String) The version of a Fleet Indexing query used by a fleet metric
+- **tags** (Attributes Set, Max: 50) An array of key-value pairs to apply to this resource (see [below for nested schema](#nestedatt--tags))
+- **unit** (String) The unit of data points emitted by a fleet metric
+
+### Read-Only
+
+- **creation_date** (Number) The creation date of a fleet metric
+- **id** (String) Uniquely identifies the resource.
+- **last_modified_date** (Number) The last modified date of a fleet metric
+- **metric_arn** (String) The Amazon Resource Number (ARN) of a fleet metric metric
+- **version** (Number) The version of a fleet metric
+
+
+### Nested Schema for `aggregation_type`
+
+Optional:
+
+- **name** (String) Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality
+- **values** (List of String) Fleet Indexing aggregation type values
+
+
+
+### Nested Schema for `tags`
+
+Optional:
+
+- **key** (String) The tag's key
+- **value** (String) The tag's value
+
+
diff --git a/docs/resources/robomaker_fleet.md b/docs/resources/robomaker_fleet.md
new file mode 100644
index 0000000000..46f93abec9
--- /dev/null
+++ b/docs/resources/robomaker_fleet.md
@@ -0,0 +1,28 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_fleet Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.
+---
+
+# awscc_robomaker_fleet (Resource)
+
+AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.
+
+
+
+
+## Schema
+
+### Optional
+
+- **name** (String) The name of the fleet.
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+### Read-Only
+
+- **arn** (String)
+- **id** (String) Uniquely identifies the resource.
+
+
diff --git a/docs/resources/robomaker_robot.md b/docs/resources/robomaker_robot.md
new file mode 100644
index 0000000000..de0491b67a
--- /dev/null
+++ b/docs/resources/robomaker_robot.md
@@ -0,0 +1,34 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_robot Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ AWS::RoboMaker::Robot resource creates an AWS RoboMaker fleet.
+---
+
+# awscc_robomaker_robot (Resource)
+
+AWS::RoboMaker::Robot resource creates an AWS RoboMaker fleet.
+
+
+
+
+## Schema
+
+### Required
+
+- **architecture** (String) The target architecture of the robot.
+- **greengrass_group_id** (String) The Greengrass group id.
+
+### Optional
+
+- **fleet** (String) The Amazon Resource Name (ARN) of the fleet.
+- **name** (String) The name for the robot.
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+### Read-Only
+
+- **arn** (String)
+- **id** (String) Uniquely identifies the resource.
+
+
diff --git a/docs/resources/robomaker_robot_application_version.md b/docs/resources/robomaker_robot_application_version.md
new file mode 100644
index 0000000000..48dd14586f
--- /dev/null
+++ b/docs/resources/robomaker_robot_application_version.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_robot_application_version Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ An example resource schema demonstrating some basic constructs and validation rules.
+---
+
+# awscc_robomaker_robot_application_version (Resource)
+
+An example resource schema demonstrating some basic constructs and validation rules.
+
+
+
+
+## Schema
+
+### Required
+
+- **application** (String)
+
+### Optional
+
+- **current_revision_id** (String) The revision ID of robot application.
+
+### Read-Only
+
+- **application_version** (String)
+- **arn** (String)
+- **id** (String) Uniquely identifies the resource.
+
+
diff --git a/docs/resources/robomaker_simulation_application.md b/docs/resources/robomaker_simulation_application.md
new file mode 100644
index 0000000000..f21b99001b
--- /dev/null
+++ b/docs/resources/robomaker_simulation_application.md
@@ -0,0 +1,73 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_robomaker_simulation_application Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ An example resource schema demonstrating some basic constructs and validation rules.
+---
+
+# awscc_robomaker_simulation_application (Resource)
+
+An example resource schema demonstrating some basic constructs and validation rules.
+
+
+
+
+## Schema
+
+### Required
+
+- **robot_software_suite** (Attributes) Information about a robot software suite (ROS distribution). (see [below for nested schema](#nestedatt--robot_software_suite))
+- **simulation_software_suite** (Attributes) Information about a simulation software suite. (see [below for nested schema](#nestedatt--simulation_software_suite))
+
+### Optional
+
+- **current_revision_id** (String) The current revision id.
+- **environment** (String) The URI of the Docker image for the robot application.
+- **name** (String) The name of the simulation application.
+- **rendering_engine** (Attributes) Information about a rendering engine. (see [below for nested schema](#nestedatt--rendering_engine))
+- **sources** (Attributes List) The sources of the simulation application. (see [below for nested schema](#nestedatt--sources))
+- **tags** (Map of String) A key-value pair to associate with a resource.
+
+### Read-Only
+
+- **arn** (String)
+- **id** (String) Uniquely identifies the resource.
+
+
+### Nested Schema for `robot_software_suite`
+
+Required:
+
+- **name** (String) The name of the robot software suite (ROS distribution).
+- **version** (String) The version of the robot software suite (ROS distribution).
+
+
+
+### Nested Schema for `simulation_software_suite`
+
+Required:
+
+- **name** (String) The name of the simulation software suite.
+- **version** (String) The version of the simulation software suite.
+
+
+
+### Nested Schema for `rendering_engine`
+
+Optional:
+
+- **name** (String) The name of the rendering engine.
+- **version** (String) The version of the rendering engine.
+
+
+
+### Nested Schema for `sources`
+
+Optional:
+
+- **architecture** (String) The target processor architecture for the application.
+- **s3_bucket** (String) The Amazon S3 bucket name.
+- **s3_key** (String) The s3 object key.
+
+
diff --git a/docs/resources/s3_multi_region_access_point.md b/docs/resources/s3_multi_region_access_point.md
new file mode 100644
index 0000000000..6a232ca157
--- /dev/null
+++ b/docs/resources/s3_multi_region_access_point.md
@@ -0,0 +1,56 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_s3_multi_region_access_point Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.
+---
+
+# awscc_s3_multi_region_access_point (Resource)
+
+AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.
+
+
+
+
+## Schema
+
+### Required
+
+- **regions** (Attributes List, Min: 1) The list of buckets that you want to associate this Multi Region Access Point with. (see [below for nested schema](#nestedatt--regions))
+
+### Optional
+
+- **name** (String) The name you want to assign to this Multi Region Access Point.
+- **public_access_block_configuration** (Attributes) (see [below for nested schema](#nestedatt--public_access_block_configuration))
+
+### Read-Only
+
+- **alias** (String) The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point
+- **created_at** (String) The timestamp of the when the Multi Region Access Point is created
+- **id** (String) Uniquely identifies the resource.
+
+
+### Nested Schema for `regions`
+
+Required:
+
+- **bucket** (String)
+
+
+
+### Nested Schema for `public_access_block_configuration`
+
+Optional:
+
+- **block_public_acls** (Boolean) Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:
+- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.
+ - PUT Object calls fail if the request includes a public ACL.
+. - PUT Bucket calls fail if the request includes a public ACL.
+Enabling this setting doesn't affect existing policies or ACLs.
+- **block_public_policy** (Boolean) Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.
+- **ignore_public_acls** (Boolean) Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.
+- **restrict_public_buckets** (Boolean) Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.
+Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.
+
+
diff --git a/docs/resources/s3_multi_region_access_point_policy.md b/docs/resources/s3_multi_region_access_point_policy.md
new file mode 100644
index 0000000000..ebeb70d31a
--- /dev/null
+++ b/docs/resources/s3_multi_region_access_point_policy.md
@@ -0,0 +1,35 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "awscc_s3_multi_region_access_point_policy Resource - terraform-provider-awscc"
+subcategory: ""
+description: |-
+ The policy to be attached to a Multi Region Access Point
+---
+
+# awscc_s3_multi_region_access_point_policy (Resource)
+
+The policy to be attached to a Multi Region Access Point
+
+
+
+
+## Schema
+
+### Required
+
+- **mrap_name** (String) The name of the Multi Region Access Point to apply policy
+- **policy** (Map of String) Policy document to apply to a Multi Region Access Point
+
+### Read-Only
+
+- **id** (String) Uniquely identifies the resource.
+- **policy_status** (Attributes) The Policy Status associated with this Multi Region Access Point (see [below for nested schema](#nestedatt--policy_status))
+
+
+### Nested Schema for `policy_status`
+
+Read-Only:
+
+- **is_public** (String) Specifies whether the policy is public or not.
+
+
diff --git a/internal/aws/acmpca/permission_resource_gen.go b/internal/aws/acmpca/permission_resource_gen.go
new file mode 100644
index 0000000000..a28fddd3ba
--- /dev/null
+++ b/internal/aws/acmpca/permission_resource_gen.go
@@ -0,0 +1,121 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package acmpca
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddResourceTypeFactory("awscc_acmpca_permission", permissionResourceType)
+}
+
+// permissionResourceType returns the Terraform awscc_acmpca_permission resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::ACMPCA::Permission resource type.
+func permissionResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "actions": {
+ // Property: Actions
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.",
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array"
+ // }
+ Description: "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.",
+ Type: types.ListType{ElemType: types.StringType},
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "certificate_authority_arn": {
+ // Property: CertificateAuthorityArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.",
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "principal": {
+ // Property: Principal
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.",
+ // "type": "string"
+ // }
+ Description: "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.",
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "source_account": {
+ // Property: SourceAccount
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The ID of the calling account.",
+ // "type": "string"
+ // }
+ Description: "The ID of the calling account.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Permission set on private certificate authority",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ACMPCA::Permission").WithTerraformTypeName("awscc_acmpca_permission")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "actions": "Actions",
+ "certificate_authority_arn": "CertificateAuthorityArn",
+ "principal": "Principal",
+ "source_account": "SourceAccount",
+ })
+
+ opts = opts.IsImmutableType(true)
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/acmpca/permission_resource_gen_test.go b/internal/aws/acmpca/permission_resource_gen_test.go
new file mode 100644
index 0000000000..e1a7bb0c33
--- /dev/null
+++ b/internal/aws/acmpca/permission_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package acmpca_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSACMPCAPermission_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ACMPCA::Permission", "awscc_acmpca_permission", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/acmpca/permission_singular_data_source_gen.go b/internal/aws/acmpca/permission_singular_data_source_gen.go
new file mode 100644
index 0000000000..a833f1010b
--- /dev/null
+++ b/internal/aws/acmpca/permission_singular_data_source_gen.go
@@ -0,0 +1,102 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package acmpca
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_acmpca_permission", permissionDataSourceType)
+}
+
+// permissionDataSourceType returns the Terraform awscc_acmpca_permission data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::ACMPCA::Permission resource type.
+func permissionDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "actions": {
+ // Property: Actions
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.",
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array"
+ // }
+ Description: "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.",
+ Type: types.ListType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "certificate_authority_arn": {
+ // Property: CertificateAuthorityArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "principal": {
+ // Property: Principal
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.",
+ // "type": "string"
+ // }
+ Description: "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "source_account": {
+ // Property: SourceAccount
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The ID of the calling account.",
+ // "type": "string"
+ // }
+ Description: "The ID of the calling account.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::ACMPCA::Permission",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ACMPCA::Permission").WithTerraformTypeName("awscc_acmpca_permission")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "actions": "Actions",
+ "certificate_authority_arn": "CertificateAuthorityArn",
+ "principal": "Principal",
+ "source_account": "SourceAccount",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/acmpca/permission_singular_data_source_gen_test.go b/internal/aws/acmpca/permission_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..73ce3a4be1
--- /dev/null
+++ b/internal/aws/acmpca/permission_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package acmpca_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSACMPCAPermissionDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ACMPCA::Permission", "awscc_acmpca_permission", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSACMPCAPermissionDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ACMPCA::Permission", "awscc_acmpca_permission", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/apigateway/account_resource_gen.go b/internal/aws/apigateway/account_resource_gen.go
new file mode 100644
index 0000000000..84ad055310
--- /dev/null
+++ b/internal/aws/apigateway/account_resource_gen.go
@@ -0,0 +1,73 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package apigateway
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddResourceTypeFactory("awscc_apigateway_account", accountResourceType)
+}
+
+// accountResourceType returns the Terraform awscc_apigateway_account resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::ApiGateway::Account resource type.
+func accountResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "cloudwatch_role_arn": {
+ // Property: CloudWatchRoleArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Primary identifier which is manually generated.",
+ // "type": "string"
+ // }
+ Description: "Primary identifier which is manually generated.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::ApiGateway::Account",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ApiGateway::Account").WithTerraformTypeName("awscc_apigateway_account")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(false)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "cloudwatch_role_arn": "CloudWatchRoleArn",
+ "id": "Id",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/apigateway/account_resource_gen_test.go b/internal/aws/apigateway/account_resource_gen_test.go
new file mode 100644
index 0000000000..f2b2cf5701
--- /dev/null
+++ b/internal/aws/apigateway/account_resource_gen_test.go
@@ -0,0 +1,38 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package apigateway_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSApiGatewayAccount_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::Account", "awscc_apigateway_account", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ ),
+ },
+ })
+}
+
+func TestAccAWSApiGatewayAccount_disappears(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::Account", "awscc_apigateway_account", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ td.DeleteResource(),
+ ),
+ ExpectNonEmptyPlan: true,
+ },
+ })
+}
diff --git a/internal/aws/apigateway/account_singular_data_source_gen.go b/internal/aws/apigateway/account_singular_data_source_gen.go
new file mode 100644
index 0000000000..66e378ae36
--- /dev/null
+++ b/internal/aws/apigateway/account_singular_data_source_gen.go
@@ -0,0 +1,74 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package apigateway
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_apigateway_account", accountDataSourceType)
+}
+
+// accountDataSourceType returns the Terraform awscc_apigateway_account data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::ApiGateway::Account resource type.
+func accountDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "cloudwatch_role_arn": {
+ // Property: CloudWatchRoleArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Primary identifier which is manually generated.",
+ // "type": "string"
+ // }
+ Description: "Primary identifier which is manually generated.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::ApiGateway::Account",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ApiGateway::Account").WithTerraformTypeName("awscc_apigateway_account")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "cloudwatch_role_arn": "CloudWatchRoleArn",
+ "id": "Id",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/apigateway/account_singular_data_source_gen_test.go b/internal/aws/apigateway/account_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..af7fb921d8
--- /dev/null
+++ b/internal/aws/apigateway/account_singular_data_source_gen_test.go
@@ -0,0 +1,37 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package apigateway_test
+
+import (
+ "fmt"
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSApiGatewayAccountDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::Account", "awscc_apigateway_account", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithEmptyResourceConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"),
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"),
+ ),
+ },
+ })
+}
+
+func TestAccAWSApiGatewayAccountDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::Account", "awscc_apigateway_account", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/groundstation/config_plural_data_source_gen.go b/internal/aws/apigateway/usage_plan_plural_data_source_gen.go
similarity index 65%
rename from internal/aws/groundstation/config_plural_data_source_gen.go
rename to internal/aws/apigateway/usage_plan_plural_data_source_gen.go
index b76744a586..16149449ea 100644
--- a/internal/aws/groundstation/config_plural_data_source_gen.go
+++ b/internal/aws/apigateway/usage_plan_plural_data_source_gen.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package groundstation
+package apigateway
import (
"context"
@@ -12,12 +12,12 @@ import (
)
func init() {
- registry.AddDataSourceTypeFactory("awscc_groundstation_configs", configsDataSourceType)
+ registry.AddDataSourceTypeFactory("awscc_apigateway_usage_plans", usagePlansDataSourceType)
}
-// configsDataSourceType returns the Terraform awscc_groundstation_configs data source type.
-// This Terraform data source type corresponds to the CloudFormation AWS::GroundStation::Config resource type.
-func configsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+// usagePlansDataSourceType returns the Terraform awscc_apigateway_usage_plans data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::ApiGateway::UsagePlan resource type.
+func usagePlansDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
attributes := map[string]tfsdk.Attribute{
"id": {
Description: "Uniquely identifies the data source.",
@@ -32,14 +32,14 @@ func configsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
}
schema := tfsdk.Schema{
- Description: "Plural Data Source schema for AWS::GroundStation::Config",
+ Description: "Plural Data Source schema for AWS::ApiGateway::UsagePlan",
Version: 1,
Attributes: attributes,
}
var opts DataSourceTypeOptions
- opts = opts.WithCloudFormationTypeName("AWS::GroundStation::Config").WithTerraformTypeName("awscc_groundstation_configs")
+ opts = opts.WithCloudFormationTypeName("AWS::ApiGateway::UsagePlan").WithTerraformTypeName("awscc_apigateway_usage_plans")
opts = opts.WithTerraformSchema(schema)
pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
diff --git a/internal/aws/groundstation/config_plural_data_source_gen_test.go b/internal/aws/apigateway/usage_plan_plural_data_source_gen_test.go
similarity index 71%
rename from internal/aws/groundstation/config_plural_data_source_gen_test.go
rename to internal/aws/apigateway/usage_plan_plural_data_source_gen_test.go
index f1e9dfaa4f..57534f263f 100644
--- a/internal/aws/groundstation/config_plural_data_source_gen_test.go
+++ b/internal/aws/apigateway/usage_plan_plural_data_source_gen_test.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package groundstation_test
+package apigateway_test
import (
"fmt"
@@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-provider-awscc/internal/acctest"
)
-func TestAccAWSGroundStationConfigsDataSource_basic(t *testing.T) {
- td := acctest.NewTestData(t, "AWS::GroundStation::Config", "awscc_groundstation_configs", "test")
+func TestAccAWSApiGatewayUsagePlansDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::UsagePlan", "awscc_apigateway_usage_plans", "test")
td.DataSourceTest(t, []resource.TestStep{
{
diff --git a/internal/aws/apigateway/usage_plan_resource_gen.go b/internal/aws/apigateway/usage_plan_resource_gen.go
new file mode 100644
index 0000000000..84f2673ad2
--- /dev/null
+++ b/internal/aws/apigateway/usage_plan_resource_gen.go
@@ -0,0 +1,352 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package apigateway
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_apigateway_usage_plan", usagePlanResourceType)
+}
+
+// usagePlanResourceType returns the Terraform awscc_apigateway_usage_plan resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::ApiGateway::UsagePlan resource type.
+func usagePlanResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "api_stages": {
+ // Property: ApiStages
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The API stages to associate with this usage plan.",
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "ApiId": {
+ // "description": "The ID of an API that is in the specified Stage property that you want to associate with the usage plan.",
+ // "type": "string"
+ // },
+ // "Stage": {
+ // "description": "The name of the stage to associate with the usage plan.",
+ // "type": "string"
+ // },
+ // "Throttle": {
+ // "additionalProperties": false,
+ // "description": "Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed.",
+ // "patternProperties": {
+ // "": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BurstLimit": {
+ // "description": "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "RateLimit": {
+ // "description": "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ // "minimum": 0,
+ // "type": "number"
+ // }
+ // },
+ // "type": "object"
+ // }
+ // },
+ // "type": "object"
+ // }
+ // },
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The API stages to associate with this usage plan.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "api_id": {
+ // Property: ApiId
+ Description: "The ID of an API that is in the specified Stage property that you want to associate with the usage plan.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "stage": {
+ // Property: Stage
+ Description: "The name of the stage to associate with the usage plan.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "throttle": {
+ // Property: Throttle
+ Description: "Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed.",
+ // Pattern: ""
+ Attributes: tfsdk.MapNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "burst_limit": {
+ // Property: BurstLimit
+ Description: "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.IntAtLeast(0),
+ },
+ },
+ "rate_limit": {
+ // Property: RateLimit
+ Description: "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.FloatAtLeast(0.000000),
+ },
+ },
+ },
+ tfsdk.MapNestedAttributesOptions{},
+ ),
+ Optional: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.UniqueItems(),
+ },
+ },
+ "description": {
+ // Property: Description
+ // CloudFormation resource type schema:
+ // {
+ // "description": "A description of the usage plan.",
+ // "type": "string"
+ // }
+ Description: "A description of the usage plan.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The provider-assigned unique ID for this managed resource.",
+ // "type": "string"
+ // }
+ Description: "The provider-assigned unique ID for this managed resource.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "quota": {
+ // Property: Quota
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Limit": {
+ // "description": "The maximum number of requests that users can make within the specified time period.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "Offset": {
+ // "description": "For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "Period": {
+ // "description": "The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.",
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "limit": {
+ // Property: Limit
+ Description: "The maximum number of requests that users can make within the specified time period.",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.IntAtLeast(0),
+ },
+ },
+ "offset": {
+ // Property: Offset
+ Description: "For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.IntAtLeast(0),
+ },
+ },
+ "period": {
+ // Property: Period
+ Description: "The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ },
+ ),
+ Optional: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of arbitrary tags (key-value pairs) to associate with the usage plan.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Description: "An array of arbitrary tags (key-value pairs) to associate with the usage plan.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 128),
+ },
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(0, 256),
+ },
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ "throttle": {
+ // Property: Throttle
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BurstLimit": {
+ // "description": "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "RateLimit": {
+ // "description": "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ // "minimum": 0,
+ // "type": "number"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "burst_limit": {
+ // Property: BurstLimit
+ Description: "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.IntAtLeast(0),
+ },
+ },
+ "rate_limit": {
+ // Property: RateLimit
+ Description: "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ Type: types.NumberType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.FloatAtLeast(0.000000),
+ },
+ },
+ },
+ ),
+ Optional: true,
+ },
+ "usage_plan_name": {
+ // Property: UsagePlanName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "A name for the usage plan.",
+ // "type": "string"
+ // }
+ Description: "A name for the usage plan.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::ApiGateway::UsagePlan",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ApiGateway::UsagePlan").WithTerraformTypeName("awscc_apigateway_usage_plan")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(false)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "api_id": "ApiId",
+ "api_stages": "ApiStages",
+ "burst_limit": "BurstLimit",
+ "description": "Description",
+ "id": "Id",
+ "key": "Key",
+ "limit": "Limit",
+ "offset": "Offset",
+ "period": "Period",
+ "quota": "Quota",
+ "rate_limit": "RateLimit",
+ "stage": "Stage",
+ "tags": "Tags",
+ "throttle": "Throttle",
+ "usage_plan_name": "UsagePlanName",
+ "value": "Value",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/apigateway/usage_plan_resource_gen_test.go b/internal/aws/apigateway/usage_plan_resource_gen_test.go
new file mode 100644
index 0000000000..03b98470a5
--- /dev/null
+++ b/internal/aws/apigateway/usage_plan_resource_gen_test.go
@@ -0,0 +1,38 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package apigateway_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSApiGatewayUsagePlan_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::UsagePlan", "awscc_apigateway_usage_plan", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ ),
+ },
+ })
+}
+
+func TestAccAWSApiGatewayUsagePlan_disappears(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::UsagePlan", "awscc_apigateway_usage_plan", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ td.DeleteResource(),
+ ),
+ ExpectNonEmptyPlan: true,
+ },
+ })
+}
diff --git a/internal/aws/apigateway/usage_plan_singular_data_source_gen.go b/internal/aws/apigateway/usage_plan_singular_data_source_gen.go
new file mode 100644
index 0000000000..37400ff53a
--- /dev/null
+++ b/internal/aws/apigateway/usage_plan_singular_data_source_gen.go
@@ -0,0 +1,322 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package apigateway
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_apigateway_usage_plan", usagePlanDataSourceType)
+}
+
+// usagePlanDataSourceType returns the Terraform awscc_apigateway_usage_plan data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::ApiGateway::UsagePlan resource type.
+func usagePlanDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "api_stages": {
+ // Property: ApiStages
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The API stages to associate with this usage plan.",
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "ApiId": {
+ // "description": "The ID of an API that is in the specified Stage property that you want to associate with the usage plan.",
+ // "type": "string"
+ // },
+ // "Stage": {
+ // "description": "The name of the stage to associate with the usage plan.",
+ // "type": "string"
+ // },
+ // "Throttle": {
+ // "additionalProperties": false,
+ // "description": "Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed.",
+ // "patternProperties": {
+ // "": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BurstLimit": {
+ // "description": "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "RateLimit": {
+ // "description": "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ // "minimum": 0,
+ // "type": "number"
+ // }
+ // },
+ // "type": "object"
+ // }
+ // },
+ // "type": "object"
+ // }
+ // },
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The API stages to associate with this usage plan.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "api_id": {
+ // Property: ApiId
+ Description: "The ID of an API that is in the specified Stage property that you want to associate with the usage plan.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "stage": {
+ // Property: Stage
+ Description: "The name of the stage to associate with the usage plan.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "throttle": {
+ // Property: Throttle
+ Description: "Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed.",
+ // Pattern: ""
+ Attributes: tfsdk.MapNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "burst_limit": {
+ // Property: BurstLimit
+ Description: "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "rate_limit": {
+ // Property: RateLimit
+ Description: "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ },
+ tfsdk.MapNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "description": {
+ // Property: Description
+ // CloudFormation resource type schema:
+ // {
+ // "description": "A description of the usage plan.",
+ // "type": "string"
+ // }
+ Description: "A description of the usage plan.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The provider-assigned unique ID for this managed resource.",
+ // "type": "string"
+ // }
+ Description: "The provider-assigned unique ID for this managed resource.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "quota": {
+ // Property: Quota
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Limit": {
+ // "description": "The maximum number of requests that users can make within the specified time period.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "Offset": {
+ // "description": "For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "Period": {
+ // "description": "The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.",
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "limit": {
+ // Property: Limit
+ Description: "The maximum number of requests that users can make within the specified time period.",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "offset": {
+ // Property: Offset
+ Description: "For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period.",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "period": {
+ // Property: Period
+ Description: "The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of arbitrary tags (key-value pairs) to associate with the usage plan.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Description: "An array of arbitrary tags (key-value pairs) to associate with the usage plan.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "throttle": {
+ // Property: Throttle
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BurstLimit": {
+ // "description": "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ // "minimum": 0,
+ // "type": "integer"
+ // },
+ // "RateLimit": {
+ // "description": "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ // "minimum": 0,
+ // "type": "number"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "burst_limit": {
+ // Property: BurstLimit
+ Description: "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity.",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "rate_limit": {
+ // Property: RateLimit
+ Description: "The API request steady-state rate limit (average requests per second over an extended period of time).",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "usage_plan_name": {
+ // Property: UsagePlanName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "A name for the usage plan.",
+ // "type": "string"
+ // }
+ Description: "A name for the usage plan.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::ApiGateway::UsagePlan",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::ApiGateway::UsagePlan").WithTerraformTypeName("awscc_apigateway_usage_plan")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "api_id": "ApiId",
+ "api_stages": "ApiStages",
+ "burst_limit": "BurstLimit",
+ "description": "Description",
+ "id": "Id",
+ "key": "Key",
+ "limit": "Limit",
+ "offset": "Offset",
+ "period": "Period",
+ "quota": "Quota",
+ "rate_limit": "RateLimit",
+ "stage": "Stage",
+ "tags": "Tags",
+ "throttle": "Throttle",
+ "usage_plan_name": "UsagePlanName",
+ "value": "Value",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/apigateway/usage_plan_singular_data_source_gen_test.go b/internal/aws/apigateway/usage_plan_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..17f4cc5dcf
--- /dev/null
+++ b/internal/aws/apigateway/usage_plan_singular_data_source_gen_test.go
@@ -0,0 +1,37 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package apigateway_test
+
+import (
+ "fmt"
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSApiGatewayUsagePlanDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::UsagePlan", "awscc_apigateway_usage_plan", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithEmptyResourceConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"),
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"),
+ ),
+ },
+ })
+}
+
+func TestAccAWSApiGatewayUsagePlanDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::ApiGateway::UsagePlan", "awscc_apigateway_usage_plan", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/redshift/cluster_plural_data_source_gen.go b/internal/aws/aps/workspace_plural_data_source_gen.go
similarity index 67%
rename from internal/aws/redshift/cluster_plural_data_source_gen.go
rename to internal/aws/aps/workspace_plural_data_source_gen.go
index e8020670b4..15144fbc08 100644
--- a/internal/aws/redshift/cluster_plural_data_source_gen.go
+++ b/internal/aws/aps/workspace_plural_data_source_gen.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package redshift
+package aps
import (
"context"
@@ -12,12 +12,12 @@ import (
)
func init() {
- registry.AddDataSourceTypeFactory("awscc_redshift_clusters", clustersDataSourceType)
+ registry.AddDataSourceTypeFactory("awscc_aps_workspaces", workspacesDataSourceType)
}
-// clustersDataSourceType returns the Terraform awscc_redshift_clusters data source type.
-// This Terraform data source type corresponds to the CloudFormation AWS::Redshift::Cluster resource type.
-func clustersDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+// workspacesDataSourceType returns the Terraform awscc_aps_workspaces data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::APS::Workspace resource type.
+func workspacesDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
attributes := map[string]tfsdk.Attribute{
"id": {
Description: "Uniquely identifies the data source.",
@@ -32,14 +32,14 @@ func clustersDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
}
schema := tfsdk.Schema{
- Description: "Plural Data Source schema for AWS::Redshift::Cluster",
+ Description: "Plural Data Source schema for AWS::APS::Workspace",
Version: 1,
Attributes: attributes,
}
var opts DataSourceTypeOptions
- opts = opts.WithCloudFormationTypeName("AWS::Redshift::Cluster").WithTerraformTypeName("awscc_redshift_clusters")
+ opts = opts.WithCloudFormationTypeName("AWS::APS::Workspace").WithTerraformTypeName("awscc_aps_workspaces")
opts = opts.WithTerraformSchema(schema)
pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
diff --git a/internal/aws/redshift/cluster_plural_data_source_gen_test.go b/internal/aws/aps/workspace_plural_data_source_gen_test.go
similarity index 72%
rename from internal/aws/redshift/cluster_plural_data_source_gen_test.go
rename to internal/aws/aps/workspace_plural_data_source_gen_test.go
index bd981f1d0b..a9f57858f8 100644
--- a/internal/aws/redshift/cluster_plural_data_source_gen_test.go
+++ b/internal/aws/aps/workspace_plural_data_source_gen_test.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package redshift_test
+package aps_test
import (
"fmt"
@@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-provider-awscc/internal/acctest"
)
-func TestAccAWSRedshiftClustersDataSource_basic(t *testing.T) {
- td := acctest.NewTestData(t, "AWS::Redshift::Cluster", "awscc_redshift_clusters", "test")
+func TestAccAWSAPSWorkspacesDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::APS::Workspace", "awscc_aps_workspaces", "test")
td.DataSourceTest(t, []resource.TestStep{
{
diff --git a/internal/aws/aps/workspace_resource_gen.go b/internal/aws/aps/workspace_resource_gen.go
new file mode 100644
index 0000000000..005684dc6f
--- /dev/null
+++ b/internal/aws/aps/workspace_resource_gen.go
@@ -0,0 +1,176 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package aps
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_aps_workspace", workspaceResourceType)
+}
+
+// workspaceResourceType returns the Terraform awscc_aps_workspace resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::APS::Workspace resource type.
+func workspaceResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "alias": {
+ // Property: Alias
+ // CloudFormation resource type schema:
+ // {
+ // "description": "AMP Workspace alias.",
+ // "maxLength": 100,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ Description: "AMP Workspace alias.",
+ Type: types.StringType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(0, 100),
+ },
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Workspace arn.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "Workspace arn.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "prometheus_endpoint": {
+ // Property: PrometheusEndpoint
+ // CloudFormation resource type schema:
+ // {
+ // "description": "AMP Workspace prometheus endpoint",
+ // "type": "string"
+ // }
+ Description: "AMP Workspace prometheus endpoint",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of key-value pairs to apply to this resource.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "An array of key-value pairs to apply to this resource.",
+ Attributes: tfsdk.SetNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 128),
+ },
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(0, 256),
+ },
+ },
+ },
+ tfsdk.SetNestedAttributesOptions{},
+ ),
+ Optional: true,
+ },
+ "workspace_id": {
+ // Property: WorkspaceId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Required to identify a specific APS Workspace.",
+ // "maxLength": 100,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "Required to identify a specific APS Workspace.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::APS::Workspace",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::APS::Workspace").WithTerraformTypeName("awscc_aps_workspace")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "alias": "Alias",
+ "arn": "Arn",
+ "key": "Key",
+ "prometheus_endpoint": "PrometheusEndpoint",
+ "tags": "Tags",
+ "value": "Value",
+ "workspace_id": "WorkspaceId",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/aps/workspace_resource_gen_test.go b/internal/aws/aps/workspace_resource_gen_test.go
new file mode 100644
index 0000000000..6e11bc4aa7
--- /dev/null
+++ b/internal/aws/aps/workspace_resource_gen_test.go
@@ -0,0 +1,38 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package aps_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSAPSWorkspace_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::APS::Workspace", "awscc_aps_workspace", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ ),
+ },
+ })
+}
+
+func TestAccAWSAPSWorkspace_disappears(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::APS::Workspace", "awscc_aps_workspace", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ td.DeleteResource(),
+ ),
+ ExpectNonEmptyPlan: true,
+ },
+ })
+}
diff --git a/internal/aws/aps/workspace_singular_data_source_gen.go b/internal/aws/aps/workspace_singular_data_source_gen.go
new file mode 100644
index 0000000000..0c68fa8099
--- /dev/null
+++ b/internal/aws/aps/workspace_singular_data_source_gen.go
@@ -0,0 +1,161 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package aps
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_aps_workspace", workspaceDataSourceType)
+}
+
+// workspaceDataSourceType returns the Terraform awscc_aps_workspace data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::APS::Workspace resource type.
+func workspaceDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "alias": {
+ // Property: Alias
+ // CloudFormation resource type schema:
+ // {
+ // "description": "AMP Workspace alias.",
+ // "maxLength": 100,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ Description: "AMP Workspace alias.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Workspace arn.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "Workspace arn.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "prometheus_endpoint": {
+ // Property: PrometheusEndpoint
+ // CloudFormation resource type schema:
+ // {
+ // "description": "AMP Workspace prometheus endpoint",
+ // "type": "string"
+ // }
+ Description: "AMP Workspace prometheus endpoint",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of key-value pairs to apply to this resource.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "An array of key-value pairs to apply to this resource.",
+ Attributes: tfsdk.SetNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.SetNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "workspace_id": {
+ // Property: WorkspaceId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Required to identify a specific APS Workspace.",
+ // "maxLength": 100,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "Required to identify a specific APS Workspace.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::APS::Workspace",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::APS::Workspace").WithTerraformTypeName("awscc_aps_workspace")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "alias": "Alias",
+ "arn": "Arn",
+ "key": "Key",
+ "prometheus_endpoint": "PrometheusEndpoint",
+ "tags": "Tags",
+ "value": "Value",
+ "workspace_id": "WorkspaceId",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/aps/workspace_singular_data_source_gen_test.go b/internal/aws/aps/workspace_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..4c69e7c312
--- /dev/null
+++ b/internal/aws/aps/workspace_singular_data_source_gen_test.go
@@ -0,0 +1,37 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package aps_test
+
+import (
+ "fmt"
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSAPSWorkspaceDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::APS::Workspace", "awscc_aps_workspace", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithEmptyResourceConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"),
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"),
+ ),
+ },
+ })
+}
+
+func TestAccAWSAPSWorkspaceDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::APS::Workspace", "awscc_aps_workspace", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/cloudformation/stack_set_plural_data_source_gen.go b/internal/aws/cloudformation/stack_set_plural_data_source_gen.go
new file mode 100644
index 0000000000..b8f75e2e3f
--- /dev/null
+++ b/internal/aws/cloudformation/stack_set_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package cloudformation
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_cloudformation_stack_sets", stackSetsDataSourceType)
+}
+
+// stackSetsDataSourceType returns the Terraform awscc_cloudformation_stack_sets data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::CloudFormation::StackSet resource type.
+func stackSetsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::CloudFormation::StackSet",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::CloudFormation::StackSet").WithTerraformTypeName("awscc_cloudformation_stack_sets")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/cloudformation/stack_set_plural_data_source_gen_test.go b/internal/aws/cloudformation/stack_set_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..452b8c95e2
--- /dev/null
+++ b/internal/aws/cloudformation/stack_set_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package cloudformation_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSCloudFormationStackSetsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::CloudFormation::StackSet", "awscc_cloudformation_stack_sets", "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/config/aggregation_authorization_plural_data_source_gen.go b/internal/aws/config/aggregation_authorization_plural_data_source_gen.go
new file mode 100644
index 0000000000..957ad54dc1
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package config
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_config_aggregation_authorizations", aggregationAuthorizationsDataSourceType)
+}
+
+// aggregationAuthorizationsDataSourceType returns the Terraform awscc_config_aggregation_authorizations data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::Config::AggregationAuthorization resource type.
+func aggregationAuthorizationsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::Config::AggregationAuthorization",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::Config::AggregationAuthorization").WithTerraformTypeName("awscc_config_aggregation_authorizations")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/config/aggregation_authorization_plural_data_source_gen_test.go b/internal/aws/config/aggregation_authorization_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..08bd0e74d3
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package config_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSConfigAggregationAuthorizationsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::Config::AggregationAuthorization", "awscc_config_aggregation_authorizations", "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/config/aggregation_authorization_resource_gen.go b/internal/aws/config/aggregation_authorization_resource_gen.go
new file mode 100644
index 0000000000..b1f5037011
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_resource_gen.go
@@ -0,0 +1,170 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package config
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_config_aggregation_authorization", aggregationAuthorizationResourceType)
+}
+
+// aggregationAuthorizationResourceType returns the Terraform awscc_config_aggregation_authorization resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::Config::AggregationAuthorization resource type.
+func aggregationAuthorizationResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "aggregation_authorization_arn": {
+ // Property: AggregationAuthorizationArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The ARN of the AggregationAuthorization.",
+ // "type": "string"
+ // }
+ Description: "The ARN of the AggregationAuthorization.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "authorized_account_id": {
+ // Property: AuthorizedAccountId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The 12-digit account ID of the account authorized to aggregate data.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The 12-digit account ID of the account authorized to aggregate data.",
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "authorized_aws_region": {
+ // Property: AuthorizedAwsRegion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The region authorized to collect aggregated data.",
+ // "maxLength": 64,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The region authorized to collect aggregated data.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 64),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The tags for the AggregationAuthorization.",
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 50,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The tags for the AggregationAuthorization.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 128),
+ },
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(0, 256),
+ },
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{
+ MaxItems: 50,
+ },
+ ),
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.UniqueItems(),
+ },
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::Config::AggregationAuthorization",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::Config::AggregationAuthorization").WithTerraformTypeName("awscc_config_aggregation_authorization")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "aggregation_authorization_arn": "AggregationAuthorizationArn",
+ "authorized_account_id": "AuthorizedAccountId",
+ "authorized_aws_region": "AuthorizedAwsRegion",
+ "key": "Key",
+ "tags": "Tags",
+ "value": "Value",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/config/aggregation_authorization_resource_gen_test.go b/internal/aws/config/aggregation_authorization_resource_gen_test.go
new file mode 100644
index 0000000000..ac92b36b24
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package config_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSConfigAggregationAuthorization_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::Config::AggregationAuthorization", "awscc_config_aggregation_authorization", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/config/aggregation_authorization_singular_data_source_gen.go b/internal/aws/config/aggregation_authorization_singular_data_source_gen.go
new file mode 100644
index 0000000000..f3d28ca00b
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_singular_data_source_gen.go
@@ -0,0 +1,144 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package config
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_config_aggregation_authorization", aggregationAuthorizationDataSourceType)
+}
+
+// aggregationAuthorizationDataSourceType returns the Terraform awscc_config_aggregation_authorization data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::Config::AggregationAuthorization resource type.
+func aggregationAuthorizationDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "aggregation_authorization_arn": {
+ // Property: AggregationAuthorizationArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The ARN of the AggregationAuthorization.",
+ // "type": "string"
+ // }
+ Description: "The ARN of the AggregationAuthorization.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "authorized_account_id": {
+ // Property: AuthorizedAccountId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The 12-digit account ID of the account authorized to aggregate data.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The 12-digit account ID of the account authorized to aggregate data.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "authorized_aws_region": {
+ // Property: AuthorizedAwsRegion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The region authorized to collect aggregated data.",
+ // "maxLength": 64,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The region authorized to collect aggregated data.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The tags for the AggregationAuthorization.",
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 50,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The tags for the AggregationAuthorization.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Description: "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::Config::AggregationAuthorization",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::Config::AggregationAuthorization").WithTerraformTypeName("awscc_config_aggregation_authorization")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "aggregation_authorization_arn": "AggregationAuthorizationArn",
+ "authorized_account_id": "AuthorizedAccountId",
+ "authorized_aws_region": "AuthorizedAwsRegion",
+ "key": "Key",
+ "tags": "Tags",
+ "value": "Value",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/config/aggregation_authorization_singular_data_source_gen_test.go b/internal/aws/config/aggregation_authorization_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..4f504121e1
--- /dev/null
+++ b/internal/aws/config/aggregation_authorization_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package config_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSConfigAggregationAuthorizationDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::Config::AggregationAuthorization", "awscc_config_aggregation_authorization", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSConfigAggregationAuthorizationDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::Config::AggregationAuthorization", "awscc_config_aggregation_authorization", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go b/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go
new file mode 100644
index 0000000000..fec58ad32e
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package ec2
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_ec2_transit_gateway_vpc_attachments", transitGatewayVpcAttachmentsDataSourceType)
+}
+
+// transitGatewayVpcAttachmentsDataSourceType returns the Terraform awscc_ec2_transit_gateway_vpc_attachments data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::EC2::TransitGatewayVpcAttachment resource type.
+func transitGatewayVpcAttachmentsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::EC2::TransitGatewayVpcAttachment",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::EC2::TransitGatewayVpcAttachment").WithTerraformTypeName("awscc_ec2_transit_gateway_vpc_attachments")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go b/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..ed6ab6f56c
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package ec2_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSEC2TransitGatewayVpcAttachmentsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EC2::TransitGatewayVpcAttachment", "awscc_ec2_transit_gateway_vpc_attachments", "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/ec2/transit_gateway_vpc_attachment_resource_gen.go b/internal/aws/ec2/transit_gateway_vpc_attachment_resource_gen.go
new file mode 100644
index 0000000000..9a8f61f0a3
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_resource_gen.go
@@ -0,0 +1,241 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package ec2
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddResourceTypeFactory("awscc_ec2_transit_gateway_vpc_attachment", transitGatewayVpcAttachmentResourceType)
+}
+
+// transitGatewayVpcAttachmentResourceType returns the Terraform awscc_ec2_transit_gateway_vpc_attachment resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::EC2::TransitGatewayVpcAttachment resource type.
+func transitGatewayVpcAttachmentResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "add_subnet_ids": {
+ // Property: AddSubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "options": {
+ // Property: Options
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The options for the transit gateway vpc attachment.",
+ // "properties": {
+ // "ApplianceModeSupport": {
+ // "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // },
+ // "DnsSupport": {
+ // "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // },
+ // "Ipv6Support": {
+ // "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "The options for the transit gateway vpc attachment.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "appliance_mode_support": {
+ // Property: ApplianceModeSupport
+ Description: "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "dns_support": {
+ // Property: DnsSupport
+ Description: "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "ipv_6_support": {
+ // Property: Ipv6Support
+ Description: "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Optional: true,
+ },
+ },
+ ),
+ Optional: true,
+ },
+ "remove_subnet_ids": {
+ // Property: RemoveSubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ "subnet_ids": {
+ // Property: SubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Key": {
+ // "type": "string"
+ // },
+ // "Value": {
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Type: types.StringType,
+ Required: true,
+ },
+ "value": {
+ // Property: Value
+ Type: types.StringType,
+ Required: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ "transit_gateway_id": {
+ // Property: TransitGatewayId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "vpc_id": {
+ // Property: VpcId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::EC2::TransitGatewayVpcAttachment").WithTerraformTypeName("awscc_ec2_transit_gateway_vpc_attachment")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(false)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "add_subnet_ids": "AddSubnetIds",
+ "appliance_mode_support": "ApplianceModeSupport",
+ "dns_support": "DnsSupport",
+ "id": "Id",
+ "ipv_6_support": "Ipv6Support",
+ "key": "Key",
+ "options": "Options",
+ "remove_subnet_ids": "RemoveSubnetIds",
+ "subnet_ids": "SubnetIds",
+ "tags": "Tags",
+ "transit_gateway_id": "TransitGatewayId",
+ "value": "Value",
+ "vpc_id": "VpcId",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go b/internal/aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go
new file mode 100644
index 0000000000..aefc2af900
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go
@@ -0,0 +1,38 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package ec2_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSEC2TransitGatewayVpcAttachment_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EC2::TransitGatewayVpcAttachment", "awscc_ec2_transit_gateway_vpc_attachment", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ ),
+ },
+ })
+}
+
+func TestAccAWSEC2TransitGatewayVpcAttachment_disappears(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EC2::TransitGatewayVpcAttachment", "awscc_ec2_transit_gateway_vpc_attachment", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ td.DeleteResource(),
+ ),
+ ExpectNonEmptyPlan: true,
+ },
+ })
+}
diff --git a/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go b/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go
new file mode 100644
index 0000000000..ba4a405494
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go
@@ -0,0 +1,220 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package ec2
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_ec2_transit_gateway_vpc_attachment", transitGatewayVpcAttachmentDataSourceType)
+}
+
+// transitGatewayVpcAttachmentDataSourceType returns the Terraform awscc_ec2_transit_gateway_vpc_attachment data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::EC2::TransitGatewayVpcAttachment resource type.
+func transitGatewayVpcAttachmentDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "add_subnet_ids": {
+ // Property: AddSubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "options": {
+ // Property: Options
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The options for the transit gateway vpc attachment.",
+ // "properties": {
+ // "ApplianceModeSupport": {
+ // "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // },
+ // "DnsSupport": {
+ // "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // },
+ // "Ipv6Support": {
+ // "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "The options for the transit gateway vpc attachment.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "appliance_mode_support": {
+ // Property: ApplianceModeSupport
+ Description: "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "dns_support": {
+ // Property: DnsSupport
+ Description: "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ipv_6_support": {
+ // Property: Ipv6Support
+ Description: "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "remove_subnet_ids": {
+ // Property: RemoveSubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "subnet_ids": {
+ // Property: SubnetIds
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Type: types.ListType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Key": {
+ // "type": "string"
+ // },
+ // "Value": {
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array",
+ // "uniqueItems": false
+ // }
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "transit_gateway_id": {
+ // Property: TransitGatewayId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "vpc_id": {
+ // Property: VpcId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::EC2::TransitGatewayVpcAttachment",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::EC2::TransitGatewayVpcAttachment").WithTerraformTypeName("awscc_ec2_transit_gateway_vpc_attachment")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "add_subnet_ids": "AddSubnetIds",
+ "appliance_mode_support": "ApplianceModeSupport",
+ "dns_support": "DnsSupport",
+ "id": "Id",
+ "ipv_6_support": "Ipv6Support",
+ "key": "Key",
+ "options": "Options",
+ "remove_subnet_ids": "RemoveSubnetIds",
+ "subnet_ids": "SubnetIds",
+ "tags": "Tags",
+ "transit_gateway_id": "TransitGatewayId",
+ "value": "Value",
+ "vpc_id": "VpcId",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go b/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..db2ddcdfbf
--- /dev/null
+++ b/internal/aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go
@@ -0,0 +1,37 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package ec2_test
+
+import (
+ "fmt"
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSEC2TransitGatewayVpcAttachmentDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EC2::TransitGatewayVpcAttachment", "awscc_ec2_transit_gateway_vpc_attachment", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithEmptyResourceConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"),
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"),
+ ),
+ },
+ })
+}
+
+func TestAccAWSEC2TransitGatewayVpcAttachmentDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EC2::TransitGatewayVpcAttachment", "awscc_ec2_transit_gateway_vpc_attachment", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/efs/mount_target_resource_gen.go b/internal/aws/efs/mount_target_resource_gen.go
new file mode 100644
index 0000000000..419039f921
--- /dev/null
+++ b/internal/aws/efs/mount_target_resource_gen.go
@@ -0,0 +1,114 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package efs
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddResourceTypeFactory("awscc_efs_mount_target", mountTargetResourceType)
+}
+
+// mountTargetResourceType returns the Terraform awscc_efs_mount_target resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::EFS::MountTarget resource type.
+func mountTargetResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "file_system_id": {
+ // Property: FileSystemId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ip_address": {
+ // Property: IpAddress
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "security_groups": {
+ // Property: SecurityGroups
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Type: types.SetType{ElemType: types.StringType},
+ Required: true,
+ },
+ "subnet_id": {
+ // Property: SubnetId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Resource Type definition for AWS::EFS::MountTarget",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::EFS::MountTarget").WithTerraformTypeName("awscc_efs_mount_target")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(false)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "file_system_id": "FileSystemId",
+ "id": "Id",
+ "ip_address": "IpAddress",
+ "security_groups": "SecurityGroups",
+ "subnet_id": "SubnetId",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/efs/mount_target_resource_gen_test.go b/internal/aws/efs/mount_target_resource_gen_test.go
new file mode 100644
index 0000000000..634d7f8405
--- /dev/null
+++ b/internal/aws/efs/mount_target_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package efs_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSEFSMountTarget_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EFS::MountTarget", "awscc_efs_mount_target", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/efs/mount_target_singular_data_source_gen.go b/internal/aws/efs/mount_target_singular_data_source_gen.go
new file mode 100644
index 0000000000..ffc5bce175
--- /dev/null
+++ b/internal/aws/efs/mount_target_singular_data_source_gen.go
@@ -0,0 +1,105 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package efs
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_efs_mount_target", mountTargetDataSourceType)
+}
+
+// mountTargetDataSourceType returns the Terraform awscc_efs_mount_target data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::EFS::MountTarget resource type.
+func mountTargetDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "file_system_id": {
+ // Property: FileSystemId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "id": {
+ // Property: Id
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ip_address": {
+ // Property: IpAddress
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "security_groups": {
+ // Property: SecurityGroups
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "subnet_id": {
+ // Property: SubnetId
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::EFS::MountTarget",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::EFS::MountTarget").WithTerraformTypeName("awscc_efs_mount_target")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "file_system_id": "FileSystemId",
+ "id": "Id",
+ "ip_address": "IpAddress",
+ "security_groups": "SecurityGroups",
+ "subnet_id": "SubnetId",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/efs/mount_target_singular_data_source_gen_test.go b/internal/aws/efs/mount_target_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..dd07fdbb55
--- /dev/null
+++ b/internal/aws/efs/mount_target_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package efs_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSEFSMountTargetDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EFS::MountTarget", "awscc_efs_mount_target", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSEFSMountTargetDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::EFS::MountTarget", "awscc_efs_mount_target", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/healthlake/fhir_datastore_plural_data_source_gen.go b/internal/aws/healthlake/fhir_datastore_plural_data_source_gen.go
new file mode 100644
index 0000000000..00b51d38f3
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package healthlake
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_healthlake_fhir_datastores", fHIRDatastoresDataSourceType)
+}
+
+// fHIRDatastoresDataSourceType returns the Terraform awscc_healthlake_fhir_datastores data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::HealthLake::FHIRDatastore resource type.
+func fHIRDatastoresDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::HealthLake::FHIRDatastore",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::HealthLake::FHIRDatastore").WithTerraformTypeName("awscc_healthlake_fhir_datastores")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/healthlake/fhir_datastore_plural_data_source_gen_test.go b/internal/aws/healthlake/fhir_datastore_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..e56e41c67b
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package healthlake_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSHealthLakeFHIRDatastoresDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::HealthLake::FHIRDatastore", "awscc_healthlake_fhir_datastores", "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/healthlake/fhir_datastore_resource_gen.go b/internal/aws/healthlake/fhir_datastore_resource_gen.go
new file mode 100644
index 0000000000..c297234407
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_resource_gen.go
@@ -0,0 +1,390 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package healthlake
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_healthlake_fhir_datastore", fHIRDatastoreResourceType)
+}
+
+// fHIRDatastoreResourceType returns the Terraform awscc_healthlake_fhir_datastore resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::HealthLake::FHIRDatastore resource type.
+func fHIRDatastoreResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "created_at": {
+ // Property: CreatedAt
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The time that a Data Store was created.",
+ // "properties": {
+ // "Nanos": {
+ // "description": "Nanoseconds.",
+ // "type": "integer"
+ // },
+ // "Seconds": {
+ // "description": "Seconds since epoch.",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Seconds",
+ // "Nanos"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The time that a Data Store was created.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "nanos": {
+ // Property: Nanos
+ Description: "Nanoseconds.",
+ Type: types.NumberType,
+ Required: true,
+ },
+ "seconds": {
+ // Property: Seconds
+ Description: "Seconds since epoch.",
+ Type: types.StringType,
+ Required: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "datastore_arn": {
+ // Property: DatastoreArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name used in the creation of the Data Store.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name used in the creation of the Data Store.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_endpoint": {
+ // Property: DatastoreEndpoint
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.",
+ // "maxLength": 10000,
+ // "type": "string"
+ // }
+ Description: "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_id": {
+ // Property: DatastoreId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS-generated ID number for the Data Store.",
+ // "maxLength": 32,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The AWS-generated ID number for the Data Store.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_name": {
+ // Property: DatastoreName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The user-generated name for the Data Store.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The user-generated name for the Data Store.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 256),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "datastore_status": {
+ // Property: DatastoreStatus
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.",
+ // "enum": [
+ // "CREATING",
+ // "ACTIVE",
+ // "DELETING",
+ // "DELETED"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_type_version": {
+ // Property: DatastoreTypeVersion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The FHIR version. Only R4 version data is supported.",
+ // "enum": [
+ // "R4"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The FHIR version. Only R4 version data is supported.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "R4",
+ }),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "preload_data_config": {
+ // Property: PreloadDataConfig
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.",
+ // "properties": {
+ // "PreloadDataType": {
+ // "description": "The type of preloaded data. Only Synthea preloaded data is supported.",
+ // "enum": [
+ // "SYNTHEA"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "PreloadDataType"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "preload_data_type": {
+ // Property: PreloadDataType
+ Description: "The type of preloaded data. Only Synthea preloaded data is supported.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "SYNTHEA",
+ }),
+ },
+ },
+ },
+ ),
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "sse_configuration": {
+ // Property: SseConfiguration
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The server-side encryption key configuration for a customer provided encryption key.",
+ // "properties": {
+ // "KmsEncryptionConfig": {
+ // "additionalProperties": false,
+ // "description": "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.",
+ // "properties": {
+ // "CmkType": {
+ // "description": "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.",
+ // "enum": [
+ // "CUSTOMER_MANAGED_KMS_KEY",
+ // "AWS_OWNED_KMS_KEY"
+ // ],
+ // "type": "string"
+ // },
+ // "KmsKeyId": {
+ // "description": "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.",
+ // "maxLength": 400,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "CmkType"
+ // ],
+ // "type": "object"
+ // }
+ // },
+ // "required": [
+ // "KmsEncryptionConfig"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The server-side encryption key configuration for a customer provided encryption key.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "kms_encryption_config": {
+ // Property: KmsEncryptionConfig
+ Description: "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "cmk_type": {
+ // Property: CmkType
+ Description: "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "CUSTOMER_MANAGED_KMS_KEY",
+ "AWS_OWNED_KMS_KEY",
+ }),
+ },
+ },
+ "kms_key_id": {
+ // Property: KmsKeyId
+ Description: "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.",
+ Type: types.StringType,
+ Optional: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 400),
+ },
+ },
+ },
+ ),
+ Required: true,
+ },
+ },
+ ),
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key of the tag.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value of the tag.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array"
+ // }
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key of the tag.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 128),
+ },
+ },
+ "value": {
+ // Property: Value
+ Description: "The value of the tag.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(0, 256),
+ },
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "HealthLake FHIR Datastore",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::HealthLake::FHIRDatastore").WithTerraformTypeName("awscc_healthlake_fhir_datastore")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "cmk_type": "CmkType",
+ "created_at": "CreatedAt",
+ "datastore_arn": "DatastoreArn",
+ "datastore_endpoint": "DatastoreEndpoint",
+ "datastore_id": "DatastoreId",
+ "datastore_name": "DatastoreName",
+ "datastore_status": "DatastoreStatus",
+ "datastore_type_version": "DatastoreTypeVersion",
+ "key": "Key",
+ "kms_encryption_config": "KmsEncryptionConfig",
+ "kms_key_id": "KmsKeyId",
+ "nanos": "Nanos",
+ "preload_data_config": "PreloadDataConfig",
+ "preload_data_type": "PreloadDataType",
+ "seconds": "Seconds",
+ "sse_configuration": "SseConfiguration",
+ "tags": "Tags",
+ "value": "Value",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/healthlake/fhir_datastore_resource_gen_test.go b/internal/aws/healthlake/fhir_datastore_resource_gen_test.go
new file mode 100644
index 0000000000..1bbe02ef0a
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package healthlake_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSHealthLakeFHIRDatastore_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::HealthLake::FHIRDatastore", "awscc_healthlake_fhir_datastore", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/healthlake/fhir_datastore_singular_data_source_gen.go b/internal/aws/healthlake/fhir_datastore_singular_data_source_gen.go
new file mode 100644
index 0000000000..b20b842832
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_singular_data_source_gen.go
@@ -0,0 +1,338 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package healthlake
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_healthlake_fhir_datastore", fHIRDatastoreDataSourceType)
+}
+
+// fHIRDatastoreDataSourceType returns the Terraform awscc_healthlake_fhir_datastore data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::HealthLake::FHIRDatastore resource type.
+func fHIRDatastoreDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "created_at": {
+ // Property: CreatedAt
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The time that a Data Store was created.",
+ // "properties": {
+ // "Nanos": {
+ // "description": "Nanoseconds.",
+ // "type": "integer"
+ // },
+ // "Seconds": {
+ // "description": "Seconds since epoch.",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Seconds",
+ // "Nanos"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The time that a Data Store was created.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "nanos": {
+ // Property: Nanos
+ Description: "Nanoseconds.",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "seconds": {
+ // Property: Seconds
+ Description: "Seconds since epoch.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "datastore_arn": {
+ // Property: DatastoreArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name used in the creation of the Data Store.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name used in the creation of the Data Store.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_endpoint": {
+ // Property: DatastoreEndpoint
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.",
+ // "maxLength": 10000,
+ // "type": "string"
+ // }
+ Description: "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_id": {
+ // Property: DatastoreId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The AWS-generated ID number for the Data Store.",
+ // "maxLength": 32,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The AWS-generated ID number for the Data Store.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_name": {
+ // Property: DatastoreName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The user-generated name for the Data Store.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The user-generated name for the Data Store.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_status": {
+ // Property: DatastoreStatus
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.",
+ // "enum": [
+ // "CREATING",
+ // "ACTIVE",
+ // "DELETING",
+ // "DELETED"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "datastore_type_version": {
+ // Property: DatastoreTypeVersion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The FHIR version. Only R4 version data is supported.",
+ // "enum": [
+ // "R4"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The FHIR version. Only R4 version data is supported.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "preload_data_config": {
+ // Property: PreloadDataConfig
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.",
+ // "properties": {
+ // "PreloadDataType": {
+ // "description": "The type of preloaded data. Only Synthea preloaded data is supported.",
+ // "enum": [
+ // "SYNTHEA"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "PreloadDataType"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "preload_data_type": {
+ // Property: PreloadDataType
+ Description: "The type of preloaded data. Only Synthea preloaded data is supported.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "sse_configuration": {
+ // Property: SseConfiguration
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The server-side encryption key configuration for a customer provided encryption key.",
+ // "properties": {
+ // "KmsEncryptionConfig": {
+ // "additionalProperties": false,
+ // "description": "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.",
+ // "properties": {
+ // "CmkType": {
+ // "description": "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.",
+ // "enum": [
+ // "CUSTOMER_MANAGED_KMS_KEY",
+ // "AWS_OWNED_KMS_KEY"
+ // ],
+ // "type": "string"
+ // },
+ // "KmsKeyId": {
+ // "description": "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.",
+ // "maxLength": 400,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "CmkType"
+ // ],
+ // "type": "object"
+ // }
+ // },
+ // "required": [
+ // "KmsEncryptionConfig"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The server-side encryption key configuration for a customer provided encryption key.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "kms_encryption_config": {
+ // Property: KmsEncryptionConfig
+ Description: "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "cmk_type": {
+ // Property: CmkType
+ Description: "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "kms_key_id": {
+ // Property: KmsKeyId
+ Description: "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.",
+ // "properties": {
+ // "Key": {
+ // "description": "The key of the tag.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The value of the tag.",
+ // "maxLength": 256,
+ // "minLength": 0,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Key",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array"
+ // }
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The key of the tag.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Description: "The value of the tag.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::HealthLake::FHIRDatastore",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::HealthLake::FHIRDatastore").WithTerraformTypeName("awscc_healthlake_fhir_datastore")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "cmk_type": "CmkType",
+ "created_at": "CreatedAt",
+ "datastore_arn": "DatastoreArn",
+ "datastore_endpoint": "DatastoreEndpoint",
+ "datastore_id": "DatastoreId",
+ "datastore_name": "DatastoreName",
+ "datastore_status": "DatastoreStatus",
+ "datastore_type_version": "DatastoreTypeVersion",
+ "key": "Key",
+ "kms_encryption_config": "KmsEncryptionConfig",
+ "kms_key_id": "KmsKeyId",
+ "nanos": "Nanos",
+ "preload_data_config": "PreloadDataConfig",
+ "preload_data_type": "PreloadDataType",
+ "seconds": "Seconds",
+ "sse_configuration": "SseConfiguration",
+ "tags": "Tags",
+ "value": "Value",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/healthlake/fhir_datastore_singular_data_source_gen_test.go b/internal/aws/healthlake/fhir_datastore_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..1ac205f9f2
--- /dev/null
+++ b/internal/aws/healthlake/fhir_datastore_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package healthlake_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSHealthLakeFHIRDatastoreDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::HealthLake::FHIRDatastore", "awscc_healthlake_fhir_datastore", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSHealthLakeFHIRDatastoreDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::HealthLake::FHIRDatastore", "awscc_healthlake_fhir_datastore", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/opsworkscm/server_plural_data_source_gen.go b/internal/aws/iot/fleet_metric_plural_data_source_gen.go
similarity index 67%
rename from internal/aws/opsworkscm/server_plural_data_source_gen.go
rename to internal/aws/iot/fleet_metric_plural_data_source_gen.go
index 59fb55af41..2dd02ba8ee 100644
--- a/internal/aws/opsworkscm/server_plural_data_source_gen.go
+++ b/internal/aws/iot/fleet_metric_plural_data_source_gen.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package opsworkscm
+package iot
import (
"context"
@@ -12,12 +12,12 @@ import (
)
func init() {
- registry.AddDataSourceTypeFactory("awscc_opsworkscm_servers", serversDataSourceType)
+ registry.AddDataSourceTypeFactory("awscc_iot_fleet_metrics", fleetMetricsDataSourceType)
}
-// serversDataSourceType returns the Terraform awscc_opsworkscm_servers data source type.
-// This Terraform data source type corresponds to the CloudFormation AWS::OpsWorksCM::Server resource type.
-func serversDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+// fleetMetricsDataSourceType returns the Terraform awscc_iot_fleet_metrics data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::IoT::FleetMetric resource type.
+func fleetMetricsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
attributes := map[string]tfsdk.Attribute{
"id": {
Description: "Uniquely identifies the data source.",
@@ -32,14 +32,14 @@ func serversDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
}
schema := tfsdk.Schema{
- Description: "Plural Data Source schema for AWS::OpsWorksCM::Server",
+ Description: "Plural Data Source schema for AWS::IoT::FleetMetric",
Version: 1,
Attributes: attributes,
}
var opts DataSourceTypeOptions
- opts = opts.WithCloudFormationTypeName("AWS::OpsWorksCM::Server").WithTerraformTypeName("awscc_opsworkscm_servers")
+ opts = opts.WithCloudFormationTypeName("AWS::IoT::FleetMetric").WithTerraformTypeName("awscc_iot_fleet_metrics")
opts = opts.WithTerraformSchema(schema)
pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
diff --git a/internal/aws/opsworkscm/server_plural_data_source_gen_test.go b/internal/aws/iot/fleet_metric_plural_data_source_gen_test.go
similarity index 72%
rename from internal/aws/opsworkscm/server_plural_data_source_gen_test.go
rename to internal/aws/iot/fleet_metric_plural_data_source_gen_test.go
index a009916ad0..9306b60e39 100644
--- a/internal/aws/opsworkscm/server_plural_data_source_gen_test.go
+++ b/internal/aws/iot/fleet_metric_plural_data_source_gen_test.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package opsworkscm_test
+package iot_test
import (
"fmt"
@@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-provider-awscc/internal/acctest"
)
-func TestAccAWSOpsWorksCMServersDataSource_basic(t *testing.T) {
- td := acctest.NewTestData(t, "AWS::OpsWorksCM::Server", "awscc_opsworkscm_servers", "test")
+func TestAccAWSIoTFleetMetricsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::IoT::FleetMetric", "awscc_iot_fleet_metrics", "test")
td.DataSourceTest(t, []resource.TestStep{
{
diff --git a/internal/aws/iot/fleet_metric_resource_gen.go b/internal/aws/iot/fleet_metric_resource_gen.go
new file mode 100644
index 0000000000..e4967138f8
--- /dev/null
+++ b/internal/aws/iot/fleet_metric_resource_gen.go
@@ -0,0 +1,318 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package iot
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_iot_fleet_metric", fleetMetricResourceType)
+}
+
+// fleetMetricResourceType returns the Terraform awscc_iot_fleet_metric resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::IoT::FleetMetric resource type.
+func fleetMetricResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "aggregation_field": {
+ // Property: AggregationField
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The aggregation field to perform aggregation and metric emission",
+ // "type": "string"
+ // }
+ Description: "The aggregation field to perform aggregation and metric emission",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "aggregation_type": {
+ // Property: AggregationType
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Aggregation types supported by Fleet Indexing",
+ // "properties": {
+ // "Name": {
+ // "description": "Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality",
+ // "type": "string"
+ // },
+ // "Values": {
+ // "description": "Fleet Indexing aggregation type values",
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Values"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Aggregation types supported by Fleet Indexing",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality",
+ Type: types.StringType,
+ Required: true,
+ },
+ "values": {
+ // Property: Values
+ Description: "Fleet Indexing aggregation type values",
+ Type: types.ListType{ElemType: types.StringType},
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ },
+ ),
+ Optional: true,
+ },
+ "creation_date": {
+ // Property: CreationDate
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The creation date of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The creation date of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "description": {
+ // Property: Description
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The description of a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The description of a fleet metric",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "index_name": {
+ // Property: IndexName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The index name of a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The index name of a fleet metric",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "last_modified_date": {
+ // Property: LastModifiedDate
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The last modified date of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The last modified date of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "metric_arn": {
+ // Property: MetricArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Number (ARN) of a fleet metric metric",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Number (ARN) of a fleet metric metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "metric_name": {
+ // Property: MetricName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the fleet metric",
+ // "type": "string"
+ // }
+ Description: "The name of the fleet metric",
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "period": {
+ // Property: Period
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The period of metric emission in seconds",
+ // "type": "integer"
+ // }
+ Description: "The period of metric emission in seconds",
+ Type: types.NumberType,
+ Optional: true,
+ },
+ "query_string": {
+ // Property: QueryString
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Fleet Indexing query used by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The Fleet Indexing query used by a fleet metric",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "query_version": {
+ // Property: QueryVersion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The version of a Fleet Indexing query used by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The version of a Fleet Indexing query used by a fleet metric",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of key-value pairs to apply to this resource",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource",
+ // "properties": {
+ // "Key": {
+ // "description": "The tag's key",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The tag's value",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 50,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "An array of key-value pairs to apply to this resource",
+ Attributes: tfsdk.SetNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The tag's key",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 128),
+ },
+ },
+ "value": {
+ // Property: Value
+ Description: "The tag's value",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 256),
+ },
+ },
+ },
+ tfsdk.SetNestedAttributesOptions{
+ MaxItems: 50,
+ },
+ ),
+ Optional: true,
+ },
+ "unit": {
+ // Property: Unit
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The unit of data points emitted by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The unit of data points emitted by a fleet metric",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "version": {
+ // Property: Version
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The version of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The version of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "An aggregated metric of certain devices in your fleet",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::IoT::FleetMetric").WithTerraformTypeName("awscc_iot_fleet_metric")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "aggregation_field": "AggregationField",
+ "aggregation_type": "AggregationType",
+ "creation_date": "CreationDate",
+ "description": "Description",
+ "index_name": "IndexName",
+ "key": "Key",
+ "last_modified_date": "LastModifiedDate",
+ "metric_arn": "MetricArn",
+ "metric_name": "MetricName",
+ "name": "Name",
+ "period": "Period",
+ "query_string": "QueryString",
+ "query_version": "QueryVersion",
+ "tags": "Tags",
+ "unit": "Unit",
+ "value": "Value",
+ "values": "Values",
+ "version": "Version",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/iot/fleet_metric_resource_gen_test.go b/internal/aws/iot/fleet_metric_resource_gen_test.go
new file mode 100644
index 0000000000..ef0a73d598
--- /dev/null
+++ b/internal/aws/iot/fleet_metric_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package iot_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSIoTFleetMetric_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::IoT::FleetMetric", "awscc_iot_fleet_metric", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/iot/fleet_metric_singular_data_source_gen.go b/internal/aws/iot/fleet_metric_singular_data_source_gen.go
new file mode 100644
index 0000000000..b93dba90fb
--- /dev/null
+++ b/internal/aws/iot/fleet_metric_singular_data_source_gen.go
@@ -0,0 +1,298 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package iot
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_iot_fleet_metric", fleetMetricDataSourceType)
+}
+
+// fleetMetricDataSourceType returns the Terraform awscc_iot_fleet_metric data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::IoT::FleetMetric resource type.
+func fleetMetricDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "aggregation_field": {
+ // Property: AggregationField
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The aggregation field to perform aggregation and metric emission",
+ // "type": "string"
+ // }
+ Description: "The aggregation field to perform aggregation and metric emission",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "aggregation_type": {
+ // Property: AggregationType
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Aggregation types supported by Fleet Indexing",
+ // "properties": {
+ // "Name": {
+ // "description": "Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality",
+ // "type": "string"
+ // },
+ // "Values": {
+ // "description": "Fleet Indexing aggregation type values",
+ // "insertionOrder": false,
+ // "items": {
+ // "type": "string"
+ // },
+ // "type": "array"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Values"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Aggregation types supported by Fleet Indexing",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "values": {
+ // Property: Values
+ Description: "Fleet Indexing aggregation type values",
+ Type: types.ListType{ElemType: types.StringType},
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "creation_date": {
+ // Property: CreationDate
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The creation date of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The creation date of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "description": {
+ // Property: Description
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The description of a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The description of a fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "index_name": {
+ // Property: IndexName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The index name of a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The index name of a fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "last_modified_date": {
+ // Property: LastModifiedDate
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The last modified date of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The last modified date of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "metric_arn": {
+ // Property: MetricArn
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Number (ARN) of a fleet metric metric",
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Number (ARN) of a fleet metric metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "metric_name": {
+ // Property: MetricName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the fleet metric",
+ // "type": "string"
+ // }
+ Description: "The name of the fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "period": {
+ // Property: Period
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The period of metric emission in seconds",
+ // "type": "integer"
+ // }
+ Description: "The period of metric emission in seconds",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ "query_string": {
+ // Property: QueryString
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Fleet Indexing query used by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The Fleet Indexing query used by a fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "query_version": {
+ // Property: QueryVersion
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The version of a Fleet Indexing query used by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The version of a Fleet Indexing query used by a fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "description": "An array of key-value pairs to apply to this resource",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource",
+ // "properties": {
+ // "Key": {
+ // "description": "The tag's key",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The tag's value",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Value",
+ // "Key"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 50,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "An array of key-value pairs to apply to this resource",
+ Attributes: tfsdk.SetNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "key": {
+ // Property: Key
+ Description: "The tag's key",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "value": {
+ // Property: Value
+ Description: "The tag's value",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.SetNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "unit": {
+ // Property: Unit
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The unit of data points emitted by a fleet metric",
+ // "type": "string"
+ // }
+ Description: "The unit of data points emitted by a fleet metric",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "version": {
+ // Property: Version
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The version of a fleet metric",
+ // "type": "number"
+ // }
+ Description: "The version of a fleet metric",
+ Type: types.NumberType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::IoT::FleetMetric",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::IoT::FleetMetric").WithTerraformTypeName("awscc_iot_fleet_metric")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "aggregation_field": "AggregationField",
+ "aggregation_type": "AggregationType",
+ "creation_date": "CreationDate",
+ "description": "Description",
+ "index_name": "IndexName",
+ "key": "Key",
+ "last_modified_date": "LastModifiedDate",
+ "metric_arn": "MetricArn",
+ "metric_name": "MetricName",
+ "name": "Name",
+ "period": "Period",
+ "query_string": "QueryString",
+ "query_version": "QueryVersion",
+ "tags": "Tags",
+ "unit": "Unit",
+ "value": "Value",
+ "values": "Values",
+ "version": "Version",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/iot/fleet_metric_singular_data_source_gen_test.go b/internal/aws/iot/fleet_metric_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..18817efea2
--- /dev/null
+++ b/internal/aws/iot/fleet_metric_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package iot_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSIoTFleetMetricDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::IoT::FleetMetric", "awscc_iot_fleet_metric", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSIoTFleetMetricDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::IoT::FleetMetric", "awscc_iot_fleet_metric", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/synthetics/canary_plural_data_source_gen.go b/internal/aws/robomaker/fleet_plural_data_source_gen.go
similarity index 66%
rename from internal/aws/synthetics/canary_plural_data_source_gen.go
rename to internal/aws/robomaker/fleet_plural_data_source_gen.go
index 9c4da1dff4..8caf763165 100644
--- a/internal/aws/synthetics/canary_plural_data_source_gen.go
+++ b/internal/aws/robomaker/fleet_plural_data_source_gen.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package synthetics
+package robomaker
import (
"context"
@@ -12,12 +12,12 @@ import (
)
func init() {
- registry.AddDataSourceTypeFactory("awscc_synthetics_canaries", canariesDataSourceType)
+ registry.AddDataSourceTypeFactory("awscc_robomaker_fleets", fleetsDataSourceType)
}
-// canariesDataSourceType returns the Terraform awscc_synthetics_canaries data source type.
-// This Terraform data source type corresponds to the CloudFormation AWS::Synthetics::Canary resource type.
-func canariesDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+// fleetsDataSourceType returns the Terraform awscc_robomaker_fleets data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::Fleet resource type.
+func fleetsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
attributes := map[string]tfsdk.Attribute{
"id": {
Description: "Uniquely identifies the data source.",
@@ -32,14 +32,14 @@ func canariesDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
}
schema := tfsdk.Schema{
- Description: "Plural Data Source schema for AWS::Synthetics::Canary",
+ Description: "Plural Data Source schema for AWS::RoboMaker::Fleet",
Version: 1,
Attributes: attributes,
}
var opts DataSourceTypeOptions
- opts = opts.WithCloudFormationTypeName("AWS::Synthetics::Canary").WithTerraformTypeName("awscc_synthetics_canaries")
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Fleet").WithTerraformTypeName("awscc_robomaker_fleets")
opts = opts.WithTerraformSchema(schema)
pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
diff --git a/internal/aws/synthetics/canary_plural_data_source_gen_test.go b/internal/aws/robomaker/fleet_plural_data_source_gen_test.go
similarity index 71%
rename from internal/aws/synthetics/canary_plural_data_source_gen_test.go
rename to internal/aws/robomaker/fleet_plural_data_source_gen_test.go
index bd51b74d1c..4fed4b5941 100644
--- a/internal/aws/synthetics/canary_plural_data_source_gen_test.go
+++ b/internal/aws/robomaker/fleet_plural_data_source_gen_test.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package synthetics_test
+package robomaker_test
import (
"fmt"
@@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-provider-awscc/internal/acctest"
)
-func TestAccAWSSyntheticsCanariesDataSource_basic(t *testing.T) {
- td := acctest.NewTestData(t, "AWS::Synthetics::Canary", "awscc_synthetics_canaries", "test")
+func TestAccAWSRoboMakerFleetsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Fleet", "awscc_robomaker_fleets", "test")
td.DataSourceTest(t, []resource.TestStep{
{
diff --git a/internal/aws/robomaker/fleet_resource_gen.go b/internal/aws/robomaker/fleet_resource_gen.go
new file mode 100644
index 0000000000..87b8e70a26
--- /dev/null
+++ b/internal/aws/robomaker/fleet_resource_gen.go
@@ -0,0 +1,111 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_robomaker_fleet", fleetResourceType)
+}
+
+// fleetResourceType returns the Terraform awscc_robomaker_fleet resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::RoboMaker::Fleet resource type.
+func fleetResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the fleet.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the fleet.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 255),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Optional: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Fleet").WithTerraformTypeName("awscc_robomaker_fleet")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "arn": "Arn",
+ "name": "Name",
+ "tags": "Tags",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/robomaker/fleet_resource_gen_test.go b/internal/aws/robomaker/fleet_resource_gen_test.go
new file mode 100644
index 0000000000..a83dc43c3e
--- /dev/null
+++ b/internal/aws/robomaker/fleet_resource_gen_test.go
@@ -0,0 +1,38 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerFleet_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Fleet", "awscc_robomaker_fleet", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ ),
+ },
+ })
+}
+
+func TestAccAWSRoboMakerFleet_disappears(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Fleet", "awscc_robomaker_fleet", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ td.CheckExistsInAWS(),
+ td.DeleteResource(),
+ ),
+ ExpectNonEmptyPlan: true,
+ },
+ })
+}
diff --git a/internal/aws/robomaker/fleet_singular_data_source_gen.go b/internal/aws/robomaker/fleet_singular_data_source_gen.go
new file mode 100644
index 0000000000..774b0a13f1
--- /dev/null
+++ b/internal/aws/robomaker/fleet_singular_data_source_gen.go
@@ -0,0 +1,98 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_robomaker_fleet", fleetDataSourceType)
+}
+
+// fleetDataSourceType returns the Terraform awscc_robomaker_fleet data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::Fleet resource type.
+func fleetDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the fleet.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the fleet.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::RoboMaker::Fleet",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Fleet").WithTerraformTypeName("awscc_robomaker_fleet")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "arn": "Arn",
+ "name": "Name",
+ "tags": "Tags",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/robomaker/fleet_singular_data_source_gen_test.go b/internal/aws/robomaker/fleet_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..01a9143d9e
--- /dev/null
+++ b/internal/aws/robomaker/fleet_singular_data_source_gen_test.go
@@ -0,0 +1,37 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "fmt"
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerFleetDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Fleet", "awscc_robomaker_fleet", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithEmptyResourceConfig(),
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"),
+ resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"),
+ ),
+ },
+ })
+}
+
+func TestAccAWSRoboMakerFleetDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Fleet", "awscc_robomaker_fleet", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/robomaker/robot_application_version_resource_gen.go b/internal/aws/robomaker/robot_application_version_resource_gen.go
new file mode 100644
index 0000000000..375bdfb7fc
--- /dev/null
+++ b/internal/aws/robomaker/robot_application_version_resource_gen.go
@@ -0,0 +1,113 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_robomaker_robot_application_version", robotApplicationVersionResourceType)
+}
+
+// robotApplicationVersionResourceType returns the Terraform awscc_robomaker_robot_application_version resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::RoboMaker::RobotApplicationVersion resource type.
+func robotApplicationVersionResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "application": {
+ // Property: Application
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Required: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "application_version": {
+ // Property: ApplicationVersion
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "current_revision_id": {
+ // Property: CurrentRevisionId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The revision ID of robot application.",
+ // "maxLength": 40,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The revision ID of robot application.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 40),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "An example resource schema demonstrating some basic constructs and validation rules.",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::RobotApplicationVersion").WithTerraformTypeName("awscc_robomaker_robot_application_version")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "application": "Application",
+ "application_version": "ApplicationVersion",
+ "arn": "Arn",
+ "current_revision_id": "CurrentRevisionId",
+ })
+
+ opts = opts.IsImmutableType(true)
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/robomaker/robot_application_version_resource_gen_test.go b/internal/aws/robomaker/robot_application_version_resource_gen_test.go
new file mode 100644
index 0000000000..133fd29efa
--- /dev/null
+++ b/internal/aws/robomaker/robot_application_version_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerRobotApplicationVersion_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::RobotApplicationVersion", "awscc_robomaker_robot_application_version", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/robomaker/robot_application_version_singular_data_source_gen.go b/internal/aws/robomaker/robot_application_version_singular_data_source_gen.go
new file mode 100644
index 0000000000..93e994ddb4
--- /dev/null
+++ b/internal/aws/robomaker/robot_application_version_singular_data_source_gen.go
@@ -0,0 +1,97 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_robomaker_robot_application_version", robotApplicationVersionDataSourceType)
+}
+
+// robotApplicationVersionDataSourceType returns the Terraform awscc_robomaker_robot_application_version data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::RobotApplicationVersion resource type.
+func robotApplicationVersionDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "application": {
+ // Property: Application
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "application_version": {
+ // Property: ApplicationVersion
+ // CloudFormation resource type schema:
+ // {
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "current_revision_id": {
+ // Property: CurrentRevisionId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The revision ID of robot application.",
+ // "maxLength": 40,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The revision ID of robot application.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::RoboMaker::RobotApplicationVersion",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::RobotApplicationVersion").WithTerraformTypeName("awscc_robomaker_robot_application_version")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "application": "Application",
+ "application_version": "ApplicationVersion",
+ "arn": "Arn",
+ "current_revision_id": "CurrentRevisionId",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/robomaker/robot_application_version_singular_data_source_gen_test.go b/internal/aws/robomaker/robot_application_version_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..7863fe4832
--- /dev/null
+++ b/internal/aws/robomaker/robot_application_version_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerRobotApplicationVersionDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::RobotApplicationVersion", "awscc_robomaker_robot_application_version", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSRoboMakerRobotApplicationVersionDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::RobotApplicationVersion", "awscc_robomaker_robot_application_version", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/s3outposts/endpoint_plural_data_source_gen.go b/internal/aws/robomaker/robot_plural_data_source_gen.go
similarity index 66%
rename from internal/aws/s3outposts/endpoint_plural_data_source_gen.go
rename to internal/aws/robomaker/robot_plural_data_source_gen.go
index 60b08b017e..6b4eab9902 100644
--- a/internal/aws/s3outposts/endpoint_plural_data_source_gen.go
+++ b/internal/aws/robomaker/robot_plural_data_source_gen.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package s3outposts
+package robomaker
import (
"context"
@@ -12,12 +12,12 @@ import (
)
func init() {
- registry.AddDataSourceTypeFactory("awscc_s3outposts_endpoints", endpointsDataSourceType)
+ registry.AddDataSourceTypeFactory("awscc_robomaker_robots", robotsDataSourceType)
}
-// endpointsDataSourceType returns the Terraform awscc_s3outposts_endpoints data source type.
-// This Terraform data source type corresponds to the CloudFormation AWS::S3Outposts::Endpoint resource type.
-func endpointsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+// robotsDataSourceType returns the Terraform awscc_robomaker_robots data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::Robot resource type.
+func robotsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
attributes := map[string]tfsdk.Attribute{
"id": {
Description: "Uniquely identifies the data source.",
@@ -32,14 +32,14 @@ func endpointsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error)
}
schema := tfsdk.Schema{
- Description: "Plural Data Source schema for AWS::S3Outposts::Endpoint",
+ Description: "Plural Data Source schema for AWS::RoboMaker::Robot",
Version: 1,
Attributes: attributes,
}
var opts DataSourceTypeOptions
- opts = opts.WithCloudFormationTypeName("AWS::S3Outposts::Endpoint").WithTerraformTypeName("awscc_s3outposts_endpoints")
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Robot").WithTerraformTypeName("awscc_robomaker_robots")
opts = opts.WithTerraformSchema(schema)
pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
diff --git a/internal/aws/s3outposts/endpoint_plural_data_source_gen_test.go b/internal/aws/robomaker/robot_plural_data_source_gen_test.go
similarity index 71%
rename from internal/aws/s3outposts/endpoint_plural_data_source_gen_test.go
rename to internal/aws/robomaker/robot_plural_data_source_gen_test.go
index 67ba5b3a08..79289085b9 100644
--- a/internal/aws/s3outposts/endpoint_plural_data_source_gen_test.go
+++ b/internal/aws/robomaker/robot_plural_data_source_gen_test.go
@@ -1,6 +1,6 @@
// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
-package s3outposts_test
+package robomaker_test
import (
"fmt"
@@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-provider-awscc/internal/acctest"
)
-func TestAccAWSS3OutpostsEndpointsDataSource_basic(t *testing.T) {
- td := acctest.NewTestData(t, "AWS::S3Outposts::Endpoint", "awscc_s3outposts_endpoints", "test")
+func TestAccAWSRoboMakerRobotsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Robot", "awscc_robomaker_robots", "test")
td.DataSourceTest(t, []resource.TestStep{
{
diff --git a/internal/aws/robomaker/robot_resource_gen.go b/internal/aws/robomaker/robot_resource_gen.go
new file mode 100644
index 0000000000..aef6da603d
--- /dev/null
+++ b/internal/aws/robomaker/robot_resource_gen.go
@@ -0,0 +1,178 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_robomaker_robot", robotResourceType)
+}
+
+// robotResourceType returns the Terraform awscc_robomaker_robot resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::RoboMaker::Robot resource type.
+func robotResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "architecture": {
+ // Property: Architecture
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The target architecture of the robot.",
+ // "enum": [
+ // "X86_64",
+ // "ARM64",
+ // "ARMHF"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The target architecture of the robot.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "X86_64",
+ "ARM64",
+ "ARMHF",
+ }),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "fleet": {
+ // Property: Fleet
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of the fleet.",
+ // "maxLength": 1224,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of the fleet.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 1224),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "greengrass_group_id": {
+ // Property: GreengrassGroupId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Greengrass group id.",
+ // "maxLength": 1224,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The Greengrass group id.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 1224),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name for the robot.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The name for the robot.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 255),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Optional: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "AWS::RoboMaker::Robot resource creates an AWS RoboMaker fleet.",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Robot").WithTerraformTypeName("awscc_robomaker_robot")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "architecture": "Architecture",
+ "arn": "Arn",
+ "fleet": "Fleet",
+ "greengrass_group_id": "GreengrassGroupId",
+ "name": "Name",
+ "tags": "Tags",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/robomaker/robot_resource_gen_test.go b/internal/aws/robomaker/robot_resource_gen_test.go
new file mode 100644
index 0000000000..82bf198886
--- /dev/null
+++ b/internal/aws/robomaker/robot_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerRobot_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Robot", "awscc_robomaker_robot", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/robomaker/robot_singular_data_source_gen.go b/internal/aws/robomaker/robot_singular_data_source_gen.go
new file mode 100644
index 0000000000..6284957e30
--- /dev/null
+++ b/internal/aws/robomaker/robot_singular_data_source_gen.go
@@ -0,0 +1,142 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_robomaker_robot", robotDataSourceType)
+}
+
+// robotDataSourceType returns the Terraform awscc_robomaker_robot data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::Robot resource type.
+func robotDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "architecture": {
+ // Property: Architecture
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The target architecture of the robot.",
+ // "enum": [
+ // "X86_64",
+ // "ARM64",
+ // "ARMHF"
+ // ],
+ // "type": "string"
+ // }
+ Description: "The target architecture of the robot.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "fleet": {
+ // Property: Fleet
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Amazon Resource Name (ARN) of the fleet.",
+ // "maxLength": 1224,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The Amazon Resource Name (ARN) of the fleet.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "greengrass_group_id": {
+ // Property: GreengrassGroupId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The Greengrass group id.",
+ // "maxLength": 1224,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The Greengrass group id.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name for the robot.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ Description: "The name for the robot.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::RoboMaker::Robot",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::Robot").WithTerraformTypeName("awscc_robomaker_robot")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "architecture": "Architecture",
+ "arn": "Arn",
+ "fleet": "Fleet",
+ "greengrass_group_id": "GreengrassGroupId",
+ "name": "Name",
+ "tags": "Tags",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/robomaker/robot_singular_data_source_gen_test.go b/internal/aws/robomaker/robot_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..a4c4d3a810
--- /dev/null
+++ b/internal/aws/robomaker/robot_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerRobotDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Robot", "awscc_robomaker_robot", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSRoboMakerRobotDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::Robot", "awscc_robomaker_robot", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/robomaker/simulation_application_plural_data_source_gen.go b/internal/aws/robomaker/simulation_application_plural_data_source_gen.go
new file mode 100644
index 0000000000..3bb522c2b1
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_robomaker_simulation_applications", simulationApplicationsDataSourceType)
+}
+
+// simulationApplicationsDataSourceType returns the Terraform awscc_robomaker_simulation_applications data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::SimulationApplication resource type.
+func simulationApplicationsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::RoboMaker::SimulationApplication",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::SimulationApplication").WithTerraformTypeName("awscc_robomaker_simulation_applications")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/robomaker/simulation_application_plural_data_source_gen_test.go b/internal/aws/robomaker/simulation_application_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..ee32c5861f
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerSimulationApplicationsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::SimulationApplication", "awscc_robomaker_simulation_applications", "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/robomaker/simulation_application_resource_gen.go b/internal/aws/robomaker/simulation_application_resource_gen.go
new file mode 100644
index 0000000000..3c55714ccb
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_resource_gen.go
@@ -0,0 +1,408 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_robomaker_simulation_application", simulationApplicationResourceType)
+}
+
+// simulationApplicationResourceType returns the Terraform awscc_robomaker_simulation_application resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::RoboMaker::SimulationApplication resource type.
+func simulationApplicationResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "current_revision_id": {
+ // Property: CurrentRevisionId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The current revision id.",
+ // "type": "string"
+ // }
+ Description: "The current revision id.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "environment": {
+ // Property: Environment
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The URI of the Docker image for the robot application.",
+ // "type": "string"
+ // }
+ Description: "The URI of the Docker image for the robot application.",
+ Type: types.StringType,
+ Optional: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the simulation application.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the simulation application.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 255),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "rendering_engine": {
+ // Property: RenderingEngine
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a rendering engine.",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the rendering engine.",
+ // "enum": [
+ // "OGRE"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the rendering engine.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a rendering engine.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the rendering engine.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "OGRE",
+ }),
+ },
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the rendering engine.",
+ Type: types.StringType,
+ Required: true,
+ },
+ },
+ ),
+ Optional: true,
+ },
+ "robot_software_suite": {
+ // Property: RobotSoftwareSuite
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a robot software suite (ROS distribution).",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the robot software suite (ROS distribution).",
+ // "enum": [
+ // "ROS",
+ // "ROS2"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the robot software suite (ROS distribution).",
+ // "enum": [
+ // "Kinetic",
+ // "Melodic",
+ // "Dashing",
+ // "Foxy"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a robot software suite (ROS distribution).",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the robot software suite (ROS distribution).",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "ROS",
+ "ROS2",
+ }),
+ },
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the robot software suite (ROS distribution).",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "Kinetic",
+ "Melodic",
+ "Dashing",
+ "Foxy",
+ }),
+ },
+ },
+ },
+ ),
+ Required: true,
+ },
+ "simulation_software_suite": {
+ // Property: SimulationSoftwareSuite
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a simulation software suite.",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the simulation software suite.",
+ // "enum": [
+ // "Gazebo",
+ // "RosbagPlay"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the simulation software suite.",
+ // "enum": [
+ // "7",
+ // "9",
+ // "11",
+ // "Kinetic",
+ // "Melodic",
+ // "Dashing",
+ // "Foxy"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a simulation software suite.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the simulation software suite.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "Gazebo",
+ "RosbagPlay",
+ }),
+ },
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the simulation software suite.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "7",
+ "9",
+ "11",
+ "Kinetic",
+ "Melodic",
+ "Dashing",
+ "Foxy",
+ }),
+ },
+ },
+ },
+ ),
+ Required: true,
+ },
+ "sources": {
+ // Property: Sources
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The sources of the simulation application.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Information about a source configuration.",
+ // "properties": {
+ // "Architecture": {
+ // "description": "The target processor architecture for the application.",
+ // "enum": [
+ // "X86_64",
+ // "ARM64",
+ // "ARMHF"
+ // ],
+ // "type": "string"
+ // },
+ // "S3Bucket": {
+ // "description": "The Amazon S3 bucket name.",
+ // "pattern": "",
+ // "type": "string"
+ // },
+ // "S3Key": {
+ // "description": "The s3 object key.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "S3Bucket",
+ // "S3Key",
+ // "Architecture"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array"
+ // }
+ Description: "The sources of the simulation application.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "architecture": {
+ // Property: Architecture
+ Description: "The target processor architecture for the application.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "X86_64",
+ "ARM64",
+ "ARMHF",
+ }),
+ },
+ },
+ "s3_bucket": {
+ // Property: S3Bucket
+ Description: "The Amazon S3 bucket name.",
+ Type: types.StringType,
+ Required: true,
+ },
+ "s3_key": {
+ // Property: S3Key
+ Description: "The s3 object key.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(1, 1024),
+ },
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Optional: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ Multiset(),
+ },
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Optional: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "An example resource schema demonstrating some basic constructs and validation rules.",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::SimulationApplication").WithTerraformTypeName("awscc_robomaker_simulation_application")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "architecture": "Architecture",
+ "arn": "Arn",
+ "current_revision_id": "CurrentRevisionId",
+ "environment": "Environment",
+ "name": "Name",
+ "rendering_engine": "RenderingEngine",
+ "robot_software_suite": "RobotSoftwareSuite",
+ "s3_bucket": "S3Bucket",
+ "s3_key": "S3Key",
+ "simulation_software_suite": "SimulationSoftwareSuite",
+ "sources": "Sources",
+ "tags": "Tags",
+ "version": "Version",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/robomaker/simulation_application_resource_gen_test.go b/internal/aws/robomaker/simulation_application_resource_gen_test.go
new file mode 100644
index 0000000000..e4d6789828
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerSimulationApplication_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::SimulationApplication", "awscc_robomaker_simulation_application", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/robomaker/simulation_application_singular_data_source_gen.go b/internal/aws/robomaker/simulation_application_singular_data_source_gen.go
new file mode 100644
index 0000000000..48f6d2eb7a
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_singular_data_source_gen.go
@@ -0,0 +1,346 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_robomaker_simulation_application", simulationApplicationDataSourceType)
+}
+
+// simulationApplicationDataSourceType returns the Terraform awscc_robomaker_simulation_application data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::RoboMaker::SimulationApplication resource type.
+func simulationApplicationDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "arn": {
+ // Property: Arn
+ // CloudFormation resource type schema:
+ // {
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Type: types.StringType,
+ Computed: true,
+ },
+ "current_revision_id": {
+ // Property: CurrentRevisionId
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The current revision id.",
+ // "type": "string"
+ // }
+ Description: "The current revision id.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "environment": {
+ // Property: Environment
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The URI of the Docker image for the robot application.",
+ // "type": "string"
+ // }
+ Description: "The URI of the Docker image for the robot application.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the simulation application.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the simulation application.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "rendering_engine": {
+ // Property: RenderingEngine
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a rendering engine.",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the rendering engine.",
+ // "enum": [
+ // "OGRE"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the rendering engine.",
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a rendering engine.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the rendering engine.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the rendering engine.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "robot_software_suite": {
+ // Property: RobotSoftwareSuite
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a robot software suite (ROS distribution).",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the robot software suite (ROS distribution).",
+ // "enum": [
+ // "ROS",
+ // "ROS2"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the robot software suite (ROS distribution).",
+ // "enum": [
+ // "Kinetic",
+ // "Melodic",
+ // "Dashing",
+ // "Foxy"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a robot software suite (ROS distribution).",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the robot software suite (ROS distribution).",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the robot software suite (ROS distribution).",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "simulation_software_suite": {
+ // Property: SimulationSoftwareSuite
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "Information about a simulation software suite.",
+ // "properties": {
+ // "Name": {
+ // "description": "The name of the simulation software suite.",
+ // "enum": [
+ // "Gazebo",
+ // "RosbagPlay"
+ // ],
+ // "type": "string"
+ // },
+ // "Version": {
+ // "description": "The version of the simulation software suite.",
+ // "enum": [
+ // "7",
+ // "9",
+ // "11",
+ // "Kinetic",
+ // "Melodic",
+ // "Dashing",
+ // "Foxy"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Version"
+ // ],
+ // "type": "object"
+ // }
+ Description: "Information about a simulation software suite.",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "name": {
+ // Property: Name
+ Description: "The name of the simulation software suite.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "version": {
+ // Property: Version
+ Description: "The version of the simulation software suite.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "sources": {
+ // Property: Sources
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The sources of the simulation application.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Information about a source configuration.",
+ // "properties": {
+ // "Architecture": {
+ // "description": "The target processor architecture for the application.",
+ // "enum": [
+ // "X86_64",
+ // "ARM64",
+ // "ARMHF"
+ // ],
+ // "type": "string"
+ // },
+ // "S3Bucket": {
+ // "description": "The Amazon S3 bucket name.",
+ // "pattern": "",
+ // "type": "string"
+ // },
+ // "S3Key": {
+ // "description": "The s3 object key.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "S3Bucket",
+ // "S3Key",
+ // "Architecture"
+ // ],
+ // "type": "object"
+ // },
+ // "type": "array"
+ // }
+ Description: "The sources of the simulation application.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "architecture": {
+ // Property: Architecture
+ Description: "The target processor architecture for the application.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "s3_bucket": {
+ // Property: S3Bucket
+ Description: "The Amazon S3 bucket name.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "s3_key": {
+ // Property: S3Key
+ Description: "The s3 object key.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ "tags": {
+ // Property: Tags
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "A key-value pair to associate with a resource.",
+ // "patternProperties": {
+ // "": {
+ // "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ // "maxLength": 256,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Description: "A key-value pair to associate with a resource.",
+ // Pattern: ""
+ Type: types.MapType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::RoboMaker::SimulationApplication",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::RoboMaker::SimulationApplication").WithTerraformTypeName("awscc_robomaker_simulation_application")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "architecture": "Architecture",
+ "arn": "Arn",
+ "current_revision_id": "CurrentRevisionId",
+ "environment": "Environment",
+ "name": "Name",
+ "rendering_engine": "RenderingEngine",
+ "robot_software_suite": "RobotSoftwareSuite",
+ "s3_bucket": "S3Bucket",
+ "s3_key": "S3Key",
+ "simulation_software_suite": "SimulationSoftwareSuite",
+ "sources": "Sources",
+ "tags": "Tags",
+ "version": "Version",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/robomaker/simulation_application_singular_data_source_gen_test.go b/internal/aws/robomaker/simulation_application_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..fb665f168a
--- /dev/null
+++ b/internal/aws/robomaker/simulation_application_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package robomaker_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSRoboMakerSimulationApplicationDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::SimulationApplication", "awscc_robomaker_simulation_application", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSRoboMakerSimulationApplicationDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::RoboMaker::SimulationApplication", "awscc_robomaker_simulation_application", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/s3/multi_region_access_point_plural_data_source_gen.go b/internal/aws/s3/multi_region_access_point_plural_data_source_gen.go
new file mode 100644
index 0000000000..a28d5c5ed3
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_plural_data_source_gen.go
@@ -0,0 +1,52 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package s3
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_s3_multi_region_access_points", multiRegionAccessPointsDataSourceType)
+}
+
+// multiRegionAccessPointsDataSourceType returns the Terraform awscc_s3_multi_region_access_points data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::S3::MultiRegionAccessPoint resource type.
+func multiRegionAccessPointsDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "id": {
+ Description: "Uniquely identifies the data source.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "ids": {
+ Description: "Set of Resource Identifiers.",
+ Type: types.SetType{ElemType: types.StringType},
+ Computed: true,
+ },
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Plural Data Source schema for AWS::S3::MultiRegionAccessPoint",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::S3::MultiRegionAccessPoint").WithTerraformTypeName("awscc_s3_multi_region_access_points")
+ opts = opts.WithTerraformSchema(schema)
+
+ pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return pluralDataSourceType, nil
+}
diff --git a/internal/aws/s3/multi_region_access_point_plural_data_source_gen_test.go b/internal/aws/s3/multi_region_access_point_plural_data_source_gen_test.go
new file mode 100644
index 0000000000..76effca0fa
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_plural_data_source_gen_test.go
@@ -0,0 +1,24 @@
+// Code generated by generators/plural-data-source/main.go; DO NOT EDIT.
+
+package s3_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSS3MultiRegionAccessPointsDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPoint", "awscc_s3_multi_region_access_points", "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/s3/multi_region_access_point_policy_resource_gen.go b/internal/aws/s3/multi_region_access_point_policy_resource_gen.go
new file mode 100644
index 0000000000..34bf269fc0
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_policy_resource_gen.go
@@ -0,0 +1,131 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package s3
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_s3_multi_region_access_point_policy", multiRegionAccessPointPolicyResourceType)
+}
+
+// multiRegionAccessPointPolicyResourceType returns the Terraform awscc_s3_multi_region_access_point_policy resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::S3::MultiRegionAccessPointPolicy resource type.
+func multiRegionAccessPointPolicyResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "mrap_name": {
+ // Property: MrapName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the Multi Region Access Point to apply policy",
+ // "maxLength": 50,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the Multi Region Access Point to apply policy",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(3, 50),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "policy": {
+ // Property: Policy
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Policy document to apply to a Multi Region Access Point",
+ // "type": "object"
+ // }
+ Description: "Policy document to apply to a Multi Region Access Point",
+ Type: types.MapType{ElemType: types.StringType},
+ Required: true,
+ },
+ "policy_status": {
+ // Property: PolicyStatus
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The Policy Status associated with this Multi Region Access Point",
+ // "properties": {
+ // "IsPublic": {
+ // "description": "Specifies whether the policy is public or not.",
+ // "enum": [
+ // "true",
+ // "false"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "IsPublic"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The Policy Status associated with this Multi Region Access Point",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "is_public": {
+ // Property: IsPublic
+ Description: "Specifies whether the policy is public or not.",
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringInSlice([]string{
+ "true",
+ "false",
+ }),
+ },
+ },
+ },
+ ),
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "The policy to be attached to a Multi Region Access Point",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::S3::MultiRegionAccessPointPolicy").WithTerraformTypeName("awscc_s3_multi_region_access_point_policy")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "is_public": "IsPublic",
+ "mrap_name": "MrapName",
+ "policy": "Policy",
+ "policy_status": "PolicyStatus",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/s3/multi_region_access_point_policy_resource_gen_test.go b/internal/aws/s3/multi_region_access_point_policy_resource_gen_test.go
new file mode 100644
index 0000000000..93b347e3c4
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_policy_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package s3_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSS3MultiRegionAccessPointPolicy_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPointPolicy", "awscc_s3_multi_region_access_point_policy", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen.go b/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen.go
new file mode 100644
index 0000000000..7ac4d850ca
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen.go
@@ -0,0 +1,113 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package s3
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_s3_multi_region_access_point_policy", multiRegionAccessPointPolicyDataSourceType)
+}
+
+// multiRegionAccessPointPolicyDataSourceType returns the Terraform awscc_s3_multi_region_access_point_policy data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::S3::MultiRegionAccessPointPolicy resource type.
+func multiRegionAccessPointPolicyDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "mrap_name": {
+ // Property: MrapName
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name of the Multi Region Access Point to apply policy",
+ // "maxLength": 50,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name of the Multi Region Access Point to apply policy",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "policy": {
+ // Property: Policy
+ // CloudFormation resource type schema:
+ // {
+ // "description": "Policy document to apply to a Multi Region Access Point",
+ // "type": "object"
+ // }
+ Description: "Policy document to apply to a Multi Region Access Point",
+ Type: types.MapType{ElemType: types.StringType},
+ Computed: true,
+ },
+ "policy_status": {
+ // Property: PolicyStatus
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "description": "The Policy Status associated with this Multi Region Access Point",
+ // "properties": {
+ // "IsPublic": {
+ // "description": "Specifies whether the policy is public or not.",
+ // "enum": [
+ // "true",
+ // "false"
+ // ],
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "IsPublic"
+ // ],
+ // "type": "object"
+ // }
+ Description: "The Policy Status associated with this Multi Region Access Point",
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "is_public": {
+ // Property: IsPublic
+ Description: "Specifies whether the policy is public or not.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::S3::MultiRegionAccessPointPolicy",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::S3::MultiRegionAccessPointPolicy").WithTerraformTypeName("awscc_s3_multi_region_access_point_policy")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "is_public": "IsPublic",
+ "mrap_name": "MrapName",
+ "policy": "Policy",
+ "policy_status": "PolicyStatus",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen_test.go b/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..83417843a0
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_policy_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package s3_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSS3MultiRegionAccessPointPolicyDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPointPolicy", "awscc_s3_multi_region_access_point_policy", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSS3MultiRegionAccessPointPolicyDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPointPolicy", "awscc_s3_multi_region_access_point_policy", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/aws/s3/multi_region_access_point_resource_gen.go b/internal/aws/s3/multi_region_access_point_resource_gen.go
new file mode 100644
index 0000000000..23752b8cb6
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_resource_gen.go
@@ -0,0 +1,216 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package s3
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "github.com/hashicorp/terraform-plugin-framework/types"
+ . "github.com/hashicorp/terraform-provider-awscc/internal/generic"
+ "github.com/hashicorp/terraform-provider-awscc/internal/registry"
+ "github.com/hashicorp/terraform-provider-awscc/internal/validate"
+)
+
+func init() {
+ registry.AddResourceTypeFactory("awscc_s3_multi_region_access_point", multiRegionAccessPointResourceType)
+}
+
+// multiRegionAccessPointResourceType returns the Terraform awscc_s3_multi_region_access_point resource type.
+// This Terraform resource type corresponds to the CloudFormation AWS::S3::MultiRegionAccessPoint resource type.
+func multiRegionAccessPointResourceType(ctx context.Context) (tfsdk.ResourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "alias": {
+ // Property: Alias
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point",
+ // "type": "string"
+ // }
+ Description: "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "created_at": {
+ // Property: CreatedAt
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The timestamp of the when the Multi Region Access Point is created",
+ // "type": "string"
+ // }
+ Description: "The timestamp of the when the Multi Region Access Point is created",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name you want to assign to this Multi Region Access Point.",
+ // "maxLength": 50,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name you want to assign to this Multi Region Access Point.",
+ Type: types.StringType,
+ Optional: true,
+ Computed: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(3, 50),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "public_access_block_configuration": {
+ // Property: PublicAccessBlockConfiguration
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BlockPublicAcls": {
+ // "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.",
+ // "type": "boolean"
+ // },
+ // "BlockPublicPolicy": {
+ // "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.",
+ // "type": "boolean"
+ // },
+ // "IgnorePublicAcls": {
+ // "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.",
+ // "type": "boolean"
+ // },
+ // "RestrictPublicBuckets": {
+ // "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.",
+ // "type": "boolean"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "block_public_acls": {
+ // Property: BlockPublicAcls
+ Description: "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.",
+ Type: types.BoolType,
+ Optional: true,
+ },
+ "block_public_policy": {
+ // Property: BlockPublicPolicy
+ Description: "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.",
+ Type: types.BoolType,
+ Optional: true,
+ },
+ "ignore_public_acls": {
+ // Property: IgnorePublicAcls
+ Description: "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.",
+ Type: types.BoolType,
+ Optional: true,
+ },
+ "restrict_public_buckets": {
+ // Property: RestrictPublicBuckets
+ Description: "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.",
+ Type: types.BoolType,
+ Optional: true,
+ },
+ },
+ ),
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ "regions": {
+ // Property: Regions
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The list of buckets that you want to associate this Multi Region Access Point with.",
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Bucket": {
+ // "maxLength": 63,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Bucket"
+ // ],
+ // "type": "object"
+ // },
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The list of buckets that you want to associate this Multi Region Access Point with.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "bucket": {
+ // Property: Bucket
+ Type: types.StringType,
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.StringLenBetween(3, 63),
+ },
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{
+ MinItems: 1,
+ },
+ ),
+ Required: true,
+ Validators: []tfsdk.AttributeValidator{
+ validate.UniqueItems(),
+ },
+ PlanModifiers: []tfsdk.AttributePlanModifier{
+ tfsdk.RequiresReplace(),
+ },
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Computed: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts ResourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::S3::MultiRegionAccessPoint").WithTerraformTypeName("awscc_s3_multi_region_access_point")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithSyntheticIDAttribute(true)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "alias": "Alias",
+ "block_public_acls": "BlockPublicAcls",
+ "block_public_policy": "BlockPublicPolicy",
+ "bucket": "Bucket",
+ "created_at": "CreatedAt",
+ "ignore_public_acls": "IgnorePublicAcls",
+ "name": "Name",
+ "public_access_block_configuration": "PublicAccessBlockConfiguration",
+ "regions": "Regions",
+ "restrict_public_buckets": "RestrictPublicBuckets",
+ })
+
+ opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
+
+ opts = opts.WithUpdateTimeoutInMinutes(0)
+
+ resourceType, err := NewResourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return resourceType, nil
+}
diff --git a/internal/aws/s3/multi_region_access_point_resource_gen_test.go b/internal/aws/s3/multi_region_access_point_resource_gen_test.go
new file mode 100644
index 0000000000..ab4b66bd25
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_resource_gen_test.go
@@ -0,0 +1,22 @@
+// Code generated by generators/resource/main.go; DO NOT EDIT.
+
+package s3_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSS3MultiRegionAccessPoint_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPoint", "awscc_s3_multi_region_access_point", "test")
+
+ td.ResourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
diff --git a/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go b/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go
new file mode 100644
index 0000000000..9dd72ea0a8
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go
@@ -0,0 +1,188 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package s3
+
+import (
+ "context"
+
+ "github.com/hashicorp/terraform-plugin-framework/tfsdk"
+ "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.AddDataSourceTypeFactory("awscc_s3_multi_region_access_point", multiRegionAccessPointDataSourceType)
+}
+
+// multiRegionAccessPointDataSourceType returns the Terraform awscc_s3_multi_region_access_point data source type.
+// This Terraform data source type corresponds to the CloudFormation AWS::S3::MultiRegionAccessPoint resource type.
+func multiRegionAccessPointDataSourceType(ctx context.Context) (tfsdk.DataSourceType, error) {
+ attributes := map[string]tfsdk.Attribute{
+ "alias": {
+ // Property: Alias
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point",
+ // "type": "string"
+ // }
+ Description: "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "created_at": {
+ // Property: CreatedAt
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The timestamp of the when the Multi Region Access Point is created",
+ // "type": "string"
+ // }
+ Description: "The timestamp of the when the Multi Region Access Point is created",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "name": {
+ // Property: Name
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The name you want to assign to this Multi Region Access Point.",
+ // "maxLength": 50,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ Description: "The name you want to assign to this Multi Region Access Point.",
+ Type: types.StringType,
+ Computed: true,
+ },
+ "public_access_block_configuration": {
+ // Property: PublicAccessBlockConfiguration
+ // CloudFormation resource type schema:
+ // {
+ // "additionalProperties": false,
+ // "properties": {
+ // "BlockPublicAcls": {
+ // "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.",
+ // "type": "boolean"
+ // },
+ // "BlockPublicPolicy": {
+ // "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.",
+ // "type": "boolean"
+ // },
+ // "IgnorePublicAcls": {
+ // "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.",
+ // "type": "boolean"
+ // },
+ // "RestrictPublicBuckets": {
+ // "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.",
+ // "type": "boolean"
+ // }
+ // },
+ // "type": "object"
+ // }
+ Attributes: tfsdk.SingleNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "block_public_acls": {
+ // Property: BlockPublicAcls
+ Description: "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.",
+ Type: types.BoolType,
+ Computed: true,
+ },
+ "block_public_policy": {
+ // Property: BlockPublicPolicy
+ Description: "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.",
+ Type: types.BoolType,
+ Computed: true,
+ },
+ "ignore_public_acls": {
+ // Property: IgnorePublicAcls
+ Description: "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.",
+ Type: types.BoolType,
+ Computed: true,
+ },
+ "restrict_public_buckets": {
+ // Property: RestrictPublicBuckets
+ Description: "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.",
+ Type: types.BoolType,
+ Computed: true,
+ },
+ },
+ ),
+ Computed: true,
+ },
+ "regions": {
+ // Property: Regions
+ // CloudFormation resource type schema:
+ // {
+ // "description": "The list of buckets that you want to associate this Multi Region Access Point with.",
+ // "items": {
+ // "additionalProperties": false,
+ // "properties": {
+ // "Bucket": {
+ // "maxLength": 63,
+ // "minLength": 3,
+ // "pattern": "",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Bucket"
+ // ],
+ // "type": "object"
+ // },
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ Description: "The list of buckets that you want to associate this Multi Region Access Point with.",
+ Attributes: tfsdk.ListNestedAttributes(
+ map[string]tfsdk.Attribute{
+ "bucket": {
+ // Property: Bucket
+ Type: types.StringType,
+ Computed: true,
+ },
+ },
+ tfsdk.ListNestedAttributesOptions{},
+ ),
+ Computed: true,
+ },
+ }
+
+ attributes["id"] = tfsdk.Attribute{
+ Description: "Uniquely identifies the resource.",
+ Type: types.StringType,
+ Required: true,
+ }
+
+ schema := tfsdk.Schema{
+ Description: "Data Source schema for AWS::S3::MultiRegionAccessPoint",
+ Version: 1,
+ Attributes: attributes,
+ }
+
+ var opts DataSourceTypeOptions
+
+ opts = opts.WithCloudFormationTypeName("AWS::S3::MultiRegionAccessPoint").WithTerraformTypeName("awscc_s3_multi_region_access_point")
+ opts = opts.WithTerraformSchema(schema)
+ opts = opts.WithAttributeNameMap(map[string]string{
+ "alias": "Alias",
+ "block_public_acls": "BlockPublicAcls",
+ "block_public_policy": "BlockPublicPolicy",
+ "bucket": "Bucket",
+ "created_at": "CreatedAt",
+ "ignore_public_acls": "IgnorePublicAcls",
+ "name": "Name",
+ "public_access_block_configuration": "PublicAccessBlockConfiguration",
+ "regions": "Regions",
+ "restrict_public_buckets": "RestrictPublicBuckets",
+ })
+
+ singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return singularDataSourceType, nil
+}
diff --git a/internal/aws/s3/multi_region_access_point_singular_data_source_gen_test.go b/internal/aws/s3/multi_region_access_point_singular_data_source_gen_test.go
new file mode 100644
index 0000000000..776fdcff04
--- /dev/null
+++ b/internal/aws/s3/multi_region_access_point_singular_data_source_gen_test.go
@@ -0,0 +1,33 @@
+// Code generated by generators/singular-data-source/main.go; DO NOT EDIT.
+
+package s3_test
+
+import (
+ "regexp"
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-provider-awscc/internal/acctest"
+)
+
+func TestAccAWSS3MultiRegionAccessPointDataSource_basic(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPoint", "awscc_s3_multi_region_access_point", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.EmptyDataSourceConfig(),
+ ExpectError: regexp.MustCompile("Missing required argument"),
+ },
+ })
+}
+
+func TestAccAWSS3MultiRegionAccessPointDataSource_NonExistent(t *testing.T) {
+ td := acctest.NewTestData(t, "AWS::S3::MultiRegionAccessPoint", "awscc_s3_multi_region_access_point", "test")
+
+ td.DataSourceTest(t, []resource.TestStep{
+ {
+ Config: td.DataSourceWithNonExistentIDConfig(),
+ ExpectError: regexp.MustCompile("Not Found"),
+ },
+ })
+}
diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl
index 6b2432b40c..dacd8e6c12 100644
--- a/internal/provider/all_schemas.hcl
+++ b/internal/provider/all_schemas.hcl
@@ -7,7 +7,7 @@ meta_schema {
path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json"
}
-# 346 CloudFormation resource types schemas are available for use with the Cloud Control API.
+# 362 CloudFormation resource types schemas are available for use with the Cloud Control API.
resource_schema "aws_acmpca_certificate" {
cloudformation_type_name = "AWS::ACMPCA::Certificate"
@@ -24,6 +24,15 @@ resource_schema "aws_acmpca_certificate_authority_activation" {
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_workspace" {
+ cloudformation_type_name = "AWS::APS::Workspace"
+}
+
resource_schema "aws_accessanalyzer_analyzer" {
cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer"
}
@@ -43,6 +52,11 @@ resource_schema "aws_amplify_domain" {
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"
}
@@ -75,6 +89,10 @@ resource_schema "aws_apigateway_resource" {
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
@@ -198,8 +216,7 @@ resource_schema "aws_cloudformation_resource_version" {
}
resource_schema "aws_cloudformation_stack_set" {
- cloudformation_type_name = "AWS::CloudFormation::StackSet"
- suppress_plural_data_source_generation = true
+ cloudformation_type_name = "AWS::CloudFormation::StackSet"
}
resource_schema "aws_cloudformation_type_activation" {
@@ -276,6 +293,10 @@ resource_schema "aws_codestarnotifications_notification_rule" {
suppress_plural_data_source_generation = true
}
+resource_schema "aws_config_aggregation_authorization" {
+ cloudformation_type_name = "AWS::Config::AggregationAuthorization"
+}
+
resource_schema "aws_config_configuration_aggregator" {
cloudformation_type_name = "AWS::Config::ConfigurationAggregator"
}
@@ -473,6 +494,10 @@ resource_schema "aws_ec2_transit_gateway_peering_attachment" {
cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment"
}
+resource_schema "aws_ec2_transit_gateway_vpc_attachment" {
+ cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment"
+}
+
resource_schema "aws_ecr_registry_policy" {
cloudformation_type_name = "AWS::ECR::RegistryPolicy"
}
@@ -523,6 +548,11 @@ 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_addon" {
cloudformation_type_name = "AWS::EKS::Addon"
suppress_plural_data_source_generation = true
@@ -694,6 +724,7 @@ resource_schema "aws_groundstation_config" {
# Top-level "Id" property is not a primary identifier.
suppress_resource_generation = true
suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
}
resource_schema "aws_groundstation_dataflow_endpoint_group" {
@@ -704,6 +735,10 @@ resource_schema "aws_groundstation_mission_profile" {
cloudformation_type_name = "AWS::GroundStation::MissionProfile"
}
+resource_schema "aws_healthlake_fhir_datastore" {
+ cloudformation_type_name = "AWS::HealthLake::FHIRDatastore"
+}
+
resource_schema "aws_iam_oidc_provider" {
cloudformation_type_name = "AWS::IAM::OIDCProvider"
}
@@ -790,6 +825,10 @@ 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_mitigation_action" {
cloudformation_type_name = "AWS::IoT::MitigationAction"
}
@@ -1132,12 +1171,22 @@ resource_schema "aws_nimblestudio_studio_component" {
suppress_plural_data_source_generation = true
}
+resource_schema "aws_opensearchservice_domain" {
+ cloudformation_type_name = "AWS::OpenSearchService::Domain"
+
+ # Top-level "Id" property is not a primary identifier.
+ suppress_resource_generation = true
+ suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
+}
+
resource_schema "aws_opsworkscm_server" {
cloudformation_type_name = "AWS::OpsWorksCM::Server"
# Top-level "Id" property is not a primary identifier.
suppress_resource_generation = true
suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
}
resource_schema "aws_qldb_stream" {
@@ -1198,12 +1247,30 @@ resource_schema "aws_redshift_cluster" {
# Top-level "Id" property is not a primary identifier.
suppress_resource_generation = true
suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
}
resource_schema "aws_resourcegroups_group" {
cloudformation_type_name = "AWS::ResourceGroups::Group"
}
+resource_schema "aws_robomaker_fleet" {
+ cloudformation_type_name = "AWS::RoboMaker::Fleet"
+}
+
+resource_schema "aws_robomaker_robot" {
+ cloudformation_type_name = "AWS::RoboMaker::Robot"
+}
+
+resource_schema "aws_robomaker_robot_application_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
@@ -1293,6 +1360,15 @@ resource_schema "aws_s3_access_point" {
cloudformation_type_name = "AWS::S3::AccessPoint"
}
+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"
+ suppress_plural_data_source_generation = true
+}
+
resource_schema "aws_s3_storage_lens" {
cloudformation_type_name = "AWS::S3::StorageLens"
}
@@ -1331,6 +1407,7 @@ resource_schema "aws_s3outposts_endpoint" {
# Top-level "Id" property is not a primary identifier.
suppress_resource_generation = true
suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
}
resource_schema "aws_ses_configuration_set" {
@@ -1517,6 +1594,7 @@ resource_schema "aws_synthetics_canary" {
# Top-level "Id" property is not a primary identifier.
suppress_resource_generation = true
suppress_singular_data_source_generation = true
+ suppress_plural_data_source_generation = true
}
resource_schema "aws_timestream_database" {
diff --git a/internal/provider/generators/allschemas/available_schemas.2021-09-15.hcl b/internal/provider/generators/allschemas/available_schemas.2021-09-15.hcl
new file mode 100644
index 0000000000..f5425f94d6
--- /dev/null
+++ b/internal/provider/generators/allschemas/available_schemas.2021-09-15.hcl
@@ -0,0 +1,1588 @@
+# 362 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"
+ suppress_plural_data_source_generation = true
+}
+
+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_workspace" {
+ cloudformation_type_name = "AWS::APS::Workspace"
+}
+
+resource_schema "aws_accessanalyzer_analyzer" {
+ cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer"
+}
+
+resource_schema "aws_amplify_app" {
+ cloudformation_type_name = "AWS::Amplify::App"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ 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_client_certificate" {
+ cloudformation_type_name = "AWS::ApiGateway::ClientCertificate"
+}
+
+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_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_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_appflow_connector_profile" {
+ cloudformation_type_name = "AWS::AppFlow::ConnectorProfile"
+}
+
+resource_schema "aws_appflow_flow" {
+ cloudformation_type_name = "AWS::AppFlow::Flow"
+}
+
+resource_schema "aws_appintegrations_event_integration" {
+ cloudformation_type_name = "AWS::AppIntegrations::EventIntegration"
+}
+
+resource_schema "aws_apprunner_service" {
+ cloudformation_type_name = "AWS::AppRunner::Service"
+}
+
+resource_schema "aws_applicationinsights_application" {
+ cloudformation_type_name = "AWS::ApplicationInsights::Application"
+}
+
+resource_schema "aws_athena_data_catalog" {
+ cloudformation_type_name = "AWS::Athena::DataCatalog"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_autoscaling_warm_pool" {
+ cloudformation_type_name = "AWS::AutoScaling::WarmPool"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_backup_backup_plan" {
+ cloudformation_type_name = "AWS::Backup::BackupPlan"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_backup_backup_selection" {
+ cloudformation_type_name = "AWS::Backup::BackupSelection"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_backup_backup_vault" {
+ cloudformation_type_name = "AWS::Backup::BackupVault"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_budgets_budgets_action" {
+ cloudformation_type_name = "AWS::Budgets::BudgetsAction"
+}
+
+resource_schema "aws_ce_cost_category" {
+ cloudformation_type_name = "AWS::CE::CostCategory"
+ suppress_plural_data_source_generation = true
+}
+
+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_slack_channel_configuration" {
+ cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration"
+}
+
+resource_schema "aws_cloudformation_module_default_version" {
+ cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_cloudformation_module_version" {
+ cloudformation_type_name = "AWS::CloudFormation::ModuleVersion"
+}
+
+resource_schema "aws_cloudformation_public_type_version" {
+ cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion"
+}
+
+resource_schema "aws_cloudformation_publisher" {
+ cloudformation_type_name = "AWS::CloudFormation::Publisher"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_cloudformation_resource_default_version" {
+ cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_cloudformation_resource_version" {
+ cloudformation_type_name = "AWS::CloudFormation::ResourceVersion"
+ suppress_plural_data_source_generation = true
+}
+
+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_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_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_cloudtrail_trail" {
+ cloudformation_type_name = "AWS::CloudTrail::Trail"
+}
+
+resource_schema "aws_cloudwatch_composite_alarm" {
+ cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm"
+}
+
+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_repository" {
+ cloudformation_type_name = "AWS::CodeArtifact::Repository"
+}
+
+resource_schema "aws_codeguruprofiler_profiling_group" {
+ cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup"
+}
+
+resource_schema "aws_codegurureviewer_repository_association" {
+ cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_codestarconnections_connection" {
+ cloudformation_type_name = "AWS::CodeStarConnections::Connection"
+}
+
+resource_schema "aws_codestarnotifications_notification_rule" {
+ cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_config_aggregation_authorization" {
+ cloudformation_type_name = "AWS::Config::AggregationAuthorization"
+}
+
+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_quick_connect" {
+ cloudformation_type_name = "AWS::Connect::QuickConnect"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_customerprofiles_domain" {
+ cloudformation_type_name = "AWS::CustomerProfiles::Domain"
+}
+
+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_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_schedule" {
+ cloudformation_type_name = "AWS::DataBrew::Schedule"
+}
+
+resource_schema "aws_datasync_agent" {
+ cloudformation_type_name = "AWS::DataSync::Agent"
+}
+
+resource_schema "aws_datasync_location_efs" {
+ cloudformation_type_name = "AWS::DataSync::LocationEFS"
+}
+
+resource_schema "aws_datasync_location_fsx_windows" {
+ cloudformation_type_name = "AWS::DataSync::LocationFSxWindows"
+}
+
+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_task" {
+ cloudformation_type_name = "AWS::DataSync::Task"
+}
+
+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_devopsguru_notification_channel" {
+ cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel"
+}
+
+resource_schema "aws_devopsguru_resource_collection" {
+ cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_dynamodb_global_table" {
+ cloudformation_type_name = "AWS::DynamoDB::GlobalTable"
+}
+
+resource_schema "aws_ec2_carrier_gateway" {
+ cloudformation_type_name = "AWS::EC2::CarrierGateway"
+}
+
+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_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"
+ suppress_plural_data_source_generation = true
+}
+
+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_local_gateway_route" {
+ cloudformation_type_name = "AWS::EC2::LocalGatewayRoute"
+}
+
+resource_schema "aws_ec2_local_gateway_route_table_vpc_association" {
+ cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation"
+}
+
+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_prefix_list" {
+ cloudformation_type_name = "AWS::EC2::PrefixList"
+}
+
+resource_schema "aws_ec2_spot_fleet" {
+ cloudformation_type_name = "AWS::EC2::SpotFleet"
+}
+
+resource_schema "aws_ec2_transit_gateway" {
+ cloudformation_type_name = "AWS::EC2::TransitGateway"
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+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_vpc_attachment" {
+ cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment"
+}
+
+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_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_addon" {
+ cloudformation_type_name = "AWS::EKS::Addon"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_eks_fargate_profile" {
+ cloudformation_type_name = "AWS::EKS::FargateProfile"
+ suppress_plural_data_source_generation = true
+}
+
+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_emrcontainers_virtual_cluster" {
+ cloudformation_type_name = "AWS::EMRContainers::VirtualCluster"
+}
+
+resource_schema "aws_elasticache_global_replication_group" {
+ cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup"
+}
+
+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_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_eventschemas_registry_policy" {
+ cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy"
+ 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_fis_experiment_template" {
+ cloudformation_type_name = "AWS::FIS::ExperimentTemplate"
+}
+
+resource_schema "aws_fms_notification_channel" {
+ cloudformation_type_name = "AWS::FMS::NotificationChannel"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_fms_policy" {
+ cloudformation_type_name = "AWS::FMS::Policy"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_finspace_environment" {
+ cloudformation_type_name = "AWS::FinSpace::Environment"
+}
+
+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_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_fleet" {
+ cloudformation_type_name = "AWS::GameLift::Fleet"
+}
+
+resource_schema "aws_gamelift_game_server_group" {
+ cloudformation_type_name = "AWS::GameLift::GameServerGroup"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_globalaccelerator_accelerator" {
+ cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_globalaccelerator_endpoint_group" {
+ cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_globalaccelerator_listener" {
+ cloudformation_type_name = "AWS::GlobalAccelerator::Listener"
+ suppress_plural_data_source_generation = true
+}
+
+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_greengrassv2_component_version" {
+ cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion"
+}
+
+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_healthlake_fhir_datastore" {
+ cloudformation_type_name = "AWS::HealthLake::FHIRDatastore"
+}
+
+resource_schema "aws_iam_oidc_provider" {
+ cloudformation_type_name = "AWS::IAM::OIDCProvider"
+}
+
+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_virtual_mfa_device" {
+ cloudformation_type_name = "AWS::IAM::VirtualMFADevice"
+}
+
+resource_schema "aws_ivs_channel" {
+ cloudformation_type_name = "AWS::IVS::Channel"
+}
+
+resource_schema "aws_ivs_playback_key_pair" {
+ cloudformation_type_name = "AWS::IVS::PlaybackKeyPair"
+}
+
+resource_schema "aws_ivs_recording_configuration" {
+ cloudformation_type_name = "AWS::IVS::RecordingConfiguration"
+}
+
+resource_schema "aws_ivs_stream_key" {
+ cloudformation_type_name = "AWS::IVS::StreamKey"
+ 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"
+}
+
+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_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_certificate" {
+ cloudformation_type_name = "AWS::IoT::Certificate"
+}
+
+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_mitigation_action" {
+ cloudformation_type_name = "AWS::IoT::MitigationAction"
+}
+
+resource_schema "aws_iot_provisioning_template" {
+ cloudformation_type_name = "AWS::IoT::ProvisioningTemplate"
+}
+
+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_topic_rule" {
+ cloudformation_type_name = "AWS::IoT::TopicRule"
+}
+
+resource_schema "aws_iot_topic_rule_destination" {
+ cloudformation_type_name = "AWS::IoT::TopicRuleDestination"
+}
+
+resource_schema "aws_iotcoredeviceadvisor_suite_definition" {
+ cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition"
+ suppress_plural_data_source_generation = true
+}
+
+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_iotsitewise_access_policy" {
+ cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+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_service_profile" {
+ cloudformation_type_name = "AWS::IoTWireless::ServiceProfile"
+}
+
+resource_schema "aws_iotwireless_task_definition" {
+ cloudformation_type_name = "AWS::IoTWireless::TaskDefinition"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_iotwireless_wireless_device" {
+ cloudformation_type_name = "AWS::IoTWireless::WirelessDevice"
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_kms_replica_key" {
+ cloudformation_type_name = "AWS::KMS::ReplicaKey"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_kendra_data_source" {
+ cloudformation_type_name = "AWS::Kendra::DataSource"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_kendra_faq" {
+ cloudformation_type_name = "AWS::Kendra::Faq"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_kendra_index" {
+ cloudformation_type_name = "AWS::Kendra::Index"
+}
+
+resource_schema "aws_kinesis_stream" {
+ cloudformation_type_name = "AWS::Kinesis::Stream"
+}
+
+resource_schema "aws_kinesisfirehose_delivery_stream" {
+ cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream"
+}
+
+resource_schema "aws_lambda_code_signing_config" {
+ cloudformation_type_name = "AWS::Lambda::CodeSigningConfig"
+}
+
+resource_schema "aws_lambda_event_source_mapping" {
+ cloudformation_type_name = "AWS::Lambda::EventSourceMapping"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_lambda_function" {
+ cloudformation_type_name = "AWS::Lambda::Function"
+}
+
+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_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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_logs_log_group" {
+ cloudformation_type_name = "AWS::Logs::LogGroup"
+}
+
+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_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_mwaa_environment" {
+ cloudformation_type_name = "AWS::MWAA::Environment"
+}
+
+resource_schema "aws_macie_custom_data_identifier" {
+ cloudformation_type_name = "AWS::Macie::CustomDataIdentifier"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_macie_findings_filter" {
+ cloudformation_type_name = "AWS::Macie::FindingsFilter"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_macie_session" {
+ cloudformation_type_name = "AWS::Macie::Session"
+ 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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_mediaconnect_flow_output" {
+ cloudformation_type_name = "AWS::MediaConnect::FlowOutput"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_mediaconnect_flow_source" {
+ cloudformation_type_name = "AWS::MediaConnect::FlowSource"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_mediaconnect_flow_vpc_interface" {
+ cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_mediapackage_asset" {
+ cloudformation_type_name = "AWS::MediaPackage::Asset"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_mediapackage_packaging_group" {
+ cloudformation_type_name = "AWS::MediaPackage::PackagingGroup"
+}
+
+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_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_transit_gateway_registration" {
+ cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_nimblestudio_launch_profile" {
+ cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_nimblestudio_streaming_image" {
+ cloudformation_type_name = "AWS::NimbleStudio::StreamingImage"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_nimblestudio_studio" {
+ cloudformation_type_name = "AWS::NimbleStudio::Studio"
+}
+
+resource_schema "aws_nimblestudio_studio_component" {
+ cloudformation_type_name = "AWS::NimbleStudio::StudioComponent"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_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_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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_quicksight_data_source" {
+ cloudformation_type_name = "AWS::QuickSight::DataSource"
+ 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_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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_rds_global_cluster" {
+ cloudformation_type_name = "AWS::RDS::GlobalCluster"
+}
+
+resource_schema "aws_redshift_cluster" {
+ cloudformation_type_name = "AWS::Redshift::Cluster"
+}
+
+resource_schema "aws_resourcegroups_group" {
+ cloudformation_type_name = "AWS::ResourceGroups::Group"
+}
+
+resource_schema "aws_robomaker_fleet" {
+ cloudformation_type_name = "AWS::RoboMaker::Fleet"
+}
+
+resource_schema "aws_robomaker_robot" {
+ cloudformation_type_name = "AWS::RoboMaker::Robot"
+}
+
+resource_schema "aws_robomaker_robot_application_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_route53_dnssec" {
+ cloudformation_type_name = "AWS::Route53::DNSSEC"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ 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"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_route53resolver_firewall_rule_group" {
+ cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_route53resolver_firewall_rule_group_association" {
+ cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation"
+ suppress_plural_data_source_generation = true
+}
+
+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_s3_access_point" {
+ cloudformation_type_name = "AWS::S3::AccessPoint"
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_s3_storage_lens" {
+ cloudformation_type_name = "AWS::S3::StorageLens"
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+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_contact_list" {
+ cloudformation_type_name = "AWS::SES::ContactList"
+}
+
+resource_schema "aws_ssm_association" {
+ cloudformation_type_name = "AWS::SSM::Association"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_ssm_document" {
+ cloudformation_type_name = "AWS::SSM::Document"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_ssm_resource_data_sync" {
+ cloudformation_type_name = "AWS::SSM::ResourceDataSync"
+}
+
+resource_schema "aws_ssmcontacts_contact" {
+ cloudformation_type_name = "AWS::SSMContacts::Contact"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_ssmcontacts_contact_channel" {
+ cloudformation_type_name = "AWS::SSMContacts::ContactChannel"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_ssmincidents_replication_set" {
+ cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet"
+}
+
+resource_schema "aws_ssmincidents_response_plan" {
+ cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan"
+}
+
+resource_schema "aws_sso_assignment" {
+ cloudformation_type_name = "AWS::SSO::Assignment"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sso_instance_access_control_attribute_configuration" {
+ cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sso_permission_set" {
+ cloudformation_type_name = "AWS::SSO::PermissionSet"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_app" {
+ cloudformation_type_name = "AWS::SageMaker::App"
+}
+
+resource_schema "aws_sagemaker_app_image_config" {
+ cloudformation_type_name = "AWS::SageMaker::AppImageConfig"
+}
+
+resource_schema "aws_sagemaker_data_quality_job_definition" {
+ cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_device" {
+ cloudformation_type_name = "AWS::SageMaker::Device"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_device_fleet" {
+ cloudformation_type_name = "AWS::SageMaker::DeviceFleet"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_domain" {
+ cloudformation_type_name = "AWS::SageMaker::Domain"
+}
+
+resource_schema "aws_sagemaker_feature_group" {
+ cloudformation_type_name = "AWS::SageMaker::FeatureGroup"
+}
+
+resource_schema "aws_sagemaker_image" {
+ cloudformation_type_name = "AWS::SageMaker::Image"
+}
+
+resource_schema "aws_sagemaker_image_version" {
+ cloudformation_type_name = "AWS::SageMaker::ImageVersion"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_model_bias_job_definition" {
+ cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_sagemaker_model_explainability_job_definition" {
+ cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition"
+ suppress_plural_data_source_generation = true
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+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_user_profile" {
+ cloudformation_type_name = "AWS::SageMaker::UserProfile"
+}
+
+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"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_servicecatalogappregistry_attribute_group" {
+ cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup"
+ suppress_plural_data_source_generation = true
+}
+
+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_signer_profile_permission" {
+ cloudformation_type_name = "AWS::Signer::ProfilePermission"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_signer_signing_profile" {
+ cloudformation_type_name = "AWS::Signer::SigningProfile"
+}
+
+resource_schema "aws_stepfunctions_state_machine" {
+ cloudformation_type_name = "AWS::StepFunctions::StateMachine"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_synthetics_canary" {
+ cloudformation_type_name = "AWS::Synthetics::Canary"
+}
+
+resource_schema "aws_timestream_database" {
+ cloudformation_type_name = "AWS::Timestream::Database"
+}
+
+resource_schema "aws_timestream_table" {
+ cloudformation_type_name = "AWS::Timestream::Table"
+}
+
+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_workspaces_connection_alias" {
+ cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_xray_group" {
+ cloudformation_type_name = "AWS::XRay::Group"
+ suppress_plural_data_source_generation = true
+}
+
+resource_schema "aws_xray_sampling_rule" {
+ cloudformation_type_name = "AWS::XRay::SamplingRule"
+ suppress_plural_data_source_generation = true
+}
diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go
index 256f1561a5..2aaa28cebe 100644
--- a/internal/provider/plural_data_sources.go
+++ b/internal/provider/plural_data_sources.go
@@ -1,8 +1,10 @@
// Code generated by generators/schema/main.go; DO NOT EDIT.
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_aps_workspaces -cftype AWS::APS::Workspace -package aps ../aws/aps/workspace_plural_data_source_gen.go ../aws/aps/workspace_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_accessanalyzer_analyzers -cftype AWS::AccessAnalyzer::Analyzer -package accessanalyzer ../aws/accessanalyzer/analyzer_plural_data_source_gen.go ../aws/accessanalyzer/analyzer_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_apigateway_api_keys -cftype AWS::ApiGateway::ApiKey -package apigateway ../aws/apigateway/api_key_plural_data_source_gen.go ../aws/apigateway/api_key_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_apigateway_client_certificates -cftype AWS::ApiGateway::ClientCertificate -package apigateway ../aws/apigateway/client_certificate_plural_data_source_gen.go ../aws/apigateway/client_certificate_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_apigateway_domain_names -cftype AWS::ApiGateway::DomainName -package apigateway ../aws/apigateway/domain_name_plural_data_source_gen.go ../aws/apigateway/domain_name_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_apigateway_usage_plans -cftype AWS::ApiGateway::UsagePlan -package apigateway ../aws/apigateway/usage_plan_plural_data_source_gen.go ../aws/apigateway/usage_plan_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_appflow_connector_profiles -cftype AWS::AppFlow::ConnectorProfile -package appflow ../aws/appflow/connector_profile_plural_data_source_gen.go ../aws/appflow/connector_profile_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_appflow_flows -cftype AWS::AppFlow::Flow -package appflow ../aws/appflow/flow_plural_data_source_gen.go ../aws/appflow/flow_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_appintegrations_event_integrations -cftype AWS::AppIntegrations::EventIntegration -package appintegrations ../aws/appintegrations/event_integration_plural_data_source_gen.go ../aws/appintegrations/event_integration_plural_data_source_gen_test.go
@@ -16,6 +18,7 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_chatbot_slack_channel_configurations -cftype AWS::Chatbot::SlackChannelConfiguration -package chatbot ../aws/chatbot/slack_channel_configuration_plural_data_source_gen.go ../aws/chatbot/slack_channel_configuration_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudformation_module_versions -cftype AWS::CloudFormation::ModuleVersion -package cloudformation ../aws/cloudformation/module_version_plural_data_source_gen.go ../aws/cloudformation/module_version_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudformation_public_type_versions -cftype AWS::CloudFormation::PublicTypeVersion -package cloudformation ../aws/cloudformation/public_type_version_plural_data_source_gen.go ../aws/cloudformation/public_type_version_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudformation_stack_sets -cftype AWS::CloudFormation::StackSet -package cloudformation ../aws/cloudformation/stack_set_plural_data_source_gen.go ../aws/cloudformation/stack_set_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudformation_type_activations -cftype AWS::CloudFormation::TypeActivation -package cloudformation ../aws/cloudformation/type_activation_plural_data_source_gen.go ../aws/cloudformation/type_activation_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudfront_cache_policies -cftype AWS::CloudFront::CachePolicy -package cloudfront ../aws/cloudfront/cache_policy_plural_data_source_gen.go ../aws/cloudfront/cache_policy_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudfront_cloudfront_origin_access_identities -cftype AWS::CloudFront::CloudFrontOriginAccessIdentity -package cloudfront ../aws/cloudfront/cloudfront_origin_access_identity_plural_data_source_gen.go ../aws/cloudfront/cloudfront_origin_access_identity_plural_data_source_gen_test.go
@@ -32,6 +35,7 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_codeartifact_repositories -cftype AWS::CodeArtifact::Repository -package codeartifact ../aws/codeartifact/repository_plural_data_source_gen.go ../aws/codeartifact/repository_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_codeguruprofiler_profiling_groups -cftype AWS::CodeGuruProfiler::ProfilingGroup -package codeguruprofiler ../aws/codeguruprofiler/profiling_group_plural_data_source_gen.go ../aws/codeguruprofiler/profiling_group_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_codestarconnections_connections -cftype AWS::CodeStarConnections::Connection -package codestarconnections ../aws/codestarconnections/connection_plural_data_source_gen.go ../aws/codestarconnections/connection_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_config_aggregation_authorizations -cftype AWS::Config::AggregationAuthorization -package config ../aws/config/aggregation_authorization_plural_data_source_gen.go ../aws/config/aggregation_authorization_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_config_configuration_aggregators -cftype AWS::Config::ConfigurationAggregator -package config ../aws/config/configuration_aggregator_plural_data_source_gen.go ../aws/config/configuration_aggregator_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_config_conformance_packs -cftype AWS::Config::ConformancePack -package config ../aws/config/conformance_pack_plural_data_source_gen.go ../aws/config/conformance_pack_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_config_organization_conformance_packs -cftype AWS::Config::OrganizationConformancePack -package config ../aws/config/organization_conformance_pack_plural_data_source_gen.go ../aws/config/organization_conformance_pack_plural_data_source_gen_test.go
@@ -69,6 +73,7 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_connects -cftype AWS::EC2::TransitGatewayConnect -package ec2 ../aws/ec2/transit_gateway_connect_plural_data_source_gen.go ../aws/ec2/transit_gateway_connect_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_multicast_domains -cftype AWS::EC2::TransitGatewayMulticastDomain -package ec2 ../aws/ec2/transit_gateway_multicast_domain_plural_data_source_gen.go ../aws/ec2/transit_gateway_multicast_domain_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_peering_attachments -cftype AWS::EC2::TransitGatewayPeeringAttachment -package ec2 ../aws/ec2/transit_gateway_peering_attachment_plural_data_source_gen.go ../aws/ec2/transit_gateway_peering_attachment_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachments -cftype AWS::EC2::TransitGatewayVpcAttachment -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ecr_registry_policies -cftype AWS::ECR::RegistryPolicy -package ecr ../aws/ecr/registry_policy_plural_data_source_gen.go ../aws/ecr/registry_policy_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ecr_replication_configurations -cftype AWS::ECR::ReplicationConfiguration -package ecr ../aws/ecr/replication_configuration_plural_data_source_gen.go ../aws/ecr/replication_configuration_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ecr_repositories -cftype AWS::ECR::Repository -package ecr ../aws/ecr/repository_plural_data_source_gen.go ../aws/ecr/repository_plural_data_source_gen_test.go
@@ -101,9 +106,9 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_registries -cftype AWS::Glue::Registry -package glue ../aws/glue/registry_plural_data_source_gen.go ../aws/glue/registry_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_glue_schemas -cftype AWS::Glue::Schema -package glue ../aws/glue/schema_plural_data_source_gen.go ../aws/glue/schema_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_greengrassv2_component_versions -cftype AWS::GreengrassV2::ComponentVersion -package greengrassv2 ../aws/greengrassv2/component_version_plural_data_source_gen.go ../aws/greengrassv2/component_version_plural_data_source_gen_test.go
-//go:generate go run generators/plural-data-source/main.go -data-source awscc_groundstation_configs -cftype AWS::GroundStation::Config -package groundstation ../aws/groundstation/config_plural_data_source_gen.go ../aws/groundstation/config_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_groundstation_dataflow_endpoint_groups -cftype AWS::GroundStation::DataflowEndpointGroup -package groundstation ../aws/groundstation/dataflow_endpoint_group_plural_data_source_gen.go ../aws/groundstation/dataflow_endpoint_group_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_groundstation_mission_profiles -cftype AWS::GroundStation::MissionProfile -package groundstation ../aws/groundstation/mission_profile_plural_data_source_gen.go ../aws/groundstation/mission_profile_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_healthlake_fhir_datastores -cftype AWS::HealthLake::FHIRDatastore -package healthlake ../aws/healthlake/fhir_datastore_plural_data_source_gen.go ../aws/healthlake/fhir_datastore_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iam_oidc_providers -cftype AWS::IAM::OIDCProvider -package iam ../aws/iam/oidc_provider_plural_data_source_gen.go ../aws/iam/oidc_provider_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iam_saml_providers -cftype AWS::IAM::SAMLProvider -package iam ../aws/iam/saml_provider_plural_data_source_gen.go ../aws/iam/saml_provider_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iam_server_certificates -cftype AWS::IAM::ServerCertificate -package iam ../aws/iam/server_certificate_plural_data_source_gen.go ../aws/iam/server_certificate_plural_data_source_gen_test.go
@@ -123,6 +128,7 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_custom_metrics -cftype AWS::IoT::CustomMetric -package iot ../aws/iot/custom_metric_plural_data_source_gen.go ../aws/iot/custom_metric_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_dimensions -cftype AWS::IoT::Dimension -package iot ../aws/iot/dimension_plural_data_source_gen.go ../aws/iot/dimension_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_domain_configurations -cftype AWS::IoT::DomainConfiguration -package iot ../aws/iot/domain_configuration_plural_data_source_gen.go ../aws/iot/domain_configuration_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_fleet_metrics -cftype AWS::IoT::FleetMetric -package iot ../aws/iot/fleet_metric_plural_data_source_gen.go ../aws/iot/fleet_metric_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_mitigation_actions -cftype AWS::IoT::MitigationAction -package iot ../aws/iot/mitigation_action_plural_data_source_gen.go ../aws/iot/mitigation_action_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_provisioning_templates -cftype AWS::IoT::ProvisioningTemplate -package iot ../aws/iot/provisioning_template_plural_data_source_gen.go ../aws/iot/provisioning_template_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_iot_scheduled_audits -cftype AWS::IoT::ScheduledAudit -package iot ../aws/iot/scheduled_audit_plural_data_source_gen.go ../aws/iot/scheduled_audit_plural_data_source_gen_test.go
@@ -170,12 +176,13 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_networkfirewall_rule_groups -cftype AWS::NetworkFirewall::RuleGroup -package networkfirewall ../aws/networkfirewall/rule_group_plural_data_source_gen.go ../aws/networkfirewall/rule_group_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_networkmanager_global_networks -cftype AWS::NetworkManager::GlobalNetwork -package networkmanager ../aws/networkmanager/global_network_plural_data_source_gen.go ../aws/networkmanager/global_network_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_nimblestudio_studios -cftype AWS::NimbleStudio::Studio -package nimblestudio ../aws/nimblestudio/studio_plural_data_source_gen.go ../aws/nimblestudio/studio_plural_data_source_gen_test.go
-//go:generate go run generators/plural-data-source/main.go -data-source awscc_opsworkscm_servers -cftype AWS::OpsWorksCM::Server -package opsworkscm ../aws/opsworkscm/server_plural_data_source_gen.go ../aws/opsworkscm/server_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_rds_db_proxies -cftype AWS::RDS::DBProxy -package rds ../aws/rds/db_proxy_plural_data_source_gen.go ../aws/rds/db_proxy_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_rds_db_proxy_endpoints -cftype AWS::RDS::DBProxyEndpoint -package rds ../aws/rds/db_proxy_endpoint_plural_data_source_gen.go ../aws/rds/db_proxy_endpoint_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_rds_global_clusters -cftype AWS::RDS::GlobalCluster -package rds ../aws/rds/global_cluster_plural_data_source_gen.go ../aws/rds/global_cluster_plural_data_source_gen_test.go
-//go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_clusters -cftype AWS::Redshift::Cluster -package redshift ../aws/redshift/cluster_plural_data_source_gen.go ../aws/redshift/cluster_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_resourcegroups_groups -cftype AWS::ResourceGroups::Group -package resourcegroups ../aws/resourcegroups/group_plural_data_source_gen.go ../aws/resourcegroups/group_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_robomaker_fleets -cftype AWS::RoboMaker::Fleet -package robomaker ../aws/robomaker/fleet_plural_data_source_gen.go ../aws/robomaker/fleet_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_robomaker_robots -cftype AWS::RoboMaker::Robot -package robomaker ../aws/robomaker/robot_plural_data_source_gen.go ../aws/robomaker/robot_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_robomaker_simulation_applications -cftype AWS::RoboMaker::SimulationApplication -package robomaker ../aws/robomaker/simulation_application_plural_data_source_gen.go ../aws/robomaker/simulation_application_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_route53_health_checks -cftype AWS::Route53::HealthCheck -package route53 ../aws/route53/health_check_plural_data_source_gen.go ../aws/route53/health_check_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_route53_hosted_zones -cftype AWS::Route53::HostedZone -package route53 ../aws/route53/hosted_zone_plural_data_source_gen.go ../aws/route53/hosted_zone_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_route53recoverycontrol_clusters -cftype AWS::Route53RecoveryControl::Cluster -package route53recoverycontrol ../aws/route53recoverycontrol/cluster_plural_data_source_gen.go ../aws/route53recoverycontrol/cluster_plural_data_source_gen_test.go
@@ -187,9 +194,9 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_route53resolver_resolver_query_logging_configs -cftype AWS::Route53Resolver::ResolverQueryLoggingConfig -package route53resolver ../aws/route53resolver/resolver_query_logging_config_plural_data_source_gen.go ../aws/route53resolver/resolver_query_logging_config_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_route53resolver_resolver_query_logging_config_associations -cftype AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation -package route53resolver ../aws/route53resolver/resolver_query_logging_config_association_plural_data_source_gen.go ../aws/route53resolver/resolver_query_logging_config_association_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_s3_access_points -cftype AWS::S3::AccessPoint -package s3 ../aws/s3/access_point_plural_data_source_gen.go ../aws/s3/access_point_plural_data_source_gen_test.go
+//go:generate go run generators/plural-data-source/main.go -data-source awscc_s3_multi_region_access_points -cftype AWS::S3::MultiRegionAccessPoint -package s3 ../aws/s3/multi_region_access_point_plural_data_source_gen.go ../aws/s3/multi_region_access_point_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_s3_storage_lenses -cftype AWS::S3::StorageLens -package s3 ../aws/s3/storage_lens_plural_data_source_gen.go ../aws/s3/storage_lens_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_s3objectlambda_access_points -cftype AWS::S3ObjectLambda::AccessPoint -package s3objectlambda ../aws/s3objectlambda/access_point_plural_data_source_gen.go ../aws/s3objectlambda/access_point_plural_data_source_gen_test.go
-//go:generate go run generators/plural-data-source/main.go -data-source awscc_s3outposts_endpoints -cftype AWS::S3Outposts::Endpoint -package s3outposts ../aws/s3outposts/endpoint_plural_data_source_gen.go ../aws/s3outposts/endpoint_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ses_configuration_sets -cftype AWS::SES::ConfigurationSet -package ses ../aws/ses/configuration_set_plural_data_source_gen.go ../aws/ses/configuration_set_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ses_contact_lists -cftype AWS::SES::ContactList -package ses ../aws/ses/contact_list_plural_data_source_gen.go ../aws/ses/contact_list_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_ssm_resource_data_syncs -cftype AWS::SSM::ResourceDataSync -package ssm ../aws/ssm/resource_data_sync_plural_data_source_gen.go ../aws/ssm/resource_data_sync_plural_data_source_gen_test.go
@@ -207,7 +214,6 @@
//go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_user_profiles -cftype AWS::SageMaker::UserProfile -package sagemaker ../aws/sagemaker/user_profile_plural_data_source_gen.go ../aws/sagemaker/user_profile_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_servicecatalog_service_actions -cftype AWS::ServiceCatalog::ServiceAction -package servicecatalog ../aws/servicecatalog/service_action_plural_data_source_gen.go ../aws/servicecatalog/service_action_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_signer_signing_profiles -cftype AWS::Signer::SigningProfile -package signer ../aws/signer/signing_profile_plural_data_source_gen.go ../aws/signer/signing_profile_plural_data_source_gen_test.go
-//go:generate go run generators/plural-data-source/main.go -data-source awscc_synthetics_canaries -cftype AWS::Synthetics::Canary -package synthetics ../aws/synthetics/canary_plural_data_source_gen.go ../aws/synthetics/canary_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_timestream_databases -cftype AWS::Timestream::Database -package timestream ../aws/timestream/database_plural_data_source_gen.go ../aws/timestream/database_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_timestream_tables -cftype AWS::Timestream::Table -package timestream ../aws/timestream/table_plural_data_source_gen.go ../aws/timestream/table_plural_data_source_gen_test.go
//go:generate go run generators/plural-data-source/main.go -data-source awscc_wafv2_logging_configurations -cftype AWS::WAFv2::LoggingConfiguration -package wafv2 ../aws/wafv2/logging_configuration_plural_data_source_gen.go ../aws/wafv2/logging_configuration_plural_data_source_gen_test.go
@@ -221,6 +227,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/appintegrations"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/applicationinsights"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/apprunner"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/aps"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/athena"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/budgets"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/cassandra"
@@ -254,6 +261,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/glue"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/greengrassv2"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/groundstation"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/healthlake"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iam"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/imagebuilder"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot"
@@ -278,24 +286,21 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkfirewall"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/networkmanager"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/nimblestudio"
- _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opsworkscm"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/rds"
- _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/redshift"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/resourcegroups"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/robomaker"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/route53"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/route53recoverycontrol"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/route53recoveryreadiness"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/route53resolver"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/s3"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/s3objectlambda"
- _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/s3outposts"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/sagemaker"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/servicecatalog"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ses"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/signer"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ssm"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ssmincidents"
- _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/synthetics"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/timestream"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/wafv2"
)
diff --git a/internal/provider/resources.go b/internal/provider/resources.go
index 94886f6c45..cd97f776f4 100644
--- a/internal/provider/resources.go
+++ b/internal/provider/resources.go
@@ -2,10 +2,13 @@
//go:generate go run generators/resource/main.go -resource awscc_acmpca_certificate -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_Certificate.json -package acmpca -- ../aws/acmpca/certificate_resource_gen.go ../aws/acmpca/certificate_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_acmpca_certificate_authority -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json -package acmpca -- ../aws/acmpca/certificate_authority_resource_gen.go ../aws/acmpca/certificate_authority_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_acmpca_certificate_authority_activation -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthorityActivation.json -package acmpca -- ../aws/acmpca/certificate_authority_activation_resource_gen.go ../aws/acmpca/certificate_authority_activation_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_acmpca_permission -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_Permission.json -package acmpca -- ../aws/acmpca/permission_resource_gen.go ../aws/acmpca/permission_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_aps_workspace -cfschema ../service/cloudformation/schemas/AWS_APS_Workspace.json -package aps -- ../aws/aps/workspace_resource_gen.go ../aws/aps/workspace_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_accessanalyzer_analyzer -cfschema ../service/cloudformation/schemas/AWS_AccessAnalyzer_Analyzer.json -package accessanalyzer -- ../aws/accessanalyzer/analyzer_resource_gen.go ../aws/accessanalyzer/analyzer_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_amplify_app -cfschema ../service/cloudformation/schemas/AWS_Amplify_App.json -package amplify -- ../aws/amplify/app_resource_gen.go ../aws/amplify/app_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_amplify_branch -cfschema ../service/cloudformation/schemas/AWS_Amplify_Branch.json -package amplify -- ../aws/amplify/branch_resource_gen.go ../aws/amplify/branch_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_amplify_domain -cfschema ../service/cloudformation/schemas/AWS_Amplify_Domain.json -package amplify -- ../aws/amplify/domain_resource_gen.go ../aws/amplify/domain_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_apigateway_account -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Account.json -package apigateway -- ../aws/apigateway/account_resource_gen.go ../aws/apigateway/account_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_api_key -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_ApiKey.json -package apigateway -- ../aws/apigateway/api_key_resource_gen.go ../aws/apigateway/api_key_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_client_certificate -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_ClientCertificate.json -package apigateway -- ../aws/apigateway/client_certificate_resource_gen.go ../aws/apigateway/client_certificate_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_documentation_version -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_DocumentationVersion.json -package apigateway -- ../aws/apigateway/documentation_version_resource_gen.go ../aws/apigateway/documentation_version_resource_gen_test.go
@@ -13,6 +16,7 @@
//go:generate go run generators/resource/main.go -resource awscc_apigateway_model -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Model.json -package apigateway -- ../aws/apigateway/model_resource_gen.go ../aws/apigateway/model_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_request_validator -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_RequestValidator.json -package apigateway -- ../aws/apigateway/request_validator_resource_gen.go ../aws/apigateway/request_validator_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_resource -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Resource.json -package apigateway -- ../aws/apigateway/resource_resource_gen.go ../aws/apigateway/resource_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_apigateway_usage_plan -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_UsagePlan.json -package apigateway -- ../aws/apigateway/usage_plan_resource_gen.go ../aws/apigateway/usage_plan_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_apigateway_usage_plan_key -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_UsagePlanKey.json -package apigateway -- ../aws/apigateway/usage_plan_key_resource_gen.go ../aws/apigateway/usage_plan_key_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_appflow_connector_profile -cfschema ../service/cloudformation/schemas/AWS_AppFlow_ConnectorProfile.json -package appflow -- ../aws/appflow/connector_profile_resource_gen.go ../aws/appflow/connector_profile_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_appflow_flow -cfschema ../service/cloudformation/schemas/AWS_AppFlow_Flow.json -package appflow -- ../aws/appflow/flow_resource_gen.go ../aws/appflow/flow_resource_gen_test.go
@@ -59,6 +63,7 @@
//go:generate go run generators/resource/main.go -resource awscc_codegurureviewer_repository_association -cfschema ../service/cloudformation/schemas/AWS_CodeGuruReviewer_RepositoryAssociation.json -package codegurureviewer -- ../aws/codegurureviewer/repository_association_resource_gen.go ../aws/codegurureviewer/repository_association_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_codestarconnections_connection -cfschema ../service/cloudformation/schemas/AWS_CodeStarConnections_Connection.json -package codestarconnections -- ../aws/codestarconnections/connection_resource_gen.go ../aws/codestarconnections/connection_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_codestarnotifications_notification_rule -cfschema ../service/cloudformation/schemas/AWS_CodeStarNotifications_NotificationRule.json -package codestarnotifications -- ../aws/codestarnotifications/notification_rule_resource_gen.go ../aws/codestarnotifications/notification_rule_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_config_aggregation_authorization -cfschema ../service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json -package config -- ../aws/config/aggregation_authorization_resource_gen.go ../aws/config/aggregation_authorization_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_config_configuration_aggregator -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json -package config -- ../aws/config/configuration_aggregator_resource_gen.go ../aws/config/configuration_aggregator_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config -- ../aws/config/conformance_pack_resource_gen.go ../aws/config/conformance_pack_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config -- ../aws/config/organization_conformance_pack_resource_gen.go ../aws/config/organization_conformance_pack_resource_gen_test.go
@@ -104,6 +109,7 @@
//go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_multicast_group_member -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayMulticastGroupMember.json -package ec2 -- ../aws/ec2/transit_gateway_multicast_group_member_resource_gen.go ../aws/ec2/transit_gateway_multicast_group_member_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_multicast_group_source -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayMulticastGroupSource.json -package ec2 -- ../aws/ec2/transit_gateway_multicast_group_source_resource_gen.go ../aws/ec2/transit_gateway_multicast_group_source_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_peering_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayPeeringAttachment.json -package ec2 -- ../aws/ec2/transit_gateway_peering_attachment_resource_gen.go ../aws/ec2/transit_gateway_peering_attachment_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 -- ../aws/ec2/transit_gateway_vpc_attachment_resource_gen.go ../aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_ecr_registry_policy -cfschema ../service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json -package ecr -- ../aws/ecr/registry_policy_resource_gen.go ../aws/ecr/registry_policy_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_ecr_replication_configuration -cfschema ../service/cloudformation/schemas/AWS_ECR_ReplicationConfiguration.json -package ecr -- ../aws/ecr/replication_configuration_resource_gen.go ../aws/ecr/replication_configuration_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_ecr_repository -cfschema ../service/cloudformation/schemas/AWS_ECR_Repository.json -package ecr -- ../aws/ecr/repository_resource_gen.go ../aws/ecr/repository_resource_gen_test.go
@@ -116,6 +122,7 @@
//go:generate go run generators/resource/main.go -resource awscc_ecs_task_set -cfschema ../service/cloudformation/schemas/AWS_ECS_TaskSet.json -package ecs -- ../aws/ecs/task_set_resource_gen.go ../aws/ecs/task_set_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_efs_access_point -cfschema ../service/cloudformation/schemas/AWS_EFS_AccessPoint.json -package efs -- ../aws/efs/access_point_resource_gen.go ../aws/efs/access_point_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_efs_file_system -cfschema ../service/cloudformation/schemas/AWS_EFS_FileSystem.json -package efs -- ../aws/efs/file_system_resource_gen.go ../aws/efs/file_system_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_efs_mount_target -cfschema ../service/cloudformation/schemas/AWS_EFS_MountTarget.json -package efs -- ../aws/efs/mount_target_resource_gen.go ../aws/efs/mount_target_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_eks_addon -cfschema ../service/cloudformation/schemas/AWS_EKS_Addon.json -package eks -- ../aws/eks/addon_resource_gen.go ../aws/eks/addon_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_eks_fargate_profile -cfschema ../service/cloudformation/schemas/AWS_EKS_FargateProfile.json -package eks -- ../aws/eks/fargate_profile_resource_gen.go ../aws/eks/fargate_profile_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_emr_studio -cfschema ../service/cloudformation/schemas/AWS_EMR_Studio.json -package emr -- ../aws/emr/studio_resource_gen.go ../aws/emr/studio_resource_gen_test.go
@@ -150,6 +157,7 @@
//go:generate go run generators/resource/main.go -resource awscc_greengrassv2_component_version -cfschema ../service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json -package greengrassv2 -- ../aws/greengrassv2/component_version_resource_gen.go ../aws/greengrassv2/component_version_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_groundstation_dataflow_endpoint_group -cfschema ../service/cloudformation/schemas/AWS_GroundStation_DataflowEndpointGroup.json -package groundstation -- ../aws/groundstation/dataflow_endpoint_group_resource_gen.go ../aws/groundstation/dataflow_endpoint_group_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_groundstation_mission_profile -cfschema ../service/cloudformation/schemas/AWS_GroundStation_MissionProfile.json -package groundstation -- ../aws/groundstation/mission_profile_resource_gen.go ../aws/groundstation/mission_profile_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_healthlake_fhir_datastore -cfschema ../service/cloudformation/schemas/AWS_HealthLake_FHIRDatastore.json -package healthlake -- ../aws/healthlake/fhir_datastore_resource_gen.go ../aws/healthlake/fhir_datastore_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iam_oidc_provider -cfschema ../service/cloudformation/schemas/AWS_IAM_OIDCProvider.json -package iam -- ../aws/iam/oidc_provider_resource_gen.go ../aws/iam/oidc_provider_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iam_saml_provider -cfschema ../service/cloudformation/schemas/AWS_IAM_SAMLProvider.json -package iam -- ../aws/iam/saml_provider_resource_gen.go ../aws/iam/saml_provider_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iam_server_certificate -cfschema ../service/cloudformation/schemas/AWS_IAM_ServerCertificate.json -package iam -- ../aws/iam/server_certificate_resource_gen.go ../aws/iam/server_certificate_resource_gen_test.go
@@ -171,6 +179,7 @@
//go:generate go run generators/resource/main.go -resource awscc_iot_custom_metric -cfschema ../service/cloudformation/schemas/AWS_IoT_CustomMetric.json -package iot -- ../aws/iot/custom_metric_resource_gen.go ../aws/iot/custom_metric_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iot_dimension -cfschema ../service/cloudformation/schemas/AWS_IoT_Dimension.json -package iot -- ../aws/iot/dimension_resource_gen.go ../aws/iot/dimension_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iot_domain_configuration -cfschema ../service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json -package iot -- ../aws/iot/domain_configuration_resource_gen.go ../aws/iot/domain_configuration_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_iot_fleet_metric -cfschema ../service/cloudformation/schemas/AWS_IoT_FleetMetric.json -package iot -- ../aws/iot/fleet_metric_resource_gen.go ../aws/iot/fleet_metric_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iot_mitigation_action -cfschema ../service/cloudformation/schemas/AWS_IoT_MitigationAction.json -package iot -- ../aws/iot/mitigation_action_resource_gen.go ../aws/iot/mitigation_action_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iot_provisioning_template -cfschema ../service/cloudformation/schemas/AWS_IoT_ProvisioningTemplate.json -package iot -- ../aws/iot/provisioning_template_resource_gen.go ../aws/iot/provisioning_template_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_iot_scheduled_audit -cfschema ../service/cloudformation/schemas/AWS_IoT_ScheduledAudit.json -package iot -- ../aws/iot/scheduled_audit_resource_gen.go ../aws/iot/scheduled_audit_resource_gen_test.go
@@ -259,6 +268,10 @@
//go:generate go run generators/resource/main.go -resource awscc_rds_db_proxy_target_group -cfschema ../service/cloudformation/schemas/AWS_RDS_DBProxyTargetGroup.json -package rds -- ../aws/rds/db_proxy_target_group_resource_gen.go ../aws/rds/db_proxy_target_group_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_rds_global_cluster -cfschema ../service/cloudformation/schemas/AWS_RDS_GlobalCluster.json -package rds -- ../aws/rds/global_cluster_resource_gen.go ../aws/rds/global_cluster_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_resourcegroups_group -cfschema ../service/cloudformation/schemas/AWS_ResourceGroups_Group.json -package resourcegroups -- ../aws/resourcegroups/group_resource_gen.go ../aws/resourcegroups/group_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_robomaker_fleet -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_Fleet.json -package robomaker -- ../aws/robomaker/fleet_resource_gen.go ../aws/robomaker/fleet_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_robomaker_robot -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_Robot.json -package robomaker -- ../aws/robomaker/robot_resource_gen.go ../aws/robomaker/robot_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_robomaker_robot_application_version -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_RobotApplicationVersion.json -package robomaker -- ../aws/robomaker/robot_application_version_resource_gen.go ../aws/robomaker/robot_application_version_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_robomaker_simulation_application -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_SimulationApplication.json -package robomaker -- ../aws/robomaker/simulation_application_resource_gen.go ../aws/robomaker/simulation_application_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_robomaker_simulation_application_version -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_SimulationApplicationVersion.json -package robomaker -- ../aws/robomaker/simulation_application_version_resource_gen.go ../aws/robomaker/simulation_application_version_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_route53_dnssec -cfschema ../service/cloudformation/schemas/AWS_Route53_DNSSEC.json -package route53 -- ../aws/route53/dnssec_resource_gen.go ../aws/route53/dnssec_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_route53_health_check -cfschema ../service/cloudformation/schemas/AWS_Route53_HealthCheck.json -package route53 -- ../aws/route53/health_check_resource_gen.go ../aws/route53/health_check_resource_gen_test.go
@@ -279,6 +292,8 @@
//go:generate go run generators/resource/main.go -resource awscc_route53resolver_resolver_query_logging_config -cfschema ../service/cloudformation/schemas/AWS_Route53Resolver_ResolverQueryLoggingConfig.json -package route53resolver -- ../aws/route53resolver/resolver_query_logging_config_resource_gen.go ../aws/route53resolver/resolver_query_logging_config_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_route53resolver_resolver_query_logging_config_association -cfschema ../service/cloudformation/schemas/AWS_Route53Resolver_ResolverQueryLoggingConfigAssociation.json -package route53resolver -- ../aws/route53resolver/resolver_query_logging_config_association_resource_gen.go ../aws/route53resolver/resolver_query_logging_config_association_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_s3_access_point -cfschema ../service/cloudformation/schemas/AWS_S3_AccessPoint.json -package s3 -- ../aws/s3/access_point_resource_gen.go ../aws/s3/access_point_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_s3_multi_region_access_point -cfschema ../service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json -package s3 -- ../aws/s3/multi_region_access_point_resource_gen.go ../aws/s3/multi_region_access_point_resource_gen_test.go
+//go:generate go run generators/resource/main.go -resource awscc_s3_multi_region_access_point_policy -cfschema ../service/cloudformation/schemas/AWS_S3_MultiRegionAccessPointPolicy.json -package s3 -- ../aws/s3/multi_region_access_point_policy_resource_gen.go ../aws/s3/multi_region_access_point_policy_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_s3_storage_lens -cfschema ../service/cloudformation/schemas/AWS_S3_StorageLens.json -package s3 -- ../aws/s3/storage_lens_resource_gen.go ../aws/s3/storage_lens_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_s3objectlambda_access_point -cfschema ../service/cloudformation/schemas/AWS_S3ObjectLambda_AccessPoint.json -package s3objectlambda -- ../aws/s3objectlambda/access_point_resource_gen.go ../aws/s3objectlambda/access_point_resource_gen_test.go
//go:generate go run generators/resource/main.go -resource awscc_s3objectlambda_access_point_policy -cfschema ../service/cloudformation/schemas/AWS_S3ObjectLambda_AccessPointPolicy.json -package s3objectlambda -- ../aws/s3objectlambda/access_point_policy_resource_gen.go ../aws/s3objectlambda/access_point_policy_resource_gen_test.go
@@ -344,6 +359,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/appintegrations"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/applicationinsights"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/apprunner"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/aps"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/athena"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/auditmanager"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/autoscaling"
@@ -389,6 +405,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/glue"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/greengrassv2"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/groundstation"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/healthlake"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iam"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/imagebuilder"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot"
diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go
index fd83cd0e5c..5d8875fabf 100644
--- a/internal/provider/singular_data_sources.go
+++ b/internal/provider/singular_data_sources.go
@@ -2,10 +2,13 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_acmpca_certificate -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_Certificate.json -package acmpca ../aws/acmpca/certificate_singular_data_source_gen.go ../aws/acmpca/certificate_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_acmpca_certificate_authority -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthority.json -package acmpca ../aws/acmpca/certificate_authority_singular_data_source_gen.go ../aws/acmpca/certificate_authority_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_acmpca_certificate_authority_activation -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_CertificateAuthorityActivation.json -package acmpca ../aws/acmpca/certificate_authority_activation_singular_data_source_gen.go ../aws/acmpca/certificate_authority_activation_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_acmpca_permission -cfschema ../service/cloudformation/schemas/AWS_ACMPCA_Permission.json -package acmpca ../aws/acmpca/permission_singular_data_source_gen.go ../aws/acmpca/permission_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_aps_workspace -cfschema ../service/cloudformation/schemas/AWS_APS_Workspace.json -package aps ../aws/aps/workspace_singular_data_source_gen.go ../aws/aps/workspace_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_accessanalyzer_analyzer -cfschema ../service/cloudformation/schemas/AWS_AccessAnalyzer_Analyzer.json -package accessanalyzer ../aws/accessanalyzer/analyzer_singular_data_source_gen.go ../aws/accessanalyzer/analyzer_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_amplify_app -cfschema ../service/cloudformation/schemas/AWS_Amplify_App.json -package amplify ../aws/amplify/app_singular_data_source_gen.go ../aws/amplify/app_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_amplify_branch -cfschema ../service/cloudformation/schemas/AWS_Amplify_Branch.json -package amplify ../aws/amplify/branch_singular_data_source_gen.go ../aws/amplify/branch_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_amplify_domain -cfschema ../service/cloudformation/schemas/AWS_Amplify_Domain.json -package amplify ../aws/amplify/domain_singular_data_source_gen.go ../aws/amplify/domain_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_account -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Account.json -package apigateway ../aws/apigateway/account_singular_data_source_gen.go ../aws/apigateway/account_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_api_key -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_ApiKey.json -package apigateway ../aws/apigateway/api_key_singular_data_source_gen.go ../aws/apigateway/api_key_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_client_certificate -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_ClientCertificate.json -package apigateway ../aws/apigateway/client_certificate_singular_data_source_gen.go ../aws/apigateway/client_certificate_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_documentation_version -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_DocumentationVersion.json -package apigateway ../aws/apigateway/documentation_version_singular_data_source_gen.go ../aws/apigateway/documentation_version_singular_data_source_gen_test.go
@@ -13,6 +16,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_model -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Model.json -package apigateway ../aws/apigateway/model_singular_data_source_gen.go ../aws/apigateway/model_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_request_validator -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_RequestValidator.json -package apigateway ../aws/apigateway/request_validator_singular_data_source_gen.go ../aws/apigateway/request_validator_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_resource -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_Resource.json -package apigateway ../aws/apigateway/resource_singular_data_source_gen.go ../aws/apigateway/resource_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_usage_plan -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_UsagePlan.json -package apigateway ../aws/apigateway/usage_plan_singular_data_source_gen.go ../aws/apigateway/usage_plan_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_apigateway_usage_plan_key -cfschema ../service/cloudformation/schemas/AWS_ApiGateway_UsagePlanKey.json -package apigateway ../aws/apigateway/usage_plan_key_singular_data_source_gen.go ../aws/apigateway/usage_plan_key_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_appflow_connector_profile -cfschema ../service/cloudformation/schemas/AWS_AppFlow_ConnectorProfile.json -package appflow ../aws/appflow/connector_profile_singular_data_source_gen.go ../aws/appflow/connector_profile_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_appflow_flow -cfschema ../service/cloudformation/schemas/AWS_AppFlow_Flow.json -package appflow ../aws/appflow/flow_singular_data_source_gen.go ../aws/appflow/flow_singular_data_source_gen_test.go
@@ -59,6 +63,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_codegurureviewer_repository_association -cfschema ../service/cloudformation/schemas/AWS_CodeGuruReviewer_RepositoryAssociation.json -package codegurureviewer ../aws/codegurureviewer/repository_association_singular_data_source_gen.go ../aws/codegurureviewer/repository_association_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_codestarconnections_connection -cfschema ../service/cloudformation/schemas/AWS_CodeStarConnections_Connection.json -package codestarconnections ../aws/codestarconnections/connection_singular_data_source_gen.go ../aws/codestarconnections/connection_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_codestarnotifications_notification_rule -cfschema ../service/cloudformation/schemas/AWS_CodeStarNotifications_NotificationRule.json -package codestarnotifications ../aws/codestarnotifications/notification_rule_singular_data_source_gen.go ../aws/codestarnotifications/notification_rule_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_config_aggregation_authorization -cfschema ../service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json -package config ../aws/config/aggregation_authorization_singular_data_source_gen.go ../aws/config/aggregation_authorization_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_config_configuration_aggregator -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json -package config ../aws/config/configuration_aggregator_singular_data_source_gen.go ../aws/config/configuration_aggregator_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config ../aws/config/conformance_pack_singular_data_source_gen.go ../aws/config/conformance_pack_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config ../aws/config/organization_conformance_pack_singular_data_source_gen.go ../aws/config/organization_conformance_pack_singular_data_source_gen_test.go
@@ -104,6 +109,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_multicast_group_member -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayMulticastGroupMember.json -package ec2 ../aws/ec2/transit_gateway_multicast_group_member_singular_data_source_gen.go ../aws/ec2/transit_gateway_multicast_group_member_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_multicast_group_source -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayMulticastGroupSource.json -package ec2 ../aws/ec2/transit_gateway_multicast_group_source_singular_data_source_gen.go ../aws/ec2/transit_gateway_multicast_group_source_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_peering_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayPeeringAttachment.json -package ec2 ../aws/ec2/transit_gateway_peering_attachment_singular_data_source_gen.go ../aws/ec2/transit_gateway_peering_attachment_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ecr_registry_policy -cfschema ../service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json -package ecr ../aws/ecr/registry_policy_singular_data_source_gen.go ../aws/ecr/registry_policy_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ecr_replication_configuration -cfschema ../service/cloudformation/schemas/AWS_ECR_ReplicationConfiguration.json -package ecr ../aws/ecr/replication_configuration_singular_data_source_gen.go ../aws/ecr/replication_configuration_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ecr_repository -cfschema ../service/cloudformation/schemas/AWS_ECR_Repository.json -package ecr ../aws/ecr/repository_singular_data_source_gen.go ../aws/ecr/repository_singular_data_source_gen_test.go
@@ -116,6 +122,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_ecs_task_set -cfschema ../service/cloudformation/schemas/AWS_ECS_TaskSet.json -package ecs ../aws/ecs/task_set_singular_data_source_gen.go ../aws/ecs/task_set_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_efs_access_point -cfschema ../service/cloudformation/schemas/AWS_EFS_AccessPoint.json -package efs ../aws/efs/access_point_singular_data_source_gen.go ../aws/efs/access_point_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_efs_file_system -cfschema ../service/cloudformation/schemas/AWS_EFS_FileSystem.json -package efs ../aws/efs/file_system_singular_data_source_gen.go ../aws/efs/file_system_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_efs_mount_target -cfschema ../service/cloudformation/schemas/AWS_EFS_MountTarget.json -package efs ../aws/efs/mount_target_singular_data_source_gen.go ../aws/efs/mount_target_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_eks_addon -cfschema ../service/cloudformation/schemas/AWS_EKS_Addon.json -package eks ../aws/eks/addon_singular_data_source_gen.go ../aws/eks/addon_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_eks_fargate_profile -cfschema ../service/cloudformation/schemas/AWS_EKS_FargateProfile.json -package eks ../aws/eks/fargate_profile_singular_data_source_gen.go ../aws/eks/fargate_profile_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_emr_studio -cfschema ../service/cloudformation/schemas/AWS_EMR_Studio.json -package emr ../aws/emr/studio_singular_data_source_gen.go ../aws/emr/studio_singular_data_source_gen_test.go
@@ -150,6 +157,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_greengrassv2_component_version -cfschema ../service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json -package greengrassv2 ../aws/greengrassv2/component_version_singular_data_source_gen.go ../aws/greengrassv2/component_version_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_groundstation_dataflow_endpoint_group -cfschema ../service/cloudformation/schemas/AWS_GroundStation_DataflowEndpointGroup.json -package groundstation ../aws/groundstation/dataflow_endpoint_group_singular_data_source_gen.go ../aws/groundstation/dataflow_endpoint_group_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_groundstation_mission_profile -cfschema ../service/cloudformation/schemas/AWS_GroundStation_MissionProfile.json -package groundstation ../aws/groundstation/mission_profile_singular_data_source_gen.go ../aws/groundstation/mission_profile_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_healthlake_fhir_datastore -cfschema ../service/cloudformation/schemas/AWS_HealthLake_FHIRDatastore.json -package healthlake ../aws/healthlake/fhir_datastore_singular_data_source_gen.go ../aws/healthlake/fhir_datastore_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iam_oidc_provider -cfschema ../service/cloudformation/schemas/AWS_IAM_OIDCProvider.json -package iam ../aws/iam/oidc_provider_singular_data_source_gen.go ../aws/iam/oidc_provider_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iam_saml_provider -cfschema ../service/cloudformation/schemas/AWS_IAM_SAMLProvider.json -package iam ../aws/iam/saml_provider_singular_data_source_gen.go ../aws/iam/saml_provider_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iam_server_certificate -cfschema ../service/cloudformation/schemas/AWS_IAM_ServerCertificate.json -package iam ../aws/iam/server_certificate_singular_data_source_gen.go ../aws/iam/server_certificate_singular_data_source_gen_test.go
@@ -171,6 +179,7 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_custom_metric -cfschema ../service/cloudformation/schemas/AWS_IoT_CustomMetric.json -package iot ../aws/iot/custom_metric_singular_data_source_gen.go ../aws/iot/custom_metric_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_dimension -cfschema ../service/cloudformation/schemas/AWS_IoT_Dimension.json -package iot ../aws/iot/dimension_singular_data_source_gen.go ../aws/iot/dimension_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_domain_configuration -cfschema ../service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json -package iot ../aws/iot/domain_configuration_singular_data_source_gen.go ../aws/iot/domain_configuration_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_fleet_metric -cfschema ../service/cloudformation/schemas/AWS_IoT_FleetMetric.json -package iot ../aws/iot/fleet_metric_singular_data_source_gen.go ../aws/iot/fleet_metric_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_mitigation_action -cfschema ../service/cloudformation/schemas/AWS_IoT_MitigationAction.json -package iot ../aws/iot/mitigation_action_singular_data_source_gen.go ../aws/iot/mitigation_action_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_provisioning_template -cfschema ../service/cloudformation/schemas/AWS_IoT_ProvisioningTemplate.json -package iot ../aws/iot/provisioning_template_singular_data_source_gen.go ../aws/iot/provisioning_template_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_iot_scheduled_audit -cfschema ../service/cloudformation/schemas/AWS_IoT_ScheduledAudit.json -package iot ../aws/iot/scheduled_audit_singular_data_source_gen.go ../aws/iot/scheduled_audit_singular_data_source_gen_test.go
@@ -259,6 +268,10 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_rds_db_proxy_target_group -cfschema ../service/cloudformation/schemas/AWS_RDS_DBProxyTargetGroup.json -package rds ../aws/rds/db_proxy_target_group_singular_data_source_gen.go ../aws/rds/db_proxy_target_group_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_rds_global_cluster -cfschema ../service/cloudformation/schemas/AWS_RDS_GlobalCluster.json -package rds ../aws/rds/global_cluster_singular_data_source_gen.go ../aws/rds/global_cluster_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_resourcegroups_group -cfschema ../service/cloudformation/schemas/AWS_ResourceGroups_Group.json -package resourcegroups ../aws/resourcegroups/group_singular_data_source_gen.go ../aws/resourcegroups/group_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_robomaker_fleet -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_Fleet.json -package robomaker ../aws/robomaker/fleet_singular_data_source_gen.go ../aws/robomaker/fleet_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_robomaker_robot -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_Robot.json -package robomaker ../aws/robomaker/robot_singular_data_source_gen.go ../aws/robomaker/robot_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_robomaker_robot_application_version -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_RobotApplicationVersion.json -package robomaker ../aws/robomaker/robot_application_version_singular_data_source_gen.go ../aws/robomaker/robot_application_version_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_robomaker_simulation_application -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_SimulationApplication.json -package robomaker ../aws/robomaker/simulation_application_singular_data_source_gen.go ../aws/robomaker/simulation_application_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_robomaker_simulation_application_version -cfschema ../service/cloudformation/schemas/AWS_RoboMaker_SimulationApplicationVersion.json -package robomaker ../aws/robomaker/simulation_application_version_singular_data_source_gen.go ../aws/robomaker/simulation_application_version_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_dnssec -cfschema ../service/cloudformation/schemas/AWS_Route53_DNSSEC.json -package route53 ../aws/route53/dnssec_singular_data_source_gen.go ../aws/route53/dnssec_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_health_check -cfschema ../service/cloudformation/schemas/AWS_Route53_HealthCheck.json -package route53 ../aws/route53/health_check_singular_data_source_gen.go ../aws/route53/health_check_singular_data_source_gen_test.go
@@ -279,6 +292,8 @@
//go:generate go run generators/singular-data-source/main.go -data-source awscc_route53resolver_resolver_query_logging_config -cfschema ../service/cloudformation/schemas/AWS_Route53Resolver_ResolverQueryLoggingConfig.json -package route53resolver ../aws/route53resolver/resolver_query_logging_config_singular_data_source_gen.go ../aws/route53resolver/resolver_query_logging_config_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_route53resolver_resolver_query_logging_config_association -cfschema ../service/cloudformation/schemas/AWS_Route53Resolver_ResolverQueryLoggingConfigAssociation.json -package route53resolver ../aws/route53resolver/resolver_query_logging_config_association_singular_data_source_gen.go ../aws/route53resolver/resolver_query_logging_config_association_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3_access_point -cfschema ../service/cloudformation/schemas/AWS_S3_AccessPoint.json -package s3 ../aws/s3/access_point_singular_data_source_gen.go ../aws/s3/access_point_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3_multi_region_access_point -cfschema ../service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json -package s3 ../aws/s3/multi_region_access_point_singular_data_source_gen.go ../aws/s3/multi_region_access_point_singular_data_source_gen_test.go
+//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3_multi_region_access_point_policy -cfschema ../service/cloudformation/schemas/AWS_S3_MultiRegionAccessPointPolicy.json -package s3 ../aws/s3/multi_region_access_point_policy_singular_data_source_gen.go ../aws/s3/multi_region_access_point_policy_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3_storage_lens -cfschema ../service/cloudformation/schemas/AWS_S3_StorageLens.json -package s3 ../aws/s3/storage_lens_singular_data_source_gen.go ../aws/s3/storage_lens_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3objectlambda_access_point -cfschema ../service/cloudformation/schemas/AWS_S3ObjectLambda_AccessPoint.json -package s3objectlambda ../aws/s3objectlambda/access_point_singular_data_source_gen.go ../aws/s3objectlambda/access_point_singular_data_source_gen_test.go
//go:generate go run generators/singular-data-source/main.go -data-source awscc_s3objectlambda_access_point_policy -cfschema ../service/cloudformation/schemas/AWS_S3ObjectLambda_AccessPointPolicy.json -package s3objectlambda ../aws/s3objectlambda/access_point_policy_singular_data_source_gen.go ../aws/s3objectlambda/access_point_policy_singular_data_source_gen_test.go
@@ -344,6 +359,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/appintegrations"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/applicationinsights"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/apprunner"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/aps"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/athena"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/auditmanager"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/autoscaling"
@@ -389,6 +405,7 @@ import (
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/glue"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/greengrassv2"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/groundstation"
+ _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/healthlake"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iam"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/imagebuilder"
_ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iot"
diff --git a/internal/service/cloudformation/schemas/AWS_ACMPCA_Permission.json b/internal/service/cloudformation/schemas/AWS_ACMPCA_Permission.json
new file mode 100644
index 0000000000..6bc2ba0469
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_ACMPCA_Permission.json
@@ -0,0 +1,62 @@
+{
+ "typeName": "AWS::ACMPCA::Permission",
+ "description": "Permission set on private certificate authority",
+ "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html",
+ "properties": {
+ "Actions": {
+ "description":"The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.",
+ "type": "array",
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "CertificateAuthorityArn": {
+ "description": "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.",
+ "type": "string"
+ },
+ "Principal": {
+ "description": "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.",
+ "type": "string"
+ },
+ "SourceAccount": {
+ "description": "The ID of the calling account.",
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "taggable": false,
+ "required": [
+ "Actions",
+ "CertificateAuthorityArn",
+ "Principal"
+ ],
+ "createOnlyProperties": [
+ "/properties/Actions",
+ "/properties/CertificateAuthorityArn",
+ "/properties/Principal",
+ "/properties/SourceAccount"
+ ],
+ "primaryIdentifier": [
+ "/properties/CertificateAuthorityArn",
+ "/properties/Principal"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "acm-pca:CreatePermission",
+ "acm-pca:ListPermissions"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "acm-pca:ListPermissions"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "acm-pca:DeletePermission"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_APS_Workspace.json b/internal/service/cloudformation/schemas/AWS_APS_Workspace.json
new file mode 100644
index 0000000000..6cbf0067c0
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_APS_Workspace.json
@@ -0,0 +1,109 @@
+{
+ "typeName": "AWS::APS::Workspace",
+ "description": "Resource Type definition for AWS::APS::Workspace",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
+ "definitions": {
+ "Tag": {
+ "description": "A key-value pair to associate with a resource.",
+ "type": "object",
+ "properties": {
+ "Key": {
+ "type": "string",
+ "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ "minLength": 1,
+ "maxLength": 128
+ },
+ "Value": {
+ "type": "string",
+ "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ "minLength": 0,
+ "maxLength": 256
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "WorkspaceId": {
+ "description": "Required to identify a specific APS Workspace.",
+ "type": "string",
+ "pattern": "",
+ "minLength": 1,
+ "maxLength": 100
+ },
+ "Alias": {
+ "description": "AMP Workspace alias.",
+ "type": "string",
+ "minLength": 0,
+ "maxLength": 100
+ },
+ "Arn": {
+ "description": "Workspace arn.",
+ "type": "string",
+ "pattern": "",
+ "minLength": 1,
+ "maxLength": 128
+ },
+ "PrometheusEndpoint": {
+ "description": "AMP Workspace prometheus endpoint",
+ "type": "string"
+ },
+ "Tags": {
+ "description": "An array of key-value pairs to apply to this resource.",
+ "type": "array",
+ "uniqueItems": true,
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [],
+ "readOnlyProperties": [
+ "/properties/WorkspaceId",
+ "/properties/Arn",
+ "/properties/PrometheusEndpoint"
+ ],
+ "taggable": true,
+ "primaryIdentifier": [
+ "/properties/Arn"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "aps:CreateWorkspace",
+ "aps:TagResource"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "aps:DescribeWorkspace",
+ "aps:ListTagsForResource"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "aps:UpdateWorkspaceAlias",
+ "aps:TagResource",
+ "aps:UntagResource",
+ "aps:ListTagsForResource"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "aps:DeleteWorkspace"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "aps:ListWorkspaces",
+ "aps:ListTagsForResource"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_Account.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_Account.json
new file mode 100644
index 0000000000..5c1a4e4543
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_Account.json
@@ -0,0 +1,43 @@
+{
+ "typeName" : "AWS::ApiGateway::Account",
+ "description" : "Resource Type definition for AWS::ApiGateway::Account",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway",
+ "additionalProperties" : false,
+ "properties" : {
+ "Id" : {
+ "description": "Primary identifier which is manually generated.",
+ "type" : "string"
+ },
+ "CloudWatchRoleArn" : {
+ "description": "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
+ "type" : "string"
+ }
+ },
+ "primaryIdentifier" : [ "/properties/Id" ],
+ "readOnlyProperties" : [ "/properties/Id" ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "apigateway:PATCH",
+ "iam:GetRole",
+ "iam:PassRole"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "apigateway:GET"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "apigateway:PATCH",
+ "iam:GetRole",
+ "iam:PassRole"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_UsagePlan.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_UsagePlan.json
new file mode 100644
index 0000000000..14bfeeb2e4
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_UsagePlan.json
@@ -0,0 +1,167 @@
+{
+ "typeName": "AWS::ApiGateway::UsagePlan",
+ "description": "Resource Type definition for AWS::ApiGateway::UsagePlan",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git",
+ "additionalProperties": false,
+ "properties": {
+ "Id": {
+ "type": "string",
+ "description": "The provider-assigned unique ID for this managed resource."
+ },
+ "ApiStages": {
+ "type": "array",
+ "description": "The API stages to associate with this usage plan.",
+ "uniqueItems": true,
+ "items": {
+ "$ref": "#/definitions/ApiStage"
+ }
+ },
+ "Description": {
+ "type": "string",
+ "description": "A description of the usage plan."
+ },
+ "Quota": {
+ "$ref": "#/definitions/QuotaSettings",
+ "description": "Configures the number of requests that users can make within a given interval."
+ },
+ "Tags": {
+ "type": "array",
+ "description": "An array of arbitrary tags (key-value pairs) to associate with the usage plan.",
+ "insertionOrder": false,
+ "uniqueItems": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ },
+ "Throttle": {
+ "$ref": "#/definitions/ThrottleSettings",
+ "description": "Configures the overall request rate (average requests per second) and burst capacity."
+ },
+ "UsagePlanName": {
+ "type": "string",
+ "description": "A name for the usage plan."
+ }
+ },
+ "definitions": {
+ "ApiStage": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "ApiId": {
+ "type": "string",
+ "description": "The ID of an API that is in the specified Stage property that you want to associate with the usage plan."
+ },
+ "Stage": {
+ "type": "string",
+ "description": "The name of the stage to associate with the usage plan."
+ },
+ "Throttle": {
+ "type": "object",
+ "description": "Map containing method-level throttling information for an API stage in a usage plan. The key for the map is the path and method for which to configure custom throttling, for example, '/pets/GET'. Duplicates are not allowed.",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "$ref": "#/definitions/ThrottleSettings"
+ }
+ }
+ }
+ }
+ },
+ "ThrottleSettings": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "BurstLimit": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The maximum API request rate limit over a time ranging from one to a few seconds. The maximum API request rate limit depends on whether the underlying token bucket is at its full capacity."
+ },
+ "RateLimit": {
+ "type": "number",
+ "minimum": 0,
+ "description": "The API request steady-state rate limit (average requests per second over an extended period of time)."
+ }
+ }
+ },
+ "Tag": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 128,
+ "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -."
+ },
+ "Value": {
+ "type": "string",
+ "minLength": 0,
+ "maxLength": 256,
+ "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -."
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ]
+ },
+ "QuotaSettings": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Limit": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The maximum number of requests that users can make within the specified time period."
+ },
+ "Offset": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "For the initial time period, the number of requests to subtract from the specified limit. When you first implement a usage plan, the plan might start in the middle of the week or month. With this property, you can decrease the limit for this initial time period."
+ },
+ "Period": {
+ "type": "string",
+ "description": "The time period for which the maximum limit of requests applies, such as DAY or WEEK. For valid values, see the period property for the UsagePlan resource in the Amazon API Gateway REST API Reference."
+ }
+ }
+ }
+ },
+ "taggable": true,
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "apigateway:POST",
+ "apigateway:GET"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "apigateway:GET"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "apigateway:GET",
+ "apigateway:DELETE",
+ "apigateway:PATCH",
+ "apigateway:PUT"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "apigateway:DELETE"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "apigateway:GET"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json b/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json
new file mode 100644
index 0000000000..24480f7574
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json
@@ -0,0 +1,106 @@
+{
+ "typeName": "AWS::Config::AggregationAuthorization",
+ "description": "Resource Type definition for AWS::Config::AggregationAuthorization",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git",
+ "additionalProperties": false,
+ "properties": {
+ "AuthorizedAccountId": {
+ "description": "The 12-digit account ID of the account authorized to aggregate data.",
+ "type": "string",
+ "pattern": ""
+ },
+ "AuthorizedAwsRegion": {
+ "description": "The region authorized to collect aggregated data.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 64
+ },
+ "AggregationAuthorizationArn": {
+ "description": "The ARN of the AggregationAuthorization.",
+ "type": "string"
+ },
+ "Tags": {
+ "description": "The tags for the AggregationAuthorization.",
+ "type": "array",
+ "maxItems": 50,
+ "uniqueItems": true,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ }
+ },
+ "definitions": {
+ "Tag": {
+ "description": "A key-value pair to associate with a resource.",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string",
+ "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ "minLength": 1,
+ "maxLength": 128
+ },
+ "Value": {
+ "type": "string",
+ "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ",
+ "minLength": 0,
+ "maxLength": 256
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ]
+ }
+ },
+ "required": [
+ "AuthorizedAccountId",
+ "AuthorizedAwsRegion"
+ ],
+ "readOnlyProperties": [
+ "/properties/AggregationAuthorizationArn"
+ ],
+ "createOnlyProperties": [
+ "/properties/AuthorizedAccountId",
+ "/properties/AuthorizedAwsRegion"
+ ],
+ "primaryIdentifier": [
+ "/properties/AggregationAuthorizationArn"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "config:DescribeAggregationAuthorizations",
+ "config:PutAggregationAuthorization",
+ "config:TagResource"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "config:DescribeAggregationAuthorizations",
+ "config:TagResource",
+ "config:UntagResource",
+ "config:ListTagsForResource"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "config:DescribeAggregationAuthorizations",
+ "config:ListTagsForResource"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "config:DescribeAggregationAuthorizations",
+ "config:DeleteAggregationAuthorization",
+ "config:UntagResource"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "config:DescribeAggregationAuthorizations"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/internal/service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json b/internal/service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json
new file mode 100644
index 0000000000..d9d91296c7
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json
@@ -0,0 +1,134 @@
+{
+ "typeName": "AWS::EC2::TransitGatewayVpcAttachment",
+ "description": "Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway",
+ "additionalProperties": false,
+ "properties": {
+ "Id": {
+ "type": "string"
+ },
+ "TransitGatewayId": {
+ "type": "string"
+ },
+ "VpcId": {
+ "type": "string"
+ },
+ "SubnetIds": {
+ "type": "array",
+ "insertionOrder": false,
+ "uniqueItems": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "AddSubnetIds": {
+ "type": "array",
+ "uniqueItems": false,
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "RemoveSubnetIds": {
+ "type": "array",
+ "uniqueItems": false,
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "Tags": {
+ "type": "array",
+ "uniqueItems": false,
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ },
+ "Options": {
+ "description": "The options for the transit gateway vpc attachment.",
+ "type": "object",
+ "properties": {
+ "DnsSupport": {
+ "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable",
+ "type": "string"
+ },
+ "Ipv6Support": {
+ "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ "type": "string"
+ },
+ "ApplianceModeSupport": {
+ "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable",
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "definitions": {
+ "Tag": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ]
+ }
+ },
+ "createOnlyProperties": [
+ "/properties/TransitGatewayId",
+ "/properties/SubnetIds",
+ "/properties/VpcId"
+ ],
+ "taggable": true,
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "ec2:CreateTransitGatewayVpcAttachment",
+ "ec2:CreateTags"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "ec2:DescribeTransitGatewayAttachments",
+ "ec2:DescribeTransitGatewayVpcAttachments",
+ "ec2:DescribeTags"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "ec2:DeleteTransitGatewayVpcAttachment",
+ "ec2:DeleteTags"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "ec2:DescribeTransitGatewayAttachments",
+ "ec2:DescribeTransitGatewayVpcAttachments",
+ "ec2:DescribeTags"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "ec2:ModifyTransitGatewayVpcAttachment",
+ "ec2:DescribeTransitGatewayVpcAttachments",
+ "ec2:DeleteTags",
+ "ec2:CreateTags"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json b/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json
new file mode 100644
index 0000000000..3d8ddf8f78
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json
@@ -0,0 +1,76 @@
+{
+ "typeName": "AWS::EFS::MountTarget",
+ "description" : "Resource Type definition for AWS::EFS::MountTarget",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
+ "properties" : {
+ "Id" : {
+ "type" : "string"
+ },
+ "IpAddress" : {
+ "type" : "string"
+ },
+ "FileSystemId" : {
+ "type" : "string"
+ },
+ "SecurityGroups" : {
+ "type" : "array",
+ "insertionOrder": false,
+ "uniqueItems" : true,
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "SubnetId" : {
+ "type" : "string"
+ }
+ },
+ "additionalProperties": false,
+ "required" : [
+ "FileSystemId",
+ "SecurityGroups",
+ "SubnetId"
+ ],
+ "createOnlyProperties" : [
+ "/properties/IpAddress",
+ "/properties/SubnetId",
+ "/properties/FileSystemId"
+ ],
+ "primaryIdentifier" : [
+ "/properties/Id"
+ ],
+ "readOnlyProperties" : [
+ "/properties/Id"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "elasticfilesystem:CreateMountTarget",
+ "elasticfilesystem:DescribeMountTargets"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "elasticfilesystem:DescribeMountTargets"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "elasticfilesystem:DescribeMountTargets",
+ "elasticfilesystem:DescribeMountTargetSecurityGroups",
+ "elasticfilesystem:ModifyMountTargetSecurityGroups"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "elasticfilesystem:DescribeMountTargets",
+ "elasticfilesystem:DeleteMountTarget"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "elasticfilesystem:DescribeMountTargets",
+ "elasticfilesystem:DescribeMountTargetSecurityGroups"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_HealthLake_FHIRDatastore.json b/internal/service/cloudformation/schemas/AWS_HealthLake_FHIRDatastore.json
new file mode 100644
index 0000000000..a9d695f718
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_HealthLake_FHIRDatastore.json
@@ -0,0 +1,246 @@
+{
+ "typeName": "AWS::HealthLake::FHIRDatastore",
+ "description": "HealthLake FHIR Datastore",
+ "documentationUrl": "https://docs.aws.amazon.com/healthlake/latest/devguide/working-with-FHIR-healthlake.html",
+ "definitions": {
+ "CreatedAt": {
+ "description": "The time that a Data Store was created.",
+ "type": "object",
+ "properties": {
+ "Seconds": {
+ "description": "Seconds since epoch.",
+ "type": "string"
+ },
+ "Nanos": {
+ "description": "Nanoseconds.",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Seconds",
+ "Nanos"
+ ],
+ "additionalProperties": false
+ },
+ "DatastoreArn": {
+ "description": "The Amazon Resource Name used in the creation of the Data Store.",
+ "type": "string",
+ "pattern": ""
+ },
+ "DatastoreEndpoint": {
+ "description": "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.",
+ "type": "string",
+ "maxLength": 10000
+ },
+ "DatastoreId": {
+ "description": "The AWS-generated ID number for the Data Store.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 32
+ },
+ "DatastoreName": {
+ "description": "The user-generated name for the Data Store.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 256
+ },
+ "DatastoreStatus": {
+ "description": "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.",
+ "type": "string",
+ "enum": [
+ "CREATING",
+ "ACTIVE",
+ "DELETING",
+ "DELETED"
+ ]
+ },
+ "DatastoreTypeVersion": {
+ "description": "The FHIR version. Only R4 version data is supported.",
+ "type": "string",
+ "enum": [
+ "R4"
+ ]
+ },
+ "PreloadDataConfig": {
+ "description": "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.",
+ "type": "object",
+ "properties": {
+ "PreloadDataType": {
+ "description": "The type of preloaded data. Only Synthea preloaded data is supported.",
+ "type": "string",
+ "enum": [
+ "SYNTHEA"
+ ]
+ }
+ },
+ "required": [
+ "PreloadDataType"
+ ],
+ "additionalProperties": false
+ },
+ "SseConfiguration": {
+ "description": "The server-side encryption key configuration for a customer provided encryption key.",
+ "type": "object",
+ "properties": {
+ "KmsEncryptionConfig": {
+ "$ref": "#/definitions/KmsEncryptionConfig"
+ }
+ },
+ "required": [
+ "KmsEncryptionConfig"
+ ],
+ "additionalProperties": false
+ },
+ "KmsEncryptionConfig": {
+ "description": "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.",
+ "type": "object",
+ "properties": {
+ "CmkType": {
+ "description": "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.",
+ "type": "string",
+ "enum": [
+ "CUSTOMER_MANAGED_KMS_KEY",
+ "AWS_OWNED_KMS_KEY"
+ ]
+ },
+ "KmsKeyId": {
+ "description": "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 400,
+ "pattern": ""
+ }
+ },
+ "required": [
+ "CmkType"
+ ],
+ "additionalProperties": false
+ },
+ "Tag": {
+ "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.",
+ "type": "object",
+ "properties": {
+ "Key": {
+ "description": "The key of the tag.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 128
+ },
+ "Value": {
+ "description": "The value of the tag.",
+ "type": "string",
+ "minLength": 0,
+ "maxLength": 256
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "CreatedAt": {
+ "$ref": "#/definitions/CreatedAt"
+ },
+ "DatastoreArn": {
+ "$ref": "#/definitions/DatastoreArn"
+ },
+ "DatastoreEndpoint": {
+ "$ref": "#/definitions/DatastoreEndpoint"
+ },
+ "DatastoreId": {
+ "$ref": "#/definitions/DatastoreId"
+ },
+ "DatastoreName": {
+ "$ref": "#/definitions/DatastoreName"
+ },
+ "DatastoreStatus": {
+ "$ref": "#/definitions/DatastoreStatus"
+ },
+ "DatastoreTypeVersion": {
+ "$ref": "#/definitions/DatastoreTypeVersion"
+ },
+ "PreloadDataConfig": {
+ "$ref": "#/definitions/PreloadDataConfig"
+ },
+ "SseConfiguration": {
+ "$ref": "#/definitions/SseConfiguration"
+ },
+ "Tags": {
+ "type": "array",
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "taggable": true,
+ "required": [
+ "DatastoreTypeVersion"
+ ],
+ "readOnlyProperties": [
+ "/properties/CreatedAt",
+ "/properties/DatastoreArn",
+ "/properties/DatastoreEndpoint",
+ "/properties/DatastoreId",
+ "/properties/DatastoreStatus"
+ ],
+ "primaryIdentifier": [
+ "/properties/DatastoreId"
+ ],
+ "createOnlyProperties": [
+ "/properties/DatastoreName",
+ "/properties/DatastoreTypeVersion",
+ "/properties/PreloadDataConfig",
+ "/properties/SseConfiguration",
+ "/properties/KmsEncryptionConfig"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "healthlake:CreateFHIRDatastore",
+ "healthlake:DescribeFHIRDatastore",
+ "iam:PassRole",
+ "kms:DescribeKey",
+ "kms:CreateGrant",
+ "kms:GenerateDataKey",
+ "kms:Decrypt",
+ "iam:GetRole",
+ "iam:CreateServiceLinkedRole"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "healthlake:DescribeFHIRDatastore",
+ "healthlake:ListTagsForResource"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "healthlake:TagResource",
+ "healthlake:UntagResource",
+ "healthlake:ListTagsForResource",
+ "iam:PassRole",
+ "iam:GetRole",
+ "iam:CreateServiceLinkedRole"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "healthlake:DeleteFHIRDatastore",
+ "healthlake:DescribeFHIRDatastore",
+ "iam:PassRole",
+ "iam:GetRole",
+ "iam:CreateServiceLinkedRole"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "healthlake:ListFHIRDatastores"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_IoT_FleetMetric.json b/internal/service/cloudformation/schemas/AWS_IoT_FleetMetric.json
new file mode 100644
index 0000000000..875bfddd22
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_IoT_FleetMetric.json
@@ -0,0 +1,164 @@
+{
+ "typeName": "AWS::IoT::FleetMetric",
+ "description": "An aggregated metric of certain devices in your fleet",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iot.git",
+ "taggable": true,
+ "definitions": {
+ "Tag": {
+ "description": "A key-value pair to associate with a resource",
+ "type": "object",
+ "properties": {
+ "Key": {
+ "type": "string",
+ "description": "The tag's key",
+ "minLength": 1,
+ "maxLength": 128
+ },
+ "Value": {
+ "type": "string",
+ "description": "The tag's value",
+ "minLength": 1,
+ "maxLength": 256
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ],
+ "additionalProperties": false
+ },
+ "AggregationType": {
+ "description": "Aggregation types supported by Fleet Indexing",
+ "type": "object",
+ "properties": {
+ "Name": {
+ "description": "Fleet Indexing aggregation type names such as Statistics, Percentiles and Cardinality",
+ "type": "string"
+ },
+ "Values": {
+ "description": "Fleet Indexing aggregation type values",
+ "type": "array",
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "Name",
+ "Values"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "MetricName": {
+ "description": "The name of the fleet metric",
+ "type": "string"
+ },
+ "Description": {
+ "description": "The description of a fleet metric",
+ "type": "string"
+ },
+ "QueryString": {
+ "description": "The Fleet Indexing query used by a fleet metric",
+ "type": "string"
+ },
+ "Period": {
+ "description": "The period of metric emission in seconds",
+ "type": "integer"
+ },
+ "AggregationField": {
+ "description": "The aggregation field to perform aggregation and metric emission",
+ "type": "string"
+ },
+ "QueryVersion": {
+ "description": "The version of a Fleet Indexing query used by a fleet metric",
+ "type": "string"
+ },
+ "IndexName": {
+ "description": "The index name of a fleet metric",
+ "type": "string"
+ },
+ "Unit": {
+ "description": "The unit of data points emitted by a fleet metric",
+ "type": "string"
+ },
+ "AggregationType": {
+ "$ref": "#/definitions/AggregationType"
+ },
+ "MetricArn": {
+ "description": "The Amazon Resource Number (ARN) of a fleet metric metric",
+ "type": "string"
+ },
+ "CreationDate": {
+ "description": "The creation date of a fleet metric",
+ "type": "number"
+ },
+ "LastModifiedDate": {
+ "description": "The last modified date of a fleet metric",
+ "type": "number"
+ },
+ "Version": {
+ "description": "The version of a fleet metric",
+ "type": "number"
+ },
+ "Tags": {
+ "type": "array",
+ "maxItems": 50,
+ "uniqueItems": true,
+ "insertionOrder": false,
+ "description": "An array of key-value pairs to apply to this resource",
+ "items": {
+ "$ref": "#/definitions/Tag"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "MetricName"
+ ],
+ "readOnlyProperties": [
+ "/properties/MetricArn",
+ "/properties/CreationDate",
+ "/properties/LastModifiedDate",
+ "/properties/Version"
+ ],
+ "createOnlyProperties": [
+ "/properties/MetricName"
+ ],
+ "primaryIdentifier": [
+ "/properties/MetricName"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "iot:CreateFleetMetric"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "iot:DescribeFleetMetric",
+ "iot:ListTagsForResource"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "iot:UpdateFleetMetric",
+ "iot:ListTagsForResource",
+ "iot:UntagResource",
+ "iot:TagResource"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "iot:DeleteFleetMetric"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "iot:ListFleetMetrics"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json
new file mode 100644
index 0000000000..bec371e004
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json
@@ -0,0 +1,386 @@
+{
+ "typeName": "AWS::OpenSearchService::Domain",
+ "description": "An example resource schema demonstrating some basic constructs and validation rules.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
+ "definitions": {
+ "ZoneAwarenessConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "AvailabilityZoneCount": {
+ "type": "integer"
+ }
+ }
+ },
+ "ClusterConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "InstanceCount": {
+ "type": "integer"
+ },
+ "WarmEnabled": {
+ "type": "boolean"
+ },
+ "WarmCount": {
+ "type": "integer"
+ },
+ "DedicatedMasterEnabled": {
+ "type": "boolean"
+ },
+ "ZoneAwarenessConfig": {
+ "$ref": "#/definitions/ZoneAwarenessConfig"
+ },
+ "DedicatedMasterCount": {
+ "type": "integer"
+ },
+ "InstanceType": {
+ "type": "string"
+ },
+ "WarmType": {
+ "type": "string"
+ },
+ "ZoneAwarenessEnabled": {
+ "type": "boolean"
+ },
+ "DedicatedMasterType": {
+ "type": "string"
+ }
+ }
+ },
+ "LogPublishingOption": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "CloudWatchLogsLogGroupArn": {
+ "type": "string"
+ },
+ "Enabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "SnapshotOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "AutomatedSnapshotStartHour": {
+ "type": "integer"
+ }
+ }
+ },
+ "VPCOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "SecurityGroupIds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ },
+ "SubnetIds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "NodeToNodeEncryptionOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "DomainEndpointOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "CustomEndpointCertificateArn": {
+ "type": "string"
+ },
+ "CustomEndpointEnabled": {
+ "type": "boolean"
+ },
+ "EnforceHTTPS": {
+ "type": "boolean"
+ },
+ "CustomEndpoint": {
+ "type": "string"
+ },
+ "TLSSecurityPolicy": {
+ "type": "string"
+ }
+ }
+ },
+ "CognitoOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "IdentityPoolId": {
+ "type": "string"
+ },
+ "UserPoolId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ }
+ },
+ "MasterUserOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "MasterUserPassword": {
+ "type": "string"
+ },
+ "MasterUserName": {
+ "type": "string"
+ },
+ "MasterUserARN": {
+ "type": "string"
+ }
+ }
+ },
+ "AdvancedSecurityOptionsInput": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "MasterUserOptions": {
+ "$ref": "#/definitions/MasterUserOptions"
+ },
+ "InternalUserDatabaseEnabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "EBSOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "EBSEnabled": {
+ "type": "boolean"
+ },
+ "VolumeType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "VolumeSize": {
+ "type": "integer"
+ }
+ }
+ },
+ "EncryptionAtRestOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "Enabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "Tag": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255
+ },
+ "Key": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 127
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ]
+ },
+ "ServiceSoftwareOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "CurrentVersion": {
+ "type": "string"
+ },
+ "NewVersion": {
+ "type": "string"
+ },
+ "UpdateAvailable": {
+ "type": "boolean"
+ },
+ "Cancellable": {
+ "type": "boolean"
+ },
+ "UpdateStatus": {
+ "type": "string"
+ },
+ "Description": {
+ "type": "string"
+ },
+ "AutomatedUpdateDate": {
+ "type": "string"
+ },
+ "OptionalDeployment": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "properties": {
+ "ClusterConfig": {
+ "$ref": "#/definitions/ClusterConfig"
+ },
+ "DomainName": {
+ "type": "string"
+ },
+ "AccessPolicies": {
+ "type": "object"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "AdvancedOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "type": "string"
+ }
+ }
+ },
+ "LogPublishingOptions": {
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "$ref": "#/definitions/LogPublishingOption"
+ }
+ }
+ },
+ "SnapshotOptions": {
+ "$ref": "#/definitions/SnapshotOptions"
+ },
+ "VPCOptions": {
+ "$ref": "#/definitions/VPCOptions"
+ },
+ "NodeToNodeEncryptionOptions": {
+ "$ref": "#/definitions/NodeToNodeEncryptionOptions"
+ },
+ "DomainEndpointOptions": {
+ "$ref": "#/definitions/DomainEndpointOptions"
+ },
+ "CognitoOptions": {
+ "$ref": "#/definitions/CognitoOptions"
+ },
+ "AdvancedSecurityOptions": {
+ "$ref": "#/definitions/AdvancedSecurityOptionsInput"
+ },
+ "DomainEndpoint": {
+ "type": "string"
+ },
+ "DomainEndpoints": {
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "type": "string"
+ }
+ }
+ },
+ "EBSOptions": {
+ "$ref": "#/definitions/EBSOptions"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "Arn": {
+ "type": "string"
+ },
+ "EncryptionAtRestOptions": {
+ "$ref": "#/definitions/EncryptionAtRestOptions"
+ },
+ "Tags": {
+ "description": "An arbitrary set of tags (key-value pairs) for this Domain.",
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "ServiceSoftwareOptions" : {
+ "$ref": "#/definitions/ServiceSoftwareOptions"
+ }
+ },
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/AdvancedSecurityOptions",
+ "/properties/DomainName"
+ ],
+ "readOnlyProperties": [
+ "/properties/Id",
+ "/properties/Arn",
+ "/properties/DomainEndpoint",
+ "/properties/DomainEndpoints",
+ "/properties/ServiceSoftwareOptions"
+ ],
+ "writeOnlyProperties": [
+ "/properties/AdvancedSecurityOptions/MasterUserOptions"
+ ],
+ "primaryIdentifier": [
+ "/properties/DomainName"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "es:CreateDomain",
+ "es:DescribeDomain",
+ "es:AddTags",
+ "es:ListTags"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "es:DescribeDomain",
+ "es:ListTags"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "es:UpdateDomain",
+ "es:UpgradeDomain",
+ "es:DescribeDomain",
+ "es:AddTags",
+ "es:RemoveTags",
+ "es:ListTags"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "es:DeleteDomain",
+ "es:DescribeDomain"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_RoboMaker_Fleet.json b/internal/service/cloudformation/schemas/AWS_RoboMaker_Fleet.json
new file mode 100644
index 0000000000..22e823cd2e
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_RoboMaker_Fleet.json
@@ -0,0 +1,78 @@
+{
+ "typeName": "AWS::RoboMaker::Fleet",
+ "description": "AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git",
+ "additionalProperties": false,
+ "definitions": {
+ "Arn": {
+ "type": "string",
+ "pattern": ""
+ },
+ "Tags": {
+ "description": "A key-value pair to associate with a resource.",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "type": "string",
+ "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ "minLength": 1,
+ "maxLength": 256
+ }
+ }
+ }
+ },
+ "properties": {
+ "Arn": {
+ "$ref": "#/definitions/Arn"
+ },
+ "Tags": {
+ "$ref": "#/definitions/Tags"
+ },
+ "Name": {
+ "description": "The name of the fleet.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": ""
+ }
+ },
+ "handlers": {
+ "create": {
+ "permissions": [
+ "robomaker:CreateFleet"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "robomaker:DescribeFleet"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "robomaker:DeleteFleet"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "robomaker:TagResource",
+ "robomaker:UntagResource"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "robomaker:ListFleets"
+ ]
+ }
+ },
+ "required": [],
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "primaryIdentifier": [
+ "/properties/Arn"
+ ]
+}
\ No newline at end of file
diff --git a/internal/service/cloudformation/schemas/AWS_RoboMaker_Robot.json b/internal/service/cloudformation/schemas/AWS_RoboMaker_Robot.json
new file mode 100644
index 0000000000..1a67237a0b
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_RoboMaker_Robot.json
@@ -0,0 +1,103 @@
+{
+ "typeName": "AWS::RoboMaker::Robot",
+ "description" : "AWS::RoboMaker::Robot resource creates an AWS RoboMaker fleet.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git",
+ "additionalProperties" : false,
+ "definitions": {
+ "Arn": {
+ "type": "string",
+ "pattern": ""
+ },
+ "Tags": {
+ "description": "A key-value pair to associate with a resource.",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "type": "string",
+ "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ "minLength": 1,
+ "maxLength": 256
+ }
+ }
+ }
+ },
+ "properties" : {
+ "Arn": {
+ "$ref": "#/definitions/Arn"
+ },
+ "Fleet" : {
+ "description": "The Amazon Resource Name (ARN) of the fleet.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1224
+ },
+ "Architecture" : {
+ "description": "The target architecture of the robot.",
+ "type": "string",
+ "enum": [ "X86_64", "ARM64", "ARMHF"]
+ },
+ "GreengrassGroupId" : {
+ "description": "The Greengrass group id.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1224
+ },
+ "Tags": {
+ "$ref": "#/definitions/Tags"
+ },
+ "Name" : {
+ "description": "The name for the robot.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255
+ }
+ },
+ "required" : [
+ "GreengrassGroupId",
+ "Architecture"
+ ],
+ "readOnlyProperties" : [
+ "/properties/Arn"
+ ],
+ "primaryIdentifier" : [
+ "/properties/Arn"
+ ],
+ "createOnlyProperties" : [
+ "/properties/GreengrassGroupId",
+ "/properties/Name",
+ "/properties/Architecture",
+ "/properties/Fleet"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "robomaker:CreateRobot",
+ "robomaker:RegisterRobot"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "robomaker:DescribeRobot"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "robomaker:DescribeRobot",
+ "robomaker:DeleteRobot",
+ "robomaker:DeregisterRobot"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "robomaker:ListRobots"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "robomaker:TagResource",
+ "robomaker:UntagResource"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_RoboMaker_RobotApplicationVersion.json b/internal/service/cloudformation/schemas/AWS_RoboMaker_RobotApplicationVersion.json
new file mode 100644
index 0000000000..0bbdcd1250
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_RoboMaker_RobotApplicationVersion.json
@@ -0,0 +1,64 @@
+{
+ "typeName": "AWS::RoboMaker::RobotApplicationVersion",
+ "description": "An example resource schema demonstrating some basic constructs and validation rules.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
+ "definitions": {
+ "Arn": {
+ "type": "string",
+ "pattern": ""
+ }
+ },
+ "properties": {
+ "Application": {
+ "$ref": "#/definitions/Arn"
+ },
+ "CurrentRevisionId" : {
+ "description": "The revision ID of robot application.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 40,
+ "pattern": ""
+ },
+ "ApplicationVersion": {
+ "type": "string"
+ },
+ "Arn": {
+ "$ref": "#/definitions/Arn"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Application"
+ ],
+ "readOnlyProperties": [
+ "/properties/ApplicationVersion",
+ "/properties/Arn"
+ ],
+ "primaryIdentifier": [
+ "/properties/Arn"
+ ],
+ "createOnlyProperties": [
+ "/properties/Application",
+ "/properties/CurrentRevisionId"
+ ],
+ "taggable": false,
+ "handlers": {
+ "create": {
+ "permissions": [
+ "robomaker:CreateRobotApplicationVersion",
+ "s3:GetObject"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "robomaker:DeleteRobotApplication",
+ "robomaker:DescribeRobotApplication"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "robomaker:DescribeRobotApplication"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_RoboMaker_SimulationApplication.json b/internal/service/cloudformation/schemas/AWS_RoboMaker_SimulationApplication.json
new file mode 100644
index 0000000000..2f1ff0d172
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_RoboMaker_SimulationApplication.json
@@ -0,0 +1,201 @@
+{
+ "typeName": "AWS::RoboMaker::SimulationApplication",
+ "description": "An example resource schema demonstrating some basic constructs and validation rules.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
+ "definitions": {
+ "Arn": {
+ "type": "string",
+ "pattern": ""
+ },
+ "Tags": {
+ "description": "A key-value pair to associate with a resource.",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "": {
+ "type": "string",
+ "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
+ "minLength": 1,
+ "maxLength": 256
+ }
+ }
+ },
+ "RenderingEngine" : {
+ "description": "Information about a rendering engine.",
+ "type": "object",
+ "properties": {
+ "Name" : {
+ "type": "string",
+ "description": "The name of the rendering engine.",
+ "enum": ["OGRE"]
+ },
+ "Version" : {
+ "type": "string",
+ "description": "The version of the rendering engine.",
+ "pattern": ""
+ }
+ },
+ "required": [
+ "Name",
+ "Version"
+ ],
+ "additionalProperties": false
+ },
+ "RobotSoftwareSuite": {
+ "description": "Information about a robot software suite (ROS distribution).",
+ "type": "object",
+ "properties": {
+ "Name": {
+ "type": "string",
+ "description": "The name of the robot software suite (ROS distribution).",
+ "enum": [ "ROS", "ROS2"]
+ },
+ "Version": {
+ "type": "string",
+ "description": "The version of the robot software suite (ROS distribution).",
+ "enum": [ "Kinetic", "Melodic", "Dashing", "Foxy"]
+ }
+ },
+ "required": [
+ "Name",
+ "Version"
+ ],
+ "additionalProperties": false
+ },
+ "SourceConfig": {
+ "type": "object",
+ "description": "Information about a source configuration.",
+ "properties": {
+ "S3Bucket": {
+ "type": "string",
+ "description": "The Amazon S3 bucket name.",
+ "pattern": ""
+ },
+ "S3Key": {
+ "type": "string",
+ "description": "The s3 object key.",
+ "minLength": 1,
+ "maxLength": 1024
+ },
+ "Architecture": {
+ "type": "string",
+ "description": "The target processor architecture for the application.",
+ "enum": [ "X86_64", "ARM64", "ARMHF"]
+ }
+ },
+ "required": [
+ "S3Bucket",
+ "S3Key",
+ "Architecture"
+ ],
+ "additionalProperties": false
+ },
+ "SimulationSoftwareSuite": {
+ "description": "Information about a simulation software suite.",
+ "type": "object",
+ "properties": {
+ "Name": {
+ "type": "string",
+ "description": "The name of the simulation software suite.",
+ "enum": [ "Gazebo", "RosbagPlay"]
+ },
+ "Version": {
+ "type": "string",
+ "description": "The version of the simulation software suite.",
+ "enum": [ "7", "9", "11", "Kinetic", "Melodic", "Dashing", "Foxy"]
+ }
+ },
+ "required": [
+ "Name",
+ "Version"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "Arn": {
+ "$ref": "#/definitions/Arn"
+ },
+ "Name" : {
+ "description": "The name of the simulation application.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": ""
+ },
+ "CurrentRevisionId": {
+ "description": "The current revision id.",
+ "type": "string"
+ },
+ "RenderingEngine" : {
+ "description": "The rendering engine for the simulation application.",
+ "$ref": "#/definitions/RenderingEngine"
+ },
+ "RobotSoftwareSuite" : {
+ "description": "The robot software suite (ROS distribution) used by the simulation application.",
+ "$ref": "#/definitions/RobotSoftwareSuite"
+ },
+ "SimulationSoftwareSuite" : {
+ "description": "The simulation software suite used by the simulation application.",
+ "$ref": "#/definitions/SimulationSoftwareSuite"
+ },
+ "Sources": {
+ "description": "The sources of the simulation application.",
+ "type": "array",
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/SourceConfig"
+ }
+ },
+ "Environment": {
+ "description": "The URI of the Docker image for the robot application.",
+ "type": "string"
+ },
+ "Tags": {
+ "$ref": "#/definitions/Tags"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "RobotSoftwareSuite",
+ "SimulationSoftwareSuite"
+ ],
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "primaryIdentifier": [
+ "/properties/Arn"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "robomaker:CreateSimulationApplication"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "robomaker:DescribeSimulationApplication"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "robomaker:TagResource",
+ "robomaker:UntagResource",
+ "robomaker:UpdateSimulationApplication"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "robomaker:DeleteSimulationApplication"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "robomaker:ListSimulationApplications"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json
new file mode 100644
index 0000000000..76c907be30
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json
@@ -0,0 +1,122 @@
+{
+ "typeName": "AWS::S3::MultiRegionAccessPoint",
+ "description": "AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.",
+ "definitions": {
+ "PublicAccessBlockConfiguration": {
+ "type": "object",
+ "properties": {
+ "BlockPublicAcls": {
+ "type": "boolean",
+ "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs."
+ },
+ "IgnorePublicAcls": {
+ "type": "boolean",
+ "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set."
+ },
+ "BlockPublicPolicy": {
+ "type": "boolean",
+ "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies."
+ },
+ "RestrictPublicBuckets": {
+ "type": "boolean",
+ "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked."
+ }
+ },
+ "additionalProperties": false
+ },
+ "Region": {
+ "type": "object",
+ "properties": {
+ "Bucket": {
+ "type": "string",
+ "minLength": 3,
+ "maxLength": 63,
+ "pattern": ""
+ }
+ },
+ "required": [
+ "Bucket"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "Name": {
+ "description": "The name you want to assign to this Multi Region Access Point.",
+ "type": "string",
+ "pattern": "",
+ "minLength": 3,
+ "maxLength": 50
+ },
+ "Alias": {
+ "description": "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point",
+ "type": "string"
+ },
+ "CreatedAt": {
+ "description": "The timestamp of the when the Multi Region Access Point is created",
+ "type": "string"
+ },
+ "PublicAccessBlockConfiguration": {
+ "description": "The PublicAccessBlock configuration that you want to apply to this Multi Region Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide.",
+ "$ref": "#/definitions/PublicAccessBlockConfiguration"
+ },
+ "Regions": {
+ "description": "The list of buckets that you want to associate this Multi Region Access Point with.",
+ "type": "array",
+ "uniqueItems": true,
+ "minItems": 1,
+ "items": {
+ "description": "The name of the bucket that represents of the region belonging to this Multi Region Access Point.",
+ "$ref": "#/definitions/Region"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Regions"
+ ],
+ "readOnlyProperties": [
+ "/properties/Alias",
+ "/properties/CreatedAt"
+ ],
+ "createOnlyProperties": [
+ "/properties/Name",
+ "/properties/PublicAccessBlockConfiguration",
+ "/properties/Regions"
+ ],
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "s3:CreateMultiRegionAccessPoint",
+ "s3:DescribeMultiRegionAccessPointOperation",
+ "s3:GetMultiRegionAccessPoint"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "s3:GetMultiRegionAccessPoint"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "s3:DescribeMultiRegionAccessPointOperation",
+ "s3:GetMultiRegionAccessPoint"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "s3:DeleteMultiRegionAccessPoint",
+ "s3:DescribeMultiRegionAccessPointOperation",
+ "s3:GetMultiRegionAccessPoint"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "s3:ListMultiRegionAccessPoints"
+ ]
+ }
+ }
+}
diff --git a/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPointPolicy.json b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPointPolicy.json
new file mode 100644
index 0000000000..da0876e4be
--- /dev/null
+++ b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPointPolicy.json
@@ -0,0 +1,78 @@
+{
+ "typeName": "AWS::S3::MultiRegionAccessPointPolicy",
+ "description": "The policy to be attached to a Multi Region Access Point",
+ "properties": {
+ "MrapName": {
+ "description": "The name of the Multi Region Access Point to apply policy",
+ "type": "string",
+ "pattern": "",
+ "minLength": 3,
+ "maxLength": 50
+ },
+ "Policy": {
+ "description": "Policy document to apply to a Multi Region Access Point",
+ "type": "object"
+ },
+ "PolicyStatus": {
+ "description": "The Policy Status associated with this Multi Region Access Point",
+ "type": "object",
+ "properties": {
+ "IsPublic": {
+ "type": "string",
+ "description": "Specifies whether the policy is public or not.",
+ "enum": [
+ "true",
+ "false"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "IsPublic"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Policy", "MrapName"
+ ],
+ "createOnlyProperties": [
+ "/properties/MrapName"
+ ],
+ "readOnlyProperties": [
+ "/properties/PolicyStatus",
+ "/properties/PolicyStatus/IsPublic"
+ ],
+ "primaryIdentifier": [
+ "/properties/MrapName"
+ ],
+ "handlers": {
+ "update": {
+ "permissions": [
+ "s3:PutMultiRegionAccessPointPolicy",
+ "s3:DescribeMultiRegionAccessPointOperation"
+ ]
+ },
+ "read": {
+ "permissions": [
+ "s3:GetMultiRegionAccessPointPolicy",
+ "s3:GetMultiRegionAccessPointPolicyStatus"
+ ]
+ },
+ "list": {
+ "permissions": []
+ },
+ "delete": {
+ "permissions": [
+ "s3:GetMultiRegionAccessPointPolicy",
+ "s3:GetMultiRegionAccessPoint"
+ ]
+ },
+ "create": {
+ "permissions": [
+ "s3:PutMultiRegionAccessPointPolicy",
+ "s3:DescribeMultiRegionAccessPointOperation"
+ ]
+ }
+ }
+}
\ No newline at end of file