diff --git a/CHANGELOG.md b/CHANGELOG.md index fe2bde7cf3..45cc92355d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,31 @@ NOTES: * Optional attributes without a default value specified in the resource's CloudFormation schema are now handled as _Computed_, indicating that if no value has been configured then Terraform will not perform drift detection on the attribute ([#667](https://github.com/hashicorp/terraform-provider-awscc/issues/667)) +FEATURES: + +* **New Data Source:** `awscc_identitystore_group` +* **New Data Source:** `awscc_identitystore_group_membership` +* **New Data Source:** `awscc_iotfleetwise_campaign` +* **New Data Source:** `awscc_iotfleetwise_campaigns` +* **New Data Source:** `awscc_iotfleetwise_fleet` +* **New Data Source:** `awscc_iotfleetwise_fleets` +* **New Data Source:** `awscc_iotfleetwise_model_manifest` +* **New Data Source:** `awscc_iotfleetwise_model_manifests` +* **New Data Source:** `awscc_iotfleetwise_signal_catalog` +* **New Data Source:** `awscc_iotfleetwise_signal_catalogs` +* **New Data Source:** `awscc_iotfleetwise_vehicle` +* **New Data Source:** `awscc_iotfleetwise_vehicles` +* **New Data Source:** `awscc_m2_application` +* **New Data Source:** `awscc_m2_applications` +* **New Resource:** `awscc_identitystore_group` +* **New Resource:** `awscc_identitystore_group_membership` +* **New Resource:** `awscc_iotfleetwise_campaign` +* **New Resource:** `awscc_iotfleetwise_fleet` +* **New Resource:** `awscc_iotfleetwise_model_manifest` +* **New Resource:** `awscc_iotfleetwise_signal_catalog` +* **New Resource:** `awscc_iotfleetwise_vehicle` +* **New Resource:** `awscc_m2_application` + ## [0.32.0](https://github.com/hashicorp/terraform-provider-awscc/releases/tag/v0.32.0) (September 8, 2022) FEATURES: diff --git a/docs/data-sources/connect_phone_number.md b/docs/data-sources/connect_phone_number.md index f5ab095d64..a818d46add 100644 --- a/docs/data-sources/connect_phone_number.md +++ b/docs/data-sources/connect_phone_number.md @@ -27,7 +27,7 @@ Data Source schema for AWS::Connect::PhoneNumber - `phone_number_arn` (String) The phone number ARN - `prefix` (String) The phone number prefix. - `tags` (Attributes Set) One or more tags. (see [below for nested schema](#nestedatt--tags)) -- `target_arn` (String) The ARN of the Amazon Connect instance the phone number is claimed to. +- `target_arn` (String) The ARN of the target the phone number is claimed to. - `type` (String) The phone number type, either TOLL_FREE or DID. diff --git a/docs/data-sources/evidently_project.md b/docs/data-sources/evidently_project.md index 8dcc9320f0..6758db88c9 100644 --- a/docs/data-sources/evidently_project.md +++ b/docs/data-sources/evidently_project.md @@ -21,12 +21,22 @@ Data Source schema for AWS::Evidently::Project ### Read-Only +- `app_config_resource` (Attributes) (see [below for nested schema](#nestedatt--app_config_resource)) - `arn` (String) - `data_delivery` (Attributes) Destinations for data. (see [below for nested schema](#nestedatt--data_delivery)) - `description` (String) - `name` (String) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Nested Schema for `app_config_resource` + +Read-Only: + +- `application_id` (String) +- `environment_id` (String) + + ### Nested Schema for `data_delivery` diff --git a/docs/data-sources/identitystore_group.md b/docs/data-sources/identitystore_group.md new file mode 100644 index 0000000000..fd621008b4 --- /dev/null +++ b/docs/data-sources/identitystore_group.md @@ -0,0 +1,29 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_identitystore_group Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IdentityStore::Group +--- + +# awscc_identitystore_group (Data Source) + +Data Source schema for AWS::IdentityStore::Group + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `description` (String) A string containing the description of the group. +- `display_name` (String) A string containing the name of the group. This value is commonly displayed when the group is referenced. +- `group_id` (String) The unique identifier for a group in the identity store. +- `identity_store_id` (String) The globally unique identifier for the identity store. + + diff --git a/docs/data-sources/identitystore_group_membership.md b/docs/data-sources/identitystore_group_membership.md new file mode 100644 index 0000000000..51fe6e7ec6 --- /dev/null +++ b/docs/data-sources/identitystore_group_membership.md @@ -0,0 +1,36 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_identitystore_group_membership Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IdentityStore::GroupMembership +--- + +# awscc_identitystore_group_membership (Data Source) + +Data Source schema for AWS::IdentityStore::GroupMembership + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `group_id` (String) The unique identifier for a group in the identity store. +- `identity_store_id` (String) The globally unique identifier for the identity store. +- `member_id` (Attributes) An object containing the identifier of a group member. (see [below for nested schema](#nestedatt--member_id)) +- `membership_id` (String) The identifier for a GroupMembership in the identity store. + + +### Nested Schema for `member_id` + +Read-Only: + +- `user_id` (String) The identifier for a user in the identity store. + + diff --git a/docs/data-sources/imagebuilder_container_recipe.md b/docs/data-sources/imagebuilder_container_recipe.md index 8e7b79a9b4..7c2c68f075 100644 --- a/docs/data-sources/imagebuilder_container_recipe.md +++ b/docs/data-sources/imagebuilder_container_recipe.md @@ -44,6 +44,16 @@ Data Source schema for AWS::ImageBuilder::ContainerRecipe Read-Only: - `component_arn` (String) The Amazon Resource Name (ARN) of the component. +- `parameters` (Attributes List) A group of parameter settings that are used to configure the component for a specific recipe. (see [below for nested schema](#nestedatt--components--parameters)) + + +### Nested Schema for `components.parameters` + +Read-Only: + +- `name` (String) The name of the component parameter to set. +- `value` (List of String) Sets the value for the named component parameter. + diff --git a/docs/data-sources/iot_ca_certificate.md b/docs/data-sources/iot_ca_certificate.md index 0d5cf4032c..88529c1bfd 100644 --- a/docs/data-sources/iot_ca_certificate.md +++ b/docs/data-sources/iot_ca_certificate.md @@ -26,6 +26,7 @@ Data Source schema for AWS::IoT::CACertificate - `ca_certificate_pem` (String) - `certificate_mode` (String) - `registration_config` (Attributes) (see [below for nested schema](#nestedatt--registration_config)) +- `remove_auto_registration` (Boolean) - `status` (String) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `verification_certificate_pem` (String) The private key verification certificate. diff --git a/docs/data-sources/iotfleetwise_campaign.md b/docs/data-sources/iotfleetwise_campaign.md new file mode 100644 index 0000000000..ee7876421f --- /dev/null +++ b/docs/data-sources/iotfleetwise_campaign.md @@ -0,0 +1,91 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_campaign Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IoTFleetWise::Campaign +--- + +# awscc_iotfleetwise_campaign (Data Source) + +Data Source schema for AWS::IoTFleetWise::Campaign + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `action` (String) +- `arn` (String) +- `collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme)) +- `compression` (String) +- `creation_time` (String) +- `data_extra_dimensions` (List of String) +- `description` (String) +- `diagnostics_mode` (String) +- `expiry_time` (String) +- `last_modification_time` (String) +- `name` (String) +- `post_trigger_collection_duration` (Number) +- `priority` (Number) +- `signal_catalog_arn` (String) +- `signals_to_collect` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_collect)) +- `spooling_mode` (String) +- `start_time` (String) +- `status` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) +- `target_arn` (String) + + +### Nested Schema for `collection_scheme` + +Read-Only: + +- `condition_based_collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme--condition_based_collection_scheme)) +- `time_based_collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme--time_based_collection_scheme)) + + +### Nested Schema for `collection_scheme.condition_based_collection_scheme` + +Read-Only: + +- `condition_language_version` (Number) +- `expression` (String) +- `minimum_trigger_interval_ms` (Number) +- `trigger_mode` (String) + + + +### Nested Schema for `collection_scheme.time_based_collection_scheme` + +Read-Only: + +- `period_ms` (Number) + + + + +### Nested Schema for `signals_to_collect` + +Read-Only: + +- `max_sample_count` (Number) +- `minimum_sampling_interval_ms` (Number) +- `name` (String) + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + diff --git a/docs/data-sources/iotfleetwise_campaigns.md b/docs/data-sources/iotfleetwise_campaigns.md new file mode 100644 index 0000000000..020820a468 --- /dev/null +++ b/docs/data-sources/iotfleetwise_campaigns.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_campaigns Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IoTFleetWise::Campaign +--- + +# awscc_iotfleetwise_campaigns (Data Source) + +Plural Data Source schema for AWS::IoTFleetWise::Campaign + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/iotfleetwise_fleet.md b/docs/data-sources/iotfleetwise_fleet.md new file mode 100644 index 0000000000..2111effc05 --- /dev/null +++ b/docs/data-sources/iotfleetwise_fleet.md @@ -0,0 +1,39 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_fleet Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IoTFleetWise::Fleet +--- + +# awscc_iotfleetwise_fleet (Data Source) + +Data Source schema for AWS::IoTFleetWise::Fleet + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `description` (String) +- `last_modification_time` (String) +- `signal_catalog_arn` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + diff --git a/docs/data-sources/iotfleetwise_fleets.md b/docs/data-sources/iotfleetwise_fleets.md new file mode 100644 index 0000000000..b800e33fd0 --- /dev/null +++ b/docs/data-sources/iotfleetwise_fleets.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_fleets Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IoTFleetWise::Fleet +--- + +# awscc_iotfleetwise_fleets (Data Source) + +Plural Data Source schema for AWS::IoTFleetWise::Fleet + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/iotfleetwise_model_manifest.md b/docs/data-sources/iotfleetwise_model_manifest.md new file mode 100644 index 0000000000..2ec94898ec --- /dev/null +++ b/docs/data-sources/iotfleetwise_model_manifest.md @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_model_manifest Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IoTFleetWise::ModelManifest +--- + +# awscc_iotfleetwise_model_manifest (Data Source) + +Data Source schema for AWS::IoTFleetWise::ModelManifest + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `description` (String) +- `last_modification_time` (String) +- `name` (String) +- `nodes` (Set of String) +- `signal_catalog_arn` (String) +- `status` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + diff --git a/docs/data-sources/iotfleetwise_model_manifests.md b/docs/data-sources/iotfleetwise_model_manifests.md new file mode 100644 index 0000000000..48f5471e67 --- /dev/null +++ b/docs/data-sources/iotfleetwise_model_manifests.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_model_manifests Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IoTFleetWise::ModelManifest +--- + +# awscc_iotfleetwise_model_manifests (Data Source) + +Plural Data Source schema for AWS::IoTFleetWise::ModelManifest + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/iotfleetwise_signal_catalog.md b/docs/data-sources/iotfleetwise_signal_catalog.md new file mode 100644 index 0000000000..373ea40a3f --- /dev/null +++ b/docs/data-sources/iotfleetwise_signal_catalog.md @@ -0,0 +1,118 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_signal_catalog Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IoTFleetWise::SignalCatalog +--- + +# awscc_iotfleetwise_signal_catalog (Data Source) + +Data Source schema for AWS::IoTFleetWise::SignalCatalog + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `description` (String) +- `last_modification_time` (String) +- `name` (String) +- `node_counts` (Attributes) (see [below for nested schema](#nestedatt--node_counts)) +- `nodes` (Attributes Set) (see [below for nested schema](#nestedatt--nodes)) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `node_counts` + +Read-Only: + +- `total_actuators` (Number) +- `total_attributes` (Number) +- `total_branches` (Number) +- `total_nodes` (Number) +- `total_sensors` (Number) + + + +### Nested Schema for `nodes` + +Read-Only: + +- `actuator` (Attributes) (see [below for nested schema](#nestedatt--nodes--actuator)) +- `attribute` (Attributes) (see [below for nested schema](#nestedatt--nodes--attribute)) +- `branch` (Attributes) (see [below for nested schema](#nestedatt--nodes--branch)) +- `sensor` (Attributes) (see [below for nested schema](#nestedatt--nodes--sensor)) + + +### Nested Schema for `nodes.actuator` + +Read-Only: + +- `allowed_values` (List of String) +- `assigned_value` (String) +- `data_type` (String) +- `description` (String) +- `fully_qualified_name` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + +### Nested Schema for `nodes.attribute` + +Read-Only: + +- `allowed_values` (List of String) +- `assigned_value` (String) +- `data_type` (String) +- `default_value` (String) +- `description` (String) +- `fully_qualified_name` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + +### Nested Schema for `nodes.branch` + +Read-Only: + +- `description` (String) +- `fully_qualified_name` (String) + + + +### Nested Schema for `nodes.sensor` + +Read-Only: + +- `allowed_values` (List of String) +- `data_type` (String) +- `description` (String) +- `fully_qualified_name` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + diff --git a/docs/data-sources/iotfleetwise_signal_catalogs.md b/docs/data-sources/iotfleetwise_signal_catalogs.md new file mode 100644 index 0000000000..16e040d987 --- /dev/null +++ b/docs/data-sources/iotfleetwise_signal_catalogs.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_signal_catalogs Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IoTFleetWise::SignalCatalog +--- + +# awscc_iotfleetwise_signal_catalogs (Data Source) + +Plural Data Source schema for AWS::IoTFleetWise::SignalCatalog + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/iotfleetwise_vehicle.md b/docs/data-sources/iotfleetwise_vehicle.md new file mode 100644 index 0000000000..60c736cac9 --- /dev/null +++ b/docs/data-sources/iotfleetwise_vehicle.md @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_vehicle Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::IoTFleetWise::Vehicle +--- + +# awscc_iotfleetwise_vehicle (Data Source) + +Data Source schema for AWS::IoTFleetWise::Vehicle + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) +- `association_behavior` (String) +- `attributes` (Map of String) +- `creation_time` (String) +- `decoder_manifest_arn` (String) +- `last_modification_time` (String) +- `model_manifest_arn` (String) +- `name` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + diff --git a/docs/data-sources/iotfleetwise_vehicles.md b/docs/data-sources/iotfleetwise_vehicles.md new file mode 100644 index 0000000000..c905f0b201 --- /dev/null +++ b/docs/data-sources/iotfleetwise_vehicles.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_vehicles Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::IoTFleetWise::Vehicle +--- + +# awscc_iotfleetwise_vehicles (Data Source) + +Plural Data Source schema for AWS::IoTFleetWise::Vehicle + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/iotsitewise_asset.md b/docs/data-sources/iotsitewise_asset.md index 6e17ac3300..3cd92fd513 100644 --- a/docs/data-sources/iotsitewise_asset.md +++ b/docs/data-sources/iotsitewise_asset.md @@ -47,6 +47,7 @@ Read-Only: - `alias` (String) The property alias that identifies the property. - `logical_id` (String) Customer provided ID for property. - `notification_state` (String) The MQTT notification state (ENABLED or DISABLED) for this asset property. +- `unit` (String) The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model. diff --git a/docs/data-sources/iotwireless_device_profile.md b/docs/data-sources/iotwireless_device_profile.md index 86096b4a98..fef8b9e5ba 100644 --- a/docs/data-sources/iotwireless_device_profile.md +++ b/docs/data-sources/iotwireless_device_profile.md @@ -33,6 +33,7 @@ Read-Only: - `class_b_timeout` (Number) - `class_c_timeout` (Number) +- `factory_preset_freqs_list` (List of Number) - `mac_version` (String) - `max_duty_cycle` (Number) - `max_eirp` (Number) @@ -41,6 +42,10 @@ Read-Only: - `ping_slot_period` (Number) - `reg_params_revision` (String) - `rf_region` (String) +- `rx_data_rate_2` (Number) +- `rx_delay_1` (Number) +- `rx_dr_offset_1` (Number) +- `rx_freq_2` (Number) - `supports_32_bit_f_cnt` (Boolean) - `supports_class_b` (Boolean) - `supports_class_c` (Boolean) diff --git a/docs/data-sources/m2_application.md b/docs/data-sources/m2_application.md new file mode 100644 index 0000000000..f622862a51 --- /dev/null +++ b/docs/data-sources/m2_application.md @@ -0,0 +1,40 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_m2_application Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::M2::Application +--- + +# awscc_m2_application (Data Source) + +Data Source schema for AWS::M2::Application + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `application_arn` (String) +- `application_id` (String) +- `definition` (Attributes) (see [below for nested schema](#nestedatt--definition)) +- `description` (String) +- `engine_type` (String) +- `name` (String) +- `tags` (Map of String) + + +### Nested Schema for `definition` + +Read-Only: + +- `content` (String) +- `s3_location` (String) + + diff --git a/docs/data-sources/m2_applications.md b/docs/data-sources/m2_applications.md new file mode 100644 index 0000000000..5d4758fa4b --- /dev/null +++ b/docs/data-sources/m2_applications.md @@ -0,0 +1,23 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_m2_applications Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::M2::Application +--- + +# awscc_m2_applications (Data Source) + +Plural Data Source schema for AWS::M2::Application + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. + + diff --git a/docs/data-sources/mediapackage_origin_endpoint.md b/docs/data-sources/mediapackage_origin_endpoint.md index 9336fe6c25..62023526f6 100644 --- a/docs/data-sources/mediapackage_origin_endpoint.md +++ b/docs/data-sources/mediapackage_origin_endpoint.md @@ -63,6 +63,7 @@ Read-Only: Read-Only: - `constant_initialization_vector` (String) An optional 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting blocks. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV). +- `encryption_method` (String) The encryption method used - `key_rotation_interval_seconds` (Number) Time (in seconds) between each encryption key rotation. - `speke_key_provider` (Attributes) A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys. (see [below for nested schema](#nestedatt--cmaf_package--encryption--speke_key_provider)) diff --git a/docs/resources/connect_phone_number.md b/docs/resources/connect_phone_number.md index 56cf031d8b..3cb5227cd9 100644 --- a/docs/resources/connect_phone_number.md +++ b/docs/resources/connect_phone_number.md @@ -18,7 +18,7 @@ Resource Type definition for AWS::Connect::PhoneNumber ### Required - `country_code` (String) The phone number country code. -- `target_arn` (String) The ARN of the Amazon Connect instance the phone number is claimed to. +- `target_arn` (String) The ARN of the target the phone number is claimed to. - `type` (String) The phone number type, either TOLL_FREE or DID. ### Optional diff --git a/docs/resources/evidently_project.md b/docs/resources/evidently_project.md index 88f6844b8b..ecb078b11d 100644 --- a/docs/resources/evidently_project.md +++ b/docs/resources/evidently_project.md @@ -21,6 +21,7 @@ Resource Type definition for AWS::Evidently::Project ### Optional +- `app_config_resource` (Attributes) (see [below for nested schema](#nestedatt--app_config_resource)) - `data_delivery` (Attributes) Destinations for data. (see [below for nested schema](#nestedatt--data_delivery)) - `description` (String) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) @@ -30,6 +31,15 @@ Resource Type definition for AWS::Evidently::Project - `arn` (String) - `id` (String) Uniquely identifies the resource. + +### Nested Schema for `app_config_resource` + +Required: + +- `application_id` (String) +- `environment_id` (String) + + ### Nested Schema for `data_delivery` diff --git a/docs/resources/identitystore_group.md b/docs/resources/identitystore_group.md new file mode 100644 index 0000000000..79f92990d6 --- /dev/null +++ b/docs/resources/identitystore_group.md @@ -0,0 +1,35 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_identitystore_group Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::IdentityStore::Group +--- + +# awscc_identitystore_group (Resource) + +Resource Type definition for AWS::IdentityStore::Group + + + + +## Schema + +### Optional + +- `description` (String) A string containing the description of the group. +- `display_name` (String) A string containing the name of the group. This value is commonly displayed when the group is referenced. +- `identity_store_id` (String) The globally unique identifier for the identity store. + +### Read-Only + +- `group_id` (String) The unique identifier for a group in the identity store. +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_identitystore_group.example +``` diff --git a/docs/resources/identitystore_group_membership.md b/docs/resources/identitystore_group_membership.md new file mode 100644 index 0000000000..61e6a76392 --- /dev/null +++ b/docs/resources/identitystore_group_membership.md @@ -0,0 +1,42 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_identitystore_group_membership Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type Definition for AWS:IdentityStore::GroupMembership +--- + +# awscc_identitystore_group_membership (Resource) + +Resource Type Definition for AWS:IdentityStore::GroupMembership + + + + +## Schema + +### Optional + +- `group_id` (String) The unique identifier for a group in the identity store. +- `identity_store_id` (String) The globally unique identifier for the identity store. +- `member_id` (Attributes) An object containing the identifier of a group member. (see [below for nested schema](#nestedatt--member_id)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `membership_id` (String) The identifier for a GroupMembership in the identity store. + + +### Nested Schema for `member_id` + +Optional: + +- `user_id` (String) The identifier for a user in the identity store. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_identitystore_group_membership.example +``` diff --git a/docs/resources/imagebuilder_container_recipe.md b/docs/resources/imagebuilder_container_recipe.md index 13f5193eee..fa3f51f85f 100644 --- a/docs/resources/imagebuilder_container_recipe.md +++ b/docs/resources/imagebuilder_container_recipe.md @@ -44,6 +44,16 @@ Resource schema for AWS::ImageBuilder::ContainerRecipe Optional: - `component_arn` (String) The Amazon Resource Name (ARN) of the component. +- `parameters` (Attributes List) A group of parameter settings that are used to configure the component for a specific recipe. (see [below for nested schema](#nestedatt--components--parameters)) + + +### Nested Schema for `components.parameters` + +Required: + +- `name` (String) The name of the component parameter to set. +- `value` (List of String) Sets the value for the named component parameter. + diff --git a/docs/resources/iot_ca_certificate.md b/docs/resources/iot_ca_certificate.md index 85bc32bc33..f75bffd0c3 100644 --- a/docs/resources/iot_ca_certificate.md +++ b/docs/resources/iot_ca_certificate.md @@ -25,6 +25,7 @@ Registers a CA Certificate in IoT. - `auto_registration_status` (String) - `certificate_mode` (String) - `registration_config` (Attributes) (see [below for nested schema](#nestedatt--registration_config)) +- `remove_auto_registration` (Boolean) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `verification_certificate_pem` (String) The private key verification certificate. diff --git a/docs/resources/iotfleetwise_campaign.md b/docs/resources/iotfleetwise_campaign.md new file mode 100644 index 0000000000..06fd00988d --- /dev/null +++ b/docs/resources/iotfleetwise_campaign.md @@ -0,0 +1,106 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_campaign Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::IoTFleetWise::Campaign Resource Type +--- + +# awscc_iotfleetwise_campaign (Resource) + +Definition of AWS::IoTFleetWise::Campaign Resource Type + + + + +## Schema + +### Required + +- `action` (String) +- `collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme)) +- `name` (String) +- `signal_catalog_arn` (String) +- `target_arn` (String) + +### Optional + +- `compression` (String) +- `data_extra_dimensions` (List of String) +- `description` (String) +- `diagnostics_mode` (String) +- `expiry_time` (String) +- `post_trigger_collection_duration` (Number) +- `priority` (Number) +- `signals_to_collect` (Attributes List) (see [below for nested schema](#nestedatt--signals_to_collect)) +- `spooling_mode` (String) +- `start_time` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `last_modification_time` (String) +- `status` (String) + + +### Nested Schema for `collection_scheme` + +Optional: + +- `condition_based_collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme--condition_based_collection_scheme)) +- `time_based_collection_scheme` (Attributes) (see [below for nested schema](#nestedatt--collection_scheme--time_based_collection_scheme)) + + +### Nested Schema for `collection_scheme.condition_based_collection_scheme` + +Required: + +- `expression` (String) + +Optional: + +- `condition_language_version` (Number) +- `minimum_trigger_interval_ms` (Number) +- `trigger_mode` (String) + + + +### Nested Schema for `collection_scheme.time_based_collection_scheme` + +Required: + +- `period_ms` (Number) + + + + +### Nested Schema for `signals_to_collect` + +Required: + +- `name` (String) + +Optional: + +- `max_sample_count` (Number) +- `minimum_sampling_interval_ms` (Number) + + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_iotfleetwise_campaign.example +``` diff --git a/docs/resources/iotfleetwise_fleet.md b/docs/resources/iotfleetwise_fleet.md new file mode 100644 index 0000000000..2461e2a84b --- /dev/null +++ b/docs/resources/iotfleetwise_fleet.md @@ -0,0 +1,48 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_fleet Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::IoTFleetWise::Fleet Resource Type +--- + +# awscc_iotfleetwise_fleet (Resource) + +Definition of AWS::IoTFleetWise::Fleet Resource Type + + + + +## Schema + +### Required + +- `signal_catalog_arn` (String) + +### Optional + +- `description` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) The ID of this resource. +- `last_modification_time` (String) + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_iotfleetwise_fleet.example +``` diff --git a/docs/resources/iotfleetwise_model_manifest.md b/docs/resources/iotfleetwise_model_manifest.md new file mode 100644 index 0000000000..831ed0e2ba --- /dev/null +++ b/docs/resources/iotfleetwise_model_manifest.md @@ -0,0 +1,51 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_model_manifest Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::IoTFleetWise::ModelManifest Resource Type +--- + +# awscc_iotfleetwise_model_manifest (Resource) + +Definition of AWS::IoTFleetWise::ModelManifest Resource Type + + + + +## Schema + +### Required + +- `name` (String) +- `signal_catalog_arn` (String) + +### Optional + +- `description` (String) +- `nodes` (Set of String) +- `status` (String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `last_modification_time` (String) + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_iotfleetwise_model_manifest.example +``` diff --git a/docs/resources/iotfleetwise_signal_catalog.md b/docs/resources/iotfleetwise_signal_catalog.md new file mode 100644 index 0000000000..c7ec51f9d0 --- /dev/null +++ b/docs/resources/iotfleetwise_signal_catalog.md @@ -0,0 +1,136 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_signal_catalog Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::IoTFleetWise::SignalCatalog Resource Type +--- + +# awscc_iotfleetwise_signal_catalog (Resource) + +Definition of AWS::IoTFleetWise::SignalCatalog Resource Type + + + + +## Schema + +### Optional + +- `description` (String) +- `name` (String) +- `node_counts` (Attributes) (see [below for nested schema](#nestedatt--node_counts)) +- `nodes` (Attributes Set) (see [below for nested schema](#nestedatt--nodes)) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `last_modification_time` (String) + + +### Nested Schema for `node_counts` + +Read-Only: + +- `total_actuators` (Number) +- `total_attributes` (Number) +- `total_branches` (Number) +- `total_nodes` (Number) +- `total_sensors` (Number) + + + +### Nested Schema for `nodes` + +Optional: + +- `actuator` (Attributes) (see [below for nested schema](#nestedatt--nodes--actuator)) +- `attribute` (Attributes) (see [below for nested schema](#nestedatt--nodes--attribute)) +- `branch` (Attributes) (see [below for nested schema](#nestedatt--nodes--branch)) +- `sensor` (Attributes) (see [below for nested schema](#nestedatt--nodes--sensor)) + + +### Nested Schema for `nodes.actuator` + +Required: + +- `data_type` (String) +- `fully_qualified_name` (String) + +Optional: + +- `allowed_values` (List of String) +- `assigned_value` (String) +- `description` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + +### Nested Schema for `nodes.attribute` + +Required: + +- `data_type` (String) +- `fully_qualified_name` (String) + +Optional: + +- `allowed_values` (List of String) +- `assigned_value` (String) +- `default_value` (String) +- `description` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + +### Nested Schema for `nodes.branch` + +Required: + +- `fully_qualified_name` (String) + +Optional: + +- `description` (String) + + + +### Nested Schema for `nodes.sensor` + +Required: + +- `data_type` (String) +- `fully_qualified_name` (String) + +Optional: + +- `allowed_values` (List of String) +- `description` (String) +- `max` (Number) +- `min` (Number) +- `unit` (String) + + + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_iotfleetwise_signal_catalog.example +``` diff --git a/docs/resources/iotfleetwise_vehicle.md b/docs/resources/iotfleetwise_vehicle.md new file mode 100644 index 0000000000..12f213b372 --- /dev/null +++ b/docs/resources/iotfleetwise_vehicle.md @@ -0,0 +1,51 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_iotfleetwise_vehicle Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::IoTFleetWise::Vehicle Resource Type +--- + +# awscc_iotfleetwise_vehicle (Resource) + +Definition of AWS::IoTFleetWise::Vehicle Resource Type + + + + +## Schema + +### Required + +- `decoder_manifest_arn` (String) +- `model_manifest_arn` (String) +- `name` (String) + +### Optional + +- `association_behavior` (String) +- `attributes` (Map of String) +- `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String) +- `creation_time` (String) +- `id` (String) Uniquely identifies the resource. +- `last_modification_time` (String) + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_iotfleetwise_vehicle.example +``` diff --git a/docs/resources/iotsitewise_asset.md b/docs/resources/iotsitewise_asset.md index 056097d9af..f63246c107 100644 --- a/docs/resources/iotsitewise_asset.md +++ b/docs/resources/iotsitewise_asset.md @@ -53,6 +53,7 @@ Optional: - `alias` (String) The property alias that identifies the property. - `notification_state` (String) The MQTT notification state (ENABLED or DISABLED) for this asset property. +- `unit` (String) The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model. diff --git a/docs/resources/iotwireless_device_profile.md b/docs/resources/iotwireless_device_profile.md index 89c29ac31d..02d309af58 100644 --- a/docs/resources/iotwireless_device_profile.md +++ b/docs/resources/iotwireless_device_profile.md @@ -33,6 +33,7 @@ Optional: - `class_b_timeout` (Number) - `class_c_timeout` (Number) +- `factory_preset_freqs_list` (List of Number) - `mac_version` (String) - `max_duty_cycle` (Number) - `max_eirp` (Number) @@ -41,6 +42,10 @@ Optional: - `ping_slot_period` (Number) - `reg_params_revision` (String) - `rf_region` (String) +- `rx_data_rate_2` (Number) +- `rx_delay_1` (Number) +- `rx_dr_offset_1` (Number) +- `rx_freq_2` (Number) - `supports_32_bit_f_cnt` (Boolean) - `supports_class_b` (Boolean) - `supports_class_c` (Boolean) diff --git a/docs/resources/m2_application.md b/docs/resources/m2_application.md new file mode 100644 index 0000000000..47e1a8f7ae --- /dev/null +++ b/docs/resources/m2_application.md @@ -0,0 +1,49 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_m2_application Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Represents an application that runs on an AWS Mainframe Modernization Environment +--- + +# awscc_m2_application (Resource) + +Represents an application that runs on an AWS Mainframe Modernization Environment + + + + +## Schema + +### Required + +- `definition` (Attributes) (see [below for nested schema](#nestedatt--definition)) +- `engine_type` (String) +- `name` (String) + +### Optional + +- `description` (String) +- `tags` (Map of String) + +### Read-Only + +- `application_arn` (String) +- `application_id` (String) +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `definition` + +Optional: + +- `content` (String) +- `s3_location` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_m2_application.example +``` diff --git a/docs/resources/mediapackage_origin_endpoint.md b/docs/resources/mediapackage_origin_endpoint.md index 84c4c40a54..fbd16993dd 100644 --- a/docs/resources/mediapackage_origin_endpoint.md +++ b/docs/resources/mediapackage_origin_endpoint.md @@ -70,6 +70,7 @@ Required: Optional: - `constant_initialization_vector` (String) An optional 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting blocks. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV). +- `encryption_method` (String) The encryption method used - `key_rotation_interval_seconds` (Number) Time (in seconds) between each encryption key rotation. diff --git a/examples/resources/awscc_identitystore_group/import.sh b/examples/resources/awscc_identitystore_group/import.sh new file mode 100644 index 0000000000..35f85bd07b --- /dev/null +++ b/examples/resources/awscc_identitystore_group/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_identitystore_group.example \ No newline at end of file diff --git a/examples/resources/awscc_identitystore_group_membership/import.sh b/examples/resources/awscc_identitystore_group_membership/import.sh new file mode 100644 index 0000000000..b52955c064 --- /dev/null +++ b/examples/resources/awscc_identitystore_group_membership/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_identitystore_group_membership.example \ No newline at end of file diff --git a/examples/resources/awscc_iotfleetwise_campaign/import.sh b/examples/resources/awscc_iotfleetwise_campaign/import.sh new file mode 100644 index 0000000000..76c6e78def --- /dev/null +++ b/examples/resources/awscc_iotfleetwise_campaign/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_iotfleetwise_campaign.example \ No newline at end of file diff --git a/examples/resources/awscc_iotfleetwise_fleet/import.sh b/examples/resources/awscc_iotfleetwise_fleet/import.sh new file mode 100644 index 0000000000..23326d2385 --- /dev/null +++ b/examples/resources/awscc_iotfleetwise_fleet/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_iotfleetwise_fleet.example \ No newline at end of file diff --git a/examples/resources/awscc_iotfleetwise_model_manifest/import.sh b/examples/resources/awscc_iotfleetwise_model_manifest/import.sh new file mode 100644 index 0000000000..e79ecbb614 --- /dev/null +++ b/examples/resources/awscc_iotfleetwise_model_manifest/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_iotfleetwise_model_manifest.example \ No newline at end of file diff --git a/examples/resources/awscc_iotfleetwise_signal_catalog/import.sh b/examples/resources/awscc_iotfleetwise_signal_catalog/import.sh new file mode 100644 index 0000000000..d627933da1 --- /dev/null +++ b/examples/resources/awscc_iotfleetwise_signal_catalog/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_iotfleetwise_signal_catalog.example \ No newline at end of file diff --git a/examples/resources/awscc_iotfleetwise_vehicle/import.sh b/examples/resources/awscc_iotfleetwise_vehicle/import.sh new file mode 100644 index 0000000000..65978b8bac --- /dev/null +++ b/examples/resources/awscc_iotfleetwise_vehicle/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_iotfleetwise_vehicle.example \ No newline at end of file diff --git a/examples/resources/awscc_m2_application/import.sh b/examples/resources/awscc_m2_application/import.sh new file mode 100644 index 0000000000..42b6d078f6 --- /dev/null +++ b/examples/resources/awscc_m2_application/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_m2_application.example \ No newline at end of file diff --git a/internal/aws/apprunner/service_resource_gen.go b/internal/aws/apprunner/service_resource_gen.go index d4092aa091..d9b5d522c9 100644 --- a/internal/aws/apprunner/service_resource_gen.go +++ b/internal/aws/apprunner/service_resource_gen.go @@ -567,7 +567,8 @@ func serviceResourceType(ctx context.Context) (provider.ResourceType, error) { // "NODEJS_12", // "NODEJS_14", // "CORRETTO_8", - // "CORRETTO_11" + // "CORRETTO_11", + // "NODEJS_16" // ], // "type": "string" // }, @@ -802,6 +803,7 @@ func serviceResourceType(ctx context.Context) (provider.ResourceType, error) { "NODEJS_14", "CORRETTO_8", "CORRETTO_11", + "NODEJS_16", }), }, }, diff --git a/internal/aws/apprunner/service_singular_data_source_gen.go b/internal/aws/apprunner/service_singular_data_source_gen.go index de58b0d895..23209d9c42 100644 --- a/internal/aws/apprunner/service_singular_data_source_gen.go +++ b/internal/aws/apprunner/service_singular_data_source_gen.go @@ -430,7 +430,8 @@ func serviceDataSourceType(ctx context.Context) (provider.DataSourceType, error) // "NODEJS_12", // "NODEJS_14", // "CORRETTO_8", - // "CORRETTO_11" + // "CORRETTO_11", + // "NODEJS_16" // ], // "type": "string" // }, diff --git a/internal/aws/connect/phone_number_resource_gen.go b/internal/aws/connect/phone_number_resource_gen.go index bb68ca6f96..c0aef98be7 100644 --- a/internal/aws/connect/phone_number_resource_gen.go +++ b/internal/aws/connect/phone_number_resource_gen.go @@ -182,15 +182,15 @@ func phoneNumberResourceType(ctx context.Context) (provider.ResourceType, error) // Property: TargetArn // CloudFormation resource type schema: // { - // "description": "The ARN of the Amazon Connect instance the phone number is claimed to.", - // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "description": "The ARN of the target the phone number is claimed to.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)/[-a-zA-Z0-9]*$", // "type": "string" // } - Description: "The ARN of the Amazon Connect instance the phone number is claimed to.", + Description: "The ARN of the target the phone number is claimed to.", Type: types.StringType, Required: true, Validators: []tfsdk.AttributeValidator{ - validate.StringMatch(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$"), ""), + validate.StringMatch(regexp.MustCompile("^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)/[-a-zA-Z0-9]*$"), ""), }, }, "type": { diff --git a/internal/aws/connect/phone_number_singular_data_source_gen.go b/internal/aws/connect/phone_number_singular_data_source_gen.go index e2a59529f8..4d7da77942 100644 --- a/internal/aws/connect/phone_number_singular_data_source_gen.go +++ b/internal/aws/connect/phone_number_singular_data_source_gen.go @@ -137,11 +137,11 @@ func phoneNumberDataSourceType(ctx context.Context) (provider.DataSourceType, er // Property: TargetArn // CloudFormation resource type schema: // { - // "description": "The ARN of the Amazon Connect instance the phone number is claimed to.", - // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + // "description": "The ARN of the target the phone number is claimed to.", + // "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)/[-a-zA-Z0-9]*$", // "type": "string" // } - Description: "The ARN of the Amazon Connect instance the phone number is claimed to.", + Description: "The ARN of the target the phone number is claimed to.", Type: types.StringType, Computed: true, }, diff --git a/internal/aws/eks/addon_resource_gen.go b/internal/aws/eks/addon_resource_gen.go index 2bdaa6958e..4e32f06d43 100644 --- a/internal/aws/eks/addon_resource_gen.go +++ b/internal/aws/eks/addon_resource_gen.go @@ -98,7 +98,8 @@ func addonResourceType(ctx context.Context) (provider.ResourceType, error) { // "description": "Resolve parameter value conflicts", // "enum": [ // "NONE", - // "OVERWRITE" + // "OVERWRITE", + // "PRESERVE" // ], // "minLength": 1, // "type": "string" @@ -112,6 +113,7 @@ func addonResourceType(ctx context.Context) (provider.ResourceType, error) { validate.StringInSlice([]string{ "NONE", "OVERWRITE", + "PRESERVE", }), }, PlanModifiers: []tfsdk.AttributePlanModifier{ diff --git a/internal/aws/eks/addon_singular_data_source_gen.go b/internal/aws/eks/addon_singular_data_source_gen.go index a18a5082dc..485e6ae3e1 100644 --- a/internal/aws/eks/addon_singular_data_source_gen.go +++ b/internal/aws/eks/addon_singular_data_source_gen.go @@ -74,7 +74,8 @@ func addonDataSourceType(ctx context.Context) (provider.DataSourceType, error) { // "description": "Resolve parameter value conflicts", // "enum": [ // "NONE", - // "OVERWRITE" + // "OVERWRITE", + // "PRESERVE" // ], // "minLength": 1, // "type": "string" diff --git a/internal/aws/evidently/project_resource_gen.go b/internal/aws/evidently/project_resource_gen.go index 0aa82d13cd..e7cff16df9 100644 --- a/internal/aws/evidently/project_resource_gen.go +++ b/internal/aws/evidently/project_resource_gen.go @@ -23,6 +23,53 @@ func init() { // This Terraform resource type corresponds to the CloudFormation AWS::Evidently::Project resource type. func projectResourceType(ctx context.Context) (provider.ResourceType, error) { attributes := map[string]tfsdk.Attribute{ + "app_config_resource": { + // Property: AppConfigResource + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "properties": { + // "ApplicationId": { + // "pattern": "[a-z0-9]{4,7}", + // "type": "string" + // }, + // "EnvironmentId": { + // "pattern": "[a-z0-9]{4,7}", + // "type": "string" + // } + // }, + // "required": [ + // "ApplicationId", + // "EnvironmentId" + // ], + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "application_id": { + // Property: ApplicationId + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringMatch(regexp.MustCompile("[a-z0-9]{4,7}"), ""), + }, + }, + "environment_id": { + // Property: EnvironmentId + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringMatch(regexp.MustCompile("[a-z0-9]{4,7}"), ""), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, "arn": { // Property: Arn // CloudFormation resource type schema: @@ -279,17 +326,20 @@ func projectResourceType(ctx context.Context) (provider.ResourceType, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(true) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "bucket_name": "BucketName", - "data_delivery": "DataDelivery", - "description": "Description", - "key": "Key", - "log_group": "LogGroup", - "name": "Name", - "prefix": "Prefix", - "s3": "S3", - "tags": "Tags", - "value": "Value", + "app_config_resource": "AppConfigResource", + "application_id": "ApplicationId", + "arn": "Arn", + "bucket_name": "BucketName", + "data_delivery": "DataDelivery", + "description": "Description", + "environment_id": "EnvironmentId", + "key": "Key", + "log_group": "LogGroup", + "name": "Name", + "prefix": "Prefix", + "s3": "S3", + "tags": "Tags", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/evidently/project_singular_data_source_gen.go b/internal/aws/evidently/project_singular_data_source_gen.go index 305d8e7515..260a1a1c27 100644 --- a/internal/aws/evidently/project_singular_data_source_gen.go +++ b/internal/aws/evidently/project_singular_data_source_gen.go @@ -20,6 +20,43 @@ func init() { // This Terraform data source type corresponds to the CloudFormation AWS::Evidently::Project resource type. func projectDataSourceType(ctx context.Context) (provider.DataSourceType, error) { attributes := map[string]tfsdk.Attribute{ + "app_config_resource": { + // Property: AppConfigResource + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "properties": { + // "ApplicationId": { + // "pattern": "[a-z0-9]{4,7}", + // "type": "string" + // }, + // "EnvironmentId": { + // "pattern": "[a-z0-9]{4,7}", + // "type": "string" + // } + // }, + // "required": [ + // "ApplicationId", + // "EnvironmentId" + // ], + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "application_id": { + // Property: ApplicationId + Type: types.StringType, + Computed: true, + }, + "environment_id": { + // Property: EnvironmentId + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, "arn": { // Property: Arn // CloudFormation resource type schema: @@ -205,17 +242,20 @@ func projectDataSourceType(ctx context.Context) (provider.DataSourceType, error) opts = opts.WithCloudFormationTypeName("AWS::Evidently::Project").WithTerraformTypeName("awscc_evidently_project") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "bucket_name": "BucketName", - "data_delivery": "DataDelivery", - "description": "Description", - "key": "Key", - "log_group": "LogGroup", - "name": "Name", - "prefix": "Prefix", - "s3": "S3", - "tags": "Tags", - "value": "Value", + "app_config_resource": "AppConfigResource", + "application_id": "ApplicationId", + "arn": "Arn", + "bucket_name": "BucketName", + "data_delivery": "DataDelivery", + "description": "Description", + "environment_id": "EnvironmentId", + "key": "Key", + "log_group": "LogGroup", + "name": "Name", + "prefix": "Prefix", + "s3": "S3", + "tags": "Tags", + "value": "Value", }) singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) diff --git a/internal/aws/identitystore/group_membership_resource_gen.go b/internal/aws/identitystore/group_membership_resource_gen.go new file mode 100644 index 0000000000..be5901ac0e --- /dev/null +++ b/internal/aws/identitystore/group_membership_resource_gen.go @@ -0,0 +1,170 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package identitystore + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_identitystore_group_membership", groupMembershipResourceType) +} + +// groupMembershipResourceType returns the Terraform awscc_identitystore_group_membership resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IdentityStore::GroupMembership resource type. +func groupMembershipResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "group_id": { + // Property: GroupId + // CloudFormation resource type schema: + // { + // "description": "The unique identifier for a group in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The unique identifier for a group in the identity store.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 47), + validate.StringMatch(regexp.MustCompile("^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "identity_store_id": { + // Property: IdentityStoreId + // CloudFormation resource type schema: + // { + // "description": "The globally unique identifier for the identity store.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + // "type": "string" + // } + Description: "The globally unique identifier for the identity store.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 36), + validate.StringMatch(regexp.MustCompile("^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "member_id": { + // Property: MemberId + // CloudFormation resource type schema: + // { + // "description": "An object containing the identifier of a group member.", + // "properties": { + // "UserId": { + // "description": "The identifier for a user in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + // }, + // "type": "object" + // } + Description: "An object containing the identifier of a group member.", + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "user_id": { + // Property: UserId + Description: "The identifier for a user in the identity store.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 47), + validate.StringMatch(regexp.MustCompile("^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "membership_id": { + // Property: MembershipId + // CloudFormation resource type schema: + // { + // "description": "The identifier for a GroupMembership in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The identifier for a GroupMembership in the identity store.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Resource Type Definition for AWS:IdentityStore::GroupMembership", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IdentityStore::GroupMembership").WithTerraformTypeName("awscc_identitystore_group_membership") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "group_id": "GroupId", + "identity_store_id": "IdentityStoreId", + "member_id": "MemberId", + "membership_id": "MembershipId", + "user_id": "UserId", + }) + + 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/identitystore/group_membership_resource_gen_test.go b/internal/aws/identitystore/group_membership_resource_gen_test.go new file mode 100644 index 0000000000..d2cb3ef162 --- /dev/null +++ b/internal/aws/identitystore/group_membership_resource_gen_test.go @@ -0,0 +1,43 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package identitystore_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIdentityStoreGroupMembership_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::GroupMembership", "awscc_identitystore_group_membership", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSIdentityStoreGroupMembership_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::GroupMembership", "awscc_identitystore_group_membership", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, + }, + }) +} diff --git a/internal/aws/identitystore/group_membership_singular_data_source_gen.go b/internal/aws/identitystore/group_membership_singular_data_source_gen.go new file mode 100644 index 0000000000..2a55be1d5b --- /dev/null +++ b/internal/aws/identitystore/group_membership_singular_data_source_gen.go @@ -0,0 +1,127 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package identitystore + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_identitystore_group_membership", groupMembershipDataSourceType) +} + +// groupMembershipDataSourceType returns the Terraform awscc_identitystore_group_membership data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IdentityStore::GroupMembership resource type. +func groupMembershipDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "group_id": { + // Property: GroupId + // CloudFormation resource type schema: + // { + // "description": "The unique identifier for a group in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The unique identifier for a group in the identity store.", + Type: types.StringType, + Computed: true, + }, + "identity_store_id": { + // Property: IdentityStoreId + // CloudFormation resource type schema: + // { + // "description": "The globally unique identifier for the identity store.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + // "type": "string" + // } + Description: "The globally unique identifier for the identity store.", + Type: types.StringType, + Computed: true, + }, + "member_id": { + // Property: MemberId + // CloudFormation resource type schema: + // { + // "description": "An object containing the identifier of a group member.", + // "properties": { + // "UserId": { + // "description": "The identifier for a user in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + // }, + // "type": "object" + // } + Description: "An object containing the identifier of a group member.", + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "user_id": { + // Property: UserId + Description: "The identifier for a user in the identity store.", + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "membership_id": { + // Property: MembershipId + // CloudFormation resource type schema: + // { + // "description": "The identifier for a GroupMembership in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The identifier for a GroupMembership in the identity store.", + 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::IdentityStore::GroupMembership", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IdentityStore::GroupMembership").WithTerraformTypeName("awscc_identitystore_group_membership") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "group_id": "GroupId", + "identity_store_id": "IdentityStoreId", + "member_id": "MemberId", + "membership_id": "MembershipId", + "user_id": "UserId", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/identitystore/group_membership_singular_data_source_gen_test.go b/internal/aws/identitystore/group_membership_singular_data_source_gen_test.go new file mode 100644 index 0000000000..22533cdade --- /dev/null +++ b/internal/aws/identitystore/group_membership_singular_data_source_gen_test.go @@ -0,0 +1,37 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package identitystore_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIdentityStoreGroupMembershipDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::GroupMembership", "awscc_identitystore_group_membership", "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 TestAccAWSIdentityStoreGroupMembershipDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::GroupMembership", "awscc_identitystore_group_membership", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/identitystore/group_resource_gen.go b/internal/aws/identitystore/group_resource_gen.go new file mode 100644 index 0000000000..5ca0a8d0fb --- /dev/null +++ b/internal/aws/identitystore/group_resource_gen.go @@ -0,0 +1,150 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package identitystore + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_identitystore_group", groupResourceType) +} + +// groupResourceType returns the Terraform awscc_identitystore_group resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IdentityStore::Group resource type. +func groupResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "description": "A string containing the description of the group.", + // "maxLength": 1024, + // "minLength": 1, + // "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r  ]+$", + // "type": "string" + // } + Description: "A string containing the description of the group.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 1024), + validate.StringMatch(regexp.MustCompile("^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r \u3000]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "display_name": { + // Property: DisplayName + // CloudFormation resource type schema: + // { + // "description": "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + // "maxLength": 1024, + // "minLength": 1, + // "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$", + // "type": "string" + // } + Description: "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 1024), + validate.StringMatch(regexp.MustCompile("^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "group_id": { + // Property: GroupId + // CloudFormation resource type schema: + // { + // "description": "The unique identifier for a group in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The unique identifier for a group in the identity store.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "identity_store_id": { + // Property: IdentityStoreId + // CloudFormation resource type schema: + // { + // "description": "The globally unique identifier for the identity store.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + // "type": "string" + // } + Description: "The globally unique identifier for the identity store.", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 36), + validate.StringMatch(regexp.MustCompile("^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Resource Type definition for AWS::IdentityStore::Group", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IdentityStore::Group").WithTerraformTypeName("awscc_identitystore_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "display_name": "DisplayName", + "group_id": "GroupId", + "identity_store_id": "IdentityStoreId", + }) + + 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/identitystore/group_resource_gen_test.go b/internal/aws/identitystore/group_resource_gen_test.go new file mode 100644 index 0000000000..cce7cb955b --- /dev/null +++ b/internal/aws/identitystore/group_resource_gen_test.go @@ -0,0 +1,43 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package identitystore_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIdentityStoreGroup_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::Group", "awscc_identitystore_group", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSIdentityStoreGroup_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::Group", "awscc_identitystore_group", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, + }, + }) +} diff --git a/internal/aws/identitystore/group_singular_data_source_gen.go b/internal/aws/identitystore/group_singular_data_source_gen.go new file mode 100644 index 0000000000..e50a632fc1 --- /dev/null +++ b/internal/aws/identitystore/group_singular_data_source_gen.go @@ -0,0 +1,111 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package identitystore + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_identitystore_group", groupDataSourceType) +} + +// groupDataSourceType returns the Terraform awscc_identitystore_group data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IdentityStore::Group resource type. +func groupDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "description": "A string containing the description of the group.", + // "maxLength": 1024, + // "minLength": 1, + // "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r  ]+$", + // "type": "string" + // } + Description: "A string containing the description of the group.", + Type: types.StringType, + Computed: true, + }, + "display_name": { + // Property: DisplayName + // CloudFormation resource type schema: + // { + // "description": "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + // "maxLength": 1024, + // "minLength": 1, + // "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$", + // "type": "string" + // } + Description: "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + Type: types.StringType, + Computed: true, + }, + "group_id": { + // Property: GroupId + // CloudFormation resource type schema: + // { + // "description": "The unique identifier for a group in the identity store.", + // "maxLength": 47, + // "minLength": 1, + // "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + // "type": "string" + // } + Description: "The unique identifier for a group in the identity store.", + Type: types.StringType, + Computed: true, + }, + "identity_store_id": { + // Property: IdentityStoreId + // CloudFormation resource type schema: + // { + // "description": "The globally unique identifier for the identity store.", + // "maxLength": 36, + // "minLength": 1, + // "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + // "type": "string" + // } + Description: "The globally unique identifier for the identity store.", + 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::IdentityStore::Group", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IdentityStore::Group").WithTerraformTypeName("awscc_identitystore_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "display_name": "DisplayName", + "group_id": "GroupId", + "identity_store_id": "IdentityStoreId", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/identitystore/group_singular_data_source_gen_test.go b/internal/aws/identitystore/group_singular_data_source_gen_test.go new file mode 100644 index 0000000000..4188f7c86d --- /dev/null +++ b/internal/aws/identitystore/group_singular_data_source_gen_test.go @@ -0,0 +1,37 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package identitystore_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIdentityStoreGroupDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::Group", "awscc_identitystore_group", "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 TestAccAWSIdentityStoreGroupDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IdentityStore::Group", "awscc_identitystore_group", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/imagebuilder/container_recipe_resource_gen.go b/internal/aws/imagebuilder/container_recipe_resource_gen.go index 49b7d7cd96..4cf7df4ee1 100644 --- a/internal/aws/imagebuilder/container_recipe_resource_gen.go +++ b/internal/aws/imagebuilder/container_recipe_resource_gen.go @@ -49,6 +49,34 @@ func containerRecipeResourceType(ctx context.Context) (provider.ResourceType, er // "ComponentArn": { // "description": "The Amazon Resource Name (ARN) of the component.", // "type": "string" + // }, + // "Parameters": { + // "description": "A group of parameter settings that are used to configure the component for a specific recipe.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Contains a key/value pair that sets the named component parameter.", + // "properties": { + // "Name": { + // "description": "The name of the component parameter to set.", + // "type": "string" + // }, + // "Value": { + // "description": "Sets the value for the named component parameter.", + // "insertionOrder": true, + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Name", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" // } // }, // "type": "object" @@ -68,6 +96,32 @@ func containerRecipeResourceType(ctx context.Context) (provider.ResourceType, er resource.UseStateForUnknown(), }, }, + "parameters": { + // Property: Parameters + Description: "A group of parameter settings that are used to configure the component for a specific recipe.", + Attributes: tfsdk.ListNestedAttributes( + map[string]tfsdk.Attribute{ + "name": { + // Property: Name + Description: "The name of the component parameter to set.", + Type: types.StringType, + Required: true, + }, + "value": { + // Property: Value + Description: "Sets the value for the named component parameter.", + Type: types.ListType{ElemType: types.StringType}, + Required: true, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, }, ), Optional: true, @@ -652,6 +706,7 @@ func containerRecipeResourceType(ctx context.Context) (provider.ResourceType, er "kms_key_id": "KmsKeyId", "name": "Name", "no_device": "NoDevice", + "parameters": "Parameters", "parent_image": "ParentImage", "platform_override": "PlatformOverride", "repository_name": "RepositoryName", @@ -660,6 +715,7 @@ func containerRecipeResourceType(ctx context.Context) (provider.ResourceType, er "tags": "Tags", "target_repository": "TargetRepository", "throughput": "Throughput", + "value": "Value", "version": "Version", "virtual_name": "VirtualName", "volume_size": "VolumeSize", diff --git a/internal/aws/imagebuilder/container_recipe_singular_data_source_gen.go b/internal/aws/imagebuilder/container_recipe_singular_data_source_gen.go index 39f0ede4d3..2edf913fd1 100644 --- a/internal/aws/imagebuilder/container_recipe_singular_data_source_gen.go +++ b/internal/aws/imagebuilder/container_recipe_singular_data_source_gen.go @@ -44,6 +44,34 @@ func containerRecipeDataSourceType(ctx context.Context) (provider.DataSourceType // "ComponentArn": { // "description": "The Amazon Resource Name (ARN) of the component.", // "type": "string" + // }, + // "Parameters": { + // "description": "A group of parameter settings that are used to configure the component for a specific recipe.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Contains a key/value pair that sets the named component parameter.", + // "properties": { + // "Name": { + // "description": "The name of the component parameter to set.", + // "type": "string" + // }, + // "Value": { + // "description": "Sets the value for the named component parameter.", + // "insertionOrder": true, + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Name", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" // } // }, // "type": "object" @@ -59,6 +87,27 @@ func containerRecipeDataSourceType(ctx context.Context) (provider.DataSourceType Type: types.StringType, Computed: true, }, + "parameters": { + // Property: Parameters + Description: "A group of parameter settings that are used to configure the component for a specific recipe.", + Attributes: tfsdk.ListNestedAttributes( + map[string]tfsdk.Attribute{ + "name": { + // Property: Name + Description: "The name of the component parameter to set.", + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + Description: "Sets the value for the named component parameter.", + Type: types.ListType{ElemType: types.StringType}, + Computed: true, + }, + }, + ), + Computed: true, + }, }, ), Computed: true, @@ -470,6 +519,7 @@ func containerRecipeDataSourceType(ctx context.Context) (provider.DataSourceType "kms_key_id": "KmsKeyId", "name": "Name", "no_device": "NoDevice", + "parameters": "Parameters", "parent_image": "ParentImage", "platform_override": "PlatformOverride", "repository_name": "RepositoryName", @@ -478,6 +528,7 @@ func containerRecipeDataSourceType(ctx context.Context) (provider.DataSourceType "tags": "Tags", "target_repository": "TargetRepository", "throughput": "Throughput", + "value": "Value", "version": "Version", "virtual_name": "VirtualName", "volume_size": "VolumeSize", diff --git a/internal/aws/iot/ca_certificate_resource_gen.go b/internal/aws/iot/ca_certificate_resource_gen.go index bd8ec1c633..74064549d3 100644 --- a/internal/aws/iot/ca_certificate_resource_gen.go +++ b/internal/aws/iot/ca_certificate_resource_gen.go @@ -189,6 +189,19 @@ func cACertificateResourceType(ctx context.Context) (provider.ResourceType, erro resource.UseStateForUnknown(), }, }, + "remove_auto_registration": { + // Property: RemoveAutoRegistration + // CloudFormation resource type schema: + // { + // "type": "boolean" + // } + Type: types.BoolType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, "status": { // Property: Status // CloudFormation resource type schema: @@ -318,6 +331,7 @@ func cACertificateResourceType(ctx context.Context) (provider.ResourceType, erro "id": "Id", "key": "Key", "registration_config": "RegistrationConfig", + "remove_auto_registration": "RemoveAutoRegistration", "role_arn": "RoleArn", "status": "Status", "tags": "Tags", diff --git a/internal/aws/iot/ca_certificate_singular_data_source_gen.go b/internal/aws/iot/ca_certificate_singular_data_source_gen.go index 2f5a994bce..f92210bd07 100644 --- a/internal/aws/iot/ca_certificate_singular_data_source_gen.go +++ b/internal/aws/iot/ca_certificate_singular_data_source_gen.go @@ -124,6 +124,15 @@ func cACertificateDataSourceType(ctx context.Context) (provider.DataSourceType, ), Computed: true, }, + "remove_auto_registration": { + // Property: RemoveAutoRegistration + // CloudFormation resource type schema: + // { + // "type": "boolean" + // } + Type: types.BoolType, + Computed: true, + }, "status": { // Property: Status // CloudFormation resource type schema: @@ -230,6 +239,7 @@ func cACertificateDataSourceType(ctx context.Context) (provider.DataSourceType, "id": "Id", "key": "Key", "registration_config": "RegistrationConfig", + "remove_auto_registration": "RemoveAutoRegistration", "role_arn": "RoleArn", "status": "Status", "tags": "Tags", diff --git a/internal/aws/iotfleetwise/campaign_plural_data_source_gen.go b/internal/aws/iotfleetwise/campaign_plural_data_source_gen.go new file mode 100644 index 0000000000..32ea99d338 --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_campaigns", campaignsDataSourceType) +} + +// campaignsDataSourceType returns the Terraform awscc_iotfleetwise_campaigns data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Campaign resource type. +func campaignsDataSourceType(ctx context.Context) (provider.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::IoTFleetWise::Campaign", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Campaign").WithTerraformTypeName("awscc_iotfleetwise_campaigns") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/campaign_plural_data_source_gen_test.go b/internal/aws/iotfleetwise/campaign_plural_data_source_gen_test.go new file mode 100644 index 0000000000..f232b33a58 --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseCampaignsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Campaign", "awscc_iotfleetwise_campaigns", "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/iotfleetwise/campaign_resource_gen.go b/internal/aws/iotfleetwise/campaign_resource_gen.go new file mode 100644 index 0000000000..8d8d61a568 --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_resource_gen.go @@ -0,0 +1,705 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_iotfleetwise_campaign", campaignResourceType) +} + +// campaignResourceType returns the Terraform awscc_iotfleetwise_campaign resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IoTFleetWise::Campaign resource type. +func campaignResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "action": { + // Property: Action + // CloudFormation resource type schema: + // { + // "enum": [ + // "APPROVE", + // "SUSPEND", + // "RESUME", + // "UPDATE" + // ], + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "APPROVE", + "SUSPEND", + "RESUME", + "UPDATE", + }), + }, + // Action is a write-only property. + }, + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "collection_scheme": { + // Property: CollectionScheme + // CloudFormation resource type schema: + // { + // "properties": { + // "ConditionBasedCollectionScheme": { + // "additionalProperties": false, + // "properties": { + // "ConditionLanguageVersion": { + // "minimum": 1, + // "type": "integer" + // }, + // "Expression": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "MinimumTriggerIntervalMs": { + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // }, + // "TriggerMode": { + // "enum": [ + // "ALWAYS", + // "RISING_EDGE" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Expression" + // ], + // "type": "object" + // }, + // "TimeBasedCollectionScheme": { + // "additionalProperties": false, + // "properties": { + // "PeriodMs": { + // "maximum": 60000, + // "minimum": 10000, + // "type": "number" + // } + // }, + // "required": [ + // "PeriodMs" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "condition_based_collection_scheme": { + // Property: ConditionBasedCollectionScheme + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "condition_language_version": { + // Property: ConditionLanguageVersion + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntAtLeast(1), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "expression": { + // Property: Expression + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + }, + "minimum_trigger_interval_ms": { + // Property: MinimumTriggerIntervalMs + Type: types.Float64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.FloatBetween(0.000000, 4294967295.000000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "trigger_mode": { + // Property: TriggerMode + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "ALWAYS", + "RISING_EDGE", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "time_based_collection_scheme": { + // Property: TimeBasedCollectionScheme + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "period_ms": { + // Property: PeriodMs + Type: types.Float64Type, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.FloatBetween(10000.000000, 60000.000000), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Required: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "compression": { + // Property: Compression + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "SNAPPY" + // ], + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "OFF", + "SNAPPY", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "OFF"}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "data_extra_dimensions": { + // Property: DataExtraDimensions + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_.]+$", + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 0, + // "type": "array" + // } + Type: types.ListType{ElemType: types.StringType}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 5), + validate.ArrayForEach(validate.StringLenBetween(1, 150)), + validate.ArrayForEach(validate.StringMatch(regexp.MustCompile("^[a-zA-Z0-9_.]+$"), "")), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "diagnostics_mode": { + // Property: DiagnosticsMode + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "SEND_ACTIVE_DTCS" + // ], + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "OFF", + "SEND_ACTIVE_DTCS", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "OFF"}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "expiry_time": { + // Property: ExpiryTime + // CloudFormation resource type schema: + // { + // "default": "253402243200", + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IsRFC3339Time(), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "253402243200"}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 100), + validate.StringMatch(regexp.MustCompile("^[a-zA-Z\\d\\-_:]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "post_trigger_collection_duration": { + // Property: PostTriggerCollectionDuration + // CloudFormation resource type schema: + // { + // "default": 0, + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // } + Type: types.Float64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.FloatBetween(0.000000, 4294967295.000000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.Float64{Value: 0.000000}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "priority": { + // Property: Priority + // CloudFormation resource type schema: + // { + // "default": 0, + // "minimum": 0, + // "type": "integer" + // } + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntAtLeast(0), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.Int64{Value: 0}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "signals_to_collect": { + // Property: SignalsToCollect + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxSampleCount": { + // "maximum": 4294967295, + // "minimum": 1, + // "type": "number" + // }, + // "MinimumSamplingIntervalMs": { + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // }, + // "Name": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[\\w|*|-]+(\\.[\\w|*|-]+)*$", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "maxItems": 1000, + // "minItems": 0, + // "type": "array" + // } + Attributes: tfsdk.ListNestedAttributes( + map[string]tfsdk.Attribute{ + "max_sample_count": { + // Property: MaxSampleCount + Type: types.Float64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.FloatBetween(1.000000, 4294967295.000000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "minimum_sampling_interval_ms": { + // Property: MinimumSamplingIntervalMs + Type: types.Float64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.FloatBetween(0.000000, 4294967295.000000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "name": { + // Property: Name + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 150), + validate.StringMatch(regexp.MustCompile("^[\\w|*|-]+(\\.[\\w|*|-]+)*$"), ""), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 1000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, + "spooling_mode": { + // Property: SpoolingMode + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "TO_DISK" + // ], + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "OFF", + "TO_DISK", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "OFF"}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "start_time": { + // Property: StartTime + // CloudFormation resource type schema: + // { + // "default": "0", + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IsRFC3339Time(), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "0"}), + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "status": { + // Property: Status + // CloudFormation resource type schema: + // { + // "enum": [ + // "CREATING", + // "WAITING_FOR_APPROVAL", + // "RUNNING", + // "SUSPENDED" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 128), + }, + }, + "value": { + // Property: Value + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 256), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 50), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "target_arn": { + // Property: TargetArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Definition of AWS::IoTFleetWise::Campaign Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Campaign").WithTerraformTypeName("awscc_iotfleetwise_campaign") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "action": "Action", + "arn": "Arn", + "collection_scheme": "CollectionScheme", + "compression": "Compression", + "condition_based_collection_scheme": "ConditionBasedCollectionScheme", + "condition_language_version": "ConditionLanguageVersion", + "creation_time": "CreationTime", + "data_extra_dimensions": "DataExtraDimensions", + "description": "Description", + "diagnostics_mode": "DiagnosticsMode", + "expiry_time": "ExpiryTime", + "expression": "Expression", + "key": "Key", + "last_modification_time": "LastModificationTime", + "max_sample_count": "MaxSampleCount", + "minimum_sampling_interval_ms": "MinimumSamplingIntervalMs", + "minimum_trigger_interval_ms": "MinimumTriggerIntervalMs", + "name": "Name", + "period_ms": "PeriodMs", + "post_trigger_collection_duration": "PostTriggerCollectionDuration", + "priority": "Priority", + "signal_catalog_arn": "SignalCatalogArn", + "signals_to_collect": "SignalsToCollect", + "spooling_mode": "SpoolingMode", + "start_time": "StartTime", + "status": "Status", + "tags": "Tags", + "target_arn": "TargetArn", + "time_based_collection_scheme": "TimeBasedCollectionScheme", + "trigger_mode": "TriggerMode", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Action", + }) + 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/iotfleetwise/campaign_resource_gen_test.go b/internal/aws/iotfleetwise/campaign_resource_gen_test.go new file mode 100644 index 0000000000..58ef935b44 --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_resource_gen_test.go @@ -0,0 +1,22 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseCampaign_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Campaign", "awscc_iotfleetwise_campaign", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go b/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go new file mode 100644 index 0000000000..bef40c8eaf --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_singular_data_source_gen.go @@ -0,0 +1,488 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_campaign", campaignDataSourceType) +} + +// campaignDataSourceType returns the Terraform awscc_iotfleetwise_campaign data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Campaign resource type. +func campaignDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "action": { + // Property: Action + // CloudFormation resource type schema: + // { + // "enum": [ + // "APPROVE", + // "SUSPEND", + // "RESUME", + // "UPDATE" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "collection_scheme": { + // Property: CollectionScheme + // CloudFormation resource type schema: + // { + // "properties": { + // "ConditionBasedCollectionScheme": { + // "additionalProperties": false, + // "properties": { + // "ConditionLanguageVersion": { + // "minimum": 1, + // "type": "integer" + // }, + // "Expression": { + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "MinimumTriggerIntervalMs": { + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // }, + // "TriggerMode": { + // "enum": [ + // "ALWAYS", + // "RISING_EDGE" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Expression" + // ], + // "type": "object" + // }, + // "TimeBasedCollectionScheme": { + // "additionalProperties": false, + // "properties": { + // "PeriodMs": { + // "maximum": 60000, + // "minimum": 10000, + // "type": "number" + // } + // }, + // "required": [ + // "PeriodMs" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "condition_based_collection_scheme": { + // Property: ConditionBasedCollectionScheme + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "condition_language_version": { + // Property: ConditionLanguageVersion + Type: types.Int64Type, + Computed: true, + }, + "expression": { + // Property: Expression + Type: types.StringType, + Computed: true, + }, + "minimum_trigger_interval_ms": { + // Property: MinimumTriggerIntervalMs + Type: types.Float64Type, + Computed: true, + }, + "trigger_mode": { + // Property: TriggerMode + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "time_based_collection_scheme": { + // Property: TimeBasedCollectionScheme + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "period_ms": { + // Property: PeriodMs + Type: types.Float64Type, + Computed: true, + }, + }, + ), + Computed: true, + }, + }, + ), + Computed: true, + }, + "compression": { + // Property: Compression + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "SNAPPY" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "data_extra_dimensions": { + // Property: DataExtraDimensions + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9_.]+$", + // "type": "string" + // }, + // "maxItems": 5, + // "minItems": 0, + // "type": "array" + // } + Type: types.ListType{ElemType: types.StringType}, + Computed: true, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "diagnostics_mode": { + // Property: DiagnosticsMode + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "SEND_ACTIVE_DTCS" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "expiry_time": { + // Property: ExpiryTime + // CloudFormation resource type schema: + // { + // "default": "253402243200", + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "post_trigger_collection_duration": { + // Property: PostTriggerCollectionDuration + // CloudFormation resource type schema: + // { + // "default": 0, + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // } + Type: types.Float64Type, + Computed: true, + }, + "priority": { + // Property: Priority + // CloudFormation resource type schema: + // { + // "default": 0, + // "minimum": 0, + // "type": "integer" + // } + Type: types.Int64Type, + Computed: true, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "signals_to_collect": { + // Property: SignalsToCollect + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxSampleCount": { + // "maximum": 4294967295, + // "minimum": 1, + // "type": "number" + // }, + // "MinimumSamplingIntervalMs": { + // "maximum": 4294967295, + // "minimum": 0, + // "type": "number" + // }, + // "Name": { + // "maxLength": 150, + // "minLength": 1, + // "pattern": "^[\\w|*|-]+(\\.[\\w|*|-]+)*$", + // "type": "string" + // } + // }, + // "required": [ + // "Name" + // ], + // "type": "object" + // }, + // "maxItems": 1000, + // "minItems": 0, + // "type": "array" + // } + Attributes: tfsdk.ListNestedAttributes( + map[string]tfsdk.Attribute{ + "max_sample_count": { + // Property: MaxSampleCount + Type: types.Float64Type, + Computed: true, + }, + "minimum_sampling_interval_ms": { + // Property: MinimumSamplingIntervalMs + Type: types.Float64Type, + Computed: true, + }, + "name": { + // Property: Name + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "spooling_mode": { + // Property: SpoolingMode + // CloudFormation resource type schema: + // { + // "default": "OFF", + // "enum": [ + // "OFF", + // "TO_DISK" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "start_time": { + // Property: StartTime + // CloudFormation resource type schema: + // { + // "default": "0", + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "status": { + // Property: Status + // CloudFormation resource type schema: + // { + // "enum": [ + // "CREATING", + // "WAITING_FOR_APPROVAL", + // "RUNNING", + // "SUSPENDED" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "target_arn": { + // Property: TargetArn + // 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::IoTFleetWise::Campaign", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Campaign").WithTerraformTypeName("awscc_iotfleetwise_campaign") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "action": "Action", + "arn": "Arn", + "collection_scheme": "CollectionScheme", + "compression": "Compression", + "condition_based_collection_scheme": "ConditionBasedCollectionScheme", + "condition_language_version": "ConditionLanguageVersion", + "creation_time": "CreationTime", + "data_extra_dimensions": "DataExtraDimensions", + "description": "Description", + "diagnostics_mode": "DiagnosticsMode", + "expiry_time": "ExpiryTime", + "expression": "Expression", + "key": "Key", + "last_modification_time": "LastModificationTime", + "max_sample_count": "MaxSampleCount", + "minimum_sampling_interval_ms": "MinimumSamplingIntervalMs", + "minimum_trigger_interval_ms": "MinimumTriggerIntervalMs", + "name": "Name", + "period_ms": "PeriodMs", + "post_trigger_collection_duration": "PostTriggerCollectionDuration", + "priority": "Priority", + "signal_catalog_arn": "SignalCatalogArn", + "signals_to_collect": "SignalsToCollect", + "spooling_mode": "SpoolingMode", + "start_time": "StartTime", + "status": "Status", + "tags": "Tags", + "target_arn": "TargetArn", + "time_based_collection_scheme": "TimeBasedCollectionScheme", + "trigger_mode": "TriggerMode", + "value": "Value", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/campaign_singular_data_source_gen_test.go b/internal/aws/iotfleetwise/campaign_singular_data_source_gen_test.go new file mode 100644 index 0000000000..482617c748 --- /dev/null +++ b/internal/aws/iotfleetwise/campaign_singular_data_source_gen_test.go @@ -0,0 +1,33 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseCampaignDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Campaign", "awscc_iotfleetwise_campaign", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSIoTFleetWiseCampaignDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Campaign", "awscc_iotfleetwise_campaign", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/fleet_plural_data_source_gen.go b/internal/aws/iotfleetwise/fleet_plural_data_source_gen.go new file mode 100644 index 0000000000..77877a942b --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_fleets", fleetsDataSourceType) +} + +// fleetsDataSourceType returns the Terraform awscc_iotfleetwise_fleets data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Fleet resource type. +func fleetsDataSourceType(ctx context.Context) (provider.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::IoTFleetWise::Fleet", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Fleet").WithTerraformTypeName("awscc_iotfleetwise_fleets") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/fleet_plural_data_source_gen_test.go b/internal/aws/iotfleetwise/fleet_plural_data_source_gen_test.go new file mode 100644 index 0000000000..3119f58b98 --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseFleetsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Fleet", "awscc_iotfleetwise_fleets", "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/iotfleetwise/fleet_resource_gen.go b/internal/aws/iotfleetwise/fleet_resource_gen.go new file mode 100644 index 0000000000..e84ffacc74 --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_resource_gen.go @@ -0,0 +1,209 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_iotfleetwise_fleet", fleetResourceType) +} + +// fleetResourceType returns the Terraform awscc_iotfleetwise_fleet resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IoTFleetWise::Fleet resource type. +func fleetResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "id": { + // Property: Id + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9:_-]+$", + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 100), + validate.StringMatch(regexp.MustCompile("^[a-zA-Z0-9:_-]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 128), + }, + }, + "value": { + // Property: Value + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 256), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 50), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + schema := tfsdk.Schema{ + Description: "Definition of AWS::IoTFleetWise::Fleet Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Fleet").WithTerraformTypeName("awscc_iotfleetwise_fleet") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(false) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "id": "Id", + "key": "Key", + "last_modification_time": "LastModificationTime", + "signal_catalog_arn": "SignalCatalogArn", + "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/iotfleetwise/fleet_resource_gen_test.go b/internal/aws/iotfleetwise/fleet_resource_gen_test.go new file mode 100644 index 0000000000..faead4f0f5 --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_resource_gen_test.go @@ -0,0 +1,22 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseFleet_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Fleet", "awscc_iotfleetwise_fleet", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/fleet_singular_data_source_gen.go b/internal/aws/iotfleetwise/fleet_singular_data_source_gen.go new file mode 100644 index 0000000000..6709a33d36 --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_singular_data_source_gen.go @@ -0,0 +1,168 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_fleet", fleetDataSourceType) +} + +// fleetDataSourceType returns the Terraform awscc_iotfleetwise_fleet data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Fleet resource type. +func fleetDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "id": { + // Property: Id + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9:_-]+$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + 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::IoTFleetWise::Fleet", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Fleet").WithTerraformTypeName("awscc_iotfleetwise_fleet") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "id": "Id", + "key": "Key", + "last_modification_time": "LastModificationTime", + "signal_catalog_arn": "SignalCatalogArn", + "tags": "Tags", + "value": "Value", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/fleet_singular_data_source_gen_test.go b/internal/aws/iotfleetwise/fleet_singular_data_source_gen_test.go new file mode 100644 index 0000000000..e991f984b5 --- /dev/null +++ b/internal/aws/iotfleetwise/fleet_singular_data_source_gen_test.go @@ -0,0 +1,33 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseFleetDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Fleet", "awscc_iotfleetwise_fleet", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSIoTFleetWiseFleetDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Fleet", "awscc_iotfleetwise_fleet", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen.go b/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen.go new file mode 100644 index 0000000000..11e518bf2e --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_model_manifests", modelManifestsDataSourceType) +} + +// modelManifestsDataSourceType returns the Terraform awscc_iotfleetwise_model_manifests data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::ModelManifest resource type. +func modelManifestsDataSourceType(ctx context.Context) (provider.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::IoTFleetWise::ModelManifest", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::ModelManifest").WithTerraformTypeName("awscc_iotfleetwise_model_manifests") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen_test.go b/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen_test.go new file mode 100644 index 0000000000..6bf7846065 --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseModelManifestsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::ModelManifest", "awscc_iotfleetwise_model_manifests", "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/iotfleetwise/model_manifest_resource_gen.go b/internal/aws/iotfleetwise/model_manifest_resource_gen.go new file mode 100644 index 0000000000..a940f856df --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_resource_gen.go @@ -0,0 +1,264 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_iotfleetwise_model_manifest", modelManifestResourceType) +} + +// modelManifestResourceType returns the Terraform awscc_iotfleetwise_model_manifest resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IoTFleetWise::ModelManifest resource type. +func modelManifestResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 100), + validate.StringMatch(regexp.MustCompile("^[a-zA-Z\\d\\-_:]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "nodes": { + // Property: Nodes + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array", + // "uniqueItems": true + // } + Type: types.SetType{ElemType: types.StringType}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenAtLeast(1), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + }, + "status": { + // Property: Status + // CloudFormation resource type schema: + // { + // "default": "DRAFT", + // "enum": [ + // "ACTIVE", + // "DRAFT" + // ], + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "ACTIVE", + "DRAFT", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + DefaultValue(types.String{Value: "DRAFT"}), + resource.UseStateForUnknown(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 128), + }, + }, + "value": { + // Property: Value + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 256), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 50), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Definition of AWS::IoTFleetWise::ModelManifest Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::ModelManifest").WithTerraformTypeName("awscc_iotfleetwise_model_manifest") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "key": "Key", + "last_modification_time": "LastModificationTime", + "name": "Name", + "nodes": "Nodes", + "signal_catalog_arn": "SignalCatalogArn", + "status": "Status", + "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/iotfleetwise/model_manifest_resource_gen_test.go b/internal/aws/iotfleetwise/model_manifest_resource_gen_test.go new file mode 100644 index 0000000000..d489e5b1cb --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_resource_gen_test.go @@ -0,0 +1,22 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseModelManifest_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::ModelManifest", "awscc_iotfleetwise_model_manifest", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen.go b/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen.go new file mode 100644 index 0000000000..70b4e62d10 --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen.go @@ -0,0 +1,199 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_model_manifest", modelManifestDataSourceType) +} + +// modelManifestDataSourceType returns the Terraform awscc_iotfleetwise_model_manifest data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::ModelManifest resource type. +func modelManifestDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "nodes": { + // Property: Nodes + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array", + // "uniqueItems": true + // } + Type: types.SetType{ElemType: types.StringType}, + Computed: true, + }, + "signal_catalog_arn": { + // Property: SignalCatalogArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "status": { + // Property: Status + // CloudFormation resource type schema: + // { + // "default": "DRAFT", + // "enum": [ + // "ACTIVE", + // "DRAFT" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + 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::IoTFleetWise::ModelManifest", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::ModelManifest").WithTerraformTypeName("awscc_iotfleetwise_model_manifest") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "creation_time": "CreationTime", + "description": "Description", + "key": "Key", + "last_modification_time": "LastModificationTime", + "name": "Name", + "nodes": "Nodes", + "signal_catalog_arn": "SignalCatalogArn", + "status": "Status", + "tags": "Tags", + "value": "Value", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen_test.go b/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen_test.go new file mode 100644 index 0000000000..e9fb38d781 --- /dev/null +++ b/internal/aws/iotfleetwise/model_manifest_singular_data_source_gen_test.go @@ -0,0 +1,33 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseModelManifestDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::ModelManifest", "awscc_iotfleetwise_model_manifest", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSIoTFleetWiseModelManifestDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::ModelManifest", "awscc_iotfleetwise_model_manifest", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen.go b/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen.go new file mode 100644 index 0000000000..62655cd4bb --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_signal_catalogs", signalCatalogsDataSourceType) +} + +// signalCatalogsDataSourceType returns the Terraform awscc_iotfleetwise_signal_catalogs data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::SignalCatalog resource type. +func signalCatalogsDataSourceType(ctx context.Context) (provider.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::IoTFleetWise::SignalCatalog", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::SignalCatalog").WithTerraformTypeName("awscc_iotfleetwise_signal_catalogs") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen_test.go b/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen_test.go new file mode 100644 index 0000000000..4c431f636f --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseSignalCatalogsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::SignalCatalog", "awscc_iotfleetwise_signal_catalogs", "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/iotfleetwise/signal_catalog_resource_gen.go b/internal/aws/iotfleetwise/signal_catalog_resource_gen.go new file mode 100644 index 0000000000..e77d87ce7f --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_resource_gen.go @@ -0,0 +1,930 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_iotfleetwise_signal_catalog", signalCatalogResourceType) +} + +// signalCatalogResourceType returns the Terraform awscc_iotfleetwise_signal_catalog resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IoTFleetWise::SignalCatalog resource type. +func signalCatalogResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 100), + validate.StringMatch(regexp.MustCompile("^[a-zA-Z\\d\\-_:]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + resource.RequiresReplace(), + }, + }, + "node_counts": { + // Property: NodeCounts + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "properties": { + // "TotalActuators": { + // "type": "number" + // }, + // "TotalAttributes": { + // "type": "number" + // }, + // "TotalBranches": { + // "type": "number" + // }, + // "TotalNodes": { + // "type": "number" + // }, + // "TotalSensors": { + // "type": "number" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "total_actuators": { + // Property: TotalActuators + Type: types.Float64Type, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "total_attributes": { + // Property: TotalAttributes + Type: types.Float64Type, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "total_branches": { + // Property: TotalBranches + Type: types.Float64Type, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "total_nodes": { + // Property: TotalNodes + Type: types.Float64Type, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "total_sensors": { + // Property: TotalSensors + Type: types.Float64Type, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "nodes": { + // Property: Nodes + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "properties": { + // "Actuator": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "AssignedValue": { + // "type": "string" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Attribute": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "AssignedValue": { + // "type": "string" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "DefaultValue": { + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Branch": { + // "additionalProperties": false, + // "properties": { + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // } + // }, + // "required": [ + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Sensor": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "maxItems": 500, + // "minItems": 1, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "actuator": { + // Property: Actuator + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenAtLeast(1), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, + "assigned_value": { + // Property: AssignedValue + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "BOOLEAN", + "FLOAT", + "DOUBLE", + "STRING", + "UNIX_TIMESTAMP", + "INT8_ARRAY", + "UINT8_ARRAY", + "INT16_ARRAY", + "UINT16_ARRAY", + "INT32_ARRAY", + "UINT32_ARRAY", + "INT64_ARRAY", + "UINT64_ARRAY", + "BOOLEAN_ARRAY", + "FLOAT_ARRAY", + "DOUBLE_ARRAY", + "STRING_ARRAY", + "UNIX_TIMESTAMP_ARRAY", + "UNKNOWN", + }), + }, + }, + "description": { + // Property: Description + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Required: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "attribute": { + // Property: Attribute + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenAtLeast(1), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, + "assigned_value": { + // Property: AssignedValue + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "BOOLEAN", + "FLOAT", + "DOUBLE", + "STRING", + "UNIX_TIMESTAMP", + "INT8_ARRAY", + "UINT8_ARRAY", + "INT16_ARRAY", + "UINT16_ARRAY", + "INT32_ARRAY", + "UINT32_ARRAY", + "INT64_ARRAY", + "UINT64_ARRAY", + "BOOLEAN_ARRAY", + "FLOAT_ARRAY", + "DOUBLE_ARRAY", + "STRING_ARRAY", + "UNIX_TIMESTAMP_ARRAY", + "UNKNOWN", + }), + }, + }, + "default_value": { + // Property: DefaultValue + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "description": { + // Property: Description + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Required: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "branch": { + // Property: Branch + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "description": { + // Property: Description + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Required: true, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "sensor": { + // Property: Sensor + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenAtLeast(1), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + Multiset(), + resource.UseStateForUnknown(), + }, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "BOOLEAN", + "FLOAT", + "DOUBLE", + "STRING", + "UNIX_TIMESTAMP", + "INT8_ARRAY", + "UINT8_ARRAY", + "INT16_ARRAY", + "UINT16_ARRAY", + "INT32_ARRAY", + "UINT32_ARRAY", + "INT64_ARRAY", + "UINT64_ARRAY", + "BOOLEAN_ARRAY", + "FLOAT_ARRAY", + "DOUBLE_ARRAY", + "STRING_ARRAY", + "UNIX_TIMESTAMP_ARRAY", + "UNKNOWN", + }), + }, + }, + "description": { + // Property: Description + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 2048), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Required: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(1, 500), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 128), + }, + }, + "value": { + // Property: Value + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 256), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 50), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Definition of AWS::IoTFleetWise::SignalCatalog Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::SignalCatalog").WithTerraformTypeName("awscc_iotfleetwise_signal_catalog") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "actuator": "Actuator", + "allowed_values": "AllowedValues", + "arn": "Arn", + "assigned_value": "AssignedValue", + "attribute": "Attribute", + "branch": "Branch", + "creation_time": "CreationTime", + "data_type": "DataType", + "default_value": "DefaultValue", + "description": "Description", + "fully_qualified_name": "FullyQualifiedName", + "key": "Key", + "last_modification_time": "LastModificationTime", + "max": "Max", + "min": "Min", + "name": "Name", + "node_counts": "NodeCounts", + "nodes": "Nodes", + "sensor": "Sensor", + "tags": "Tags", + "total_actuators": "TotalActuators", + "total_attributes": "TotalAttributes", + "total_branches": "TotalBranches", + "total_nodes": "TotalNodes", + "total_sensors": "TotalSensors", + "unit": "Unit", + "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/iotfleetwise/signal_catalog_resource_gen_test.go b/internal/aws/iotfleetwise/signal_catalog_resource_gen_test.go new file mode 100644 index 0000000000..5d9d58fbfc --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_resource_gen_test.go @@ -0,0 +1,43 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseSignalCatalog_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::SignalCatalog", "awscc_iotfleetwise_signal_catalog", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSIoTFleetWiseSignalCatalog_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::SignalCatalog", "awscc_iotfleetwise_signal_catalog", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, + }, + }) +} diff --git a/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go new file mode 100644 index 0000000000..929a3d7a2b --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen.go @@ -0,0 +1,646 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_signal_catalog", signalCatalogDataSourceType) +} + +// signalCatalogDataSourceType returns the Terraform awscc_iotfleetwise_signal_catalog data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::SignalCatalog resource type. +func signalCatalogDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "node_counts": { + // Property: NodeCounts + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "properties": { + // "TotalActuators": { + // "type": "number" + // }, + // "TotalAttributes": { + // "type": "number" + // }, + // "TotalBranches": { + // "type": "number" + // }, + // "TotalNodes": { + // "type": "number" + // }, + // "TotalSensors": { + // "type": "number" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "total_actuators": { + // Property: TotalActuators + Type: types.Float64Type, + Computed: true, + }, + "total_attributes": { + // Property: TotalAttributes + Type: types.Float64Type, + Computed: true, + }, + "total_branches": { + // Property: TotalBranches + Type: types.Float64Type, + Computed: true, + }, + "total_nodes": { + // Property: TotalNodes + Type: types.Float64Type, + Computed: true, + }, + "total_sensors": { + // Property: TotalSensors + Type: types.Float64Type, + Computed: true, + }, + }, + ), + Computed: true, + }, + "nodes": { + // Property: Nodes + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "properties": { + // "Actuator": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "AssignedValue": { + // "type": "string" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Attribute": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "AssignedValue": { + // "type": "string" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "DefaultValue": { + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Branch": { + // "additionalProperties": false, + // "properties": { + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // } + // }, + // "required": [ + // "FullyQualifiedName" + // ], + // "type": "object" + // }, + // "Sensor": { + // "additionalProperties": false, + // "properties": { + // "AllowedValues": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "minItems": 1, + // "type": "array" + // }, + // "DataType": { + // "enum": [ + // "INT8", + // "UINT8", + // "INT16", + // "UINT16", + // "INT32", + // "UINT32", + // "INT64", + // "UINT64", + // "BOOLEAN", + // "FLOAT", + // "DOUBLE", + // "STRING", + // "UNIX_TIMESTAMP", + // "INT8_ARRAY", + // "UINT8_ARRAY", + // "INT16_ARRAY", + // "UINT16_ARRAY", + // "INT32_ARRAY", + // "UINT32_ARRAY", + // "INT64_ARRAY", + // "UINT64_ARRAY", + // "BOOLEAN_ARRAY", + // "FLOAT_ARRAY", + // "DOUBLE_ARRAY", + // "STRING_ARRAY", + // "UNIX_TIMESTAMP_ARRAY", + // "UNKNOWN" + // ], + // "type": "string" + // }, + // "Description": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "FullyQualifiedName": { + // "type": "string" + // }, + // "Max": { + // "type": "number" + // }, + // "Min": { + // "type": "number" + // }, + // "Unit": { + // "type": "string" + // } + // }, + // "required": [ + // "DataType", + // "FullyQualifiedName" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // }, + // "maxItems": 500, + // "minItems": 1, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "actuator": { + // Property: Actuator + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Computed: true, + }, + "assigned_value": { + // Property: AssignedValue + Type: types.StringType, + Computed: true, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + Type: types.StringType, + Computed: true, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Computed: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Computed: true, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Computed: true, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "attribute": { + // Property: Attribute + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Computed: true, + }, + "assigned_value": { + // Property: AssignedValue + Type: types.StringType, + Computed: true, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Computed: true, + }, + "default_value": { + // Property: DefaultValue + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + Type: types.StringType, + Computed: true, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Computed: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Computed: true, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Computed: true, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "branch": { + // Property: Branch + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "description": { + // Property: Description + Type: types.StringType, + Computed: true, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "sensor": { + // Property: Sensor + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "allowed_values": { + // Property: AllowedValues + Type: types.ListType{ElemType: types.StringType}, + Computed: true, + }, + "data_type": { + // Property: DataType + Type: types.StringType, + Computed: true, + }, + "description": { + // Property: Description + Type: types.StringType, + Computed: true, + }, + "fully_qualified_name": { + // Property: FullyQualifiedName + Type: types.StringType, + Computed: true, + }, + "max": { + // Property: Max + Type: types.Float64Type, + Computed: true, + }, + "min": { + // Property: Min + Type: types.Float64Type, + Computed: true, + }, + "unit": { + // Property: Unit + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + }, + ), + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + 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::IoTFleetWise::SignalCatalog", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::SignalCatalog").WithTerraformTypeName("awscc_iotfleetwise_signal_catalog") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "actuator": "Actuator", + "allowed_values": "AllowedValues", + "arn": "Arn", + "assigned_value": "AssignedValue", + "attribute": "Attribute", + "branch": "Branch", + "creation_time": "CreationTime", + "data_type": "DataType", + "default_value": "DefaultValue", + "description": "Description", + "fully_qualified_name": "FullyQualifiedName", + "key": "Key", + "last_modification_time": "LastModificationTime", + "max": "Max", + "min": "Min", + "name": "Name", + "node_counts": "NodeCounts", + "nodes": "Nodes", + "sensor": "Sensor", + "tags": "Tags", + "total_actuators": "TotalActuators", + "total_attributes": "TotalAttributes", + "total_branches": "TotalBranches", + "total_nodes": "TotalNodes", + "total_sensors": "TotalSensors", + "unit": "Unit", + "value": "Value", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen_test.go b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen_test.go new file mode 100644 index 0000000000..a9b0d7328d --- /dev/null +++ b/internal/aws/iotfleetwise/signal_catalog_singular_data_source_gen_test.go @@ -0,0 +1,37 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseSignalCatalogDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::SignalCatalog", "awscc_iotfleetwise_signal_catalog", "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 TestAccAWSIoTFleetWiseSignalCatalogDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::SignalCatalog", "awscc_iotfleetwise_signal_catalog", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/vehicle_plural_data_source_gen.go b/internal/aws/iotfleetwise/vehicle_plural_data_source_gen.go new file mode 100644 index 0000000000..e70640559b --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_vehicles", vehiclesDataSourceType) +} + +// vehiclesDataSourceType returns the Terraform awscc_iotfleetwise_vehicles data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Vehicle resource type. +func vehiclesDataSourceType(ctx context.Context) (provider.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::IoTFleetWise::Vehicle", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Vehicle").WithTerraformTypeName("awscc_iotfleetwise_vehicles") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/vehicle_plural_data_source_gen_test.go b/internal/aws/iotfleetwise/vehicle_plural_data_source_gen_test.go new file mode 100644 index 0000000000..197a0eac15 --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseVehiclesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Vehicle", "awscc_iotfleetwise_vehicles", "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/iotfleetwise/vehicle_resource_gen.go b/internal/aws/iotfleetwise/vehicle_resource_gen.go new file mode 100644 index 0000000000..acb0c716c6 --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_resource_gen.go @@ -0,0 +1,254 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_iotfleetwise_vehicle", vehicleResourceType) +} + +// vehicleResourceType returns the Terraform awscc_iotfleetwise_vehicle resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::IoTFleetWise::Vehicle resource type. +func vehicleResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "association_behavior": { + // Property: AssociationBehavior + // CloudFormation resource type schema: + // { + // "enum": [ + // "CreateIotThing", + // "ValidateIotThingExists" + // ], + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "CreateIotThing", + "ValidateIotThingExists", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + // AssociationBehavior is a write-only property. + }, + "attributes": { + // Property: Attributes + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + // Pattern: "" + Type: types.MapType{ElemType: types.StringType}, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "decoder_manifest_arn": { + // Property: DecoderManifestArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "model_manifest_arn": { + // Property: ModelManifestArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Required: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 100), + validate.StringMatch(regexp.MustCompile("^[a-zA-Z\\d\\-_:]+$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 128), + }, + }, + "value": { + // Property: Value + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 256), + }, + }, + }, + ), + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenBetween(0, 50), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Definition of AWS::IoTFleetWise::Vehicle Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Vehicle").WithTerraformTypeName("awscc_iotfleetwise_vehicle") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "association_behavior": "AssociationBehavior", + "attributes": "Attributes", + "creation_time": "CreationTime", + "decoder_manifest_arn": "DecoderManifestArn", + "key": "Key", + "last_modification_time": "LastModificationTime", + "model_manifest_arn": "ModelManifestArn", + "name": "Name", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/AssociationBehavior", + }) + 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/iotfleetwise/vehicle_resource_gen_test.go b/internal/aws/iotfleetwise/vehicle_resource_gen_test.go new file mode 100644 index 0000000000..c1fc335020 --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_resource_gen_test.go @@ -0,0 +1,22 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseVehicle_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Vehicle", "awscc_iotfleetwise_vehicle", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/iotfleetwise/vehicle_singular_data_source_gen.go b/internal/aws/iotfleetwise/vehicle_singular_data_source_gen.go new file mode 100644 index 0000000000..4d2fab19e3 --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_singular_data_source_gen.go @@ -0,0 +1,196 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_iotfleetwise_vehicle", vehicleDataSourceType) +} + +// vehicleDataSourceType returns the Terraform awscc_iotfleetwise_vehicle data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::IoTFleetWise::Vehicle resource type. +func vehicleDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "arn": { + // Property: Arn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "association_behavior": { + // Property: AssociationBehavior + // CloudFormation resource type schema: + // { + // "enum": [ + // "CreateIotThing", + // "ValidateIotThingExists" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "attributes": { + // Property: Attributes + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + // Pattern: "" + Type: types.MapType{ElemType: types.StringType}, + Computed: true, + }, + "creation_time": { + // Property: CreationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "decoder_manifest_arn": { + // Property: DecoderManifestArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "last_modification_time": { + // Property: LastModificationTime + // CloudFormation resource type schema: + // { + // "format": "date-time", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "model_manifest_arn": { + // Property: ModelManifestArn + // CloudFormation resource type schema: + // { + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "maxLength": 100, + // "minLength": 1, + // "pattern": "^[a-zA-Z\\d\\-_:]+$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + Attributes: tfsdk.SetNestedAttributes( + map[string]tfsdk.Attribute{ + "key": { + // Property: Key + Type: types.StringType, + Computed: true, + }, + "value": { + // Property: Value + 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::IoTFleetWise::Vehicle", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::IoTFleetWise::Vehicle").WithTerraformTypeName("awscc_iotfleetwise_vehicle") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "association_behavior": "AssociationBehavior", + "attributes": "Attributes", + "creation_time": "CreationTime", + "decoder_manifest_arn": "DecoderManifestArn", + "key": "Key", + "last_modification_time": "LastModificationTime", + "model_manifest_arn": "ModelManifestArn", + "name": "Name", + "tags": "Tags", + "value": "Value", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/iotfleetwise/vehicle_singular_data_source_gen_test.go b/internal/aws/iotfleetwise/vehicle_singular_data_source_gen_test.go new file mode 100644 index 0000000000..6261da4d39 --- /dev/null +++ b/internal/aws/iotfleetwise/vehicle_singular_data_source_gen_test.go @@ -0,0 +1,33 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package iotfleetwise_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSIoTFleetWiseVehicleDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Vehicle", "awscc_iotfleetwise_vehicle", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSIoTFleetWiseVehicleDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::IoTFleetWise::Vehicle", "awscc_iotfleetwise_vehicle", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iotsitewise/asset_resource_gen.go b/internal/aws/iotsitewise/asset_resource_gen.go index 56c7e39a27..527afeb554 100644 --- a/internal/aws/iotsitewise/asset_resource_gen.go +++ b/internal/aws/iotsitewise/asset_resource_gen.go @@ -149,7 +149,7 @@ func assetResourceType(ctx context.Context) (provider.ResourceType, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "The asset property's definition, alias, and notification state.", + // "description": "The asset property's definition, alias, unit, and notification state.", // "properties": { // "Alias": { // "description": "The property alias that identifies the property.", @@ -169,6 +169,10 @@ func assetResourceType(ctx context.Context) (provider.ResourceType, error) { // "DISABLED" // ], // "type": "string" + // }, + // "Unit": { + // "description": "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + // "type": "string" // } // }, // "required": [ @@ -215,6 +219,16 @@ func assetResourceType(ctx context.Context) (provider.ResourceType, error) { resource.UseStateForUnknown(), }, }, + "unit": { + // Property: Unit + Description: "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, }, ), Optional: true, @@ -307,6 +321,7 @@ func assetResourceType(ctx context.Context) (provider.ResourceType, error) { "logical_id": "LogicalId", "notification_state": "NotificationState", "tags": "Tags", + "unit": "Unit", "value": "Value", }) diff --git a/internal/aws/iotsitewise/asset_singular_data_source_gen.go b/internal/aws/iotsitewise/asset_singular_data_source_gen.go index c4b82f3f95..492b26f785 100644 --- a/internal/aws/iotsitewise/asset_singular_data_source_gen.go +++ b/internal/aws/iotsitewise/asset_singular_data_source_gen.go @@ -129,7 +129,7 @@ func assetDataSourceType(ctx context.Context) (provider.DataSourceType, error) { // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "The asset property's definition, alias, and notification state.", + // "description": "The asset property's definition, alias, unit, and notification state.", // "properties": { // "Alias": { // "description": "The property alias that identifies the property.", @@ -149,6 +149,10 @@ func assetDataSourceType(ctx context.Context) (provider.DataSourceType, error) { // "DISABLED" // ], // "type": "string" + // }, + // "Unit": { + // "description": "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + // "type": "string" // } // }, // "required": [ @@ -178,6 +182,12 @@ func assetDataSourceType(ctx context.Context) (provider.DataSourceType, error) { Type: types.StringType, Computed: true, }, + "unit": { + // Property: Unit + Description: "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + Type: types.StringType, + Computed: true, + }, }, ), Computed: true, @@ -256,6 +266,7 @@ func assetDataSourceType(ctx context.Context) (provider.DataSourceType, error) { "logical_id": "LogicalId", "notification_state": "NotificationState", "tags": "Tags", + "unit": "Unit", "value": "Value", }) diff --git a/internal/aws/iotwireless/device_profile_resource_gen.go b/internal/aws/iotwireless/device_profile_resource_gen.go index d00c46a59d..e798457c34 100644 --- a/internal/aws/iotwireless/device_profile_resource_gen.go +++ b/internal/aws/iotwireless/device_profile_resource_gen.go @@ -68,6 +68,15 @@ func deviceProfileResourceType(ctx context.Context) (provider.ResourceType, erro // "minimum": 0, // "type": "integer" // }, + // "FactoryPresetFreqsList": { + // "items": { + // "maximum": 16700000, + // "minimum": 1000000, + // "type": "integer" + // }, + // "maxItems": 20, + // "type": "array" + // }, // "MacVersion": { // "maxLength": 64, // "type": "string" @@ -105,6 +114,26 @@ func deviceProfileResourceType(ctx context.Context) (provider.ResourceType, erro // "maxLength": 64, // "type": "string" // }, + // "RxDataRate2": { + // "maximum": 15, + // "minimum": 0, + // "type": "integer" + // }, + // "RxDelay1": { + // "maximum": 15, + // "minimum": 0, + // "type": "integer" + // }, + // "RxDrOffset1": { + // "maximum": 7, + // "minimum": 0, + // "type": "integer" + // }, + // "RxFreq2": { + // "maximum": 16700000, + // "minimum": 1000000, + // "type": "integer" + // }, // "Supports32BitFCnt": { // "type": "boolean" // }, @@ -147,6 +176,19 @@ func deviceProfileResourceType(ctx context.Context) (provider.ResourceType, erro resource.UseStateForUnknown(), }, }, + "factory_preset_freqs_list": { + // Property: FactoryPresetFreqsList + Type: types.ListType{ElemType: types.Int64Type}, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.ArrayLenAtMost(20), + validate.ArrayForEach(validate.IntBetween(1000000, 16700000)), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, "mac_version": { // Property: MacVersion Type: types.StringType, @@ -243,6 +285,54 @@ func deviceProfileResourceType(ctx context.Context) (provider.ResourceType, erro resource.UseStateForUnknown(), }, }, + "rx_data_rate_2": { + // Property: RxDataRate2 + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntBetween(0, 15), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "rx_delay_1": { + // Property: RxDelay1 + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntBetween(0, 15), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "rx_dr_offset_1": { + // Property: RxDrOffset1 + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntBetween(0, 7), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "rx_freq_2": { + // Property: RxFreq2 + Type: types.Int64Type, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.IntBetween(1000000, 16700000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, "supports_32_bit_f_cnt": { // Property: Supports32BitFCnt Type: types.BoolType, @@ -384,27 +474,32 @@ func deviceProfileResourceType(ctx context.Context) (provider.ResourceType, erro opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(false) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "class_b_timeout": "ClassBTimeout", - "class_c_timeout": "ClassCTimeout", - "id": "Id", - "key": "Key", - "lo_ra_wan": "LoRaWAN", - "mac_version": "MacVersion", - "max_duty_cycle": "MaxDutyCycle", - "max_eirp": "MaxEirp", - "name": "Name", - "ping_slot_dr": "PingSlotDr", - "ping_slot_freq": "PingSlotFreq", - "ping_slot_period": "PingSlotPeriod", - "reg_params_revision": "RegParamsRevision", - "rf_region": "RfRegion", - "supports_32_bit_f_cnt": "Supports32BitFCnt", - "supports_class_b": "SupportsClassB", - "supports_class_c": "SupportsClassC", - "supports_join": "SupportsJoin", - "tags": "Tags", - "value": "Value", + "arn": "Arn", + "class_b_timeout": "ClassBTimeout", + "class_c_timeout": "ClassCTimeout", + "factory_preset_freqs_list": "FactoryPresetFreqsList", + "id": "Id", + "key": "Key", + "lo_ra_wan": "LoRaWAN", + "mac_version": "MacVersion", + "max_duty_cycle": "MaxDutyCycle", + "max_eirp": "MaxEirp", + "name": "Name", + "ping_slot_dr": "PingSlotDr", + "ping_slot_freq": "PingSlotFreq", + "ping_slot_period": "PingSlotPeriod", + "reg_params_revision": "RegParamsRevision", + "rf_region": "RfRegion", + "rx_data_rate_2": "RxDataRate2", + "rx_delay_1": "RxDelay1", + "rx_dr_offset_1": "RxDrOffset1", + "rx_freq_2": "RxFreq2", + "supports_32_bit_f_cnt": "Supports32BitFCnt", + "supports_class_b": "SupportsClassB", + "supports_class_c": "SupportsClassC", + "supports_join": "SupportsJoin", + "tags": "Tags", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/iotwireless/device_profile_singular_data_source_gen.go b/internal/aws/iotwireless/device_profile_singular_data_source_gen.go index f67531cd8c..3a7559997c 100644 --- a/internal/aws/iotwireless/device_profile_singular_data_source_gen.go +++ b/internal/aws/iotwireless/device_profile_singular_data_source_gen.go @@ -60,6 +60,15 @@ func deviceProfileDataSourceType(ctx context.Context) (provider.DataSourceType, // "minimum": 0, // "type": "integer" // }, + // "FactoryPresetFreqsList": { + // "items": { + // "maximum": 16700000, + // "minimum": 1000000, + // "type": "integer" + // }, + // "maxItems": 20, + // "type": "array" + // }, // "MacVersion": { // "maxLength": 64, // "type": "string" @@ -97,6 +106,26 @@ func deviceProfileDataSourceType(ctx context.Context) (provider.DataSourceType, // "maxLength": 64, // "type": "string" // }, + // "RxDataRate2": { + // "maximum": 15, + // "minimum": 0, + // "type": "integer" + // }, + // "RxDelay1": { + // "maximum": 15, + // "minimum": 0, + // "type": "integer" + // }, + // "RxDrOffset1": { + // "maximum": 7, + // "minimum": 0, + // "type": "integer" + // }, + // "RxFreq2": { + // "maximum": 16700000, + // "minimum": 1000000, + // "type": "integer" + // }, // "Supports32BitFCnt": { // "type": "boolean" // }, @@ -125,6 +154,11 @@ func deviceProfileDataSourceType(ctx context.Context) (provider.DataSourceType, Type: types.Int64Type, Computed: true, }, + "factory_preset_freqs_list": { + // Property: FactoryPresetFreqsList + Type: types.ListType{ElemType: types.Int64Type}, + Computed: true, + }, "mac_version": { // Property: MacVersion Type: types.StringType, @@ -165,6 +199,26 @@ func deviceProfileDataSourceType(ctx context.Context) (provider.DataSourceType, Type: types.StringType, Computed: true, }, + "rx_data_rate_2": { + // Property: RxDataRate2 + Type: types.Int64Type, + Computed: true, + }, + "rx_delay_1": { + // Property: RxDelay1 + Type: types.Int64Type, + Computed: true, + }, + "rx_dr_offset_1": { + // Property: RxDrOffset1 + Type: types.Int64Type, + Computed: true, + }, + "rx_freq_2": { + // Property: RxFreq2 + Type: types.Int64Type, + Computed: true, + }, "supports_32_bit_f_cnt": { // Property: Supports32BitFCnt Type: types.BoolType, @@ -263,27 +317,32 @@ func deviceProfileDataSourceType(ctx context.Context) (provider.DataSourceType, opts = opts.WithCloudFormationTypeName("AWS::IoTWireless::DeviceProfile").WithTerraformTypeName("awscc_iotwireless_device_profile") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "class_b_timeout": "ClassBTimeout", - "class_c_timeout": "ClassCTimeout", - "id": "Id", - "key": "Key", - "lo_ra_wan": "LoRaWAN", - "mac_version": "MacVersion", - "max_duty_cycle": "MaxDutyCycle", - "max_eirp": "MaxEirp", - "name": "Name", - "ping_slot_dr": "PingSlotDr", - "ping_slot_freq": "PingSlotFreq", - "ping_slot_period": "PingSlotPeriod", - "reg_params_revision": "RegParamsRevision", - "rf_region": "RfRegion", - "supports_32_bit_f_cnt": "Supports32BitFCnt", - "supports_class_b": "SupportsClassB", - "supports_class_c": "SupportsClassC", - "supports_join": "SupportsJoin", - "tags": "Tags", - "value": "Value", + "arn": "Arn", + "class_b_timeout": "ClassBTimeout", + "class_c_timeout": "ClassCTimeout", + "factory_preset_freqs_list": "FactoryPresetFreqsList", + "id": "Id", + "key": "Key", + "lo_ra_wan": "LoRaWAN", + "mac_version": "MacVersion", + "max_duty_cycle": "MaxDutyCycle", + "max_eirp": "MaxEirp", + "name": "Name", + "ping_slot_dr": "PingSlotDr", + "ping_slot_freq": "PingSlotFreq", + "ping_slot_period": "PingSlotPeriod", + "reg_params_revision": "RegParamsRevision", + "rf_region": "RfRegion", + "rx_data_rate_2": "RxDataRate2", + "rx_delay_1": "RxDelay1", + "rx_dr_offset_1": "RxDrOffset1", + "rx_freq_2": "RxFreq2", + "supports_32_bit_f_cnt": "Supports32BitFCnt", + "supports_class_b": "SupportsClassB", + "supports_class_c": "SupportsClassC", + "supports_join": "SupportsJoin", + "tags": "Tags", + "value": "Value", }) singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) diff --git a/internal/aws/m2/application_plural_data_source_gen.go b/internal/aws/m2/application_plural_data_source_gen.go new file mode 100644 index 0000000000..d8ac6814b9 --- /dev/null +++ b/internal/aws/m2/application_plural_data_source_gen.go @@ -0,0 +1,53 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package m2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_m2_applications", applicationsDataSourceType) +} + +// applicationsDataSourceType returns the Terraform awscc_m2_applications data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::M2::Application resource type. +func applicationsDataSourceType(ctx context.Context) (provider.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::M2::Application", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::M2::Application").WithTerraformTypeName("awscc_m2_applications") + opts = opts.WithTerraformSchema(schema) + + pluralDataSourceType, err := NewPluralDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return pluralDataSourceType, nil +} diff --git a/internal/aws/m2/application_plural_data_source_gen_test.go b/internal/aws/m2/application_plural_data_source_gen_test.go new file mode 100644 index 0000000000..4eb84ea8fd --- /dev/null +++ b/internal/aws/m2/application_plural_data_source_gen_test.go @@ -0,0 +1,24 @@ +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package m2_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSM2ApplicationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::M2::Application", "awscc_m2_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/m2/application_resource_gen.go b/internal/aws/m2/application_resource_gen.go new file mode 100644 index 0000000000..2e60af3d0e --- /dev/null +++ b/internal/aws/m2/application_resource_gen.go @@ -0,0 +1,223 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package m2 + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/resource" + "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_m2_application", applicationResourceType) +} + +// applicationResourceType returns the Terraform awscc_m2_application resource type. +// This Terraform resource type corresponds to the CloudFormation AWS::M2::Application resource type. +func applicationResourceType(ctx context.Context) (provider.ResourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "application_arn": { + // Property: ApplicationArn + // CloudFormation resource type schema: + // { + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "application_id": { + // Property: ApplicationId + // CloudFormation resource type schema: + // { + // "pattern": "^\\S{1,80}$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "definition": { + // Property: Definition + // CloudFormation resource type schema: + // { + // "properties": { + // "Content": { + // "maxLength": 65000, + // "minLength": 1, + // "type": "string" + // }, + // "S3Location": { + // "pattern": "", + // "type": "string" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "content": { + // Property: Content + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(1, 65000), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "s3_location": { + // Property: S3Location + Type: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + }, + ), + Required: true, + // Definition is a write-only property. + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 500, + // "minLength": 0, + // "type": "string" + // } + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringLenBetween(0, 500), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + "engine_type": { + // Property: EngineType + // CloudFormation resource type schema: + // { + // "enum": [ + // "microfocus", + // "bluage" + // ], + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "microfocus", + "bluage", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + // "type": "string" + // } + Type: types.StringType, + Required: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringMatch(regexp.MustCompile("^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$"), ""), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.RequiresReplace(), + }, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "type": "object" + // } + // Pattern: "" + Type: types.MapType{ElemType: types.StringType}, + Optional: true, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, + } + + attributes["id"] = tfsdk.Attribute{ + Description: "Uniquely identifies the resource.", + Type: types.StringType, + Computed: true, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + } + + schema := tfsdk.Schema{ + Description: "Represents an application that runs on an AWS Mainframe Modernization Environment", + Version: 1, + Attributes: attributes, + } + + var opts ResourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::M2::Application").WithTerraformTypeName("awscc_m2_application") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "application_arn": "ApplicationArn", + "application_id": "ApplicationId", + "content": "Content", + "definition": "Definition", + "description": "Description", + "engine_type": "EngineType", + "name": "Name", + "s3_location": "S3Location", + "tags": "Tags", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Definition", + }) + 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/m2/application_resource_gen_test.go b/internal/aws/m2/application_resource_gen_test.go new file mode 100644 index 0000000000..d570480db7 --- /dev/null +++ b/internal/aws/m2/application_resource_gen_test.go @@ -0,0 +1,22 @@ +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package m2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSM2Application_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::M2::Application", "awscc_m2_application", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/m2/application_singular_data_source_gen.go b/internal/aws/m2/application_singular_data_source_gen.go new file mode 100644 index 0000000000..ef08d88ecc --- /dev/null +++ b/internal/aws/m2/application_singular_data_source_gen.go @@ -0,0 +1,165 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package m2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/provider" + "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_m2_application", applicationDataSourceType) +} + +// applicationDataSourceType returns the Terraform awscc_m2_application data source type. +// This Terraform data source type corresponds to the CloudFormation AWS::M2::Application resource type. +func applicationDataSourceType(ctx context.Context) (provider.DataSourceType, error) { + attributes := map[string]tfsdk.Attribute{ + "application_arn": { + // Property: ApplicationArn + // CloudFormation resource type schema: + // { + // "pattern": "", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "application_id": { + // Property: ApplicationId + // CloudFormation resource type schema: + // { + // "pattern": "^\\S{1,80}$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "definition": { + // Property: Definition + // CloudFormation resource type schema: + // { + // "properties": { + // "Content": { + // "maxLength": 65000, + // "minLength": 1, + // "type": "string" + // }, + // "S3Location": { + // "pattern": "", + // "type": "string" + // } + // }, + // "type": "object" + // } + Attributes: tfsdk.SingleNestedAttributes( + map[string]tfsdk.Attribute{ + "content": { + // Property: Content + Type: types.StringType, + Computed: true, + }, + "s3_location": { + // Property: S3Location + Type: types.StringType, + Computed: true, + }, + }, + ), + Computed: true, + }, + "description": { + // Property: Description + // CloudFormation resource type schema: + // { + // "maxLength": 500, + // "minLength": 0, + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "engine_type": { + // Property: EngineType + // CloudFormation resource type schema: + // { + // "enum": [ + // "microfocus", + // "bluage" + // ], + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "name": { + // Property: Name + // CloudFormation resource type schema: + // { + // "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + // "type": "string" + // } + Type: types.StringType, + Computed: true, + }, + "tags": { + // Property: Tags + // CloudFormation resource type schema: + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "type": "object" + // } + // 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::M2::Application", + Version: 1, + Attributes: attributes, + } + + var opts DataSourceTypeOptions + + opts = opts.WithCloudFormationTypeName("AWS::M2::Application").WithTerraformTypeName("awscc_m2_application") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "application_arn": "ApplicationArn", + "application_id": "ApplicationId", + "content": "Content", + "definition": "Definition", + "description": "Description", + "engine_type": "EngineType", + "name": "Name", + "s3_location": "S3Location", + "tags": "Tags", + }) + + singularDataSourceType, err := NewSingularDataSourceType(ctx, opts...) + + if err != nil { + return nil, err + } + + return singularDataSourceType, nil +} diff --git a/internal/aws/m2/application_singular_data_source_gen_test.go b/internal/aws/m2/application_singular_data_source_gen_test.go new file mode 100644 index 0000000000..996292c817 --- /dev/null +++ b/internal/aws/m2/application_singular_data_source_gen_test.go @@ -0,0 +1,33 @@ +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package m2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSM2ApplicationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::M2::Application", "awscc_m2_application", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSM2ApplicationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::M2::Application", "awscc_m2_application", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/mediapackage/origin_endpoint_resource_gen.go b/internal/aws/mediapackage/origin_endpoint_resource_gen.go index fa6db61aa0..61df708543 100644 --- a/internal/aws/mediapackage/origin_endpoint_resource_gen.go +++ b/internal/aws/mediapackage/origin_endpoint_resource_gen.go @@ -110,6 +110,14 @@ func originEndpointResourceType(ctx context.Context) (provider.ResourceType, err // "pattern": "", // "type": "string" // }, + // "EncryptionMethod": { + // "description": "The encryption method used", + // "enum": [ + // "SAMPLE_AES", + // "AES_CTR" + // ], + // "type": "string" + // }, // "KeyRotationIntervalSeconds": { // "description": "Time (in seconds) between each encryption key rotation.", // "type": "integer" @@ -334,6 +342,22 @@ func originEndpointResourceType(ctx context.Context) (provider.ResourceType, err resource.UseStateForUnknown(), }, }, + "encryption_method": { + // Property: EncryptionMethod + Description: "The encryption method used", + Type: types.StringType, + Optional: true, + Computed: true, + Validators: []tfsdk.AttributeValidator{ + validate.StringInSlice([]string{ + "SAMPLE_AES", + "AES_CTR", + }), + }, + PlanModifiers: []tfsdk.AttributePlanModifier{ + resource.UseStateForUnknown(), + }, + }, "key_rotation_interval_seconds": { // Property: KeyRotationIntervalSeconds Description: "Time (in seconds) between each encryption key rotation.", diff --git a/internal/aws/mediapackage/origin_endpoint_singular_data_source_gen.go b/internal/aws/mediapackage/origin_endpoint_singular_data_source_gen.go index d1bb96f4ea..6b9b35c986 100644 --- a/internal/aws/mediapackage/origin_endpoint_singular_data_source_gen.go +++ b/internal/aws/mediapackage/origin_endpoint_singular_data_source_gen.go @@ -101,6 +101,14 @@ func originEndpointDataSourceType(ctx context.Context) (provider.DataSourceType, // "pattern": "", // "type": "string" // }, + // "EncryptionMethod": { + // "description": "The encryption method used", + // "enum": [ + // "SAMPLE_AES", + // "AES_CTR" + // ], + // "type": "string" + // }, // "KeyRotationIntervalSeconds": { // "description": "Time (in seconds) between each encryption key rotation.", // "type": "integer" @@ -318,6 +326,12 @@ func originEndpointDataSourceType(ctx context.Context) (provider.DataSourceType, Type: types.StringType, Computed: true, }, + "encryption_method": { + // Property: EncryptionMethod + Description: "The encryption method used", + Type: types.StringType, + Computed: true, + }, "key_rotation_interval_seconds": { // Property: KeyRotationIntervalSeconds Description: "Time (in seconds) between each encryption key rotation.", diff --git a/internal/aws/ses/email_identity_resource_gen.go b/internal/aws/ses/email_identity_resource_gen.go index fa5aecdc6c..2882abcd10 100644 --- a/internal/aws/ses/email_identity_resource_gen.go +++ b/internal/aws/ses/email_identity_resource_gen.go @@ -200,6 +200,7 @@ func emailIdentityResourceType(ctx context.Context) (provider.ResourceType, erro PlanModifiers: []tfsdk.AttributePlanModifier{ resource.UseStateForUnknown(), }, + // DomainSigningPrivateKey is a write-only property. }, "domain_signing_selector": { // Property: DomainSigningSelector @@ -210,6 +211,7 @@ func emailIdentityResourceType(ctx context.Context) (provider.ResourceType, erro PlanModifiers: []tfsdk.AttributePlanModifier{ resource.UseStateForUnknown(), }, + // DomainSigningSelector is a write-only property. }, "next_signing_key_length": { // Property: NextSigningKeyLength @@ -231,7 +233,6 @@ func emailIdentityResourceType(ctx context.Context) (provider.ResourceType, erro PlanModifiers: []tfsdk.AttributePlanModifier{ resource.UseStateForUnknown(), }, - // DkimSigningAttributes is a write-only property. }, "email_identity": { // Property: EmailIdentity @@ -381,7 +382,8 @@ func emailIdentityResourceType(ctx context.Context) (provider.ResourceType, erro }) opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/DkimSigningAttributes", + "/properties/DkimSigningAttributes/DomainSigningSelector", + "/properties/DkimSigningAttributes/DomainSigningPrivateKey", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 7fa59489d2..cc723bba20 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" } -# 590 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 606 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -489,6 +489,15 @@ resource_schema "aws_codeartifact_repository" { cloudformation_type_name = "AWS::CodeArtifact::Repository" } +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_codeguruprofiler_profiling_group" { cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" } @@ -905,6 +914,15 @@ resource_schema "aws_ec2_vpc_peering_connection" { cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" } +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_ec2_vpn_gateway" { cloudformation_type_name = "AWS::EC2::VPNGateway" } @@ -996,6 +1014,15 @@ resource_schema "aws_eks_nodegroup" { suppress_plural_data_source_generation = true } +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_emr_studio" { cloudformation_type_name = "AWS::EMR::Studio" } @@ -1012,6 +1039,15 @@ resource_schema "aws_elasticache_global_replication_group" { cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" } +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_elasticache_user" { cloudformation_type_name = "AWS::ElastiCache::User" } @@ -1029,6 +1065,15 @@ resource_schema "aws_elasticbeanstalk_application" { suppress_plural_data_source_generation = true } +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_elasticloadbalancingv2_listener" { cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" suppress_plural_data_source_generation = true @@ -1256,6 +1301,16 @@ resource_schema "aws_ivs_stream_key" { cloudformation_type_name = "AWS::IVS::StreamKey" } +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + resource_schema "aws_inspector_assessment_target" { cloudformation_type_name = "AWS::Inspector::AssessmentTarget" } @@ -1439,6 +1494,35 @@ resource_schema "aws_iotfleethub_application" { cloudformation_type_name = "AWS::IoTFleetHub::Application" } +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" + + # NetworkInterfaces is of unsupported type: list of . + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + resource_schema "aws_iotsitewise_access_policy" { cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" suppress_plural_data_source_generation = true @@ -1722,6 +1806,15 @@ resource_schema "aws_location_tracker_consumer" { suppress_plural_data_source_generation = true } +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_logs_log_group" { cloudformation_type_name = "AWS::Logs::LogGroup" } @@ -1768,6 +1861,10 @@ resource_schema "aws_lookoutvision_project" { cloudformation_type_name = "AWS::LookoutVision::Project" } +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + resource_schema "aws_m2_environment" { cloudformation_type_name = "AWS::M2::Environment" } @@ -2154,6 +2251,15 @@ resource_schema "aws_redshift_cluster_parameter_group" { suppress_plural_data_source_generation = true } +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" + + # Suppress until given green light by AWS. + suppress_resource_generation = true + suppress_singular_data_source_generation = true + suppress_plural_data_source_generation = true +} + resource_schema "aws_redshift_endpoint_access" { cloudformation_type_name = "AWS::Redshift::EndpointAccess" } diff --git a/internal/provider/generators/allschemas/available_schemas.2022-09-28.hcl b/internal/provider/generators/allschemas/available_schemas.2022-09-28.hcl new file mode 100644 index 0000000000..d6ff35a7ea --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2022-09-28.hcl @@ -0,0 +1,2617 @@ +# 606 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_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" +} + +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_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +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_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +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_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" +} + +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_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +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_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" + 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" +} + +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_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + 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_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +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_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_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_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_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_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_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_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" + 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_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_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_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_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_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" + suppress_plural_data_source_generation = true +} + +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_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_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" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +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_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_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" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +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_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +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_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" + 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_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" + 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" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_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_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +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_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" + suppress_plural_data_source_generation = true +} + +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" +} + +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_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_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_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_nimblestudio_launch_profile" { + cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_streaming_image" { + cloudformation_type_name = "AWS::NimbleStudio::StreamingImage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_studio" { + cloudformation_type_name = "AWS::NimbleStudio::Studio" +} + +resource_schema "aws_nimblestudio_studio_component" { + cloudformation_type_name = "AWS::NimbleStudio::StudioComponent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_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_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" + 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_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +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_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +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" +} + +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" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" + 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" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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 611403824c..b23ecc16de 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -209,6 +209,11 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotevents_detector_models -cftype AWS::IoTEvents::DetectorModel -package iotevents ../aws/iotevents/detector_model_plural_data_source_gen.go ../aws/iotevents/detector_model_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotevents_inputs -cftype AWS::IoTEvents::Input -package iotevents ../aws/iotevents/input_plural_data_source_gen.go ../aws/iotevents/input_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleethub_applications -cftype AWS::IoTFleetHub::Application -package iotfleethub ../aws/iotfleethub/application_plural_data_source_gen.go ../aws/iotfleethub/application_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleetwise_campaigns -cftype AWS::IoTFleetWise::Campaign -package iotfleetwise ../aws/iotfleetwise/campaign_plural_data_source_gen.go ../aws/iotfleetwise/campaign_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleetwise_fleets -cftype AWS::IoTFleetWise::Fleet -package iotfleetwise ../aws/iotfleetwise/fleet_plural_data_source_gen.go ../aws/iotfleetwise/fleet_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleetwise_model_manifests -cftype AWS::IoTFleetWise::ModelManifest -package iotfleetwise ../aws/iotfleetwise/model_manifest_plural_data_source_gen.go ../aws/iotfleetwise/model_manifest_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleetwise_signal_catalogs -cftype AWS::IoTFleetWise::SignalCatalog -package iotfleetwise ../aws/iotfleetwise/signal_catalog_plural_data_source_gen.go ../aws/iotfleetwise/signal_catalog_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_iotfleetwise_vehicles -cftype AWS::IoTFleetWise::Vehicle -package iotfleetwise ../aws/iotfleetwise/vehicle_plural_data_source_gen.go ../aws/iotfleetwise/vehicle_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotsitewise_assets -cftype AWS::IoTSiteWise::Asset -package iotsitewise ../aws/iotsitewise/asset_plural_data_source_gen.go ../aws/iotsitewise/asset_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotsitewise_asset_models -cftype AWS::IoTSiteWise::AssetModel -package iotsitewise ../aws/iotsitewise/asset_model_plural_data_source_gen.go ../aws/iotsitewise/asset_model_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_iotsitewise_gateways -cftype AWS::IoTSiteWise::Gateway -package iotsitewise ../aws/iotsitewise/gateway_plural_data_source_gen.go ../aws/iotsitewise/gateway_plural_data_source_gen_test.go @@ -261,6 +266,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_lookoutmetrics_alerts -cftype AWS::LookoutMetrics::Alert -package lookoutmetrics ../aws/lookoutmetrics/alert_plural_data_source_gen.go ../aws/lookoutmetrics/alert_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_lookoutmetrics_anomaly_detectors -cftype AWS::LookoutMetrics::AnomalyDetector -package lookoutmetrics ../aws/lookoutmetrics/anomaly_detector_plural_data_source_gen.go ../aws/lookoutmetrics/anomaly_detector_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_lookoutvision_projects -cftype AWS::LookoutVision::Project -package lookoutvision ../aws/lookoutvision/project_plural_data_source_gen.go ../aws/lookoutvision/project_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_m2_applications -cftype AWS::M2::Application -package m2 ../aws/m2/application_plural_data_source_gen.go ../aws/m2/application_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_m2_environments -cftype AWS::M2::Environment -package m2 ../aws/m2/environment_plural_data_source_gen.go ../aws/m2/environment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_msk_clusters -cftype AWS::MSK::Cluster -package msk ../aws/msk/cluster_plural_data_source_gen.go ../aws/msk/cluster_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_msk_configurations -cftype AWS::MSK::Configuration -package msk ../aws/msk/configuration_plural_data_source_gen.go ../aws/msk/configuration_plural_data_source_gen_test.go @@ -443,6 +449,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotevents" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleethub" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleetwise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotsitewise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iottwinmaker" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotwireless" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index f93d9c3cbb..be619dfa4b 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -257,6 +257,8 @@ //go:generate go run generators/resource/main.go -resource awscc_ivs_playback_key_pair -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json -package ivs -- ../aws/ivs/playback_key_pair_resource_gen.go ../aws/ivs/playback_key_pair_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_recording_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json -package ivs -- ../aws/ivs/recording_configuration_resource_gen.go ../aws/ivs/recording_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ivs_stream_key -cfschema ../service/cloudformation/schemas/AWS_IVS_StreamKey.json -package ivs -- ../aws/ivs/stream_key_resource_gen.go ../aws/ivs/stream_key_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_identitystore_group -cfschema ../service/cloudformation/schemas/AWS_IdentityStore_Group.json -package identitystore -- ../aws/identitystore/group_resource_gen.go ../aws/identitystore/group_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_identitystore_group_membership -cfschema ../service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json -package identitystore -- ../aws/identitystore/group_membership_resource_gen.go ../aws/identitystore/group_membership_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_inspector_assessment_target -cfschema ../service/cloudformation/schemas/AWS_Inspector_AssessmentTarget.json -package inspector -- ../aws/inspector/assessment_target_resource_gen.go ../aws/inspector/assessment_target_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_inspector_assessment_template -cfschema ../service/cloudformation/schemas/AWS_Inspector_AssessmentTemplate.json -package inspector -- ../aws/inspector/assessment_template_resource_gen.go ../aws/inspector/assessment_template_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_inspector_resource_group -cfschema ../service/cloudformation/schemas/AWS_Inspector_ResourceGroup.json -package inspector -- ../aws/inspector/resource_group_resource_gen.go ../aws/inspector/resource_group_resource_gen_test.go @@ -291,6 +293,11 @@ //go:generate go run generators/resource/main.go -resource awscc_iotevents_detector_model -cfschema ../service/cloudformation/schemas/AWS_IoTEvents_DetectorModel.json -package iotevents -- ../aws/iotevents/detector_model_resource_gen.go ../aws/iotevents/detector_model_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iotevents_input -cfschema ../service/cloudformation/schemas/AWS_IoTEvents_Input.json -package iotevents -- ../aws/iotevents/input_resource_gen.go ../aws/iotevents/input_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iotfleethub_application -cfschema ../service/cloudformation/schemas/AWS_IoTFleetHub_Application.json -package iotfleethub -- ../aws/iotfleethub/application_resource_gen.go ../aws/iotfleethub/application_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_iotfleetwise_campaign -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json -package iotfleetwise -- ../aws/iotfleetwise/campaign_resource_gen.go ../aws/iotfleetwise/campaign_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_iotfleetwise_fleet -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json -package iotfleetwise -- ../aws/iotfleetwise/fleet_resource_gen.go ../aws/iotfleetwise/fleet_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_iotfleetwise_model_manifest -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json -package iotfleetwise -- ../aws/iotfleetwise/model_manifest_resource_gen.go ../aws/iotfleetwise/model_manifest_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_iotfleetwise_signal_catalog -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json -package iotfleetwise -- ../aws/iotfleetwise/signal_catalog_resource_gen.go ../aws/iotfleetwise/signal_catalog_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_iotfleetwise_vehicle -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json -package iotfleetwise -- ../aws/iotfleetwise/vehicle_resource_gen.go ../aws/iotfleetwise/vehicle_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iotsitewise_access_policy -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_AccessPolicy.json -package iotsitewise -- ../aws/iotsitewise/access_policy_resource_gen.go ../aws/iotsitewise/access_policy_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iotsitewise_asset -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json -package iotsitewise -- ../aws/iotsitewise/asset_resource_gen.go ../aws/iotsitewise/asset_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_iotsitewise_asset_model -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json -package iotsitewise -- ../aws/iotsitewise/asset_model_resource_gen.go ../aws/iotsitewise/asset_model_resource_gen_test.go @@ -360,6 +367,7 @@ //go:generate go run generators/resource/main.go -resource awscc_lookoutmetrics_alert -cfschema ../service/cloudformation/schemas/AWS_LookoutMetrics_Alert.json -package lookoutmetrics -- ../aws/lookoutmetrics/alert_resource_gen.go ../aws/lookoutmetrics/alert_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lookoutmetrics_anomaly_detector -cfschema ../service/cloudformation/schemas/AWS_LookoutMetrics_AnomalyDetector.json -package lookoutmetrics -- ../aws/lookoutmetrics/anomaly_detector_resource_gen.go ../aws/lookoutmetrics/anomaly_detector_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lookoutvision_project -cfschema ../service/cloudformation/schemas/AWS_LookoutVision_Project.json -package lookoutvision -- ../aws/lookoutvision/project_resource_gen.go ../aws/lookoutvision/project_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_m2_application -cfschema ../service/cloudformation/schemas/AWS_M2_Application.json -package m2 -- ../aws/m2/application_resource_gen.go ../aws/m2/application_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_m2_environment -cfschema ../service/cloudformation/schemas/AWS_M2_Environment.json -package m2 -- ../aws/m2/environment_resource_gen.go ../aws/m2/environment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_msk_batch_scram_secret -cfschema ../service/cloudformation/schemas/AWS_MSK_BatchScramSecret.json -package msk -- ../aws/msk/batch_scram_secret_resource_gen.go ../aws/msk/batch_scram_secret_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_msk_cluster -cfschema ../service/cloudformation/schemas/AWS_MSK_Cluster.json -package msk -- ../aws/msk/cluster_resource_gen.go ../aws/msk/cluster_resource_gen_test.go @@ -616,6 +624,7 @@ import ( _ "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/identitystore" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/imagebuilder" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspector" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspectorv2" @@ -623,6 +632,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotevents" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleethub" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleetwise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotsitewise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iottwinmaker" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotwireless" diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index dc93b73e95..fd935a39d4 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -257,6 +257,8 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_playback_key_pair -cfschema ../service/cloudformation/schemas/AWS_IVS_PlaybackKeyPair.json -package ivs ../aws/ivs/playback_key_pair_singular_data_source_gen.go ../aws/ivs/playback_key_pair_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_recording_configuration -cfschema ../service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json -package ivs ../aws/ivs/recording_configuration_singular_data_source_gen.go ../aws/ivs/recording_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ivs_stream_key -cfschema ../service/cloudformation/schemas/AWS_IVS_StreamKey.json -package ivs ../aws/ivs/stream_key_singular_data_source_gen.go ../aws/ivs/stream_key_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_identitystore_group -cfschema ../service/cloudformation/schemas/AWS_IdentityStore_Group.json -package identitystore ../aws/identitystore/group_singular_data_source_gen.go ../aws/identitystore/group_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_identitystore_group_membership -cfschema ../service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json -package identitystore ../aws/identitystore/group_membership_singular_data_source_gen.go ../aws/identitystore/group_membership_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_inspector_assessment_target -cfschema ../service/cloudformation/schemas/AWS_Inspector_AssessmentTarget.json -package inspector ../aws/inspector/assessment_target_singular_data_source_gen.go ../aws/inspector/assessment_target_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_inspector_assessment_template -cfschema ../service/cloudformation/schemas/AWS_Inspector_AssessmentTemplate.json -package inspector ../aws/inspector/assessment_template_singular_data_source_gen.go ../aws/inspector/assessment_template_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_inspector_resource_group -cfschema ../service/cloudformation/schemas/AWS_Inspector_ResourceGroup.json -package inspector ../aws/inspector/resource_group_singular_data_source_gen.go ../aws/inspector/resource_group_singular_data_source_gen_test.go @@ -291,6 +293,11 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotevents_detector_model -cfschema ../service/cloudformation/schemas/AWS_IoTEvents_DetectorModel.json -package iotevents ../aws/iotevents/detector_model_singular_data_source_gen.go ../aws/iotevents/detector_model_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotevents_input -cfschema ../service/cloudformation/schemas/AWS_IoTEvents_Input.json -package iotevents ../aws/iotevents/input_singular_data_source_gen.go ../aws/iotevents/input_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleethub_application -cfschema ../service/cloudformation/schemas/AWS_IoTFleetHub_Application.json -package iotfleethub ../aws/iotfleethub/application_singular_data_source_gen.go ../aws/iotfleethub/application_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleetwise_campaign -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json -package iotfleetwise ../aws/iotfleetwise/campaign_singular_data_source_gen.go ../aws/iotfleetwise/campaign_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleetwise_fleet -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json -package iotfleetwise ../aws/iotfleetwise/fleet_singular_data_source_gen.go ../aws/iotfleetwise/fleet_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleetwise_model_manifest -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json -package iotfleetwise ../aws/iotfleetwise/model_manifest_singular_data_source_gen.go ../aws/iotfleetwise/model_manifest_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleetwise_signal_catalog -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json -package iotfleetwise ../aws/iotfleetwise/signal_catalog_singular_data_source_gen.go ../aws/iotfleetwise/signal_catalog_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_iotfleetwise_vehicle -cfschema ../service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json -package iotfleetwise ../aws/iotfleetwise/vehicle_singular_data_source_gen.go ../aws/iotfleetwise/vehicle_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotsitewise_access_policy -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_AccessPolicy.json -package iotsitewise ../aws/iotsitewise/access_policy_singular_data_source_gen.go ../aws/iotsitewise/access_policy_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotsitewise_asset -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json -package iotsitewise ../aws/iotsitewise/asset_singular_data_source_gen.go ../aws/iotsitewise/asset_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_iotsitewise_asset_model -cfschema ../service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json -package iotsitewise ../aws/iotsitewise/asset_model_singular_data_source_gen.go ../aws/iotsitewise/asset_model_singular_data_source_gen_test.go @@ -360,6 +367,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_lookoutmetrics_alert -cfschema ../service/cloudformation/schemas/AWS_LookoutMetrics_Alert.json -package lookoutmetrics ../aws/lookoutmetrics/alert_singular_data_source_gen.go ../aws/lookoutmetrics/alert_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lookoutmetrics_anomaly_detector -cfschema ../service/cloudformation/schemas/AWS_LookoutMetrics_AnomalyDetector.json -package lookoutmetrics ../aws/lookoutmetrics/anomaly_detector_singular_data_source_gen.go ../aws/lookoutmetrics/anomaly_detector_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lookoutvision_project -cfschema ../service/cloudformation/schemas/AWS_LookoutVision_Project.json -package lookoutvision ../aws/lookoutvision/project_singular_data_source_gen.go ../aws/lookoutvision/project_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_m2_application -cfschema ../service/cloudformation/schemas/AWS_M2_Application.json -package m2 ../aws/m2/application_singular_data_source_gen.go ../aws/m2/application_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_m2_environment -cfschema ../service/cloudformation/schemas/AWS_M2_Environment.json -package m2 ../aws/m2/environment_singular_data_source_gen.go ../aws/m2/environment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_msk_batch_scram_secret -cfschema ../service/cloudformation/schemas/AWS_MSK_BatchScramSecret.json -package msk ../aws/msk/batch_scram_secret_singular_data_source_gen.go ../aws/msk/batch_scram_secret_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_msk_cluster -cfschema ../service/cloudformation/schemas/AWS_MSK_Cluster.json -package msk ../aws/msk/cluster_singular_data_source_gen.go ../aws/msk/cluster_singular_data_source_gen_test.go @@ -616,6 +624,7 @@ import ( _ "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/identitystore" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/imagebuilder" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspector" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/inspectorv2" @@ -623,6 +632,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotcoredeviceadvisor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotevents" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleethub" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotfleetwise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotsitewise" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iottwinmaker" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/iotwireless" diff --git a/internal/service/cloudformation/schemas/AWS_AppRunner_Service.json b/internal/service/cloudformation/schemas/AWS_AppRunner_Service.json index 2259f69776..7724c89336 100644 --- a/internal/service/cloudformation/schemas/AWS_AppRunner_Service.json +++ b/internal/service/cloudformation/schemas/AWS_AppRunner_Service.json @@ -99,7 +99,8 @@ "NODEJS_12", "NODEJS_14", "CORRETTO_8", - "CORRETTO_11" + "CORRETTO_11", + "NODEJS_16" ] }, "BuildCommand": { diff --git a/internal/service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json b/internal/service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json index 34b348fbc9..7a2caffc18 100644 --- a/internal/service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json +++ b/internal/service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json @@ -40,27 +40,57 @@ "handlers": { "create": { "permissions": [ - "appstream:*" + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfig", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "update": { "permissions": [ - "appstream:*" + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfig", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "read": { "permissions": [ - "appstream:*" + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfig", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "delete": { "permissions": [ - "appstream:*" + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfig", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "list": { "permissions": [ - "appstream:*" + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfig", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json b/internal/service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json index 153eb70604..1cd440afdc 100644 --- a/internal/service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json +++ b/internal/service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json @@ -127,26 +127,58 @@ "handlers": { "create": { "permissions": [ - "appstream:*", - "iam:*" + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "read": { "permissions": [ - "appstream:*", - "iam:*" + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "delete": { "permissions": [ - "appstream:*", - "iam:*" + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] }, "list": { "permissions": [ - "appstream:*", - "iam:*" + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_CodeDeploy_DeploymentConfig.json b/internal/service/cloudformation/schemas/AWS_CodeDeploy_DeploymentConfig.json new file mode 100644 index 0000000000..3a3554a47d --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_CodeDeploy_DeploymentConfig.json @@ -0,0 +1,130 @@ +{ + "typeName": "AWS::CodeDeploy::DeploymentConfig", + "description": "Resource Type definition for AWS::CodeDeploy::DeploymentConfig", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codedeploy", + "definitions": { + "TimeBasedLinear": { + "type": "object", + "additionalProperties": false, + "properties": { + "LinearInterval": { + "type": "integer" + }, + "LinearPercentage": { + "type": "integer" + } + }, + "required": [ + "LinearInterval", + "LinearPercentage" + ] + }, + "TimeBasedCanary": { + "type": "object", + "additionalProperties": false, + "properties": { + "CanaryPercentage": { + "type": "integer" + }, + "CanaryInterval": { + "type": "integer" + } + }, + "required": [ + "CanaryPercentage", + "CanaryInterval" + ] + }, + "TrafficRoutingConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "TimeBasedLinear": { + "$ref": "#/definitions/TimeBasedLinear" + }, + "TimeBasedCanary": { + "$ref": "#/definitions/TimeBasedCanary" + } + }, + "required": [ + "Type" + ] + }, + "MinimumHealthyHosts": { + "type": "object", + "additionalProperties": false, + "properties": { + "Value": { + "type": "integer" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ] + } + }, + "properties": { + "ComputePlatform": { + "description": "The destination platform type for the deployment (Lambda, Server, or ECS).", + "type": "string" + }, + "DeploymentConfigName": { + "description": "A name for the deployment configuration. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the deployment configuration name. For more information, see Name Type.", + "type": "string" + }, + "MinimumHealthyHosts": { + "description": "The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value.", + "$ref": "#/definitions/MinimumHealthyHosts" + }, + "TrafficRoutingConfig": { + "description": "The configuration that specifies how the deployment traffic is routed.", + "$ref": "#/definitions/TrafficRoutingConfig" + } + }, + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeploymentConfigName", + "/properties/MinimumHealthyHosts", + "/properties/ComputePlatform", + "/properties/TrafficRoutingConfig" + ], + "primaryIdentifier": [ + "/properties/DeploymentConfigName" + ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "create": { + "permissions": [ + "codedeploy:CreateDeploymentConfig" + ] + }, + "read": { + "permissions": [ + "codedeploy:GetDeploymentConfig" + ] + }, + "delete": { + "permissions": [ + "codedeploy:DeleteDeploymentConfig" + ] + }, + "list": { + "permissions": [ + "codedeploy:ListDeploymentConfigs" + ] + } + } +} + diff --git a/internal/service/cloudformation/schemas/AWS_Connect_PhoneNumber.json b/internal/service/cloudformation/schemas/AWS_Connect_PhoneNumber.json index dba8e21ee1..bf93a93680 100644 --- a/internal/service/cloudformation/schemas/AWS_Connect_PhoneNumber.json +++ b/internal/service/cloudformation/schemas/AWS_Connect_PhoneNumber.json @@ -29,9 +29,9 @@ }, "properties": { "TargetArn": { - "description": "The ARN of the Amazon Connect instance the phone number is claimed to.", + "description": "The ARN of the target the phone number is claimed to.", "type": "string", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance\/[-a-zA-Z0-9]*$" + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)\/[-a-zA-Z0-9]*$" }, "PhoneNumberArn": { "description": "The phone number ARN", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NatGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_NatGateway.json index 8ae0a7cc5c..dcbc56355e 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NatGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NatGateway.json @@ -1,97 +1 @@ -{ - "typeName": "AWS::EC2::NatGateway", - "description": "Resource Type definition for AWS::EC2::NatGateway", - "additionalProperties": false, - "properties": { - "SubnetId": { - "type": "string" - }, - "NatGatewayId": { - "type": "string" - }, - "ConnectivityType": { - "type": "string" - }, - "Tags": { - "type": "array", - "uniqueItems": false, - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - } - }, - "AllocationId": { - "type": "string" - } - }, - "definitions": { - "Tag": { - "type": "object", - "additionalProperties": false, - "properties": { - "Value": { - "type": "string" - }, - "Key": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ] - } - }, - "required": [ - "SubnetId" - ], - "createOnlyProperties": [ - "/properties/SubnetId", - "/properties/ConnectivityType", - "/properties/AllocationId" - ], - "primaryIdentifier": [ - "/properties/NatGatewayId" - ], - "readOnlyProperties": [ - "/properties/NatGatewayId" - ], - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": true - }, - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNatGateway", - "ec2:DescribeNatGateways", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNatGateway", - "ec2:DescribeNatGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNatGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNatGateways" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNatGateways", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - } -} +{"tagging":{"taggable":true,"tagOnCreate":true,"tagUpdatable":true,"cloudFormationSystemTags":true},"handlers":{"read":{"permissions":["ec2:DescribeNatGateways"]},"create":{"permissions":["ec2:CreateNatGateway","ec2:DescribeNatGateways","ec2:CreateTags"]},"update":{"permissions":["ec2:DescribeNatGateways","ec2:CreateTags","ec2:DeleteTags"]},"list":{"permissions":["ec2:DescribeNatGateways"]},"delete":{"permissions":["ec2:DeleteNatGateway","ec2:DescribeNatGateways"]}},"typeName":"AWS::EC2::NatGateway","readOnlyProperties":["/properties/NatGatewayId"],"description":"Resource Type definition for AWS::EC2::NatGateway","createOnlyProperties":["/properties/SubnetId","/properties/ConnectivityType","/properties/AllocationId"],"additionalProperties":false,"primaryIdentifier":["/properties/NatGatewayId"],"definitions":{"Tag":{"additionalProperties":false,"type":"object","properties":{"Value":{"type":"string"},"Key":{"type":"string"}},"required":["Value","Key"]}},"properties":{"ConnectivityType":{"type":"string"},"AllocationId":{"type":"string"},"SubnetId":{"type":"string"},"NatGatewayId":{"type":"string"},"Tags":{"uniqueItems":false,"insertionOrder":false,"type":"array","items":{"$ref":"#/definitions/Tag"}}},"required":["SubnetId"]} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json b/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json new file mode 100644 index 0000000000..000c5c76a1 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json @@ -0,0 +1,138 @@ +{ + "typeName": "AWS::EC2::VPNConnection", + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "description": "Resource Type definition for AWS::EC2::VPNConnection", + "additionalProperties": false, + "properties": { + "VpnConnectionId": { + "description": "The provider-assigned unique ID for this managed resource", + "type": "string" + }, + "CustomerGatewayId": { + "description": "The ID of the customer gateway at your end of the VPN connection.", + "type": "string" + }, + "StaticRoutesOnly": { + "description": "Indicates whether the VPN connection uses static routes only.", + "type": "boolean" + }, + "Tags": { + "description": "Any tags assigned to the VPN connection.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway associated with the VPN connection.", + "type": "string" + }, + "Type": { + "description": "The type of VPN connection.", + "type": "string" + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway at the AWS side of the VPN connection.", + "type": "string" + }, + "VpnTunnelOptionsSpecifications": { + "description": "The tunnel options for the VPN connection.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpnTunnelOptionsSpecification" + } + } + }, + "definitions": { + "VpnTunnelOptionsSpecification": { + "type": "object", + "additionalProperties": false, + "properties": { + "PreSharedKey": { + "type": "string" + }, + "TunnelInsideCidr": { + "type": "string" + } + } + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + } + }, + "required": [ + "Type", + "CustomerGatewayId" + ], + "createOnlyProperties": [ + "/properties/Type", + "/properties/CustomerGatewayId", + "/properties/VpnGatewayId", + "/properties/TransitGatewayId", + "/properties/VpnTunnelOptionsSpecifications", + "/properties/StaticRoutesOnly" + ], + "readOnlyProperties": [ + "/properties/VpnConnectionId" + ], + "primaryIdentifier": [ + "/properties/VpnConnectionId" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateVpnConnection", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:DeleteVpnConnection", + "ec2:DeleteTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Addon.json b/internal/service/cloudformation/schemas/AWS_EKS_Addon.json index 2b978a7fdc..92b9f0f783 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Addon.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Addon.json @@ -49,7 +49,8 @@ "minLength": 1, "enum": [ "NONE", - "OVERWRITE" + "OVERWRITE", + "PRESERVE" ] }, "ServiceAccountRoleArn": { diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json index 41bdd21299..bec736db2e 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json @@ -1 +1 @@ -{"sourceUrl":"https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git","tagging":{"taggable":true,"tagOnCreate":true,"tagUpdatable":true,"tagProperty":"/properties/Tags","cloudFormationSystemTags":true},"handlers":{"read":{"permissions":["eks:DescribeCluster"]},"create":{"permissions":["eks:CreateCluster","eks:DescribeCluster","eks:TagResource","iam:PassRole","kms:DescribeKey","kms:CreateGrant"]},"update":{"permissions":["iam:PassRole","eks:UpdateClusterConfig","eks:UpdateClusterVersion","eks:DescribeCluster","eks:DescribeUpdate","eks:TagResource","eks:UntagResource"],"timeoutInMinutes":150},"list":{"permissions":["eks:ListClusters"]},"delete":{"permissions":["eks:DeleteCluster","eks:DescribeCluster"]}},"typeName":"AWS::EKS::Cluster","readOnlyProperties":["/properties/Arn","/properties/Endpoint","/properties/CertificateAuthorityData","/properties/ClusterSecurityGroupId","/properties/EncryptionConfigKeyArn","/properties/OpenIdConnectIssuerUrl","/properties/KubernetesNetworkConfig/ServiceIpv6Cidr"],"description":"An object representing an Amazon EKS cluster.","createOnlyProperties":["/properties/EncryptionConfig","/properties/KubernetesNetworkConfig","/properties/Name","/properties/RoleArn","/properties/ResourcesVpcConfig/SubnetIds","/properties/ResourcesVpcConfig/SecurityGroupIds"],"additionalProperties":false,"primaryIdentifier":["/properties/Name"],"definitions":{"Logging":{"description":"Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.","additionalProperties":false,"type":"object","properties":{"ClusterLogging":{"description":"The cluster control plane logging configuration for your cluster. ","$ref":"#/definitions/ClusterLogging"}}},"EnabledTypes":{"description":"Enable control plane logs for your cluster, all log types will be disabled if the array is empty","insertionOrder":false,"type":"array","items":{"$ref":"#/definitions/LoggingTypeConfig"}},"EncryptionConfig":{"description":"The encryption configuration for the cluster","additionalProperties":false,"type":"object","properties":{"Resources":{"description":"Specifies the resources to be encrypted. The only supported value is \"secrets\".","insertionOrder":false,"type":"array","items":{"type":"string"}},"Provider":{"description":"The encryption provider for the cluster.","$ref":"#/definitions/Provider"}}},"LoggingTypeConfig":{"description":"Enabled Logging Type","additionalProperties":false,"type":"object","properties":{"Type":{"description":"name of the log type","type":"string","enum":["api","audit","authenticator","controllerManager","scheduler"]}}},"ClusterLogging":{"description":"The cluster control plane logging configuration for your cluster. ","additionalProperties":false,"type":"object","properties":{"EnabledTypes":{"$ref":"#/definitions/EnabledTypes"}}},"KubernetesNetworkConfig":{"description":"The Kubernetes network configuration for the cluster.","additionalProperties":false,"type":"object","properties":{"ServiceIpv4Cidr":{"description":"The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ","type":"string"},"ServiceIpv6Cidr":{"description":"The CIDR block to assign Kubernetes service IP addresses from.","type":"string"},"IpFamily":{"description":"Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on","type":"string","enum":["ipv4","ipv6"]}}},"Provider":{"additionalProperties":false,"type":"object","properties":{"KeyArn":{"description":"Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.","type":"string"}}},"Tag":{"description":"A key-value pair to associate with a resource.","additionalProperties":false,"type":"object","properties":{"Value":{"minLength":0,"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":"string","maxLength":256},"Key":{"minLength":1,"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":"string","maxLength":128}},"required":["Key","Value"]},"ResourcesVpcConfig":{"description":"An object representing the VPC configuration to use for an Amazon EKS cluster.","additionalProperties":false,"type":"object","properties":{"EndpointPublicAccess":{"description":"Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.","type":"boolean"},"PublicAccessCidrs":{"description":"The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}},"EndpointPrivateAccess":{"description":"Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.","type":"boolean"},"SecurityGroupIds":{"description":"Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}},"SubnetIds":{"description":"Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}}},"required":["SubnetIds"]}},"required":["RoleArn","ResourcesVpcConfig"],"properties":{"Logging":{"$ref":"#/definitions/Logging"},"EncryptionConfigKeyArn":{"description":"Amazon Resource Name (ARN) or alias of the customer master key (CMK).","type":"string"},"CertificateAuthorityData":{"description":"The certificate-authority-data for your cluster.","type":"string"},"EncryptionConfig":{"insertionOrder":false,"type":"array","items":{"maxItems":1,"$ref":"#/definitions/EncryptionConfig"}},"KubernetesNetworkConfig":{"$ref":"#/definitions/KubernetesNetworkConfig"},"RoleArn":{"description":"The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.","type":"string"},"Name":{"minLength":1,"pattern":"^[0-9A-Za-z][A-Za-z0-9\\-_]*","description":"The unique name to give to your cluster.","type":"string","maxLength":100},"Endpoint":{"description":"The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.","type":"string"},"Version":{"pattern":"1\\.\\d\\d","description":"The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.","type":"string"},"ClusterSecurityGroupId":{"description":"The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.","type":"string"},"Arn":{"description":"The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.","type":"string"},"ResourcesVpcConfig":{"$ref":"#/definitions/ResourcesVpcConfig"},"Tags":{"uniqueItems":true,"description":"An array of key-value pairs to apply to this resource.","insertionOrder":false,"type":"array","items":{"$ref":"#/definitions/Tag"}},"OpenIdConnectIssuerUrl":{"description":"The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.","type":"string"}}} +{"sourceUrl":"https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git","tagging":{"taggable":true,"tagOnCreate":true,"tagUpdatable":true,"tagProperty":"/properties/Tags","cloudFormationSystemTags":true},"handlers":{"read":{"permissions":["eks:DescribeCluster"]},"create":{"permissions":["eks:CreateCluster","eks:DescribeCluster","eks:TagResource","iam:PassRole","kms:DescribeKey","kms:CreateGrant"]},"update":{"permissions":["iam:PassRole","eks:UpdateClusterConfig","eks:UpdateClusterVersion","eks:DescribeCluster","eks:DescribeUpdate","eks:TagResource","eks:UntagResource"],"timeoutInMinutes":150},"list":{"permissions":["eks:ListClusters"]},"delete":{"permissions":["eks:DeleteCluster","eks:DescribeCluster"]}},"typeName":"AWS::EKS::Cluster","readOnlyProperties":["/properties/Arn","/properties/Endpoint","/properties/CertificateAuthorityData","/properties/ClusterSecurityGroupId","/properties/EncryptionConfigKeyArn","/properties/OpenIdConnectIssuerUrl","/properties/KubernetesNetworkConfig/ServiceIpv6Cidr"],"description":"An object representing an Amazon EKS cluster.","createOnlyProperties":["/properties/EncryptionConfig","/properties/KubernetesNetworkConfig","/properties/Name","/properties/RoleArn","/properties/ResourcesVpcConfig/SubnetIds","/properties/ResourcesVpcConfig/SecurityGroupIds"],"additionalProperties":false,"primaryIdentifier":["/properties/Name"],"definitions":{"Logging":{"description":"Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.","additionalProperties":false,"type":"object","properties":{"ClusterLogging":{"description":"The cluster control plane logging configuration for your cluster. ","$ref":"#/definitions/ClusterLogging"}}},"EnabledTypes":{"description":"Enable control plane logs for your cluster, all log types will be disabled if the array is empty","insertionOrder":false,"type":"array","items":{"$ref":"#/definitions/LoggingTypeConfig"}},"EncryptionConfig":{"description":"The encryption configuration for the cluster","additionalProperties":false,"type":"object","properties":{"Resources":{"description":"Specifies the resources to be encrypted. The only supported value is \"secrets\".","insertionOrder":false,"type":"array","items":{"type":"string"}},"Provider":{"description":"The encryption provider for the cluster.","$ref":"#/definitions/Provider"}}},"LoggingTypeConfig":{"description":"Enabled Logging Type","additionalProperties":false,"type":"object","properties":{"Type":{"description":"name of the log type","type":"string","enum":["api","audit","authenticator","controllerManager","scheduler"]}}},"ClusterLogging":{"description":"The cluster control plane logging configuration for your cluster. ","additionalProperties":false,"type":"object","properties":{"EnabledTypes":{"$ref":"#/definitions/EnabledTypes"}}},"KubernetesNetworkConfig":{"description":"The Kubernetes network configuration for the cluster.","additionalProperties":false,"type":"object","properties":{"ServiceIpv4Cidr":{"description":"The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ","type":"string"},"ServiceIpv6Cidr":{"description":"The CIDR block to assign Kubernetes service IP addresses from.","type":"string"},"IpFamily":{"description":"Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on","type":"string","enum":["ipv4","ipv6"]}}},"Provider":{"additionalProperties":false,"type":"object","properties":{"KeyArn":{"description":"Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.","type":"string"}}},"Tag":{"description":"A key-value pair to associate with a resource.","additionalProperties":false,"type":"object","properties":{"Value":{"minLength":0,"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":"string","maxLength":256},"Key":{"minLength":1,"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":"string","maxLength":128}},"required":["Key","Value"]},"ResourcesVpcConfig":{"description":"An object representing the VPC configuration to use for an Amazon EKS cluster.","additionalProperties":false,"type":"object","properties":{"EndpointPublicAccess":{"description":"Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.","type":"boolean"},"PublicAccessCidrs":{"description":"The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}},"EndpointPrivateAccess":{"description":"Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.","type":"boolean"},"SecurityGroupIds":{"description":"Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}},"SubnetIds":{"description":"Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.","insertionOrder":false,"type":"array","items":{"minItems":1,"type":"string"}}},"required":["SubnetIds"]}},"required":["RoleArn","ResourcesVpcConfig"],"properties":{"Logging":{"$ref":"#/definitions/Logging"},"EncryptionConfigKeyArn":{"description":"Amazon Resource Name (ARN) or alias of the customer master key (CMK).","type":"string"},"CertificateAuthorityData":{"description":"The certificate-authority-data for your cluster.","type":"string"},"EncryptionConfig":{"insertionOrder":false,"type":"array","items":{"maxItems":1,"$ref":"#/definitions/EncryptionConfig"}},"KubernetesNetworkConfig":{"$ref":"#/definitions/KubernetesNetworkConfig"},"RoleArn":{"description":"The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.","type":"string"},"Name":{"minLength":1,"pattern":"^[0-9A-Za-z][A-Za-z0-9\\-_]*","description":"The unique name to give to your cluster.","type":"string","maxLength":100},"Endpoint":{"description":"The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.","type":"string"},"Version":{"pattern":"1\\.\\d\\d","description":"The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.","type":"string"},"ClusterSecurityGroupId":{"description":"The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.","type":"string"},"Arn":{"description":"The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.","type":"string"},"ResourcesVpcConfig":{"$ref":"#/definitions/ResourcesVpcConfig"},"Tags":{"uniqueItems":true,"description":"An array of key-value pairs to apply to this resource.","insertionOrder":false,"type":"array","items":{"$ref":"#/definitions/Tag"}},"OpenIdConnectIssuerUrl":{"description":"The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.","type":"string"}}} \ No newline at end of file diff --git a/internal/service/cloudformation/schemas/AWS_EMR_SecurityConfiguration.json b/internal/service/cloudformation/schemas/AWS_EMR_SecurityConfiguration.json new file mode 100644 index 0000000000..c394cde323 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EMR_SecurityConfiguration.json @@ -0,0 +1,54 @@ +{ + "typeName": "AWS::EMR::SecurityConfiguration", + "description": "Use a SecurityConfiguration resource to configure data encryption, Kerberos authentication, and Amazon S3 authorization for EMRFS.", + "tagging": { + "taggable": false + }, + "properties": { + "Name": { + "description": "The name of the security configuration.", + "type": "string" + }, + "SecurityConfiguration": { + "description": "The security configuration details in JSON format.", + "type": [ + "object", + "string" + ] + } + }, + "additionalProperties": false, + "required": [ + "SecurityConfiguration" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/SecurityConfiguration" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "elasticmapreduce:CreateSecurityConfiguration", + "elasticmapreduce:DescribeSecurityConfiguration" + ] + }, + "read": { + "permissions": [ + "elasticmapreduce:DescribeSecurityConfiguration" + ] + }, + "delete": { + "permissions": [ + "elasticmapreduce:DeleteSecurityConfiguration" + ] + }, + "list": { + "permissions": [ + "elasticmapreduce:ListSecurityConfigurations" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_ElastiCache_SubnetGroup.json b/internal/service/cloudformation/schemas/AWS_ElastiCache_SubnetGroup.json new file mode 100644 index 0000000000..f4ab322255 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_ElastiCache_SubnetGroup.json @@ -0,0 +1,100 @@ +{ + "typeName": "AWS::ElastiCache::SubnetGroup", + "description": "Resource Type definition for AWS::ElastiCache::SubnetGroup", + "properties": { + "Description": { + "type": "string", + "description": "The description for the cache subnet group." + }, + "SubnetIds": { + "description": "The EC2 subnet IDs for the cache subnet group.", + "type": "array", + "items": { + "type": "string" + }, + "insertionOrder": false, + "uniqueItems": false + }, + "CacheSubnetGroupName": { + "type": "string", + "description": "The name for the cache subnet group. This value is stored as a lowercase string." + }, + "Tags": { + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "definitions": { + "Tag": { + "type": "object", + "description": "A tag that can be added to an ElastiCache subnet group. Tags are composed of a Key/Value pair. You can use tags to categorize and track all your subnet groups. A tag with a null Value is permitted.", + "additionalProperties": false, + "properties": { + "Value": { + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + } + }, + "required": [ + "Description", + "SubnetIds" + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CacheSubnetGroupName" + ], + "primaryIdentifier": [ + "/properties/CacheSubnetGroupName" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateCacheSubnetGroup", + "elasticache:DescribeCacheSubnetGroups" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeCacheSubnetGroups", + "elasticache:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteCacheSubnetGroup", + "elasticache:DescribeCacheSubnetGroups" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeCacheSubnetGroups" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyCacheSubnetGroup", + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_ElasticBeanstalk_ApplicationVersion.json b/internal/service/cloudformation/schemas/AWS_ElasticBeanstalk_ApplicationVersion.json new file mode 100644 index 0000000000..0dd85382b0 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_ElasticBeanstalk_ApplicationVersion.json @@ -0,0 +1,94 @@ +{ + "typeName": "AWS::ElasticBeanstalk::ApplicationVersion", + "description": "Resource Type definition for AWS::ElasticBeanstalk::ApplicationVersion", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", + "properties": { + "Id": { + "type": "string" + }, + "ApplicationName": { + "description": "The name of the Elastic Beanstalk application that is associated with this application version. ", + "type": "string" + }, + "Description": { + "description": "A description of this application version.", + "type": "string" + }, + "SourceBundle": { + "description": "The Amazon S3 bucket and key that identify the location of the source bundle for this version. ", + "$ref": "#/definitions/SourceBundle" + } + }, + "definitions": { + "SourceBundle": { + "type": "object", + "additionalProperties": false, + "properties": { + "S3Bucket": { + "description": "The Amazon S3 bucket where the data is located.", + "type": "string" + }, + "S3Key": { + "description": "The Amazon S3 key where the data is located.", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ] + } + }, + "required": [ + "ApplicationName", + "SourceBundle" + ], + "additionalProperties": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "createOnlyProperties": [ + "/properties/SourceBundle", + "/properties/ApplicationName" + ], + "primaryIdentifier": [ + "/properties/ApplicationName", + "/properties/Id" + ], + "readOnlyProperties": [ + "/properties/Id" + ], + "handlers": { + "create": { + "permissions": [ + "elasticbeanstalk:CreateApplicationVersion", + "elasticbeanstalk:DescribeApplicationVersions", + "s3:GetObject", + "s3:PutObject" + ] + }, + "read": { + "permissions": [ + "elasticbeanstalk:DescribeApplicationVersions" + ] + }, + "update": { + "permissions": [ + "elasticbeanstalk:UpdateApplicationVersion" + ] + }, + "delete": { + "permissions": [ + "elasticbeanstalk:DeleteApplicationVersion" + ] + }, + "list": { + "permissions": [ + "elasticbeanstalk:DescribeApplicationVersions" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Evidently_Project.json b/internal/service/cloudformation/schemas/AWS_Evidently_Project.json index 04549b853f..db647b49f4 100644 --- a/internal/service/cloudformation/schemas/AWS_Evidently_Project.json +++ b/internal/service/cloudformation/schemas/AWS_Evidently_Project.json @@ -23,6 +23,9 @@ "DataDelivery": { "$ref": "#/definitions/DataDeliveryObject" }, + "AppConfigResource": { + "$ref": "#/definitions/AppConfigResourceObject" + }, "Tags": { "description": "An array of key-value pairs to apply to this resource.", "type": "array", @@ -83,6 +86,24 @@ ], "additionalProperties": false }, + "AppConfigResourceObject": { + "type": "object", + "properties": { + "ApplicationId": { + "type": "string", + "pattern": "[a-z0-9]{4,7}" + }, + "EnvironmentId": { + "type": "string", + "pattern": "[a-z0-9]{4,7}" + } + }, + "required": [ + "ApplicationId", + "EnvironmentId" + ], + "additionalProperties": false + }, "Tag": { "description": "A key-value pair to associate with a resource.", "type": "object", @@ -131,7 +152,15 @@ "logs:ListLogDeliveries", "s3:PutBucketPolicy", "s3:GetBucketPolicy", - "evidently:TagResource" + "evidently:TagResource", + "evidently:ExportProjectAsConfiguration", + "appconfig:GetEnvironment", + "appconfig:CreateConfigurationProfile", + "appconfig:CreateHostedConfigurationVersion", + "appconfig:CreateExtensionAssociation", + "appconfig:TagResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole" ] }, "read": { @@ -160,7 +189,15 @@ "evidently:TagResource", "evidently:UntagResource", "evidently:ListTagsForResource", - "evidently:GetProject" + "evidently:GetProject", + "evidently:ExportProjectAsConfiguration", + "appconfig:GetEnvironment", + "appconfig:CreateConfigurationProfile", + "appconfig:CreateHostedConfigurationVersion", + "appconfig:CreateExtensionAssociation", + "appconfig:TagResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole" ] }, "delete": { @@ -174,7 +211,10 @@ "s3:GetBucketPolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups", - "evidently:UntagResource" + "evidently:UntagResource", + "appconfig:DeleteHostedConfigurationVersion", + "appconfig:DeleteExtensionAssociation", + "appconfig:DeleteConfigurationProfile" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json b/internal/service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json index 55c16fd30d..d2b40224a1 100644 --- a/internal/service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json +++ b/internal/service/cloudformation/schemas/AWS_GreengrassV2_ComponentVersion.json @@ -295,7 +295,8 @@ }, "read": { "permissions": [ - "greengrass:DescribeComponent" + "greengrass:DescribeComponent", + "greengrass:ListTagsForResource" ] }, "update": { diff --git a/internal/service/cloudformation/schemas/AWS_IAM_ServerCertificate.json b/internal/service/cloudformation/schemas/AWS_IAM_ServerCertificate.json index f876e21f6d..b24593b1d3 100644 --- a/internal/service/cloudformation/schemas/AWS_IAM_ServerCertificate.json +++ b/internal/service/cloudformation/schemas/AWS_IAM_ServerCertificate.json @@ -119,5 +119,11 @@ "iam:GetServerCertificate" ] } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false } } diff --git a/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json b/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json new file mode 100644 index 0000000000..bd4f532e02 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json @@ -0,0 +1,81 @@ +{ + "typeName": "AWS::IdentityStore::Group", + "description": "Resource Type definition for AWS::IdentityStore::Group", + "properties": { + "Description": { + "description": "A string containing the description of the group.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r \u3000]+$" + }, + "DisplayName": { + "description": "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$" + }, + "GroupId": { + "description": "The unique identifier for a group in the identity store.", + "type": "string", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$" + }, + "IdentityStoreId": { + "description": "The globally unique identifier for the identity store.", + "type": "string", + "maxLength": 36, + "minLength": 1, + "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "readOnlyProperties": [ + "/properties/GroupId" + ], + "createOnlyProperties": [ + "/properties/IdentityStoreId" + ], + "primaryIdentifier": [ + "/properties/GroupId", + "/properties/IdentityStoreId" + ], + "handlers": { + "create": { + "permissions": [ + "identitystore:CreateGroup", + "identitystore:DescribeGroup" + ] + }, + "read": { + "permissions": [ + "identitystore:DescribeGroup" + ] + }, + "update": { + "permissions": [ + "identitystore:DescribeGroup", + "identitystore:UpdateGroup" + ] + }, + "delete": { + "permissions": [ + "identitystore:DescribeGroup", + "identitystore:DeleteGroup" + ] + }, + "list": { + "permissions": [ + "identitystore:ListGroups" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json b/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json new file mode 100644 index 0000000000..0d246b2da7 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json @@ -0,0 +1,96 @@ +{ + "typeName": "AWS::IdentityStore::GroupMembership", + "description": "Resource Type Definition for AWS:IdentityStore::GroupMembership", + "definitions": { + "MemberId": { + "oneOf": [ + { + "description": "An object containing the identifier of a group member.", + "type": "object", + "title": "UserId", + "properties": { + "UserId": { + "description": "The identifier for a user in the identity store.", + "type": "string", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$" + } + }, + "required": [ + "UserId" + ], + "additionalProperties": false + } + ] + } + }, + "properties": { + "GroupId": { + "description": "The unique identifier for a group in the identity store.", + "type": "string", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$" + }, + "IdentityStoreId": { + "description": "The globally unique identifier for the identity store.", + "type": "string", + "maxLength": 36, + "minLength": 1, + "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" + }, + "MemberId": { + "description": "An object containing the identifier of a group member.", + "$ref": "#/definitions/MemberId" + }, + "MembershipId": { + "description": "The identifier for a GroupMembership in the identity store.", + "type": "string", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "readOnlyProperties": [ + "/properties/MembershipId" + ], + "createOnlyProperties": [ + "/properties/IdentityStoreId" + ], + "primaryIdentifier": [ + "/properties/MembershipId", + "/properties/IdentityStoreId" + ], + "handlers": { + "create": { + "permissions": [ + "identitystore:CreateGroupMembership", + "identitystore:DescribeGroupMembership" + ] + }, + "read": { + "permissions": [ + "identitystore:DescribeGroupMembership" + ] + }, + "delete": { + "permissions": [ + "identitystore:DeleteGroupMembership", + "identitystore:DescribeGroupMembership" + ] + }, + "list": { + "permissions": [ + "identitystore:ListGroupMemberships" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_ImageBuilder_ContainerRecipe.json b/internal/service/cloudformation/schemas/AWS_ImageBuilder_ContainerRecipe.json index 43374e21ea..10445b276f 100644 --- a/internal/service/cloudformation/schemas/AWS_ImageBuilder_ContainerRecipe.json +++ b/internal/service/cloudformation/schemas/AWS_ImageBuilder_ContainerRecipe.json @@ -95,6 +95,14 @@ "ComponentArn": { "description": "The Amazon Resource Name (ARN) of the component.", "type": "string" + }, + "Parameters": { + "description": "A group of parameter settings that are used to configure the component for a specific recipe.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComponentParameter" + } } } }, @@ -205,6 +213,26 @@ "type": "string" } } + }, + "ComponentParameter": { + "additionalProperties": false, + "description": "Contains a key/value pair that sets the named component parameter.", + "type": "object", + "properties": { + "Name": { + "description": "The name of the component parameter to set.", + "type": "string" + }, + "Value": { + "description": "Sets the value for the named component parameter.", + "type": "array", + "insertionOrder": true, + "items": { + "type": "string" + } + } + }, + "required": ["Name", "Value"] } }, "additionalProperties": false, diff --git a/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Dataset.json b/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Dataset.json index 9deb7288bd..11208187cd 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Dataset.json +++ b/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Dataset.json @@ -74,14 +74,14 @@ "DatasetContentVersionValue": { "type": "object", "additionalProperties": false, - "properties": { - "DatasetName": { - "type": "string", - "pattern": "", - "minLength": 1, - "maxLength": 128 - } - }, + "properties": { + "DatasetName": { + "type": "string", + "pattern": "", + "minLength": 1, + "maxLength": 128 + } + }, "required": [ "DatasetName" ] @@ -220,7 +220,7 @@ "insertionOrder": false, "items": { "$ref": "#/definitions/Filter" - } + } }, "SqlQuery": { "type": "string" @@ -235,7 +235,7 @@ "additionalProperties": false, "properties": { "Unlimited": { - "type": "boolean" + "type": "boolean" }, "MaxVersions": { "type": "integer", @@ -270,8 +270,8 @@ "ComputeType": { "type": "string", "enum": [ - "ACU_1", - "ACU_2" + "ACU_1", + "ACU_2" ] } }, @@ -427,7 +427,7 @@ "properties": { "DeltaTimeSessionWindowConfiguration": { "$ref": "#/definitions/DeltaTimeSessionWindowConfiguration" - } + } } }, "Tag": { diff --git a/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Pipeline.json b/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Pipeline.json index d1c8bfca2d..186950072c 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Pipeline.json +++ b/internal/service/cloudformation/schemas/AWS_IoTAnalytics_Pipeline.json @@ -30,7 +30,7 @@ "minItems": 1, "maxItems": 25, "items" : { - "$ref" : "#/definitions/Activity" + "$ref": "#/definitions/Activity" } } }, diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json new file mode 100644 index 0000000000..c341a39b4d --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json @@ -0,0 +1,344 @@ +{ + "typeName": "AWS::IoTFleetWise::Campaign", + "description": "Definition of AWS::IoTFleetWise::Campaign Resource Type", + "definitions": { + "Compression": { + "type": "string", + "enum": [ + "OFF", + "SNAPPY" + ], + "default": "OFF" + }, + "UpdateCampaignAction": { + "type": "string", + "enum": [ + "APPROVE", + "SUSPEND", + "RESUME", + "UPDATE" + ] + }, + "CampaignStatus": { + "type": "string", + "enum": [ + "CREATING", + "WAITING_FOR_APPROVAL", + "RUNNING", + "SUSPENDED" + ] + }, + "DiagnosticsMode": { + "type": "string", + "enum": [ + "OFF", + "SEND_ACTIVE_DTCS" + ], + "default": "OFF" + }, + "SignalInformation": { + "additionalProperties": false, + "type": "object", + "properties": { + "MaxSampleCount": { + "maximum": 4294967295, + "type": "number", + "minimum": 1 + }, + "Name": { + "minLength": 1, + "pattern": "^[\\w|*|-]+(\\.[\\w|*|-]+)*$", + "type": "string", + "maxLength": 150 + }, + "MinimumSamplingIntervalMs": { + "maximum": 4294967295, + "type": "number", + "minimum": 0 + } + }, + "required": [ + "Name" + ] + }, + "TimeBasedCollectionScheme": { + "additionalProperties": false, + "type": "object", + "properties": { + "PeriodMs": { + "maximum": 60000, + "type": "number", + "minimum": 10000 + } + }, + "required": [ + "PeriodMs" + ] + }, + "SpoolingMode": { + "type": "string", + "enum": [ + "OFF", + "TO_DISK" + ], + "default": "OFF" + }, + "TriggerMode": { + "type": "string", + "enum": [ + "ALWAYS", + "RISING_EDGE" + ] + }, + "CollectionScheme": { + "oneOf": [ + { + "additionalProperties": false, + "type": "object", + "title": "TimeBasedCollectionScheme", + "properties": { + "TimeBasedCollectionScheme": { + "$ref": "#/definitions/TimeBasedCollectionScheme" + } + }, + "required": [ + "TimeBasedCollectionScheme" + ] + }, + { + "additionalProperties": false, + "type": "object", + "title": "ConditionBasedCollectionScheme", + "properties": { + "ConditionBasedCollectionScheme": { + "$ref": "#/definitions/ConditionBasedCollectionScheme" + } + }, + "required": [ + "ConditionBasedCollectionScheme" + ] + } + ] + }, + "ConditionBasedCollectionScheme": { + "additionalProperties": false, + "type": "object", + "properties": { + "MinimumTriggerIntervalMs": { + "maximum": 4294967295, + "type": "number", + "minimum": 0 + }, + "Expression": { + "minLength": 1, + "type": "string", + "maxLength": 2048 + }, + "TriggerMode": { + "$ref": "#/definitions/TriggerMode" + }, + "ConditionLanguageVersion": { + "type": "integer", + "minimum": 1 + } + }, + "required": [ + "Expression" + ] + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Status": { + "$ref": "#/definitions/CampaignStatus" + }, + "Action": { + "$ref": "#/definitions/UpdateCampaignAction" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "Compression": { + "$ref": "#/definitions/Compression" + }, + "Description": { + "minLength": 1, + "pattern": "", + "type": "string", + "maxLength": 2048 + }, + "Priority": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "SignalsToCollect": { + "minItems": 0, + "maxItems": 1000, + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/SignalInformation" + } + }, + "StartTime": { + "format": "date-time", + "type": "string", + "default": "0" + }, + "Name": { + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string", + "maxLength": 100 + }, + "ExpiryTime": { + "format": "date-time", + "type": "string", + "default": "253402243200" + }, + "LastModificationTime": { + "type": "string", + "format": "date-time" + }, + "SpoolingMode": { + "$ref": "#/definitions/SpoolingMode" + }, + "SignalCatalogArn": { + "type": "string" + }, + "PostTriggerCollectionDuration": { + "maximum": 4294967295, + "type": "number", + "minimum": 0, + "default": 0 + }, + "DataExtraDimensions": { + "minItems": 0, + "maxItems": 5, + "insertionOrder": false, + "type": "array", + "items": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string", + "maxLength": 150 + } + }, + "DiagnosticsMode": { + "$ref": "#/definitions/DiagnosticsMode" + }, + "TargetArn": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CollectionScheme": { + "$ref": "#/definitions/CollectionScheme" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "insertionOrder": false, + "uniqueItems": true, + "maxItems": 50, + "minItems": 0 + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Status", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "writeOnlyProperties": [ + "/properties/Action" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/TargetArn", + "/properties/SignalCatalogArn", + "/properties/PostTriggerCollectionDuration", + "/properties/DiagnosticsMode", + "/properties/SpoolingMode", + "/properties/CollectionScheme", + "/properties/Priority", + "/properties/Compression", + "/properties/StartTime", + "/properties/ExpiryTime" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Name" + ], + "required": [ + "Name", + "Action", + "CollectionScheme", + "SignalCatalogArn", + "TargetArn" + ], + "handlers": { + "read": { + "permissions": [ + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource" + ] + }, + "create": { + "permissions": [ + "iotfleetwise:CreateCampaign", + "iotfleetwise:GetCampaign" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateCampaign", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListCampaigns", + "iotfleetwise:GetCampaign" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteCampaign", + "iotfleetwise:GetCampaign" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json new file mode 100644 index 0000000000..95c73fb761 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json @@ -0,0 +1,423 @@ +{ + "typeName": "AWS::IoTFleetWise::DecoderManifest", + "description": "Definition of AWS::IoTFleetWise::DecoderManifest Resource Type", + "definitions": { + "CanInterface": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1 + }, + "ProtocolName": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "ProtocolVersion": { + "type": "string", + "maxLength": 50, + "minLength": 1 + } + }, + "required": [ + "Name" + ], + "additionalProperties": false + }, + "CanSignal": { + "type": "object", + "properties": { + "MessageId": { + "type": ["integer", "string"] + }, + "IsBigEndian": { + "type": ["boolean", "string"] + }, + "IsSigned": { + "type": ["boolean", "string"] + }, + "StartBit": { + "type": ["integer", "string"] + }, + "Offset": { + "type": ["number", "string"] + }, + "Factor": { + "type": ["number", "string"] + }, + "Length": { + "type": ["integer", "string"] + }, + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1 + } + }, + "required": [ + "Factor", + "IsBigEndian", + "IsSigned", + "Length", + "MessageId", + "Offset", + "StartBit" + ], + "additionalProperties": false + }, + "ManifestStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "DRAFT" + ], + "default": "DRAFT" + }, + "CanNetworkInterface": { + "type": "object", + "properties": { + "InterfaceId": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "Type": { + "type": "string", + "enum": [ + "CAN_INTERFACE" + ] + }, + "CanInterface": { + "$ref": "#/definitions/CanInterface" + } + }, + "required": [ + "InterfaceId", + "Type", + "CanInterface" + ], + "additionalProperties": false + }, + "ObdNetworkInterface": { + "type": "object", + "properties": { + "InterfaceId": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "Type": { + "type": "string", + "enum": [ + "OBD_INTERFACE" + ] + }, + "ObdInterface": { + "$ref": "#/definitions/ObdInterface" + } + }, + "required": [ + "InterfaceId", + "Type", + "ObdInterface" + ], + "additionalProperties": false + }, + "ObdInterface": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1 + }, + "RequestMessageId": { + "type": ["integer", "string"] + }, + "ObdStandard": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "PidRequestIntervalSeconds": { + "type": ["integer", "string"] + }, + "DtcRequestIntervalSeconds": { + "type": ["integer", "string"] + }, + "UseExtendedIds": { + "type": ["boolean", "string"] + }, + "HasTransmissionEcu": { + "type": ["boolean", "string"] + } + }, + "required": [ + "Name", + "RequestMessageId" + ], + "additionalProperties": false + }, + "ObdSignal": { + "type": "object", + "properties": { + "PidResponseLength": { + "type": ["integer", "string"] + }, + "ServiceMode": { + "type": ["integer", "string"] + }, + "Pid": { + "type": ["integer", "string"] + }, + "Scaling": { + "type": ["number", "string"] + }, + "Offset": { + "type": ["number", "string"] + }, + "StartByte": { + "type": ["integer", "string"] + }, + "ByteLength": { + "type": ["integer", "string"] + }, + "BitRightShift": { + "type": ["integer", "string"] + }, + "BitMaskLength": { + "type": ["integer", "string"] + } + }, + "required": [ + "ByteLength", + "Offset", + "Pid", + "PidResponseLength", + "Scaling", + "ServiceMode", + "StartByte" + ], + "additionalProperties": false + }, + "CanSignalDecoder": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string", + "maxLength": 150, + "minLength": 1 + }, + "Type": { + "type": "string", + "enum": [ + "CAN_SIGNAL" + ] + }, + "InterfaceId": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "CanSignal": { + "$ref": "#/definitions/CanSignal" + } + }, + "required": [ + "FullyQualifiedName", + "InterfaceId", + "Type", + "CanSignal" + ], + "additionalProperties": false + }, + "ObdSignalDecoder": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string", + "maxLength": 150, + "minLength": 1 + }, + "Type": { + "type": "string", + "enum": [ + "OBD_SIGNAL" + ] + }, + "InterfaceId": { + "type": "string", + "maxLength": 50, + "minLength": 1 + }, + "ObdSignal": { + "$ref": "#/definitions/ObdSignal" + } + }, + "required": [ + "FullyQualifiedName", + "InterfaceId", + "Type", + "ObdSignal" + ], + "additionalProperties": false + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "LastModificationTime": { + "type": "string", + "format": "date-time" + }, + "ModelManifestArn": { + "type": "string" + }, + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$" + }, + "NetworkInterfaces": { + "insertionOrder": false, + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/CanNetworkInterface" + }, + { + "$ref": "#/definitions/ObdNetworkInterface" + } + ] + }, + "maxItems": 500, + "minItems": 1 + }, + "SignalDecoders": { + "insertionOrder": false, + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/CanSignalDecoder" + }, + { + "$ref": "#/definitions/ObdSignalDecoder" + } + ] + }, + "maxItems": 500, + "minItems": 1 + }, + "Status": { + "$ref": "#/definitions/ManifestStatus" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "insertionOrder": false, + "uniqueItems": true + } + }, + "required": [ + "Name", + "ModelManifestArn" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/ModelManifestArn" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:CreateDecoderManifest", + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:UpdateDecoderManifest" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateDecoderManifest", + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteDecoderManifest", + "iotfleetwise:GetDecoderManifest" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListDecoderManifests" + ] + } + }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + } +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json new file mode 100644 index 0000000000..411b4a1c4b --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json @@ -0,0 +1,121 @@ +{ + "typeName": "AWS::IoTFleetWise::Fleet", + "description": "Definition of AWS::IoTFleetWise::Fleet Resource Type", + "definitions": { + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "Id": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9:_-]+$" + }, + "LastModificationTime": { + "type": "string", + "format": "date-time" + }, + "SignalCatalogArn": { + "type": "string" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "insertionOrder": false, + "uniqueItems": true, + "maxItems": 50, + "minItems": 0 + } + }, + "required": [ + "Id", + "SignalCatalogArn" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "createOnlyProperties": [ + "/properties/Id", + "/properties/SignalCatalogArn" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:CreateFleet" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:UpdateFleet", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:DeleteFleet" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListFleets" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json new file mode 100644 index 0000000000..d729af75fa --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json @@ -0,0 +1,143 @@ +{ + "typeName": "AWS::IoTFleetWise::ModelManifest", + "description": "Definition of AWS::IoTFleetWise::ModelManifest Resource Type", + "definitions": { + "ManifestStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "DRAFT" + ], + "default": "DRAFT" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "LastModificationTime": { + "type": "string", + "format": "date-time" + }, + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$" + }, + "Nodes": { + "insertionOrder": false, + "uniqueItems": true, + "minItems": 1, + "type": "array", + "items": { + "type": "string" + } + }, + "SignalCatalogArn": { + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ManifestStatus" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "insertionOrder": false, + "uniqueItems": true, + "maxItems": 50, + "minItems": 0 + } + }, + "required": [ + "SignalCatalogArn", + "Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:CreateModelManifest", + "iotfleetwise:GetModelManifest", + "iotfleetwise:UpdateModelManifest" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateModelManifest", + "iotfleetwise:GetModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteModelManifest", + "iotfleetwise:GetModelManifest" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListModelManifests" + ] + } + }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + } +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json new file mode 100644 index 0000000000..b714b849ec --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json @@ -0,0 +1,367 @@ +{ + "typeName": "AWS::IoTFleetWise::SignalCatalog", + "description": "Definition of AWS::IoTFleetWise::SignalCatalog Resource Type", + "definitions": { + "Actuator": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "Unit": { + "type": "string" + }, + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "Min": { + "type": "number" + }, + "Max": { + "type": "number" + }, + "AssignedValue": { + "type": "string" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "additionalProperties": false + }, + "AllowedValues": { + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1 + }, + "Attribute": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "Unit": { + "type": "string" + }, + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "Min": { + "type": "number" + }, + "Max": { + "type": "number" + }, + "AssignedValue": { + "type": "string" + }, + "DefaultValue": { + "type": "string" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "additionalProperties": false + }, + "Branch": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + } + }, + "required": [ + "FullyQualifiedName" + ], + "additionalProperties": false + }, + "Node": { + "oneOf": [ + { + "type": "object", + "title": "Branch", + "properties": { + "Branch": { + "$ref": "#/definitions/Branch" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "title": "Sensor", + "properties": { + "Sensor": { + "$ref": "#/definitions/Sensor" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "title": "Actuator", + "properties": { + "Actuator": { + "$ref": "#/definitions/Actuator" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "title": "Attribute", + "properties": { + "Attribute": { + "$ref": "#/definitions/Attribute" + } + }, + "additionalProperties": false + } + ] + }, + "NodeCounts": { + "type": "object", + "properties": { + "TotalNodes": { + "type": "number" + }, + "TotalBranches": { + "type": "number" + }, + "TotalSensors": { + "type": "number" + }, + "TotalAttributes": { + "type": "number" + }, + "TotalActuators": { + "type": "number" + } + }, + "additionalProperties": false + }, + "NodeDataType": { + "type": "string", + "enum": [ + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "BOOLEAN", + "FLOAT", + "DOUBLE", + "STRING", + "UNIX_TIMESTAMP", + "INT8_ARRAY", + "UINT8_ARRAY", + "INT16_ARRAY", + "UINT16_ARRAY", + "INT32_ARRAY", + "UINT32_ARRAY", + "INT64_ARRAY", + "UINT64_ARRAY", + "BOOLEAN_ARRAY", + "FLOAT_ARRAY", + "DOUBLE_ARRAY", + "STRING_ARRAY", + "UNIX_TIMESTAMP_ARRAY", + "UNKNOWN" + ] + }, + "Sensor": { + "type": "object", + "properties": { + "FullyQualifiedName": { + "type": "string" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "Unit": { + "type": "string" + }, + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "Min": { + "type": "number" + }, + "Max": { + "type": "number" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "additionalProperties": false + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$" + }, + "NodeCounts": { + "$ref": "#/definitions/NodeCounts" + }, + "Nodes": { + "type": "array", + "insertionOrder": false, + "uniqueItems": true, + "items": { + "$ref": "#/definitions/Node" + }, + "maxItems": 500, + "minItems": 1 + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "insertionOrder": false, + "uniqueItems": true, + "maxItems": 50, + "minItems": 0 + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime", + "/properties/NodeCounts/TotalNodes", + "/properties/NodeCounts/TotalBranches", + "/properties/NodeCounts/TotalSensors", + "/properties/NodeCounts/TotalAttributes", + "/properties/NodeCounts/TotalActuators" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:CreateSignalCatalog" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:UpdateSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:DeleteSignalCatalog" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListSignalCatalogs" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json new file mode 100644 index 0000000000..0afa1e291f --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json @@ -0,0 +1,146 @@ +{ + "typeName": "AWS::IoTFleetWise::Vehicle", + "description": "Definition of AWS::IoTFleetWise::Vehicle Resource Type", + "definitions": { + "VehicleAssociationBehavior": { + "type": "string", + "enum": [ + "CreateIotThing", + "ValidateIotThingExists" + ] + }, + "attributesMap": { + "type": "object", + "patternProperties": { + "": { + "type": "string" + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1 + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string" + }, + "AssociationBehavior": { + "$ref": "#/definitions/VehicleAssociationBehavior" + }, + "Attributes": { + "$ref": "#/definitions/attributesMap" + }, + "CreationTime": { + "type": "string", + "format": "date-time" + }, + "DecoderManifestArn": { + "type": "string" + }, + "Name": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$" + }, + "LastModificationTime": { + "type": "string", + "format": "date-time" + }, + "ModelManifestArn": { + "type": "string" + }, + "Tags": { + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "insertionOrder": false, + "uniqueItems": true, + "maxItems": 50, + "minItems": 0 + } + }, + "required": [ + "Name", + "DecoderManifestArn", + "ModelManifestArn" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "writeOnlyProperties": [ + "/properties/AssociationBehavior" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:CreateVehicle", + "iot:CreateThing", + "iot:DescribeThing" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:UpdateVehicle", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:DeleteVehicle" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListVehicles" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json index 67de6da986..d0a778ebfa 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json +++ b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_Asset.json @@ -4,7 +4,7 @@ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", "definitions": { "AssetProperty": { - "description": "The asset property's definition, alias, and notification state.", + "description": "The asset property's definition, alias, unit, and notification state.", "type": "object", "additionalProperties": false, "required": [ @@ -29,6 +29,10 @@ "ENABLED", "DISABLED" ] + }, + "Unit": { + "description": "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + "type": "string" } } }, diff --git a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json index f43426475d..dfffe2123e 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json +++ b/internal/service/cloudformation/schemas/AWS_IoTSiteWise_AssetModel.json @@ -394,4 +394,4 @@ ] } } -} +} \ No newline at end of file diff --git a/internal/service/cloudformation/schemas/AWS_IoTWireless_DeviceProfile.json b/internal/service/cloudformation/schemas/AWS_IoTWireless_DeviceProfile.json index d3664ad763..136d06c9df 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTWireless_DeviceProfile.json +++ b/internal/service/cloudformation/schemas/AWS_IoTWireless_DeviceProfile.json @@ -46,6 +46,33 @@ "type": "string", "maxLength": 64 }, + "RxDelay1": { + "type": "integer", + "minimum": 0, + "maximum": 15 + }, + "RxDrOffset1": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "RxFreq2": { + "type": "integer", + "minimum": 1000000, + "maximum": 16700000 + }, + "RxDataRate2": { + "type": "integer", + "minimum": 0, + "maximum": 15 + }, + "FactoryPresetFreqsList": { + "type": "array", + "maxItems": 20, + "items": { + "$ref": "#/definitions/FactoryPresetFreq" + } + }, "MaxEirp": { "type": "integer", "minimum": 0, @@ -83,6 +110,11 @@ } }, "additionalProperties": false + }, + "FactoryPresetFreq": { + "type": "integer", + "minimum": 1000000, + "maximum": 16700000 } }, "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_IoT_CACertificate.json b/internal/service/cloudformation/schemas/AWS_IoT_CACertificate.json index 3505bdd801..b00b9a9428 100644 --- a/internal/service/cloudformation/schemas/AWS_IoT_CACertificate.json +++ b/internal/service/cloudformation/schemas/AWS_IoT_CACertificate.json @@ -88,6 +88,9 @@ "DISABLE" ] }, + "RemoveAutoRegistration": { + "type": "boolean" + }, "RegistrationConfig": { "$ref": "#/definitions/RegistrationConfig" }, diff --git a/internal/service/cloudformation/schemas/AWS_Logs_Destination.json b/internal/service/cloudformation/schemas/AWS_Logs_Destination.json new file mode 100644 index 0000000000..2f89196a86 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Logs_Destination.json @@ -0,0 +1,80 @@ +{ + "typeName": "AWS::Logs::Destination", + "description": "The AWS::Logs::Destination resource specifies a CloudWatch Logs destination. A destination encapsulates a physical resource (such as an Amazon Kinesis data stream) and enables you to subscribe that resource to a stream of log events.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging" : { + "taggable" : false + }, + "properties": { + "Arn": { + "type": "string" + }, + "DestinationName": { + "description": "The name of the destination resource", + "type": "string", + "minLength": 1, + "maxLength": 512, + "pattern": "^[^:*]{1,512}$" + }, + "DestinationPolicy": { + "description": "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.", + "type": "string", + "minLength": 1 + }, + "RoleArn": { + "description": "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource", + "type": "string", + "minLength": 1 + }, + "TargetArn": { + "description": "The ARN of the physical target where the log events are delivered (for example, a Kinesis stream)", + "type": "string", + "minLength": 1 + } + }, + "handlers": { + "create": { + "permissions": [ + "logs:PutDestination", + "logs:PutDestinationPolicy", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "logs:DescribeDestinations" + ] + }, + "update": { + "permissions": [ + "logs:PutDestination", + "logs:PutDestinationPolicy" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteDestination" + ] + }, + "list": { + "permissions": [ + "logs:DescribeDestinations" + ] + } + }, + "required": [ + "DestinationName", + "TargetArn", + "RoleArn" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/DestinationName" + ], + "primaryIdentifier": [ + "/properties/DestinationName" + ], + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_M2_Application.json b/internal/service/cloudformation/schemas/AWS_M2_Application.json new file mode 100644 index 0000000000..5845db3b53 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_M2_Application.json @@ -0,0 +1,151 @@ +{ + "typeName": "AWS::M2::Application", + "description": "Represents an application that runs on an AWS Mainframe Modernization Environment", + "definitions": { + "Definition": { + "oneOf": [ + { + "type": "object", + "title": "S3Location", + "properties": { + "S3Location": { + "type": "string", + "pattern": "" + } + }, + "required": [ + "S3Location" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Content", + "properties": { + "Content": { + "type": "string", + "maxLength": 65000, + "minLength": 1 + } + }, + "required": [ + "Content" + ], + "additionalProperties": false + } + ] + }, + "EngineType": { + "type": "string", + "enum": [ + "microfocus", + "bluage" + ] + }, + "TagMap": { + "type": "object", + "maxProperties": 200, + "minProperties": 0, + "patternProperties": { + "": { + "type": "string", + "maxLength": 256, + "minLength": 0 + } + }, + "additionalProperties": false + } + }, + "properties": { + "ApplicationArn": { + "type": "string", + "pattern": "" + }, + "ApplicationId": { + "type": "string", + "pattern": "^\\S{1,80}$" + }, + "Definition": { + "$ref": "#/definitions/Definition" + }, + "Description": { + "type": "string", + "maxLength": 500, + "minLength": 0 + }, + "EngineType": { + "$ref": "#/definitions/EngineType" + }, + "Name": { + "type": "string", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false + }, + "required": [ + "Definition", + "EngineType", + "Name" + ], + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId" + ], + "writeOnlyProperties": [ + "/properties/Definition" + ], + "createOnlyProperties": [ + "/properties/EngineType", + "/properties/Name" + ], + "primaryIdentifier": [ + "/properties/ApplicationArn" + ], + "handlers": { + "create": { + "permissions": [ + "m2:CreateApplication", + "m2:ListTagsForResource", + "s3:GetObject", + "s3:ListBucket" + ] + }, + "read": { + "permissions": [ + "m2:GetApplication", + "m2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "m2:UpdateApplication", + "m2:ListTagsForResource", + "m2:TagResource", + "m2:UntagResource", + "s3:GetObject", + "s3:ListBucket" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "m2:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "m2:ListApplications" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json b/internal/service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json index 8f08c5f212..5265676b3c 100644 --- a/internal/service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json +++ b/internal/service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json @@ -410,6 +410,14 @@ "pattern": "", "minLength": 32, "maxLength": 32 + }, + "EncryptionMethod": { + "description": "The encryption method used", + "type": "string", + "enum": [ + "SAMPLE_AES", + "AES_CTR" + ] } } }, diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json b/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json index 36c7794b88..5a31f58150 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json @@ -57,6 +57,14 @@ "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example db.m6g.xlarge.", "type": "string" }, + "DBClusterResourceId": { + "description": "The AWS Region-unique, immutable identifier for the DB cluster.", + "type": "string" + }, + "DBInstanceParameterGroupName": { + "description": "The name of the DB parameter group to apply to all instances of the DB cluster.", + "type": "string" + }, "GlobalClusterIdentifier": { "description": "If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster. To define the primary database cluster of the global cluster, use the AWS::RDS::GlobalCluster resource.\n\nIf you aren't configuring a global database cluster, don't specify this property.", "type": "string", @@ -176,6 +184,10 @@ "type": "string", "default": "full-copy" }, + "ServerlessV2ScalingConfiguration": { + "description": "Contains the scaling configuration of an Aurora Serverless v2 DB cluster.", + "$ref": "#/definitions/ServerlessV2ScalingConfiguration" + }, "ScalingConfiguration": { "description": "The ScalingConfiguration property type specifies the scaling configuration of an Aurora Serverless DB cluster.", "$ref": "#/definitions/ScalingConfiguration" @@ -266,6 +278,25 @@ "RoleArn" ] }, + "ServerlessV2ScalingConfiguration": { + "description": "Contains the scaling configuration of an Aurora Serverless v2 DB cluster.", + "type": "object", + "additionalProperties": false, + "properties": { + "MinCapacity": { + "description": "The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value that you can use is 0.5.", + "type": "number", + "minimum": 0.5, + "maximum": 128 + }, + "MaxCapacity": { + "description": "The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on. The largest value that you can use is 128.", + "type": "number", + "minimum": 0.5, + "maximum": 128 + } + } + }, "ScalingConfiguration": { "description": "The ScalingConfiguration property type specifies the scaling configuration of an Aurora Serverless DB cluster.", "type": "object", @@ -321,6 +352,7 @@ "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)" }, "readOnlyProperties": [ + "/properties/DBClusterResourceId", "/properties/Endpoint", "/properties/Endpoint/Address", "/properties/Endpoint/Port", @@ -351,6 +383,7 @@ "/properties/DBClusterIdentifier" ], "writeOnlyProperties": [ + "/properties/DBInstanceParameterGroupName", "/properties/MasterUserPassword", "/properties/RestoreType", "/properties/SnapshotIdentifier", @@ -386,6 +419,7 @@ "rds:AddTagsToResource", "rds:DescribeDBClusters", "rds:DescribeDBSubnetGroups", + "rds:DescribeGlobalClusters", "rds:ModifyDBCluster", "rds:ModifyDBInstance", "rds:RemoveFromGlobalCluster", @@ -399,6 +433,7 @@ "rds:DeleteDBCluster", "rds:DeleteDBInstance", "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters", "rds:RemoveFromGlobalCluster" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBClusterParameterGroup.json b/internal/service/cloudformation/schemas/AWS_RDS_DBClusterParameterGroup.json index 7632044a23..4a31fe220e 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBClusterParameterGroup.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBClusterParameterGroup.json @@ -78,11 +78,15 @@ "handlers": { "create": { "permissions": [ + "rds:AddTagsToResource", "rds:CreateDBClusterParameterGroup", + "rds:DescribeDBClusterParameterGroups", "rds:DescribeDBClusterParameters", "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", "rds:ModifyDBClusterParameterGroup" - ] + ], + "timeoutInMinutes": 180 }, "read": { "permissions": [ @@ -92,15 +96,17 @@ }, "update": { "permissions": [ - "rds:DescribeDBClusters", + "rds:AddTagsToResource", + "rds:DescribeDBClusterParameterGroups", "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", "rds:DescribeEngineDefaultClusterParameters", "rds:ListTagsForResource", - "rds:AddTagsToResource", + "rds:ModifyDBClusterParameterGroup", "rds:RemoveTagsFromResource", - "rds:ResetDBClusterParameterGroup", - "rds:ModifyDBClusterParameterGroup" - ] + "rds:ResetDBClusterParameterGroup" + ], + "timeoutInMinutes": 180 }, "delete": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json index 6a4b5f850a..85e57ca1b8 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json @@ -123,6 +123,10 @@ "type": "boolean", "description": "A value that indicates whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied." }, + "CustomIAMInstanceProfile" : { + "type": "string", + "description": "The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB instance. The instance profile must meet the following requirements:\n * The profile must exist in your account.\n * The profile must have an IAM role that Amazon EC2 has permissions to assume.\n * The instance profile name and the associated IAM role name must start with the prefix AWSRDSCustom .\nFor the list of permissions required for the IAM role, see Configure IAM and your VPC in the Amazon RDS User Guide .\n\nThis setting is required for RDS Custom." + }, "DBClusterIdentifier": { "type": "string", "description": "The identifier of the DB cluster that the instance will belong to." @@ -246,6 +250,10 @@ "type": "boolean", "description": "Specifies whether the database instance is a multiple Availability Zone deployment." }, + "NcharCharacterSetName": { + "type": "string", + "description": "The name of the NCHAR character set for the Oracle DB instance. This parameter doesn't apply to RDS Custom." + }, "OptionGroupName": { "type": "string", "description": "Indicates that the DB instance should be associated with the specified option group." @@ -350,6 +358,7 @@ }, "createOnlyProperties": [ "/properties/CharacterSetName", + "/properties/CustomIAMInstanceProfile", "/properties/DBClusterIdentifier", "/properties/DBInstanceIdentifier", "/properties/DBName", @@ -357,6 +366,7 @@ "/properties/DBSubnetGroupName", "/properties/KmsKeyId", "/properties/MasterUsername", + "/properties/NcharCharacterSetName", "/properties/Port", "/properties/PubliclyAccessible", "/properties/SourceDBInstanceIdentifier", @@ -458,6 +468,7 @@ "rds:DescribeDBInstances", "rds:DescribeDBParameterGroups", "rds:ModifyDBInstance", + "rds:RebootDBInstance", "rds:RemoveRoleFromDBInstance", "rds:RemoveTagsFromResource" ], diff --git a/internal/service/cloudformation/schemas/AWS_RDS_OptionGroup.json b/internal/service/cloudformation/schemas/AWS_RDS_OptionGroup.json index ae04017924..ec036d85d1 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_OptionGroup.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_OptionGroup.json @@ -149,7 +149,8 @@ "rds:AddTagsToResource", "rds:CreateOptionGroup", "rds:DescribeOptionGroups", - "rds:ListTagsForResource" + "rds:ListTagsForResource", + "rds:ModifyOptionGroup" ] }, "read": { diff --git a/internal/service/cloudformation/schemas/AWS_Redshift_ClusterParameterGroup.json b/internal/service/cloudformation/schemas/AWS_Redshift_ClusterParameterGroup.json index 0fb1028c3b..0b6da349fa 100644 --- a/internal/service/cloudformation/schemas/AWS_Redshift_ClusterParameterGroup.json +++ b/internal/service/cloudformation/schemas/AWS_Redshift_ClusterParameterGroup.json @@ -2,45 +2,18 @@ "typeName": "AWS::Redshift::ClusterParameterGroup", "description": "Resource Type definition for AWS::Redshift::ClusterParameterGroup", "additionalProperties": false, - "properties": { - "ParameterGroupName": { - "description": "Cloudformation will generate a unique group name.", - "type": "string", - "maxLength": 255 - }, - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "type": "array", - "uniqueItems": false, - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - } - }, - "Tags": { - "type": "array", - "uniqueItems": false, - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - } - } - }, "definitions": { "Parameter": { "type": "object", "additionalProperties": false, "properties": { "ParameterName": { - "type": "string" + "type": "string", + "description": "The name of the parameter." }, "ParameterValue": { - "type": "string" + "type": "string", + "description": "The value of the parameter. If `ParameterName` is `wlm_json_configuration`, then the maximum size of `ParameterValue` is 8000 characters." } }, "required": [ @@ -49,20 +22,58 @@ ] }, "Tag": { + "description": "A key-value pair to associate with a resource.", "type": "object", - "additionalProperties": false, "properties": { "Key": { - "type": "string" + "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" + "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": [ - "Value", - "Key" - ] + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "ParameterGroupName": { + "type": "string", + "description": "The name of the cluster parameter group.", + "maxLength": 255 + }, + "Description": { + "type": "string", + "description": "A description of the parameter group." + }, + "ParameterGroupFamily": { + "type": "string", + "description": "The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters." + }, + "Parameters": { + "type": "array", + "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Parameter" + } + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } } }, "tagging": { @@ -76,11 +87,6 @@ "/properties/ParameterGroupFamily", "/properties/Description" ], - "writeOnlyProperties": [ - "/properties/Parameters", - "/properties/Parameters/*/ParameterName", - "/properties/Parameters/*/ParameterValue" - ], "primaryIdentifier": [ "/properties/ParameterGroupName" ], diff --git a/internal/service/cloudformation/schemas/AWS_Redshift_ClusterSubnetGroup.json b/internal/service/cloudformation/schemas/AWS_Redshift_ClusterSubnetGroup.json new file mode 100644 index 0000000000..dbf836b621 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Redshift_ClusterSubnetGroup.json @@ -0,0 +1,154 @@ +{ + "typeName": "AWS::Redshift::ClusterSubnetGroup", + "description": "Specifies an Amazon Redshift subnet group.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "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": 127 + }, + "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": 1, + "maxLength": 255 + } + }, + "required": [ + "Value", + "Key" + ] + } + }, + "properties": { + "Description": { + "description": "The description of the parameter group.", + "type": "string" + }, + "SubnetIds": { + "description": "The list of VPC subnet IDs", + "type": "array", + "insertionOrder": false, + "maxItems": 20, + "items": { + "type": "string" + } + }, + "Tags": { + "description": "The list of tags for the cluster parameter group.", + "type": "array", + "insertionOrder": false, + "maxItems": 50, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "ClusterSubnetGroupName": { + "description": "This name must be unique for all subnet groups that are created by your AWS account. If costumer do not provide it, cloudformation will generate it. Must not be \"Default\". ", + "type": "string", + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "Description", + "SubnetIds" + ], + "primaryIdentifier": [ + "/properties/ClusterSubnetGroupName" + ], + "readOnlyProperties": [ + "/properties/ClusterSubnetGroupName" + ], + "tagging": { + "taggable": true + }, + "handlers": { + "create": { + "permissions": [ + "redshift:CreateClusterSubnetGroup", + "redshift:CreateTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeClusterSubnetGroups", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "update": { + "permissions": [ + "redshift:ModifyClusterSubnetGroup", + "redshift:DescribeTags", + "redshift:CreateTags", + "redshift:DeleteTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "redshift:DeleteClusterSubnetGroup", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeClusterSubnetGroups", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_SES_EmailIdentity.json b/internal/service/cloudformation/schemas/AWS_SES_EmailIdentity.json index b4e2b1df5a..846db7d9f0 100644 --- a/internal/service/cloudformation/schemas/AWS_SES_EmailIdentity.json +++ b/internal/service/cloudformation/schemas/AWS_SES_EmailIdentity.json @@ -131,7 +131,8 @@ "/properties/EmailIdentity" ], "writeOnlyProperties": [ - "/properties/DkimSigningAttributes" + "/properties/DkimSigningAttributes/DomainSigningSelector", + "/properties/DkimSigningAttributes/DomainSigningPrivateKey" ], "handlers": { "create": {