diff --git a/CHANGELOG.md b/CHANGELOG.md index 928c583134..79c0a9f26f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,23 @@ ## 1.19.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_appconfig_deployment_strategies` +* **New Data Source:** `awscc_appconfig_deployment_strategy` +* **New Data Source:** `awscc_appsync_api` +* **New Data Source:** `awscc_appsync_apis` +* **New Data Source:** `awscc_dms_data_migration` +* **New Data Source:** `awscc_dms_data_migrations` +* **New Data Source:** `awscc_opensearchservice_application` +* **New Data Source:** `awscc_opensearchservice_applications` +* **New Data Source:** `awscc_secretsmanager_rotation_schedule` +* **New Data Source:** `awscc_secretsmanager_rotation_schedules` +* **New Resource:** `awscc_appconfig_deployment_strategy` +* **New Resource:** `awscc_appsync_api` +* **New Resource:** `awscc_dms_data_migration` +* **New Resource:** `awscc_opensearchservice_application` +* **New Resource:** `awscc_secretsmanager_rotation_schedule` + ## 1.18.0 (October 25, 2024) FEATURES: diff --git a/docs/data-sources/appconfig_deployment_strategies.md b/docs/data-sources/appconfig_deployment_strategies.md new file mode 100644 index 0000000000..3224e1145d --- /dev/null +++ b/docs/data-sources/appconfig_deployment_strategies.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appconfig_deployment_strategies Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::AppConfig::DeploymentStrategy +--- + +# awscc_appconfig_deployment_strategies (Data Source) + +Plural Data Source schema for AWS::AppConfig::DeploymentStrategy + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/appconfig_deployment_strategy.md b/docs/data-sources/appconfig_deployment_strategy.md new file mode 100644 index 0000000000..516ff7d3c1 --- /dev/null +++ b/docs/data-sources/appconfig_deployment_strategy.md @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appconfig_deployment_strategy Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::AppConfig::DeploymentStrategy +--- + +# awscc_appconfig_deployment_strategy (Data Source) + +Data Source schema for AWS::AppConfig::DeploymentStrategy + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `deployment_duration_in_minutes` (Number) Total amount of time for a deployment to last. +- `deployment_strategy_id` (String) The deployment strategy ID. +- `description` (String) A description of the deployment strategy. +- `final_bake_time_in_minutes` (Number) Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide. +- `growth_factor` (Number) The percentage of targets to receive a deployed configuration during each interval. +- `growth_type` (String) The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types: + +Linear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration. + +Exponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows: + +2*(2^0) + +2*(2^1) + +2*(2^2) + +Expressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets. +- `name` (String) A name for the deployment strategy. +- `replicate_to` (String) Save the deployment strategy to a Systems Manager (SSM) document. +- `tags` (Attributes Set) Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. diff --git a/docs/data-sources/appsync_api.md b/docs/data-sources/appsync_api.md new file mode 100644 index 0000000000..430e273e12 --- /dev/null +++ b/docs/data-sources/appsync_api.md @@ -0,0 +1,125 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_api Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::AppSync::Api +--- + +# awscc_appsync_api (Data Source) + +Data Source schema for AWS::AppSync::Api + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `api_arn` (String) The Amazon Resource Name (ARN) of the AppSync Api +- `api_id` (String) The unique identifier for the AppSync Api generated by the service +- `dns` (Map of String) A map of DNS names for the AppSync API. +- `event_config` (Attributes) The configuration for an Event Api (see [below for nested schema](#nestedatt--event_config)) +- `name` (String) The name of the AppSync API. +- `owner_contact` (String) The owner contact information for an API resource. +- `tags` (Attributes Set) An arbitrary set of tags (key-value pairs) for this AppSync API. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `event_config` + +Read-Only: + +- `auth_providers` (Attributes List) A list of auth providers for the AppSync API. (see [below for nested schema](#nestedatt--event_config--auth_providers)) +- `connection_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--connection_auth_modes)) +- `default_publish_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--default_publish_auth_modes)) +- `default_subscribe_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--default_subscribe_auth_modes)) +- `log_config` (Attributes) The log config for the AppSync API. (see [below for nested schema](#nestedatt--event_config--log_config)) + + +### Nested Schema for `event_config.auth_providers` + +Read-Only: + +- `auth_type` (String) Security configuration for your AppSync API. +- `cognito_config` (Attributes) Optional authorization configuration for using Amazon Cognito user pools with your API endpoint. (see [below for nested schema](#nestedatt--event_config--auth_providers--cognito_config)) +- `lambda_authorizer_config` (Attributes) A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time. (see [below for nested schema](#nestedatt--event_config--auth_providers--lambda_authorizer_config)) +- `open_id_connect_config` (Attributes) The OpenID Connect configuration. (see [below for nested schema](#nestedatt--event_config--auth_providers--open_id_connect_config)) + + +### Nested Schema for `event_config.auth_providers.cognito_config` + +Read-Only: + +- `app_id_client_regex` (String) +- `aws_region` (String) +- `user_pool_id` (String) + + + +### Nested Schema for `event_config.auth_providers.lambda_authorizer_config` + +Read-Only: + +- `authorizer_result_ttl_in_seconds` (Number) +- `authorizer_uri` (String) +- `identity_validation_expression` (String) + + + +### Nested Schema for `event_config.auth_providers.open_id_connect_config` + +Read-Only: + +- `auth_ttl` (Number) +- `client_id` (String) +- `iat_ttl` (Number) +- `issuer` (String) + + + + +### Nested Schema for `event_config.connection_auth_modes` + +Read-Only: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.default_publish_auth_modes` + +Read-Only: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.default_subscribe_auth_modes` + +Read-Only: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.log_config` + +Read-Only: + +- `cloudwatch_logs_role_arn` (String) +- `log_level` (String) Logging level for the AppSync API. + + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. +- `value` (String) A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value. diff --git a/docs/data-sources/appsync_apis.md b/docs/data-sources/appsync_apis.md new file mode 100644 index 0000000000..d88e9bcf6d --- /dev/null +++ b/docs/data-sources/appsync_apis.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_apis Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::AppSync::Api +--- + +# awscc_appsync_apis (Data Source) + +Plural Data Source schema for AWS::AppSync::Api + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/bedrock_flow_version.md b/docs/data-sources/bedrock_flow_version.md index 291771081b..8d07e74707 100644 --- a/docs/data-sources/bedrock_flow_version.md +++ b/docs/data-sources/bedrock_flow_version.md @@ -137,8 +137,18 @@ Read-Only: Read-Only: +- `guardrail_configuration` (Attributes) Configuration for a guardrail (see [below for nested schema](#nestedatt--definition--nodes--configuration--knowledge_base--guardrail_configuration)) - `knowledge_base_id` (String) Identifier of the KnowledgeBase -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. + + +### Nested Schema for `definition.nodes.configuration.knowledge_base.guardrail_configuration` + +Read-Only: + +- `guardrail_identifier` (String) Identifier for the guardrail, could be the id or the arn +- `guardrail_version` (String) Version of the guardrail + @@ -163,8 +173,18 @@ Read-Only: Read-Only: +- `guardrail_configuration` (Attributes) Configuration for a guardrail (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--guardrail_configuration)) - `source_configuration` (Attributes) Prompt source configuration for prompt node (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration)) + +### Nested Schema for `definition.nodes.configuration.prompt.guardrail_configuration` + +Read-Only: + +- `guardrail_identifier` (String) Identifier for the guardrail, could be the id or the arn +- `guardrail_version` (String) Version of the guardrail + + ### Nested Schema for `definition.nodes.configuration.prompt.source_configuration` @@ -179,7 +199,7 @@ Read-Only: Read-Only: - `inference_configuration` (Attributes) Model inference configuration (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration--inline--inference_configuration)) -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. - `template_configuration` (Attributes) Prompt template configuration (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration--inline--template_configuration)) - `template_type` (String) Prompt template type @@ -198,7 +218,6 @@ Read-Only: - `max_tokens` (Number) Maximum length of output - `stop_sequences` (List of String) List of stop sequences - `temperature` (Number) Controls randomness, higher values increase diversity -- `top_k` (Number) Sample from the k most likely next tokens - `top_p` (Number) Cumulative probability cutoff for token selection diff --git a/docs/data-sources/bedrock_prompt.md b/docs/data-sources/bedrock_prompt.md index 3de85f0ecf..ece76a5c4d 100644 --- a/docs/data-sources/bedrock_prompt.md +++ b/docs/data-sources/bedrock_prompt.md @@ -39,7 +39,7 @@ Data Source schema for AWS::Bedrock::Prompt Read-Only: - `inference_configuration` (Attributes) Model inference configuration (see [below for nested schema](#nestedatt--variants--inference_configuration)) -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. - `name` (String) Name for a variant. - `template_configuration` (Attributes) Prompt template configuration (see [below for nested schema](#nestedatt--variants--template_configuration)) - `template_type` (String) Prompt template type @@ -59,7 +59,6 @@ Read-Only: - `max_tokens` (Number) Maximum length of output - `stop_sequences` (List of String) List of stop sequences - `temperature` (Number) Controls randomness, higher values increase diversity -- `top_k` (Number) Sample from the k most likely next tokens - `top_p` (Number) Cumulative probability cutoff for token selection diff --git a/docs/data-sources/codepipeline_pipeline.md b/docs/data-sources/codepipeline_pipeline.md index 32a29eedca..29caedfffa 100644 --- a/docs/data-sources/codepipeline_pipeline.md +++ b/docs/data-sources/codepipeline_pipeline.md @@ -215,6 +215,7 @@ Read-Only: - `conditions` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_failure--conditions)) - `result` (String) The specified result for when the failure conditions are met, such as rolling back the stage +- `retry_configuration` (Attributes) The configuration that specifies the retry configuration for a stage (see [below for nested schema](#nestedatt--stages--on_failure--retry_configuration)) ### Nested Schema for `stages.on_failure.conditions` @@ -257,6 +258,14 @@ Read-Only: + +### Nested Schema for `stages.on_failure.retry_configuration` + +Read-Only: + +- `retry_mode` (String) The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful + + ### Nested Schema for `stages.on_success` diff --git a/docs/data-sources/dms_data_migration.md b/docs/data-sources/dms_data_migration.md new file mode 100644 index 0000000000..7b54838624 --- /dev/null +++ b/docs/data-sources/dms_data_migration.md @@ -0,0 +1,62 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_data_migration Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::DMS::DataMigration +--- + +# awscc_dms_data_migration (Data Source) + +Data Source schema for AWS::DMS::DataMigration + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `data_migration_arn` (String) The property describes an ARN of the data migration. +- `data_migration_create_time` (String) The property describes the create time of the data migration. +- `data_migration_identifier` (String) The property describes an ARN of the data migration. +- `data_migration_name` (String) The property describes a name to identify the data migration. +- `data_migration_settings` (Attributes) The property describes the settings for the data migration. (see [below for nested schema](#nestedatt--data_migration_settings)) +- `data_migration_type` (String) The property describes the type of migration. +- `migration_project_identifier` (String) The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn +- `service_access_role_arn` (String) The property describes Amazon Resource Name (ARN) of the service access role. +- `source_data_settings` (Attributes Set) The property describes the settings for the data migration. (see [below for nested schema](#nestedatt--source_data_settings)) +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `data_migration_settings` + +Read-Only: + +- `cloudwatch_logs_enabled` (Boolean) The property specifies whether to enable the Cloudwatch log. +- `number_of_jobs` (Number) The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target. +- `selection_rules` (String) The property specifies the rules of selecting objects for data migration. + + + +### Nested Schema for `source_data_settings` + +Read-Only: + +- `cdc_start_position` (String) The property is a point in the database engine's log that defines a time where you can begin CDC. +- `cdc_start_time` (String) The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format. +- `cdc_stop_time` (String) The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format. +- `slot_name` (String) The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance. + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. diff --git a/docs/data-sources/dms_data_migrations.md b/docs/data-sources/dms_data_migrations.md new file mode 100644 index 0000000000..e129b74312 --- /dev/null +++ b/docs/data-sources/dms_data_migrations.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_data_migrations Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::DMS::DataMigration +--- + +# awscc_dms_data_migrations (Data Source) + +Plural Data Source schema for AWS::DMS::DataMigration + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ec2_eip.md b/docs/data-sources/ec2_eip.md index a40d00e09e..956676b587 100644 --- a/docs/data-sources/ec2_eip.md +++ b/docs/data-sources/ec2_eip.md @@ -21,11 +21,13 @@ Data Source schema for AWS::EC2::EIP ### Read-Only +- `address` (String) - `allocation_id` (String) - `domain` (String) The network (``vpc``). If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource. - `instance_id` (String) The ID of the instance. Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource. +- `ipam_pool_id` (String) - `network_border_group` (String) A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups. Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups. - `public_ip` (String) diff --git a/docs/data-sources/mediapackagev2_origin_endpoint.md b/docs/data-sources/mediapackagev2_origin_endpoint.md index 1bcdd5b3eb..0704574e80 100644 --- a/docs/data-sources/mediapackagev2_origin_endpoint.md +++ b/docs/data-sources/mediapackagev2_origin_endpoint.md @@ -63,6 +63,7 @@ Read-Only: Read-Only: +- `clip_start_time` (String)
Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -124,6 +125,7 @@ Read-Only: ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
- `scte_hls` (Attributes)The SCTE configuration.
(see [below for nested schema](#nestedatt--hls_manifests--scte_hls)) +- `start_tag` (Attributes)To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
(see [below for nested schema](#nestedatt--hls_manifests--start_tag)) - `url` (String)The egress domain URL for stream delivery from MediaPackage.
@@ -131,6 +133,7 @@ Read-Only: Read-Only: +- `clip_start_time` (String)Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -145,6 +148,15 @@ Read-Only: - `ad_marker_hls` (String) + +### Nested Schema for `hls_manifests.start_tag` + +Read-Only: + +- `precise` (Boolean)Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
+- `time_offset` (Number)Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
+ + ### Nested Schema for `low_latency_hls_manifests` @@ -161,6 +173,7 @@ Read-Only: ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
- `scte_hls` (Attributes)The SCTE configuration.
(see [below for nested schema](#nestedatt--low_latency_hls_manifests--scte_hls)) +- `start_tag` (Attributes)To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
(see [below for nested schema](#nestedatt--low_latency_hls_manifests--start_tag)) - `url` (String)The egress domain URL for stream delivery from MediaPackage.
@@ -168,6 +181,7 @@ Read-Only: Read-Only: +- `clip_start_time` (String)Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -182,6 +196,15 @@ Read-Only: - `ad_marker_hls` (String) + +### Nested Schema for `low_latency_hls_manifests.start_tag` + +Read-Only: + +- `precise` (Boolean)Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
+- `time_offset` (Number)Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
+ + ### Nested Schema for `segment` diff --git a/docs/data-sources/opensearchservice_application.md b/docs/data-sources/opensearchservice_application.md new file mode 100644 index 0000000000..5868c3407e --- /dev/null +++ b/docs/data-sources/opensearchservice_application.md @@ -0,0 +1,67 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_opensearchservice_application Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::OpenSearchService::Application +--- + +# awscc_opensearchservice_application (Data Source) + +Data Source schema for AWS::OpenSearchService::Application + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `app_configs` (Attributes List) List of application configurations. (see [below for nested schema](#nestedatt--app_configs)) +- `application_id` (String) The identifier of the application. +- `arn` (String) Amazon Resource Name (ARN) format. +- `data_sources` (Attributes List) List of data sources. (see [below for nested schema](#nestedatt--data_sources)) +- `endpoint` (String) The endpoint for the application. +- `iam_identity_center_options` (Attributes) Options for configuring IAM Identity Center (see [below for nested schema](#nestedatt--iam_identity_center_options)) +- `name` (String) The name of the application. +- `tags` (Attributes List) An arbitrary set of tags (key-value pairs) for this application. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `app_configs` + +Read-Only: + +- `key` (String) The configuration key +- `value` (String) The configuration value. + + + +### Nested Schema for `data_sources` + +Read-Only: + +- `data_source_arn` (String) The ARN of the data source. +- `data_source_description` (String) Description of the data source. + + + +### Nested Schema for `iam_identity_center_options` + +Read-Only: + +- `enabled` (Boolean) Whether IAM Identity Center is enabled. +- `iam_identity_center_instance_arn` (String) The ARN of the IAM Identity Center instance. +- `iam_role_for_identity_center_application_arn` (String) The ARN of the IAM role for Identity Center application. + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key in the key-value pair +- `value` (String) The value in the key-value pair diff --git a/docs/data-sources/opensearchservice_applications.md b/docs/data-sources/opensearchservice_applications.md new file mode 100644 index 0000000000..d5ce7ee97f --- /dev/null +++ b/docs/data-sources/opensearchservice_applications.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_opensearchservice_applications Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::OpenSearchService::Application +--- + +# awscc_opensearchservice_applications (Data Source) + +Plural Data Source schema for AWS::OpenSearchService::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/opensearchservice_domain.md b/docs/data-sources/opensearchservice_domain.md index f4a5535055..a6ae083fc7 100644 --- a/docs/data-sources/opensearchservice_domain.md +++ b/docs/data-sources/opensearchservice_domain.md @@ -37,6 +37,7 @@ Data Source schema for AWS::OpenSearchService::Domain - `ebs_options` (Attributes) (see [below for nested schema](#nestedatt--ebs_options)) - `encryption_at_rest_options` (Attributes) (see [below for nested schema](#nestedatt--encryption_at_rest_options)) - `engine_version` (String) +- `identity_center_options` (Attributes) Options for configuring Identity Center (see [below for nested schema](#nestedatt--identity_center_options)) - `ip_address_type` (String) - `log_publishing_options` (Attributes Map) (see [below for nested schema](#nestedatt--log_publishing_options)) - `node_to_node_encryption_options` (Attributes) (see [below for nested schema](#nestedatt--node_to_node_encryption_options)) @@ -185,6 +186,19 @@ Read-Only: - `kms_key_id` (String) + +### Nested Schema for `identity_center_options` + +Read-Only: + +- `enabled_api_access` (Boolean) Whether Identity Center is enabled. +- `identity_center_application_arn` (String) The ARN of the Identity Center application. +- `identity_center_instance_arn` (String) The ARN of the Identity Center instance. +- `identity_store_id` (String) The IdentityStoreId for Identity Center options. +- `roles_key` (String) The roles key for Identity Center options. +- `subject_key` (String) The subject key for Identity Center options. + + ### Nested Schema for `log_publishing_options` diff --git a/docs/data-sources/route53_record_set.md b/docs/data-sources/route53_record_set.md index e32d65ba73..c85b343b01 100644 --- a/docs/data-sources/route53_record_set.md +++ b/docs/data-sources/route53_record_set.md @@ -21,31 +21,33 @@ Data Source schema for AWS::Route53::RecordSet ### Read-Only -- `alias_target` (Attributes) Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. (see [below for nested schema](#nestedatt--alias_target)) -- `cidr_routing_config` (Attributes) The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. (see [below for nested schema](#nestedatt--cidr_routing_config)) -- `comment` (String) Optional: Any comments you want to include about a change batch request. -- `failover` (String) To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set. -- `geo_location` (Attributes) A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. (see [below for nested schema](#nestedatt--geo_location)) -- `health_check_id` (String) If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check. -- `hosted_zone_id` (String) The ID of the hosted zone that you want to create records in. -- `hosted_zone_name` (String) The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName. -- `multi_value_answer` (Boolean) To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. -- `name` (String) The name of the record that you want to create, update, or delete. -- `region` (String) The Amazon EC2 Region where you created the resource that this resource record set refers to. -- `resource_records` (List of String) One or more values that correspond with the value that you specified for the Type property. -- `set_identifier` (String) An identifier that differentiates among multiple resource record sets that have the same combination of name and type. -- `ttl` (String) The resource record cache time to live (TTL), in seconds. -- `type` (String) The DNS record type. -- `weight` (Number) Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total. +- `alias_target` (Attributes) (see [below for nested schema](#nestedatt--alias_target)) +- `cidr_routing_config` (Attributes) (see [below for nested schema](#nestedatt--cidr_routing_config)) +- `comment` (String) +- `failover` (String) +- `geo_location` (Attributes) (see [below for nested schema](#nestedatt--geo_location)) +- `geo_proximity_location` (Attributes) (see [below for nested schema](#nestedatt--geo_proximity_location)) +- `health_check_id` (String) +- `hosted_zone_id` (String) +- `hosted_zone_name` (String) +- `multi_value_answer` (Boolean) +- `name` (String) +- `record_set_id` (String) +- `region` (String) +- `resource_records` (List of String) +- `set_identifier` (String) +- `ttl` (String) +- `type` (String) +- `weight` (Number) ### Nested Schema for `alias_target` Read-Only: -- `dns_name` (String) The value that you specify depends on where you want to route queries. -- `evaluate_target_health` (Boolean) When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone. -- `hosted_zone_id` (String) The value used depends on where you want to route traffic. +- `dns_name` (String) +- `evaluate_target_health` (Boolean) +- `hosted_zone_id` (String) @@ -53,8 +55,8 @@ Read-Only: Read-Only: -- `collection_id` (String) The CIDR collection ID. -- `location_name` (String) The CIDR collection location name. +- `collection_id` (String) +- `location_name` (String) @@ -62,6 +64,25 @@ Read-Only: Read-Only: -- `continent_code` (String) For geolocation resource record sets, a two-letter abbreviation that identifies a continent. -- `country_code` (String) For geolocation resource record sets, the two-letter code for a country. -- `subdivision_code` (String) For geolocation resource record sets, the two-letter code for a state of the United States. +- `continent_code` (String) +- `country_code` (String) +- `subdivision_code` (String) + + + +### Nested Schema for `geo_proximity_location` + +Read-Only: + +- `aws_region` (String) +- `bias` (Number) +- `coordinates` (Attributes) (see [below for nested schema](#nestedatt--geo_proximity_location--coordinates)) +- `local_zone_group` (String) + + +### Nested Schema for `geo_proximity_location.coordinates` + +Read-Only: + +- `latitude` (String) +- `longitude` (String) diff --git a/docs/data-sources/sagemaker_studio_lifecycle_config.md b/docs/data-sources/sagemaker_studio_lifecycle_config.md index 299a281578..4dbbd32662 100644 --- a/docs/data-sources/sagemaker_studio_lifecycle_config.md +++ b/docs/data-sources/sagemaker_studio_lifecycle_config.md @@ -23,9 +23,9 @@ Data Source schema for AWS::SageMaker::StudioLifecycleConfig - `studio_lifecycle_config_app_type` (String) The App type that the Lifecycle Configuration is attached to. - `studio_lifecycle_config_arn` (String) The Amazon Resource Name (ARN) of the Lifecycle Configuration. -- `studio_lifecycle_config_content` (String) The content of your Amazon SageMaker Studio Lifecycle Configuration script. +- `studio_lifecycle_config_content` (String) The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded. - `studio_lifecycle_config_name` (String) The name of the Amazon SageMaker Studio Lifecycle Configuration. -- `tags` (Attributes List) Tags to be associated with the Lifecycle Configuration. (see [below for nested schema](#nestedatt--tags)) +- `tags` (Attributes List) Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API. (see [below for nested schema](#nestedatt--tags)) ### Nested Schema for `tags` diff --git a/docs/data-sources/secretsmanager_rotation_schedule.md b/docs/data-sources/secretsmanager_rotation_schedule.md new file mode 100644 index 0000000000..bbf986779c --- /dev/null +++ b/docs/data-sources/secretsmanager_rotation_schedule.md @@ -0,0 +1,56 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_secretsmanager_rotation_schedule Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::SecretsManager::RotationSchedule +--- + +# awscc_secretsmanager_rotation_schedule (Data Source) + +Data Source schema for AWS::SecretsManager::RotationSchedule + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `hosted_rotation_lambda` (Attributes) Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead. (see [below for nested schema](#nestedatt--hosted_rotation_lambda)) +- `rotate_immediately_on_update` (Boolean) Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window. +- `rotation_lambda_arn` (String) The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function. +- `rotation_rules` (Attributes) A structure that defines the rotation configuration for this secret. (see [below for nested schema](#nestedatt--rotation_rules)) +- `rotation_schedule_id` (String) The ARN of the secret. +- `secret_id` (String) The ARN or name of the secret to rotate. + + +### Nested Schema for `hosted_rotation_lambda` + +Read-Only: + +- `exclude_characters` (String) A string of the characters that you don't want in the password. +- `kms_key_arn` (String) The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value. +- `master_secret_arn` (String) The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property. +- `master_secret_kms_key_arn` (String) The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property. +- `rotation_lambda_name` (String) The name of the Lambda rotation function. +- `rotation_type` (String) The type of rotation template to use +- `runtime` (String) The python runtime associated with the Lambda function +- `superuser_secret_arn` (String) The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property. +- `superuser_secret_kms_key_arn` (String) The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property. +- `vpc_security_group_ids` (String) A comma-separated list of security group IDs applied to the target database. +- `vpc_subnet_ids` (String) A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group. + + + +### Nested Schema for `rotation_rules` + +Read-Only: + +- `automatically_after_days` (Number) The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated. +- `duration` (String) The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day. +- `schedule_expression` (String) A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone. diff --git a/docs/data-sources/secretsmanager_rotation_schedules.md b/docs/data-sources/secretsmanager_rotation_schedules.md new file mode 100644 index 0000000000..a48114645c --- /dev/null +++ b/docs/data-sources/secretsmanager_rotation_schedules.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_secretsmanager_rotation_schedules Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::SecretsManager::RotationSchedule +--- + +# awscc_secretsmanager_rotation_schedules (Data Source) + +Plural Data Source schema for AWS::SecretsManager::RotationSchedule + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/resources/appconfig_deployment_strategy.md b/docs/resources/appconfig_deployment_strategy.md new file mode 100644 index 0000000000..db1d197419 --- /dev/null +++ b/docs/resources/appconfig_deployment_strategy.md @@ -0,0 +1,63 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appconfig_deployment_strategy Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::AppConfig::DeploymentStrategy +--- + +# awscc_appconfig_deployment_strategy (Resource) + +Resource Type definition for AWS::AppConfig::DeploymentStrategy + + + + +## Schema + +### Required + +- `deployment_duration_in_minutes` (Number) Total amount of time for a deployment to last. +- `growth_factor` (Number) The percentage of targets to receive a deployed configuration during each interval. +- `name` (String) A name for the deployment strategy. +- `replicate_to` (String) Save the deployment strategy to a Systems Manager (SSM) document. + +### Optional + +- `description` (String) A description of the deployment strategy. +- `final_bake_time_in_minutes` (Number) Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide. +- `growth_type` (String) The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types: + +Linear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration. + +Exponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows: + +2*(2^0) + +2*(2^1) + +2*(2^2) + +Expressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets. +- `tags` (Attributes Set) Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `deployment_strategy_id` (String) The deployment strategy ID. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_appconfig_deployment_strategy.example "id" +``` diff --git a/docs/resources/appsync_api.md b/docs/resources/appsync_api.md new file mode 100644 index 0000000000..9b73a2e28c --- /dev/null +++ b/docs/resources/appsync_api.md @@ -0,0 +1,136 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_api Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource schema for AppSync Api +--- + +# awscc_appsync_api (Resource) + +Resource schema for AppSync Api + + + + +## Schema + +### Required + +- `name` (String) The name of the AppSync API. + +### Optional + +- `event_config` (Attributes) The configuration for an Event Api (see [below for nested schema](#nestedatt--event_config)) +- `owner_contact` (String) The owner contact information for an API resource. +- `tags` (Attributes Set) An arbitrary set of tags (key-value pairs) for this AppSync API. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `api_arn` (String) The Amazon Resource Name (ARN) of the AppSync Api +- `api_id` (String) The unique identifier for the AppSync Api generated by the service +- `dns` (Map of String) A map of DNS names for the AppSync API. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `event_config` + +Optional: + +- `auth_providers` (Attributes List) A list of auth providers for the AppSync API. (see [below for nested schema](#nestedatt--event_config--auth_providers)) +- `connection_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--connection_auth_modes)) +- `default_publish_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--default_publish_auth_modes)) +- `default_subscribe_auth_modes` (Attributes List) A list of auth modes for the AppSync API. (see [below for nested schema](#nestedatt--event_config--default_subscribe_auth_modes)) +- `log_config` (Attributes) The log config for the AppSync API. (see [below for nested schema](#nestedatt--event_config--log_config)) + + +### Nested Schema for `event_config.auth_providers` + +Optional: + +- `auth_type` (String) Security configuration for your AppSync API. +- `cognito_config` (Attributes) Optional authorization configuration for using Amazon Cognito user pools with your API endpoint. (see [below for nested schema](#nestedatt--event_config--auth_providers--cognito_config)) +- `lambda_authorizer_config` (Attributes) A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time. (see [below for nested schema](#nestedatt--event_config--auth_providers--lambda_authorizer_config)) +- `open_id_connect_config` (Attributes) The OpenID Connect configuration. (see [below for nested schema](#nestedatt--event_config--auth_providers--open_id_connect_config)) + + +### Nested Schema for `event_config.auth_providers.cognito_config` + +Optional: + +- `app_id_client_regex` (String) +- `aws_region` (String) +- `user_pool_id` (String) + + + +### Nested Schema for `event_config.auth_providers.lambda_authorizer_config` + +Optional: + +- `authorizer_result_ttl_in_seconds` (Number) +- `authorizer_uri` (String) +- `identity_validation_expression` (String) + + + +### Nested Schema for `event_config.auth_providers.open_id_connect_config` + +Optional: + +- `auth_ttl` (Number) +- `client_id` (String) +- `iat_ttl` (Number) +- `issuer` (String) + + + + +### Nested Schema for `event_config.connection_auth_modes` + +Optional: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.default_publish_auth_modes` + +Optional: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.default_subscribe_auth_modes` + +Optional: + +- `auth_type` (String) Security configuration for your AppSync API. + + + +### Nested Schema for `event_config.log_config` + +Optional: + +- `cloudwatch_logs_role_arn` (String) +- `log_level` (String) Logging level for the AppSync API. + + + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. +- `value` (String) A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_appsync_api.example "api_arn" +``` diff --git a/docs/resources/bedrock_flow_version.md b/docs/resources/bedrock_flow_version.md index 161c9996cc..1bccc00867 100644 --- a/docs/resources/bedrock_flow_version.md +++ b/docs/resources/bedrock_flow_version.md @@ -146,8 +146,18 @@ Read-Only: Read-Only: +- `guardrail_configuration` (Attributes) Configuration for a guardrail (see [below for nested schema](#nestedatt--definition--nodes--configuration--knowledge_base--guardrail_configuration)) - `knowledge_base_id` (String) Identifier of the KnowledgeBase -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. + + +### Nested Schema for `definition.nodes.configuration.knowledge_base.guardrail_configuration` + +Read-Only: + +- `guardrail_identifier` (String) Identifier for the guardrail, could be the id or the arn +- `guardrail_version` (String) Version of the guardrail + @@ -172,8 +182,18 @@ Read-Only: Read-Only: +- `guardrail_configuration` (Attributes) Configuration for a guardrail (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--guardrail_configuration)) - `source_configuration` (Attributes) Prompt source configuration for prompt node (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration)) + +### Nested Schema for `definition.nodes.configuration.prompt.guardrail_configuration` + +Read-Only: + +- `guardrail_identifier` (String) Identifier for the guardrail, could be the id or the arn +- `guardrail_version` (String) Version of the guardrail + + ### Nested Schema for `definition.nodes.configuration.prompt.source_configuration` @@ -188,7 +208,7 @@ Read-Only: Read-Only: - `inference_configuration` (Attributes) Model inference configuration (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration--inline--inference_configuration)) -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. - `template_configuration` (Attributes) Prompt template configuration (see [below for nested schema](#nestedatt--definition--nodes--configuration--prompt--source_configuration--inline--template_configuration)) - `template_type` (String) Prompt template type @@ -207,7 +227,6 @@ Read-Only: - `max_tokens` (Number) Maximum length of output - `stop_sequences` (List of String) List of stop sequences - `temperature` (Number) Controls randomness, higher values increase diversity -- `top_k` (Number) Sample from the k most likely next tokens - `top_p` (Number) Cumulative probability cutoff for token selection diff --git a/docs/resources/bedrock_prompt.md b/docs/resources/bedrock_prompt.md index 6016907419..54cd9047c3 100644 --- a/docs/resources/bedrock_prompt.md +++ b/docs/resources/bedrock_prompt.md @@ -79,7 +79,7 @@ resource "awscc_bedrock_prompt" "example" { Optional: - `inference_configuration` (Attributes) Model inference configuration (see [below for nested schema](#nestedatt--variants--inference_configuration)) -- `model_id` (String) ARN or name of a Bedrock model. +- `model_id` (String) ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models. - `name` (String) Name for a variant. - `template_configuration` (Attributes) Prompt template configuration (see [below for nested schema](#nestedatt--variants--template_configuration)) - `template_type` (String) Prompt template type @@ -99,7 +99,6 @@ Optional: - `max_tokens` (Number) Maximum length of output - `stop_sequences` (List of String) List of stop sequences - `temperature` (Number) Controls randomness, higher values increase diversity -- `top_k` (Number) Sample from the k most likely next tokens - `top_p` (Number) Cumulative probability cutoff for token selection diff --git a/docs/resources/codepipeline_pipeline.md b/docs/resources/codepipeline_pipeline.md index 01f576c993..9553c65875 100644 --- a/docs/resources/codepipeline_pipeline.md +++ b/docs/resources/codepipeline_pipeline.md @@ -168,6 +168,7 @@ Optional: - `conditions` (Attributes List) (see [below for nested schema](#nestedatt--stages--on_failure--conditions)) - `result` (String) The specified result for when the failure conditions are met, such as rolling back the stage +- `retry_configuration` (Attributes) The configuration that specifies the retry configuration for a stage (see [below for nested schema](#nestedatt--stages--on_failure--retry_configuration)) ### Nested Schema for `stages.on_failure.conditions` @@ -210,6 +211,14 @@ Optional: + +### Nested Schema for `stages.on_failure.retry_configuration` + +Optional: + +- `retry_mode` (String) The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful + + ### Nested Schema for `stages.on_success` diff --git a/docs/resources/dms_data_migration.md b/docs/resources/dms_data_migration.md new file mode 100644 index 0000000000..291ef04cfa --- /dev/null +++ b/docs/resources/dms_data_migration.md @@ -0,0 +1,73 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_data_migration Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource schema for AWS::DMS::DataMigration. +--- + +# awscc_dms_data_migration (Resource) + +Resource schema for AWS::DMS::DataMigration. + + + + +## Schema + +### Required + +- `data_migration_type` (String) The property describes the type of migration. +- `migration_project_identifier` (String) The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn +- `service_access_role_arn` (String) The property describes Amazon Resource Name (ARN) of the service access role. + +### Optional + +- `data_migration_identifier` (String) The property describes an ARN of the data migration. +- `data_migration_name` (String) The property describes a name to identify the data migration. +- `data_migration_settings` (Attributes) The property describes the settings for the data migration. (see [below for nested schema](#nestedatt--data_migration_settings)) +- `source_data_settings` (Attributes Set) The property describes the settings for the data migration. (see [below for nested schema](#nestedatt--source_data_settings)) +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `data_migration_arn` (String) The property describes an ARN of the data migration. +- `data_migration_create_time` (String) The property describes the create time of the data migration. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `data_migration_settings` + +Optional: + +- `cloudwatch_logs_enabled` (Boolean) The property specifies whether to enable the Cloudwatch log. +- `number_of_jobs` (Number) The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target. +- `selection_rules` (String) The property specifies the rules of selecting objects for data migration. + + + +### Nested Schema for `source_data_settings` + +Optional: + +- `cdc_start_position` (String) The property is a point in the database engine's log that defines a time where you can begin CDC. +- `cdc_start_time` (String) The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format. +- `cdc_stop_time` (String) The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format. +- `slot_name` (String) The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance. + + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_dms_data_migration.example "data_migration_arn" +``` diff --git a/docs/resources/ec2_eip.md b/docs/resources/ec2_eip.md index 1c5cd85a64..c6a1512551 100644 --- a/docs/resources/ec2_eip.md +++ b/docs/resources/ec2_eip.md @@ -49,10 +49,12 @@ resource "awscc_ec2_eip" "main" { ### Optional +- `address` (String) - `domain` (String) The network (``vpc``). If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource. - `instance_id` (String) The ID of the instance. Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource. +- `ipam_pool_id` (String) - `network_border_group` (String) A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups. Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups. - `public_ipv_4_pool` (String) The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool. diff --git a/docs/resources/m2_application.md b/docs/resources/m2_application.md index 5a638527c4..7dd3dd2143 100644 --- a/docs/resources/m2_application.md +++ b/docs/resources/m2_application.md @@ -17,12 +17,12 @@ Represents an application that runs on an AWS Mainframe Modernization Environmen ### Required -- `definition` (Attributes) (see [below for nested schema](#nestedatt--definition)) - `engine_type` (String) - `name` (String) ### Optional +- `definition` (Attributes) (see [below for nested schema](#nestedatt--definition)) - `description` (String) - `kms_key_id` (String) The ID or the Amazon Resource Name (ARN) of the customer managed KMS Key used for encrypting application-related resources. - `role_arn` (String) diff --git a/docs/resources/mediapackagev2_origin_endpoint.md b/docs/resources/mediapackagev2_origin_endpoint.md index 86304c5819..4c2b687674 100644 --- a/docs/resources/mediapackagev2_origin_endpoint.md +++ b/docs/resources/mediapackagev2_origin_endpoint.md @@ -66,6 +66,7 @@ Optional: Optional: +- `clip_start_time` (String)Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -127,6 +128,7 @@ Optional: ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
- `scte_hls` (Attributes)The SCTE configuration.
(see [below for nested schema](#nestedatt--hls_manifests--scte_hls)) +- `start_tag` (Attributes)To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
(see [below for nested schema](#nestedatt--hls_manifests--start_tag)) - `url` (String)The egress domain URL for stream delivery from MediaPackage.
@@ -134,6 +136,7 @@ Optional: Optional: +- `clip_start_time` (String)Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -148,6 +151,15 @@ Optional: - `ad_marker_hls` (String) + +### Nested Schema for `hls_manifests.start_tag` + +Optional: + +- `precise` (Boolean)Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
+- `time_offset` (Number)Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
+ + ### Nested Schema for `low_latency_hls_manifests` @@ -164,6 +176,7 @@ Optional: ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.
- `scte_hls` (Attributes)The SCTE configuration.
(see [below for nested schema](#nestedatt--low_latency_hls_manifests--scte_hls)) +- `start_tag` (Attributes)To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
(see [below for nested schema](#nestedatt--low_latency_hls_manifests--start_tag)) - `url` (String)The egress domain URL for stream delivery from MediaPackage.
@@ -171,6 +184,7 @@ Optional: Optional: +- `clip_start_time` (String)Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
- `end` (String)Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.
- `manifest_filter` (String)Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.
- `start` (String)Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.
@@ -185,6 +199,15 @@ Optional: - `ad_marker_hls` (String) + +### Nested Schema for `low_latency_hls_manifests.start_tag` + +Optional: + +- `precise` (Boolean)Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
+- `time_offset` (Number)Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
+ + ### Nested Schema for `segment` diff --git a/docs/resources/opensearchservice_application.md b/docs/resources/opensearchservice_application.md new file mode 100644 index 0000000000..c042ec5aba --- /dev/null +++ b/docs/resources/opensearchservice_application.md @@ -0,0 +1,78 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_opensearchservice_application Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Amazon OpenSearchService application resource +--- + +# awscc_opensearchservice_application (Resource) + +Amazon OpenSearchService application resource + + + + +## Schema + +### Required + +- `name` (String) The name of the application. + +### Optional + +- `app_configs` (Attributes List) List of application configurations. (see [below for nested schema](#nestedatt--app_configs)) +- `data_sources` (Attributes List) List of data sources. (see [below for nested schema](#nestedatt--data_sources)) +- `endpoint` (String) The endpoint for the application. +- `iam_identity_center_options` (Attributes) Options for configuring IAM Identity Center (see [below for nested schema](#nestedatt--iam_identity_center_options)) +- `tags` (Attributes List) An arbitrary set of tags (key-value pairs) for this application. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `application_id` (String) The identifier of the application. +- `arn` (String) Amazon Resource Name (ARN) format. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `app_configs` + +Optional: + +- `key` (String) The configuration key +- `value` (String) The configuration value. + + + +### Nested Schema for `data_sources` + +Optional: + +- `data_source_arn` (String) The ARN of the data source. +- `data_source_description` (String) Description of the data source. + + + +### Nested Schema for `iam_identity_center_options` + +Optional: + +- `enabled` (Boolean) Whether IAM Identity Center is enabled. +- `iam_identity_center_instance_arn` (String) The ARN of the IAM Identity Center instance. +- `iam_role_for_identity_center_application_arn` (String) The ARN of the IAM role for Identity Center application. + + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key in the key-value pair +- `value` (String) The value in the key-value pair + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_opensearchservice_application.example "name" +``` diff --git a/docs/resources/opensearchservice_domain.md b/docs/resources/opensearchservice_domain.md index 45778badb3..587401dfaa 100644 --- a/docs/resources/opensearchservice_domain.md +++ b/docs/resources/opensearchservice_domain.md @@ -27,6 +27,7 @@ An example resource schema demonstrating some basic constructs and validation ru - `ebs_options` (Attributes) (see [below for nested schema](#nestedatt--ebs_options)) - `encryption_at_rest_options` (Attributes) (see [below for nested schema](#nestedatt--encryption_at_rest_options)) - `engine_version` (String) +- `identity_center_options` (Attributes) Options for configuring Identity Center (see [below for nested schema](#nestedatt--identity_center_options)) - `ip_address_type` (String) - `log_publishing_options` (Attributes Map) (see [below for nested schema](#nestedatt--log_publishing_options)) - `node_to_node_encryption_options` (Attributes) (see [below for nested schema](#nestedatt--node_to_node_encryption_options)) @@ -188,6 +189,22 @@ Optional: - `kms_key_id` (String) + +### Nested Schema for `identity_center_options` + +Optional: + +- `enabled_api_access` (Boolean) Whether Identity Center is enabled. +- `identity_center_instance_arn` (String) The ARN of the Identity Center instance. +- `roles_key` (String) The roles key for Identity Center options. +- `subject_key` (String) The subject key for Identity Center options. + +Read-Only: + +- `identity_center_application_arn` (String) The ARN of the Identity Center application. +- `identity_store_id` (String) The IdentityStoreId for Identity Center options. + + ### Nested Schema for `log_publishing_options` diff --git a/docs/resources/route53_record_set.md b/docs/resources/route53_record_set.md index 77b54e1c16..f5a2f1b526 100644 --- a/docs/resources/route53_record_set.md +++ b/docs/resources/route53_record_set.md @@ -3,12 +3,12 @@ page_title: "awscc_route53_record_set Resource - terraform-provider-awscc" subcategory: "" description: |- - Resource Type definition for AWS::Route53::RecordSet. + Resource Type definition for AWS::Route53::RecordSet --- # awscc_route53_record_set (Resource) -Resource Type definition for AWS::Route53::RecordSet. +Resource Type definition for AWS::Route53::RecordSet @@ -17,38 +17,40 @@ Resource Type definition for AWS::Route53::RecordSet. ### Required -- `name` (String) The name of the record that you want to create, update, or delete. -- `type` (String) The DNS record type. +- `name` (String) +- `type` (String) ### Optional -- `alias_target` (Attributes) Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. (see [below for nested schema](#nestedatt--alias_target)) -- `cidr_routing_config` (Attributes) The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. (see [below for nested schema](#nestedatt--cidr_routing_config)) -- `comment` (String) Optional: Any comments you want to include about a change batch request. -- `failover` (String) To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set. -- `geo_location` (Attributes) A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. (see [below for nested schema](#nestedatt--geo_location)) -- `health_check_id` (String) If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check. -- `hosted_zone_id` (String) The ID of the hosted zone that you want to create records in. -- `hosted_zone_name` (String) The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName. -- `multi_value_answer` (Boolean) To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. -- `region` (String) The Amazon EC2 Region where you created the resource that this resource record set refers to. -- `resource_records` (List of String) One or more values that correspond with the value that you specified for the Type property. -- `set_identifier` (String) An identifier that differentiates among multiple resource record sets that have the same combination of name and type. -- `ttl` (String) The resource record cache time to live (TTL), in seconds. -- `weight` (Number) Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total. +- `alias_target` (Attributes) (see [below for nested schema](#nestedatt--alias_target)) +- `cidr_routing_config` (Attributes) (see [below for nested schema](#nestedatt--cidr_routing_config)) +- `comment` (String) +- `failover` (String) +- `geo_location` (Attributes) (see [below for nested schema](#nestedatt--geo_location)) +- `geo_proximity_location` (Attributes) (see [below for nested schema](#nestedatt--geo_proximity_location)) +- `health_check_id` (String) +- `hosted_zone_id` (String) +- `hosted_zone_name` (String) +- `multi_value_answer` (Boolean) +- `region` (String) +- `resource_records` (List of String) +- `set_identifier` (String) +- `ttl` (String) +- `weight` (Number) ### Read-Only - `id` (String) Uniquely identifies the resource. +- `record_set_id` (String) ### Nested Schema for `alias_target` Optional: -- `dns_name` (String) The value that you specify depends on where you want to route queries. -- `evaluate_target_health` (Boolean) When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone. -- `hosted_zone_id` (String) The value used depends on where you want to route traffic. +- `dns_name` (String) +- `evaluate_target_health` (Boolean) +- `hosted_zone_id` (String) @@ -56,8 +58,8 @@ Optional: Optional: -- `collection_id` (String) The CIDR collection ID. -- `location_name` (String) The CIDR collection location name. +- `collection_id` (String) +- `location_name` (String) @@ -65,14 +67,33 @@ Optional: Optional: -- `continent_code` (String) For geolocation resource record sets, a two-letter abbreviation that identifies a continent. -- `country_code` (String) For geolocation resource record sets, the two-letter code for a country. -- `subdivision_code` (String) For geolocation resource record sets, the two-letter code for a state of the United States. +- `continent_code` (String) +- `country_code` (String) +- `subdivision_code` (String) + + + +### Nested Schema for `geo_proximity_location` + +Optional: + +- `aws_region` (String) +- `bias` (Number) +- `coordinates` (Attributes) (see [below for nested schema](#nestedatt--geo_proximity_location--coordinates)) +- `local_zone_group` (String) + + +### Nested Schema for `geo_proximity_location.coordinates` + +Optional: + +- `latitude` (String) +- `longitude` (String) ## Import Import is supported using the following syntax: ```shell -$ terraform import awscc_route53_record_set.example "name|hosted_zone_id|type|set_identifier" +$ terraform import awscc_route53_record_set.example "id" ``` diff --git a/docs/resources/sagemaker_studio_lifecycle_config.md b/docs/resources/sagemaker_studio_lifecycle_config.md index 7698b82f1d..5f6ebdc429 100644 --- a/docs/resources/sagemaker_studio_lifecycle_config.md +++ b/docs/resources/sagemaker_studio_lifecycle_config.md @@ -18,12 +18,12 @@ Resource Type definition for AWS::SageMaker::StudioLifecycleConfig ### Required - `studio_lifecycle_config_app_type` (String) The App type that the Lifecycle Configuration is attached to. -- `studio_lifecycle_config_content` (String) The content of your Amazon SageMaker Studio Lifecycle Configuration script. +- `studio_lifecycle_config_content` (String) The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded. - `studio_lifecycle_config_name` (String) The name of the Amazon SageMaker Studio Lifecycle Configuration. ### Optional -- `tags` (Attributes List) Tags to be associated with the Lifecycle Configuration. (see [below for nested schema](#nestedatt--tags)) +- `tags` (Attributes List) Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API. (see [below for nested schema](#nestedatt--tags)) ### Read-Only diff --git a/docs/resources/secretsmanager_rotation_schedule.md b/docs/resources/secretsmanager_rotation_schedule.md new file mode 100644 index 0000000000..94c697a869 --- /dev/null +++ b/docs/resources/secretsmanager_rotation_schedule.md @@ -0,0 +1,67 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_secretsmanager_rotation_schedule Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::SecretsManager::RotationSchedule +--- + +# awscc_secretsmanager_rotation_schedule (Resource) + +Resource Type definition for AWS::SecretsManager::RotationSchedule + + + + +## Schema + +### Required + +- `secret_id` (String) The ARN or name of the secret to rotate. + +### Optional + +- `hosted_rotation_lambda` (Attributes) Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead. (see [below for nested schema](#nestedatt--hosted_rotation_lambda)) +- `rotate_immediately_on_update` (Boolean) Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window. +- `rotation_lambda_arn` (String) The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function. +- `rotation_rules` (Attributes) A structure that defines the rotation configuration for this secret. (see [below for nested schema](#nestedatt--rotation_rules)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `rotation_schedule_id` (String) The ARN of the secret. + + +### Nested Schema for `hosted_rotation_lambda` + +Optional: + +- `exclude_characters` (String) A string of the characters that you don't want in the password. +- `kms_key_arn` (String) The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value. +- `master_secret_arn` (String) The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property. +- `master_secret_kms_key_arn` (String) The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property. +- `rotation_lambda_name` (String) The name of the Lambda rotation function. +- `rotation_type` (String) The type of rotation template to use +- `runtime` (String) The python runtime associated with the Lambda function +- `superuser_secret_arn` (String) The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property. +- `superuser_secret_kms_key_arn` (String) The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property. +- `vpc_security_group_ids` (String) A comma-separated list of security group IDs applied to the target database. +- `vpc_subnet_ids` (String) A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group. + + + +### Nested Schema for `rotation_rules` + +Optional: + +- `automatically_after_days` (Number) The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated. +- `duration` (String) The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day. +- `schedule_expression` (String) A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_secretsmanager_rotation_schedule.example "id" +``` diff --git a/examples/resources/awscc_appconfig_deployment_strategy/import.sh b/examples/resources/awscc_appconfig_deployment_strategy/import.sh new file mode 100644 index 0000000000..d1754e1b1d --- /dev/null +++ b/examples/resources/awscc_appconfig_deployment_strategy/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_appconfig_deployment_strategy.example "id" \ No newline at end of file diff --git a/examples/resources/awscc_appsync_api/import.sh b/examples/resources/awscc_appsync_api/import.sh new file mode 100644 index 0000000000..be7304ce77 --- /dev/null +++ b/examples/resources/awscc_appsync_api/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_appsync_api.example "api_arn" \ No newline at end of file diff --git a/examples/resources/awscc_dms_data_migration/import.sh b/examples/resources/awscc_dms_data_migration/import.sh new file mode 100644 index 0000000000..25f2ca5078 --- /dev/null +++ b/examples/resources/awscc_dms_data_migration/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_dms_data_migration.example "data_migration_arn" \ No newline at end of file diff --git a/examples/resources/awscc_opensearchservice_application/import.sh b/examples/resources/awscc_opensearchservice_application/import.sh new file mode 100644 index 0000000000..cda1a04eac --- /dev/null +++ b/examples/resources/awscc_opensearchservice_application/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_opensearchservice_application.example "name" \ No newline at end of file diff --git a/examples/resources/awscc_route53_record_set/import.sh b/examples/resources/awscc_route53_record_set/import.sh index c57a4dd04b..a1bc3c23a0 100644 --- a/examples/resources/awscc_route53_record_set/import.sh +++ b/examples/resources/awscc_route53_record_set/import.sh @@ -1 +1 @@ -$ terraform import awscc_route53_record_set.example "name|hosted_zone_id|type|set_identifier" \ No newline at end of file +$ terraform import awscc_route53_record_set.example "id" \ No newline at end of file diff --git a/examples/resources/awscc_secretsmanager_rotation_schedule/import.sh b/examples/resources/awscc_secretsmanager_rotation_schedule/import.sh new file mode 100644 index 0000000000..3ac7a9c1b3 --- /dev/null +++ b/examples/resources/awscc_secretsmanager_rotation_schedule/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_secretsmanager_rotation_schedule.example "id" \ No newline at end of file diff --git a/internal/aws/appconfig/deployment_strategy_plural_data_source_gen.go b/internal/aws/appconfig/deployment_strategy_plural_data_source_gen.go new file mode 100644 index 0000000000..0347920582 --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appconfig + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appconfig_deployment_strategies", deploymentStrategiesDataSource) +} + +// deploymentStrategiesDataSource returns the Terraform awscc_appconfig_deployment_strategies data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppConfig::DeploymentStrategy resource. +func deploymentStrategiesDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::AppConfig::DeploymentStrategy", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppConfig::DeploymentStrategy").WithTerraformTypeName("awscc_appconfig_deployment_strategies") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appconfig/deployment_strategy_plural_data_source_gen_test.go b/internal/aws/appconfig/deployment_strategy_plural_data_source_gen_test.go new file mode 100644 index 0000000000..dedef58ecf --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appconfig_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppConfigDeploymentStrategiesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppConfig::DeploymentStrategy", "awscc_appconfig_deployment_strategies", "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/appconfig/deployment_strategy_resource_gen.go b/internal/aws/appconfig/deployment_strategy_resource_gen.go new file mode 100644 index 0000000000..5803f1658e --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_resource_gen.go @@ -0,0 +1,260 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appconfig + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_appconfig_deployment_strategy", deploymentStrategyResource) +} + +// deploymentStrategyResource returns the Terraform awscc_appconfig_deployment_strategy resource. +// This Terraform resource corresponds to the CloudFormation AWS::AppConfig::DeploymentStrategy resource. +func deploymentStrategyResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DeploymentDurationInMinutes + // CloudFormation resource type schema: + // + // { + // "description": "Total amount of time for a deployment to last.", + // "type": "number" + // } + "deployment_duration_in_minutes": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Total amount of time for a deployment to last.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "A description of the deployment strategy.", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description of the deployment strategy.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FinalBakeTimeInMinutes + // CloudFormation resource type schema: + // + // { + // "description": "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", + // "type": "number" + // } + "final_bake_time_in_minutes": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GrowthFactor + // CloudFormation resource type schema: + // + // { + // "description": "The percentage of targets to receive a deployed configuration during each interval.", + // "type": "number" + // } + "growth_factor": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The percentage of targets to receive a deployed configuration during each interval.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: GrowthType + // CloudFormation resource type schema: + // + // { + // "description": "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + // "enum": [ + // "EXPONENTIAL", + // "LINEAR" + // ], + // "type": "string" + // } + "growth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "EXPONENTIAL", + "LINEAR", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The deployment strategy ID.", + // "type": "string" + // } + "deployment_strategy_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The deployment strategy ID.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "A name for the deployment strategy.", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A name for the deployment strategy.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicateTo + // CloudFormation resource type schema: + // + // { + // "description": "Save the deployment strategy to a Systems Manager (SSM) document.", + // "enum": [ + // "NONE", + // "SSM_DOCUMENT" + // ], + // "type": "string" + // } + "replicate_to": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Save the deployment strategy to a Systems Manager (SSM) document.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "NONE", + "SSM_DOCUMENT", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Metadata to assign to the deployment strategy. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::AppConfig::DeploymentStrategy", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppConfig::DeploymentStrategy").WithTerraformTypeName("awscc_appconfig_deployment_strategy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "deployment_duration_in_minutes": "DeploymentDurationInMinutes", + "deployment_strategy_id": "Id", + "description": "Description", + "final_bake_time_in_minutes": "FinalBakeTimeInMinutes", + "growth_factor": "GrowthFactor", + "growth_type": "GrowthType", + "key": "Key", + "name": "Name", + "replicate_to": "ReplicateTo", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appconfig/deployment_strategy_resource_gen_test.go b/internal/aws/appconfig/deployment_strategy_resource_gen_test.go new file mode 100644 index 0000000000..4522131bbf --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appconfig_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppConfigDeploymentStrategy_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppConfig::DeploymentStrategy", "awscc_appconfig_deployment_strategy", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/appconfig/deployment_strategy_singular_data_source_gen.go b/internal/aws/appconfig/deployment_strategy_singular_data_source_gen.go new file mode 100644 index 0000000000..365394bb85 --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_singular_data_source_gen.go @@ -0,0 +1,200 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appconfig + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appconfig_deployment_strategy", deploymentStrategyDataSource) +} + +// deploymentStrategyDataSource returns the Terraform awscc_appconfig_deployment_strategy data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppConfig::DeploymentStrategy resource. +func deploymentStrategyDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DeploymentDurationInMinutes + // CloudFormation resource type schema: + // + // { + // "description": "Total amount of time for a deployment to last.", + // "type": "number" + // } + "deployment_duration_in_minutes": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Total amount of time for a deployment to last.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "A description of the deployment strategy.", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description of the deployment strategy.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FinalBakeTimeInMinutes + // CloudFormation resource type schema: + // + // { + // "description": "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", + // "type": "number" + // } + "final_bake_time_in_minutes": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GrowthFactor + // CloudFormation resource type schema: + // + // { + // "description": "The percentage of targets to receive a deployed configuration during each interval.", + // "type": "number" + // } + "growth_factor": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The percentage of targets to receive a deployed configuration during each interval.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GrowthType + // CloudFormation resource type schema: + // + // { + // "description": "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + // "enum": [ + // "EXPONENTIAL", + // "LINEAR" + // ], + // "type": "string" + // } + "growth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The deployment strategy ID.", + // "type": "string" + // } + "deployment_strategy_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The deployment strategy ID.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "A name for the deployment strategy.", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A name for the deployment strategy.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicateTo + // CloudFormation resource type schema: + // + // { + // "description": "Save the deployment strategy to a Systems Manager (SSM) document.", + // "enum": [ + // "NONE", + // "SSM_DOCUMENT" + // ], + // "type": "string" + // } + "replicate_to": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Save the deployment strategy to a Systems Manager (SSM) document.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Metadata to assign to the deployment strategy. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::AppConfig::DeploymentStrategy", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppConfig::DeploymentStrategy").WithTerraformTypeName("awscc_appconfig_deployment_strategy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "deployment_duration_in_minutes": "DeploymentDurationInMinutes", + "deployment_strategy_id": "Id", + "description": "Description", + "final_bake_time_in_minutes": "FinalBakeTimeInMinutes", + "growth_factor": "GrowthFactor", + "growth_type": "GrowthType", + "key": "Key", + "name": "Name", + "replicate_to": "ReplicateTo", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appconfig/deployment_strategy_singular_data_source_gen_test.go b/internal/aws/appconfig/deployment_strategy_singular_data_source_gen_test.go new file mode 100644 index 0000000000..ff66a66766 --- /dev/null +++ b/internal/aws/appconfig/deployment_strategy_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appconfig_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppConfigDeploymentStrategyDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppConfig::DeploymentStrategy", "awscc_appconfig_deployment_strategy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSAppConfigDeploymentStrategyDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppConfig::DeploymentStrategy", "awscc_appconfig_deployment_strategy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/appsync/api_plural_data_source_gen.go b/internal/aws/appsync/api_plural_data_source_gen.go new file mode 100644 index 0000000000..d3e52cf5d9 --- /dev/null +++ b/internal/aws/appsync/api_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appsync_apis", apisDataSource) +} + +// apisDataSource returns the Terraform awscc_appsync_apis data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppSync::Api resource. +func apisDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::AppSync::Api", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::Api").WithTerraformTypeName("awscc_appsync_apis") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/api_plural_data_source_gen_test.go b/internal/aws/appsync/api_plural_data_source_gen_test.go new file mode 100644 index 0000000000..1e7ca46362 --- /dev/null +++ b/internal/aws/appsync/api_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncApisDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::Api", "awscc_appsync_apis", "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/appsync/api_resource_gen.go b/internal/aws/appsync/api_resource_gen.go new file mode 100644 index 0000000000..b911e36bad --- /dev/null +++ b/internal/aws/appsync/api_resource_gen.go @@ -0,0 +1,786 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_appsync_api", apiResource) +} + +// apiResource returns the Terraform awscc_appsync_api resource. +// This Terraform resource corresponds to the CloudFormation AWS::AppSync::Api resource. +func apiResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ApiArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the AppSync Api", + // "type": "string" + // } + "api_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the AppSync Api", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ApiId + // CloudFormation resource type schema: + // + // { + // "description": "The unique identifier for the AppSync Api generated by the service", + // "type": "string" + // } + "api_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique identifier for the AppSync Api generated by the service", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Dns + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A map of DNS names for the AppSync API.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "dns": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A map of DNS names for the AppSync API.", + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EventConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The configuration for an Event Api", + // "properties": { + // "AuthProviders": { + // "description": "A list of auth providers for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth provider for the AppSync API.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // }, + // "CognitoConfig": { + // "additionalProperties": false, + // "description": "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + // "properties": { + // "AppIdClientRegex": { + // "type": "string" + // }, + // "AwsRegion": { + // "type": "string" + // }, + // "UserPoolId": { + // "type": "string" + // } + // }, + // "required": [ + // "UserPoolId", + // "AwsRegion" + // ], + // "type": "object" + // }, + // "LambdaAuthorizerConfig": { + // "additionalProperties": false, + // "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "maximum": 3600, + // "minimum": 0, + // "type": "integer" + // }, + // "AuthorizerUri": { + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "type": "string" + // } + // }, + // "required": [ + // "AuthorizerUri" + // ], + // "type": "object" + // }, + // "OpenIDConnectConfig": { + // "additionalProperties": false, + // "description": "The OpenID Connect configuration.", + // "properties": { + // "AuthTTL": { + // "type": "number" + // }, + // "ClientId": { + // "type": "string" + // }, + // "IatTTL": { + // "type": "number" + // }, + // "Issuer": { + // "type": "string" + // } + // }, + // "required": [ + // "Issuer" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "AuthType" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "ConnectionAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "DefaultPublishAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "DefaultSubscribeAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "LogConfig": { + // "additionalProperties": false, + // "description": "The log config for the AppSync API.", + // "properties": { + // "CloudWatchLogsRoleArn": { + // "type": "string" + // }, + // "LogLevel": { + // "description": "Logging level for the AppSync API.", + // "enum": [ + // "NONE", + // "ERROR", + // "ALL", + // "INFO", + // "DEBUG" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "LogLevel", + // "CloudWatchLogsRoleArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "AuthProviders", + // "ConnectionAuthModes", + // "DefaultPublishAuthModes", + // "DefaultSubscribeAuthModes" + // ], + // "type": "object" + // } + "event_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthProviders + "auth_providers": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CognitoConfig + "cognito_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.Between(0, 3600), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The OpenID Connect configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth providers for the AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ConnectionAuthModes + "connection_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DefaultPublishAuthModes + "default_publish_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DefaultSubscribeAuthModes + "default_subscribe_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LogConfig + "log_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudWatchLogsRoleArn + "cloudwatch_logs_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LogLevel + "log_level": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Logging level for the AppSync API.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "NONE", + "ERROR", + "ALL", + "INFO", + "DEBUG", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The log config for the AppSync API.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The configuration for an Event Api", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the AppSync API.", + // "maxLength": 50, + // "minLength": 1, + // "pattern": "[A-Za-z0-9_\\-\\ ]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the AppSync API.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 50), + stringvalidator.RegexMatches(regexp.MustCompile("[A-Za-z0-9_\\-\\ ]+"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: OwnerContact + // CloudFormation resource type schema: + // + // { + // "description": "The owner contact information for an API resource.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "[A-Za-z0-9_\\-\\ \\.]+", + // "type": "string" + // } + "owner_contact": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The owner contact information for an API resource.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 250), + stringvalidator.RegexMatches(regexp.MustCompile("[A-Za-z0-9_\\-\\ \\.]+"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + // "properties": { + // "Key": { + // "description": "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "Value": { + // "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + // "maxLength": 256, + // "minLength": 0, + // "pattern": "^[\\s\\w+-=\\.:/@]*$", + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\s\\w+-=\\.:/@]*$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this AppSync API.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource schema for AppSync Api", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::Api").WithTerraformTypeName("awscc_appsync_api") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "api_arn": "ApiArn", + "api_id": "ApiId", + "app_id_client_regex": "AppIdClientRegex", + "auth_providers": "AuthProviders", + "auth_ttl": "AuthTTL", + "auth_type": "AuthType", + "authorizer_result_ttl_in_seconds": "AuthorizerResultTtlInSeconds", + "authorizer_uri": "AuthorizerUri", + "aws_region": "AwsRegion", + "client_id": "ClientId", + "cloudwatch_logs_role_arn": "CloudWatchLogsRoleArn", + "cognito_config": "CognitoConfig", + "connection_auth_modes": "ConnectionAuthModes", + "default_publish_auth_modes": "DefaultPublishAuthModes", + "default_subscribe_auth_modes": "DefaultSubscribeAuthModes", + "dns": "Dns", + "event_config": "EventConfig", + "iat_ttl": "IatTTL", + "identity_validation_expression": "IdentityValidationExpression", + "issuer": "Issuer", + "key": "Key", + "lambda_authorizer_config": "LambdaAuthorizerConfig", + "log_config": "LogConfig", + "log_level": "LogLevel", + "name": "Name", + "open_id_connect_config": "OpenIDConnectConfig", + "owner_contact": "OwnerContact", + "tags": "Tags", + "user_pool_id": "UserPoolId", + "value": "Value", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/api_resource_gen_test.go b/internal/aws/appsync/api_resource_gen_test.go new file mode 100644 index 0000000000..8cb6a3898e --- /dev/null +++ b/internal/aws/appsync/api_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncApi_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::Api", "awscc_appsync_api", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/appsync/api_singular_data_source_gen.go b/internal/aws/appsync/api_singular_data_source_gen.go new file mode 100644 index 0000000000..1617a0f525 --- /dev/null +++ b/internal/aws/appsync/api_singular_data_source_gen.go @@ -0,0 +1,541 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appsync_api", apiDataSource) +} + +// apiDataSource returns the Terraform awscc_appsync_api data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppSync::Api resource. +func apiDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ApiArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the AppSync Api", + // "type": "string" + // } + "api_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the AppSync Api", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ApiId + // CloudFormation resource type schema: + // + // { + // "description": "The unique identifier for the AppSync Api generated by the service", + // "type": "string" + // } + "api_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique identifier for the AppSync Api generated by the service", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Dns + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A map of DNS names for the AppSync API.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "dns": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A map of DNS names for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EventConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The configuration for an Event Api", + // "properties": { + // "AuthProviders": { + // "description": "A list of auth providers for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth provider for the AppSync API.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // }, + // "CognitoConfig": { + // "additionalProperties": false, + // "description": "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + // "properties": { + // "AppIdClientRegex": { + // "type": "string" + // }, + // "AwsRegion": { + // "type": "string" + // }, + // "UserPoolId": { + // "type": "string" + // } + // }, + // "required": [ + // "UserPoolId", + // "AwsRegion" + // ], + // "type": "object" + // }, + // "LambdaAuthorizerConfig": { + // "additionalProperties": false, + // "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "maximum": 3600, + // "minimum": 0, + // "type": "integer" + // }, + // "AuthorizerUri": { + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "type": "string" + // } + // }, + // "required": [ + // "AuthorizerUri" + // ], + // "type": "object" + // }, + // "OpenIDConnectConfig": { + // "additionalProperties": false, + // "description": "The OpenID Connect configuration.", + // "properties": { + // "AuthTTL": { + // "type": "number" + // }, + // "ClientId": { + // "type": "string" + // }, + // "IatTTL": { + // "type": "number" + // }, + // "Issuer": { + // "type": "string" + // } + // }, + // "required": [ + // "Issuer" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "AuthType" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "ConnectionAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "DefaultPublishAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "DefaultSubscribeAuthModes": { + // "description": "A list of auth modes for the AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An auth mode.", + // "properties": { + // "AuthType": { + // "description": "Security configuration for your AppSync API.", + // "enum": [ + // "AMAZON_COGNITO_USER_POOLS", + // "AWS_IAM", + // "API_KEY", + // "OPENID_CONNECT", + // "AWS_LAMBDA" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, + // "LogConfig": { + // "additionalProperties": false, + // "description": "The log config for the AppSync API.", + // "properties": { + // "CloudWatchLogsRoleArn": { + // "type": "string" + // }, + // "LogLevel": { + // "description": "Logging level for the AppSync API.", + // "enum": [ + // "NONE", + // "ERROR", + // "ALL", + // "INFO", + // "DEBUG" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "LogLevel", + // "CloudWatchLogsRoleArn" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "AuthProviders", + // "ConnectionAuthModes", + // "DefaultPublishAuthModes", + // "DefaultSubscribeAuthModes" + // ], + // "type": "object" + // } + "event_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthProviders + "auth_providers": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CognitoConfig + "cognito_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The OpenID Connect configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth providers for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ConnectionAuthModes + "connection_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DefaultPublishAuthModes + "default_publish_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DefaultSubscribeAuthModes + "default_subscribe_auth_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthType + "auth_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of auth modes for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LogConfig + "log_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudWatchLogsRoleArn + "cloudwatch_logs_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LogLevel + "log_level": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Logging level for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The log config for the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The configuration for an Event Api", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the AppSync API.", + // "maxLength": 50, + // "minLength": 1, + // "pattern": "[A-Za-z0-9_\\-\\ ]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OwnerContact + // CloudFormation resource type schema: + // + // { + // "description": "The owner contact information for an API resource.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "[A-Za-z0-9_\\-\\ \\.]+", + // "type": "string" + // } + "owner_contact": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The owner contact information for an API resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + // "properties": { + // "Key": { + // "description": "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "", + // "type": "string" + // }, + // "Value": { + // "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + // "maxLength": 256, + // "minLength": 0, + // "pattern": "^[\\s\\w+-=\\.:/@]*$", + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this AppSync API.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::AppSync::Api", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::Api").WithTerraformTypeName("awscc_appsync_api") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "api_arn": "ApiArn", + "api_id": "ApiId", + "app_id_client_regex": "AppIdClientRegex", + "auth_providers": "AuthProviders", + "auth_ttl": "AuthTTL", + "auth_type": "AuthType", + "authorizer_result_ttl_in_seconds": "AuthorizerResultTtlInSeconds", + "authorizer_uri": "AuthorizerUri", + "aws_region": "AwsRegion", + "client_id": "ClientId", + "cloudwatch_logs_role_arn": "CloudWatchLogsRoleArn", + "cognito_config": "CognitoConfig", + "connection_auth_modes": "ConnectionAuthModes", + "default_publish_auth_modes": "DefaultPublishAuthModes", + "default_subscribe_auth_modes": "DefaultSubscribeAuthModes", + "dns": "Dns", + "event_config": "EventConfig", + "iat_ttl": "IatTTL", + "identity_validation_expression": "IdentityValidationExpression", + "issuer": "Issuer", + "key": "Key", + "lambda_authorizer_config": "LambdaAuthorizerConfig", + "log_config": "LogConfig", + "log_level": "LogLevel", + "name": "Name", + "open_id_connect_config": "OpenIDConnectConfig", + "owner_contact": "OwnerContact", + "tags": "Tags", + "user_pool_id": "UserPoolId", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/api_singular_data_source_gen_test.go b/internal/aws/appsync/api_singular_data_source_gen_test.go new file mode 100644 index 0000000000..e792c877cf --- /dev/null +++ b/internal/aws/appsync/api_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncApiDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::Api", "awscc_appsync_api", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSAppSyncApiDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::Api", "awscc_appsync_api", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/bedrock/flow_version_resource_gen.go b/internal/aws/bedrock/flow_version_resource_gen.go index e90cde3767..c0716a1d6b 100644 --- a/internal/aws/bedrock/flow_version_resource_gen.go +++ b/internal/aws/bedrock/flow_version_resource_gen.go @@ -238,6 +238,24 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Knowledge base flow node configuration", // "properties": { + // "GuardrailConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for a guardrail", + // "properties": { + // "GuardrailIdentifier": { + // "description": "Identifier for the guardrail, could be the id or the arn", + // "maxLength": 2048, + // "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + // "type": "string" + // }, + // "GuardrailVersion": { + // "description": "Version of the guardrail", + // "pattern": "^(([0-9]{1,8})|(DRAFT))$", + // "type": "string" + // } + // }, + // "type": "object" + // }, // "KnowledgeBaseId": { // "description": "Identifier of the KnowledgeBase", // "maxLength": 10, @@ -245,10 +263,10 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // } // }, @@ -305,6 +323,24 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Prompt flow node configuration", // "properties": { + // "GuardrailConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for a guardrail", + // "properties": { + // "GuardrailIdentifier": { + // "description": "Identifier for the guardrail, could be the id or the arn", + // "maxLength": 2048, + // "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + // "type": "string" + // }, + // "GuardrailVersion": { + // "description": "Version of the guardrail", + // "pattern": "^(([0-9]{1,8})|(DRAFT))$", + // "type": "string" + // } + // }, + // "type": "object" + // }, // "SourceConfiguration": { // "description": "Prompt source configuration for prompt node", // "properties": { @@ -341,12 +377,6 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // "minimum": 0, // "type": "number" // }, - // "TopK": { - // "description": "Sample from the k most likely next tokens", - // "maximum": 500, - // "minimum": 0, - // "type": "number" - // }, // "TopP": { // "description": "Cumulative probability cutoff for token selection", // "maximum": 1, @@ -360,10 +390,10 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // "type": "object" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // }, // "TemplateConfiguration": { @@ -753,6 +783,23 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // Property: KnowledgeBase "knowledge_base": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailConfiguration + "guardrail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailIdentifier + "guardrail_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the guardrail, could be the id or the arn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GuardrailVersion + "guardrail_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Version of the guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for a guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: KnowledgeBaseId "knowledge_base_id": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Identifier of the KnowledgeBase", @@ -760,7 +807,7 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ @@ -805,6 +852,23 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { // Property: Prompt "prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailConfiguration + "guardrail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailIdentifier + "guardrail_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the guardrail, could be the id or the arn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GuardrailVersion + "guardrail_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Version of the guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for a guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: SourceConfiguration "source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -833,11 +897,6 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { Description: "Controls randomness, higher values increase diversity", Computed: true, }, /*END ATTRIBUTE*/ - // Property: TopK - "top_k": schema.Float64Attribute{ /*START ATTRIBUTE*/ - Description: "Sample from the k most likely next tokens", - Computed: true, - }, /*END ATTRIBUTE*/ // Property: TopP "top_p": schema.Float64Attribute{ /*START ATTRIBUTE*/ Description: "Cumulative probability cutoff for token selection", @@ -853,7 +912,7 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Computed: true, }, /*END ATTRIBUTE*/ // Property: TemplateConfiguration @@ -1200,6 +1259,9 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { "expression": "Expression", "flow_arn": "FlowArn", "flow_id": "FlowId", + "guardrail_configuration": "GuardrailConfiguration", + "guardrail_identifier": "GuardrailIdentifier", + "guardrail_version": "GuardrailVersion", "inference_configuration": "InferenceConfiguration", "inline": "Inline", "input": "Input", @@ -1236,7 +1298,6 @@ func flowVersionResource(ctx context.Context) (resource.Resource, error) { "template_configuration": "TemplateConfiguration", "template_type": "TemplateType", "text": "Text", - "top_k": "TopK", "top_p": "TopP", "type": "Type", "version": "Version", diff --git a/internal/aws/bedrock/flow_version_singular_data_source_gen.go b/internal/aws/bedrock/flow_version_singular_data_source_gen.go index 3e1394e4cd..b0efeaeae4 100644 --- a/internal/aws/bedrock/flow_version_singular_data_source_gen.go +++ b/internal/aws/bedrock/flow_version_singular_data_source_gen.go @@ -226,6 +226,24 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Knowledge base flow node configuration", // "properties": { + // "GuardrailConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for a guardrail", + // "properties": { + // "GuardrailIdentifier": { + // "description": "Identifier for the guardrail, could be the id or the arn", + // "maxLength": 2048, + // "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + // "type": "string" + // }, + // "GuardrailVersion": { + // "description": "Version of the guardrail", + // "pattern": "^(([0-9]{1,8})|(DRAFT))$", + // "type": "string" + // } + // }, + // "type": "object" + // }, // "KnowledgeBaseId": { // "description": "Identifier of the KnowledgeBase", // "maxLength": 10, @@ -233,10 +251,10 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // "type": "string" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // } // }, @@ -293,6 +311,24 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Prompt flow node configuration", // "properties": { + // "GuardrailConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for a guardrail", + // "properties": { + // "GuardrailIdentifier": { + // "description": "Identifier for the guardrail, could be the id or the arn", + // "maxLength": 2048, + // "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + // "type": "string" + // }, + // "GuardrailVersion": { + // "description": "Version of the guardrail", + // "pattern": "^(([0-9]{1,8})|(DRAFT))$", + // "type": "string" + // } + // }, + // "type": "object" + // }, // "SourceConfiguration": { // "description": "Prompt source configuration for prompt node", // "properties": { @@ -329,12 +365,6 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // "minimum": 0, // "type": "number" // }, - // "TopK": { - // "description": "Sample from the k most likely next tokens", - // "maximum": 500, - // "minimum": 0, - // "type": "number" - // }, // "TopP": { // "description": "Cumulative probability cutoff for token selection", // "maximum": 1, @@ -348,10 +378,10 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // "type": "object" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // }, // "TemplateConfiguration": { @@ -741,6 +771,23 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // Property: KnowledgeBase "knowledge_base": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailConfiguration + "guardrail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailIdentifier + "guardrail_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the guardrail, could be the id or the arn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GuardrailVersion + "guardrail_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Version of the guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for a guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: KnowledgeBaseId "knowledge_base_id": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Identifier of the KnowledgeBase", @@ -748,7 +795,7 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ @@ -793,6 +840,23 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { // Property: Prompt "prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailConfiguration + "guardrail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: GuardrailIdentifier + "guardrail_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the guardrail, could be the id or the arn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GuardrailVersion + "guardrail_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Version of the guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for a guardrail", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: SourceConfiguration "source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -821,11 +885,6 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Controls randomness, higher values increase diversity", Computed: true, }, /*END ATTRIBUTE*/ - // Property: TopK - "top_k": schema.Float64Attribute{ /*START ATTRIBUTE*/ - Description: "Sample from the k most likely next tokens", - Computed: true, - }, /*END ATTRIBUTE*/ // Property: TopP "top_p": schema.Float64Attribute{ /*START ATTRIBUTE*/ Description: "Cumulative probability cutoff for token selection", @@ -841,7 +900,7 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Computed: true, }, /*END ATTRIBUTE*/ // Property: TemplateConfiguration @@ -1151,6 +1210,9 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { "expression": "Expression", "flow_arn": "FlowArn", "flow_id": "FlowId", + "guardrail_configuration": "GuardrailConfiguration", + "guardrail_identifier": "GuardrailIdentifier", + "guardrail_version": "GuardrailVersion", "inference_configuration": "InferenceConfiguration", "inline": "Inline", "input": "Input", @@ -1187,7 +1249,6 @@ func flowVersionDataSource(ctx context.Context) (datasource.DataSource, error) { "template_configuration": "TemplateConfiguration", "template_type": "TemplateType", "text": "Text", - "top_k": "TopK", "top_p": "TopP", "type": "Type", "version": "Version", diff --git a/internal/aws/bedrock/prompt_resource_gen.go b/internal/aws/bedrock/prompt_resource_gen.go index ca0480b352..f69a9a847f 100644 --- a/internal/aws/bedrock/prompt_resource_gen.go +++ b/internal/aws/bedrock/prompt_resource_gen.go @@ -242,12 +242,6 @@ func promptResource(ctx context.Context) (resource.Resource, error) { // "minimum": 0, // "type": "number" // }, - // "TopK": { - // "description": "Sample from the k most likely next tokens", - // "maximum": 500, - // "minimum": 0, - // "type": "number" - // }, // "TopP": { // "description": "Cumulative probability cutoff for token selection", // "maximum": 1, @@ -261,10 +255,10 @@ func promptResource(ctx context.Context) (resource.Resource, error) { // "type": "object" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // }, // "Name": { @@ -350,11 +344,12 @@ func promptResource(ctx context.Context) (resource.Resource, error) { // }, // "required": [ // "Name", - // "TemplateType" + // "TemplateType", + // "TemplateConfiguration" // ], // "type": "object" // }, - // "maxItems": 3, + // "maxItems": 1, // "minItems": 0, // "type": "array" // } @@ -404,18 +399,6 @@ func promptResource(ctx context.Context) (resource.Resource, error) { float64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ - // Property: TopK - "top_k": schema.Float64Attribute{ /*START ATTRIBUTE*/ - Description: "Sample from the k most likely next tokens", - Optional: true, - Computed: true, - Validators: []validator.Float64{ /*START VALIDATORS*/ - float64validator.Between(0.000000, 500.000000), - }, /*END VALIDATORS*/ - PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ - float64planmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: TopP "top_p": schema.Float64Attribute{ /*START ATTRIBUTE*/ Description: "Cumulative probability cutoff for token selection", @@ -446,12 +429,12 @@ func promptResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 2048), - stringvalidator.RegexMatches(regexp.MustCompile("^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -578,6 +561,9 @@ func promptResource(ctx context.Context) (resource.Resource, error) { Description: "Prompt template configuration", Optional: true, Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -603,7 +589,7 @@ func promptResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.List{ /*START VALIDATORS*/ - listvalidator.SizeBetween(0, 3), + listvalidator.SizeBetween(0, 1), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), @@ -668,7 +654,6 @@ func promptResource(ctx context.Context) (resource.Resource, error) { "template_type": "TemplateType", "text": "Text", "text_s3_location": "TextS3Location", - "top_k": "TopK", "top_p": "TopP", "updated_at": "UpdatedAt", "variants": "Variants", diff --git a/internal/aws/bedrock/prompt_singular_data_source_gen.go b/internal/aws/bedrock/prompt_singular_data_source_gen.go index 13d4524baf..4ded18f3f0 100644 --- a/internal/aws/bedrock/prompt_singular_data_source_gen.go +++ b/internal/aws/bedrock/prompt_singular_data_source_gen.go @@ -189,12 +189,6 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { // "minimum": 0, // "type": "number" // }, - // "TopK": { - // "description": "Sample from the k most likely next tokens", - // "maximum": 500, - // "minimum": 0, - // "type": "number" - // }, // "TopP": { // "description": "Cumulative probability cutoff for token selection", // "maximum": 1, @@ -208,10 +202,10 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { // "type": "object" // }, // "ModelId": { - // "description": "ARN or name of a Bedrock model.", + // "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", // "type": "string" // }, // "Name": { @@ -297,11 +291,12 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "required": [ // "Name", - // "TemplateType" + // "TemplateType", + // "TemplateConfiguration" // ], // "type": "object" // }, - // "maxItems": 3, + // "maxItems": 1, // "minItems": 0, // "type": "array" // } @@ -330,11 +325,6 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Controls randomness, higher values increase diversity", Computed: true, }, /*END ATTRIBUTE*/ - // Property: TopK - "top_k": schema.Float64Attribute{ /*START ATTRIBUTE*/ - Description: "Sample from the k most likely next tokens", - Computed: true, - }, /*END ATTRIBUTE*/ // Property: TopP "top_p": schema.Float64Attribute{ /*START ATTRIBUTE*/ Description: "Cumulative probability cutoff for token selection", @@ -350,7 +340,7 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END ATTRIBUTE*/ // Property: ModelId "model_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "ARN or name of a Bedrock model.", + Description: "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Name @@ -474,7 +464,6 @@ func promptDataSource(ctx context.Context) (datasource.DataSource, error) { "template_type": "TemplateType", "text": "Text", "text_s3_location": "TextS3Location", - "top_k": "TopK", "top_p": "TopP", "updated_at": "UpdatedAt", "variants": "Variants", diff --git a/internal/aws/codepipeline/pipeline_resource_gen.go b/internal/aws/codepipeline/pipeline_resource_gen.go index bd5d2fb390..4bb3e9b8bc 100644 --- a/internal/aws/codepipeline/pipeline_resource_gen.go +++ b/internal/aws/codepipeline/pipeline_resource_gen.go @@ -849,9 +849,25 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { // "Result": { // "description": "The specified result for when the failure conditions are met, such as rolling back the stage", // "enum": [ - // "ROLLBACK" + // "ROLLBACK", + // "RETRY" // ], // "type": "string" + // }, + // "RetryConfiguration": { + // "additionalProperties": false, + // "description": "The configuration that specifies the retry configuration for a stage", + // "properties": { + // "RetryMode": { + // "description": "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + // "enum": [ + // "ALL_ACTIONS", + // "FAILED_ACTIONS" + // ], + // "type": "string" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -1537,12 +1553,39 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "ROLLBACK", + "RETRY", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: RetryConfiguration + "retry_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RetryMode + "retry_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ALL_ACTIONS", + "FAILED_ACTIONS", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The configuration that specifies the retry configuration for a stage", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The method to use when a stage has not completed successfully", Optional: true, @@ -2408,6 +2451,8 @@ func pipelineResource(ctx context.Context) (resource.Resource, error) { "region": "Region", "restart_execution_on_update": "RestartExecutionOnUpdate", "result": "Result", + "retry_configuration": "RetryConfiguration", + "retry_mode": "RetryMode", "role_arn": "RoleArn", "rule_type_id": "RuleTypeId", "rules": "Rules", diff --git a/internal/aws/codepipeline/pipeline_singular_data_source_gen.go b/internal/aws/codepipeline/pipeline_singular_data_source_gen.go index 2bf717b005..2fc5905939 100644 --- a/internal/aws/codepipeline/pipeline_singular_data_source_gen.go +++ b/internal/aws/codepipeline/pipeline_singular_data_source_gen.go @@ -686,9 +686,25 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { // "Result": { // "description": "The specified result for when the failure conditions are met, such as rolling back the stage", // "enum": [ - // "ROLLBACK" + // "ROLLBACK", + // "RETRY" // ], // "type": "string" + // }, + // "RetryConfiguration": { + // "additionalProperties": false, + // "description": "The configuration that specifies the retry configuration for a stage", + // "properties": { + // "RetryMode": { + // "description": "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + // "enum": [ + // "ALL_ACTIONS", + // "FAILED_ACTIONS" + // ], + // "type": "string" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -1114,6 +1130,18 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The specified result for when the failure conditions are met, such as rolling back the stage", Computed: true, }, /*END ATTRIBUTE*/ + // Property: RetryConfiguration + "retry_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RetryMode + "retry_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The configuration that specifies the retry configuration for a stage", + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The method to use when a stage has not completed successfully", Computed: true, @@ -1710,6 +1738,8 @@ func pipelineDataSource(ctx context.Context) (datasource.DataSource, error) { "region": "Region", "restart_execution_on_update": "RestartExecutionOnUpdate", "result": "Result", + "retry_configuration": "RetryConfiguration", + "retry_mode": "RetryMode", "role_arn": "RoleArn", "rule_type_id": "RuleTypeId", "rules": "Rules", diff --git a/internal/aws/connect/contact_flow_resource_gen.go b/internal/aws/connect/contact_flow_resource_gen.go index 5acd7c2a8f..9aeaa1a14d 100644 --- a/internal/aws/connect/contact_flow_resource_gen.go +++ b/internal/aws/connect/contact_flow_resource_gen.go @@ -229,7 +229,8 @@ func contactFlowResource(ctx context.Context) (resource.Resource, error) { // "AGENT_WHISPER", // "OUTBOUND_WHISPER", // "AGENT_TRANSFER", - // "QUEUE_TRANSFER" + // "QUEUE_TRANSFER", + // "CAMPAIGN" // ], // "type": "string" // } @@ -247,6 +248,7 @@ func contactFlowResource(ctx context.Context) (resource.Resource, error) { "OUTBOUND_WHISPER", "AGENT_TRANSFER", "QUEUE_TRANSFER", + "CAMPAIGN", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/connect/contact_flow_singular_data_source_gen.go b/internal/aws/connect/contact_flow_singular_data_source_gen.go index 1c28d4caec..ccd682597b 100644 --- a/internal/aws/connect/contact_flow_singular_data_source_gen.go +++ b/internal/aws/connect/contact_flow_singular_data_source_gen.go @@ -168,7 +168,8 @@ func contactFlowDataSource(ctx context.Context) (datasource.DataSource, error) { // "AGENT_WHISPER", // "OUTBOUND_WHISPER", // "AGENT_TRANSFER", - // "QUEUE_TRANSFER" + // "QUEUE_TRANSFER", + // "CAMPAIGN" // ], // "type": "string" // } diff --git a/internal/aws/dms/data_migration_plural_data_source_gen.go b/internal/aws/dms/data_migration_plural_data_source_gen.go new file mode 100644 index 0000000000..430664ca2b --- /dev/null +++ b/internal/aws/dms/data_migration_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_dms_data_migrations", dataMigrationsDataSource) +} + +// dataMigrationsDataSource returns the Terraform awscc_dms_data_migrations data source. +// This Terraform data source corresponds to the CloudFormation AWS::DMS::DataMigration resource. +func dataMigrationsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::DMS::DataMigration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::DataMigration").WithTerraformTypeName("awscc_dms_data_migrations") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/data_migration_plural_data_source_gen_test.go b/internal/aws/dms/data_migration_plural_data_source_gen_test.go new file mode 100644 index 0000000000..126aee1818 --- /dev/null +++ b/internal/aws/dms/data_migration_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package dms_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSDataMigrationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::DataMigration", "awscc_dms_data_migrations", "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/dms/data_migration_resource_gen.go b/internal/aws/dms/data_migration_resource_gen.go new file mode 100644 index 0000000000..a62b00148d --- /dev/null +++ b/internal/aws/dms/data_migration_resource_gen.go @@ -0,0 +1,449 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_dms_data_migration", dataMigrationResource) +} + +// dataMigrationResource returns the Terraform awscc_dms_data_migration resource. +// This Terraform resource corresponds to the CloudFormation AWS::DMS::DataMigration resource. +func dataMigrationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataMigrationArn + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an ARN of the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an ARN of the data migration.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataMigrationCreateTime + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the create time of the data migration.", + // "maxLength": 40, + // "minLength": 1, + // "type": "string" + // } + "data_migration_create_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes the create time of the data migration.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataMigrationIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an ARN of the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an ARN of the data migration.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 300), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // DataMigrationIdentifier is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: DataMigrationName + // CloudFormation resource type schema: + // + // { + // "description": "The property describes a name to identify the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes a name to identify the data migration.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 300), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataMigrationSettings + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The property describes the settings for the data migration.", + // "properties": { + // "CloudwatchLogsEnabled": { + // "description": "The property specifies whether to enable the Cloudwatch log.", + // "type": "boolean" + // }, + // "NumberOfJobs": { + // "description": "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + // "maximum": 50, + // "minimum": 1, + // "type": "integer" + // }, + // "SelectionRules": { + // "description": "The property specifies the rules of selecting objects for data migration.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "data_migration_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudwatchLogsEnabled + "cloudwatch_logs_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "The property specifies whether to enable the Cloudwatch log.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NumberOfJobs + "number_of_jobs": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.Between(1, 50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SelectionRules + "selection_rules": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property specifies the rules of selecting objects for data migration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The property describes the settings for the data migration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataMigrationType + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the type of migration.", + // "enum": [ + // "full-load", + // "cdc", + // "full-load-and-cdc" + // ], + // "type": "string" + // } + "data_migration_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes the type of migration.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "full-load", + "cdc", + "full-load-and-cdc", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: MigrationProjectIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + // "maxLength": 255, + // "minLength": 1, + // "type": "string" + // } + "migration_project_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 255), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: ServiceAccessRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "The property describes Amazon Resource Name (ARN) of the service access role.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "service_access_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes Amazon Resource Name (ARN) of the service access role.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 300), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: SourceDataSettings + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the settings for the data migration.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "CDCStartPosition": { + // "description": "The property is a point in the database engine's log that defines a time where you can begin CDC.", + // "maxLength": 40, + // "type": "string" + // }, + // "CDCStartTime": { + // "description": "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + // "maxLength": 40, + // "type": "string" + // }, + // "CDCStopTime": { + // "description": "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + // "maxLength": 40, + // "type": "string" + // }, + // "SlotName": { + // "description": "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + // "maxLength": 255, + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "source_data_settings": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CDCStartPosition + "cdc_start_position": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property is a point in the database engine's log that defines a time where you can begin CDC.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(40), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CDCStartTime + "cdc_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(40), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CDCStopTime + "cdc_stop_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(40), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SlotName + "slot_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(255), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The property describes the settings for the data migration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource schema for AWS::DMS::DataMigration.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::DataMigration").WithTerraformTypeName("awscc_dms_data_migration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "cdc_start_position": "CDCStartPosition", + "cdc_start_time": "CDCStartTime", + "cdc_stop_time": "CDCStopTime", + "cloudwatch_logs_enabled": "CloudwatchLogsEnabled", + "data_migration_arn": "DataMigrationArn", + "data_migration_create_time": "DataMigrationCreateTime", + "data_migration_identifier": "DataMigrationIdentifier", + "data_migration_name": "DataMigrationName", + "data_migration_settings": "DataMigrationSettings", + "data_migration_type": "DataMigrationType", + "key": "Key", + "migration_project_identifier": "MigrationProjectIdentifier", + "number_of_jobs": "NumberOfJobs", + "selection_rules": "SelectionRules", + "service_access_role_arn": "ServiceAccessRoleArn", + "slot_name": "SlotName", + "source_data_settings": "SourceDataSettings", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/DataMigrationIdentifier", + }) + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/data_migration_resource_gen_test.go b/internal/aws/dms/data_migration_resource_gen_test.go new file mode 100644 index 0000000000..9664e7d529 --- /dev/null +++ b/internal/aws/dms/data_migration_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package dms_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSDataMigration_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::DataMigration", "awscc_dms_data_migration", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/dms/data_migration_singular_data_source_gen.go b/internal/aws/dms/data_migration_singular_data_source_gen.go new file mode 100644 index 0000000000..974504876c --- /dev/null +++ b/internal/aws/dms/data_migration_singular_data_source_gen.go @@ -0,0 +1,322 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_dms_data_migration", dataMigrationDataSource) +} + +// dataMigrationDataSource returns the Terraform awscc_dms_data_migration data source. +// This Terraform data source corresponds to the CloudFormation AWS::DMS::DataMigration resource. +func dataMigrationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataMigrationArn + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an ARN of the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an ARN of the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataMigrationCreateTime + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the create time of the data migration.", + // "maxLength": 40, + // "minLength": 1, + // "type": "string" + // } + "data_migration_create_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes the create time of the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataMigrationIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an ARN of the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an ARN of the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataMigrationName + // CloudFormation resource type schema: + // + // { + // "description": "The property describes a name to identify the data migration.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "data_migration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes a name to identify the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataMigrationSettings + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The property describes the settings for the data migration.", + // "properties": { + // "CloudwatchLogsEnabled": { + // "description": "The property specifies whether to enable the Cloudwatch log.", + // "type": "boolean" + // }, + // "NumberOfJobs": { + // "description": "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + // "maximum": 50, + // "minimum": 1, + // "type": "integer" + // }, + // "SelectionRules": { + // "description": "The property specifies the rules of selecting objects for data migration.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "data_migration_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudwatchLogsEnabled + "cloudwatch_logs_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "The property specifies whether to enable the Cloudwatch log.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NumberOfJobs + "number_of_jobs": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SelectionRules + "selection_rules": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property specifies the rules of selecting objects for data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The property describes the settings for the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataMigrationType + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the type of migration.", + // "enum": [ + // "full-load", + // "cdc", + // "full-load-and-cdc" + // ], + // "type": "string" + // } + "data_migration_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes the type of migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MigrationProjectIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + // "maxLength": 255, + // "minLength": 1, + // "type": "string" + // } + "migration_project_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ServiceAccessRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "The property describes Amazon Resource Name (ARN) of the service access role.", + // "maxLength": 300, + // "minLength": 1, + // "type": "string" + // } + "service_access_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property describes Amazon Resource Name (ARN) of the service access role.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceDataSettings + // CloudFormation resource type schema: + // + // { + // "description": "The property describes the settings for the data migration.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "CDCStartPosition": { + // "description": "The property is a point in the database engine's log that defines a time where you can begin CDC.", + // "maxLength": 40, + // "type": "string" + // }, + // "CDCStartTime": { + // "description": "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + // "maxLength": 40, + // "type": "string" + // }, + // "CDCStopTime": { + // "description": "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + // "maxLength": 40, + // "type": "string" + // }, + // "SlotName": { + // "description": "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + // "maxLength": 255, + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "source_data_settings": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CDCStartPosition + "cdc_start_position": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property is a point in the database engine's log that defines a time where you can begin CDC.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CDCStartTime + "cdc_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CDCStopTime + "cdc_stop_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SlotName + "slot_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The property describes the settings for the data migration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::DMS::DataMigration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::DataMigration").WithTerraformTypeName("awscc_dms_data_migration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "cdc_start_position": "CDCStartPosition", + "cdc_start_time": "CDCStartTime", + "cdc_stop_time": "CDCStopTime", + "cloudwatch_logs_enabled": "CloudwatchLogsEnabled", + "data_migration_arn": "DataMigrationArn", + "data_migration_create_time": "DataMigrationCreateTime", + "data_migration_identifier": "DataMigrationIdentifier", + "data_migration_name": "DataMigrationName", + "data_migration_settings": "DataMigrationSettings", + "data_migration_type": "DataMigrationType", + "key": "Key", + "migration_project_identifier": "MigrationProjectIdentifier", + "number_of_jobs": "NumberOfJobs", + "selection_rules": "SelectionRules", + "service_access_role_arn": "ServiceAccessRoleArn", + "slot_name": "SlotName", + "source_data_settings": "SourceDataSettings", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/data_migration_singular_data_source_gen_test.go b/internal/aws/dms/data_migration_singular_data_source_gen_test.go new file mode 100644 index 0000000000..ec999d8d11 --- /dev/null +++ b/internal/aws/dms/data_migration_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package dms_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSDataMigrationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::DataMigration", "awscc_dms_data_migration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSDMSDataMigrationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::DataMigration", "awscc_dms_data_migration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/eip_resource_gen.go b/internal/aws/ec2/eip_resource_gen.go index e82ee72a43..d4ee376b9c 100644 --- a/internal/aws/ec2/eip_resource_gen.go +++ b/internal/aws/ec2/eip_resource_gen.go @@ -27,6 +27,23 @@ func init() { // This Terraform resource corresponds to the CloudFormation AWS::EC2::EIP resource. func eIPResource(ctx context.Context) (resource.Resource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Address + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // Address is a write-only property. + }, /*END ATTRIBUTE*/ // Property: AllocationId // CloudFormation resource type schema: // @@ -72,6 +89,23 @@ func eIPResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: IpamPoolId + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "ipam_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // IpamPoolId is a write-only property. + }, /*END ATTRIBUTE*/ // Property: NetworkBorderGroup // CloudFormation resource type schema: // @@ -221,9 +255,11 @@ func eIPResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::EC2::EIP").WithTerraformTypeName("awscc_ec2_eip") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ + "address": "Address", "allocation_id": "AllocationId", "domain": "Domain", "instance_id": "InstanceId", + "ipam_pool_id": "IpamPoolId", "key": "Key", "network_border_group": "NetworkBorderGroup", "public_ip": "PublicIp", @@ -235,6 +271,8 @@ func eIPResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/ec2/eip_singular_data_source_gen.go b/internal/aws/ec2/eip_singular_data_source_gen.go index ed996112c4..c488d624e2 100644 --- a/internal/aws/ec2/eip_singular_data_source_gen.go +++ b/internal/aws/ec2/eip_singular_data_source_gen.go @@ -22,6 +22,17 @@ func init() { // This Terraform data source corresponds to the CloudFormation AWS::EC2::EIP resource. func eIPDataSource(ctx context.Context) (datasource.DataSource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Address + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: AllocationId // CloudFormation resource type schema: // @@ -55,6 +66,17 @@ func eIPDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The ID of the instance.\n Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: IpamPoolId + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "ipam_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: NetworkBorderGroup // CloudFormation resource type schema: // @@ -162,9 +184,11 @@ func eIPDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithCloudFormationTypeName("AWS::EC2::EIP").WithTerraformTypeName("awscc_ec2_eip") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ + "address": "Address", "allocation_id": "AllocationId", "domain": "Domain", "instance_id": "InstanceId", + "ipam_pool_id": "IpamPoolId", "key": "Key", "network_border_group": "NetworkBorderGroup", "public_ip": "PublicIp", diff --git a/internal/aws/events/api_destination_resource_gen.go b/internal/aws/events/api_destination_resource_gen.go index 6149d32d5c..61372a4a94 100644 --- a/internal/aws/events/api_destination_resource_gen.go +++ b/internal/aws/events/api_destination_resource_gen.go @@ -7,6 +7,7 @@ package events import ( "context" + "regexp" "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" @@ -33,6 +34,7 @@ func apiDestinationResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The arn of the api destination.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -47,11 +49,15 @@ func apiDestinationResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The arn of the connection.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", // "type": "string" // } "connection_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The arn of the connection.", Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$"), ""), + }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: @@ -104,11 +110,15 @@ func apiDestinationResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "Url endpoint to invoke.", + // "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", // "type": "string" // } "invocation_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Url endpoint to invoke.", Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$"), ""), + }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ // Property: InvocationRateLimitPerSecond // CloudFormation resource type schema: @@ -134,6 +144,7 @@ func apiDestinationResource(ctx context.Context) (resource.Resource, error) { // "description": "Name of the apiDestination.", // "maxLength": 64, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -142,6 +153,7 @@ func apiDestinationResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 64), + stringvalidator.RegexMatches(regexp.MustCompile("[\\.\\-_A-Za-z0-9]+"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), diff --git a/internal/aws/events/api_destination_singular_data_source_gen.go b/internal/aws/events/api_destination_singular_data_source_gen.go index d903d1d263..7cfd2955d8 100644 --- a/internal/aws/events/api_destination_singular_data_source_gen.go +++ b/internal/aws/events/api_destination_singular_data_source_gen.go @@ -27,6 +27,7 @@ func apiDestinationDataSource(ctx context.Context) (datasource.DataSource, error // // { // "description": "The arn of the api destination.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -38,6 +39,7 @@ func apiDestinationDataSource(ctx context.Context) (datasource.DataSource, error // // { // "description": "The arn of the connection.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", // "type": "string" // } "connection_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -77,6 +79,7 @@ func apiDestinationDataSource(ctx context.Context) (datasource.DataSource, error // // { // "description": "Url endpoint to invoke.", + // "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", // "type": "string" // } "invocation_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -100,6 +103,7 @@ func apiDestinationDataSource(ctx context.Context) (datasource.DataSource, error // "description": "Name of the apiDestination.", // "maxLength": 64, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/events/archive_resource_gen.go b/internal/aws/events/archive_resource_gen.go index 97471d8283..44efc45388 100644 --- a/internal/aws/events/archive_resource_gen.go +++ b/internal/aws/events/archive_resource_gen.go @@ -7,6 +7,7 @@ package events import ( "context" + "regexp" "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" @@ -34,6 +35,7 @@ func archiveResource(ctx context.Context) (resource.Resource, error) { // { // "maxLength": 48, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "archive_name": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -41,6 +43,7 @@ func archiveResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 48), + stringvalidator.RegexMatches(regexp.MustCompile("[\\.\\-_A-Za-z0-9]+"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -51,6 +54,7 @@ func archiveResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:.+\\/.+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/events/archive_singular_data_source_gen.go b/internal/aws/events/archive_singular_data_source_gen.go index 81b806b56f..9d1d6c3a62 100644 --- a/internal/aws/events/archive_singular_data_source_gen.go +++ b/internal/aws/events/archive_singular_data_source_gen.go @@ -29,6 +29,7 @@ func archiveDataSource(ctx context.Context) (datasource.DataSource, error) { // { // "maxLength": 48, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "archive_name": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -38,6 +39,7 @@ func archiveDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:.+\\/.+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/events/connection_resource_gen.go b/internal/aws/events/connection_resource_gen.go index 9307f91b0c..c2e95f9698 100644 --- a/internal/aws/events/connection_resource_gen.go +++ b/internal/aws/events/connection_resource_gen.go @@ -7,6 +7,7 @@ package events import ( "context" + "regexp" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -36,6 +37,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The arn of the connection resource.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -72,9 +74,11 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "properties": { // "ApiKeyName": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "ApiKeyValue": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -88,9 +92,11 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "properties": { // "Password": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "Username": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -181,15 +187,18 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // "AuthorizationEndpoint": { // "maxLength": 2048, // "minLength": 1, + // "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", // "type": "string" // }, // "ClientParameters": { // "additionalProperties": false, // "properties": { // "ClientID": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "ClientSecret": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -303,6 +312,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -314,6 +324,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -335,6 +346,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -346,6 +358,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -507,6 +520,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -521,6 +535,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -532,6 +547,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -769,6 +785,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // "description": "Name of the connection.", // "maxLength": 64, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -777,6 +794,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 64), + stringvalidator.RegexMatches(regexp.MustCompile("[\\.\\-_A-Za-z0-9]+"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -788,6 +806,7 @@ func connectionResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The arn of the secrets manager secret created in the customer account.", + // "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:[\\/_+=\\.@\\-A-Za-z0-9]+$", // "type": "string" // } "secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/events/connection_singular_data_source_gen.go b/internal/aws/events/connection_singular_data_source_gen.go index 7a6ad3cf66..a6e293c87f 100644 --- a/internal/aws/events/connection_singular_data_source_gen.go +++ b/internal/aws/events/connection_singular_data_source_gen.go @@ -27,6 +27,7 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The arn of the connection resource.", + // "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -60,9 +61,11 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "properties": { // "ApiKeyName": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "ApiKeyValue": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -76,9 +79,11 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "properties": { // "Password": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "Username": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -169,15 +174,18 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // "AuthorizationEndpoint": { // "maxLength": 2048, // "minLength": 1, + // "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", // "type": "string" // }, // "ClientParameters": { // "additionalProperties": false, // "properties": { // "ClientID": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // }, // "ClientSecret": { + // "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", // "type": "string" // } // }, @@ -507,6 +515,7 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "Name of the connection.", // "maxLength": 64, // "minLength": 1, + // "pattern": "[\\.\\-_A-Za-z0-9]+", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -518,6 +527,7 @@ func connectionDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The arn of the secrets manager secret created in the customer account.", + // "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:[\\/_+=\\.@\\-A-Za-z0-9]+$", // "type": "string" // } "secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/m2/application_resource_gen.go b/internal/aws/m2/application_resource_gen.go index b42ee19d5b..1291065124 100644 --- a/internal/aws/m2/application_resource_gen.go +++ b/internal/aws/m2/application_resource_gen.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/schema/validator" @@ -94,7 +95,11 @@ func applicationResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ // Definition is a write-only property. }, /*END ATTRIBUTE*/ // Property: Description diff --git a/internal/aws/m2/environment_resource_gen.go b/internal/aws/m2/environment_resource_gen.go index 2e202244d6..4d860f9d74 100644 --- a/internal/aws/m2/environment_resource_gen.go +++ b/internal/aws/m2/environment_resource_gen.go @@ -527,9 +527,9 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { "tags": "Tags", }) - opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + opts = opts.WithCreateTimeoutInMinutes(60).WithDeleteTimeoutInMinutes(60) - opts = opts.WithUpdateTimeoutInMinutes(0) + opts = opts.WithUpdateTimeoutInMinutes(60) v, err := generic.NewResource(ctx, opts...) diff --git a/internal/aws/mediapackagev2/origin_endpoint_resource_gen.go b/internal/aws/mediapackagev2/origin_endpoint_resource_gen.go index 96bef15568..0c3fe858d0 100644 --- a/internal/aws/mediapackagev2/origin_endpoint_resource_gen.go +++ b/internal/aws/mediapackagev2/origin_endpoint_resource_gen.go @@ -16,6 +16,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" @@ -159,6 +160,11 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -293,6 +299,16 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -612,6 +628,11 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -665,6 +686,24 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "StartTag": { + // "additionalProperties": false, + // "description": "\u003cp\u003eTo insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.\u003c/p\u003e", + // "properties": { + // "Precise": { + // "description": "\u003cp\u003eSpecify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.\u003c/p\u003e", + // "type": "boolean" + // }, + // "TimeOffset": { + // "description": "\u003cp\u003eSpecify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "required": [ + // "TimeOffset" + // ], + // "type": "object" + // }, // "Url": { // "description": "\u003cp\u003eThe egress domain URL for stream delivery from MediaPackage.\u003c/p\u003e", // "type": "string" @@ -696,6 +735,16 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -804,6 +853,38 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: StartTag + "start_tag": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Precise + "precise": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TimeOffset + "time_offset": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
", + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Url "url": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The egress domain URL for stream delivery from MediaPackage.
", @@ -858,6 +939,11 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -911,6 +997,24 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "StartTag": { + // "additionalProperties": false, + // "description": "\u003cp\u003eTo insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.\u003c/p\u003e", + // "properties": { + // "Precise": { + // "description": "\u003cp\u003eSpecify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.\u003c/p\u003e", + // "type": "boolean" + // }, + // "TimeOffset": { + // "description": "\u003cp\u003eSpecify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "required": [ + // "TimeOffset" + // ], + // "type": "object" + // }, // "Url": { // "description": "\u003cp\u003eThe egress domain URL for stream delivery from MediaPackage.\u003c/p\u003e", // "type": "string" @@ -942,6 +1046,16 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -1050,6 +1164,38 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: StartTag + "start_tag": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Precise + "precise": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TimeOffset + "time_offset": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
", + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Url "url": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The egress domain URL for stream delivery from MediaPackage.
", @@ -1699,6 +1845,7 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { "channel_group_name": "ChannelGroupName", "channel_name": "ChannelName", "child_manifest_name": "ChildManifestName", + "clip_start_time": "ClipStartTime", "cmaf_encryption_method": "CmafEncryptionMethod", "constant_initialization_vector": "ConstantInitializationVector", "container_type": "ContainerType", @@ -1730,6 +1877,7 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { "modified_at": "ModifiedAt", "origin_endpoint_name": "OriginEndpointName", "period_triggers": "PeriodTriggers", + "precise": "Precise", "preset_speke_20_audio": "PresetSpeke20Audio", "preset_speke_20_video": "PresetSpeke20Video", "program_date_time_interval_seconds": "ProgramDateTimeIntervalSeconds", @@ -1745,10 +1893,12 @@ func originEndpointResource(ctx context.Context) (resource.Resource, error) { "segment_template_format": "SegmentTemplateFormat", "speke_key_provider": "SpekeKeyProvider", "start": "Start", + "start_tag": "StartTag", "startover_window_seconds": "StartoverWindowSeconds", "suggested_presentation_delay_seconds": "SuggestedPresentationDelaySeconds", "tags": "Tags", "time_delay_seconds": "TimeDelaySeconds", + "time_offset": "TimeOffset", "timing_mode": "TimingMode", "timing_source": "TimingSource", "ts_encryption_method": "TsEncryptionMethod", diff --git a/internal/aws/mediapackagev2/origin_endpoint_singular_data_source_gen.go b/internal/aws/mediapackagev2/origin_endpoint_singular_data_source_gen.go index 043b078f1d..5dfa8684b5 100644 --- a/internal/aws/mediapackagev2/origin_endpoint_singular_data_source_gen.go +++ b/internal/aws/mediapackagev2/origin_endpoint_singular_data_source_gen.go @@ -118,6 +118,11 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -242,6 +247,12 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -416,6 +427,11 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -469,6 +485,24 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // }, // "type": "object" // }, + // "StartTag": { + // "additionalProperties": false, + // "description": "\u003cp\u003eTo insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.\u003c/p\u003e", + // "properties": { + // "Precise": { + // "description": "\u003cp\u003eSpecify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.\u003c/p\u003e", + // "type": "boolean" + // }, + // "TimeOffset": { + // "description": "\u003cp\u003eSpecify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "required": [ + // "TimeOffset" + // ], + // "type": "object" + // }, // "Url": { // "description": "\u003cp\u003eThe egress domain URL for stream delivery from MediaPackage.\u003c/p\u003e", // "type": "string" @@ -492,6 +526,12 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -544,6 +584,23 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error Description: "The SCTE configuration.
", Computed: true, }, /*END ATTRIBUTE*/ + // Property: StartTag + "start_tag": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Precise + "precise": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TimeOffset + "time_offset": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Url "url": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The egress domain URL for stream delivery from MediaPackage.
", @@ -587,6 +644,11 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // "additionalProperties": false, // "description": "\u003cp\u003eFilter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. \u003c/p\u003e", // "properties": { + // "ClipStartTime": { + // "description": "\u003cp\u003eOptionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.\u003c/p\u003e", + // "format": "date-time", + // "type": "string" + // }, // "End": { // "description": "\u003cp\u003eOptionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.\u003c/p\u003e", // "format": "date-time", @@ -640,6 +702,24 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // }, // "type": "object" // }, + // "StartTag": { + // "additionalProperties": false, + // "description": "\u003cp\u003eTo insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.\u003c/p\u003e", + // "properties": { + // "Precise": { + // "description": "\u003cp\u003eSpecify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.\u003c/p\u003e", + // "type": "boolean" + // }, + // "TimeOffset": { + // "description": "\u003cp\u003eSpecify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "required": [ + // "TimeOffset" + // ], + // "type": "object" + // }, // "Url": { // "description": "\u003cp\u003eThe egress domain URL for stream delivery from MediaPackage.\u003c/p\u003e", // "type": "string" @@ -663,6 +743,12 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error // Property: FilterConfiguration "filter_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ClipStartTime + "clip_start_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: timetypes.RFC3339Type{}, + Description: "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: End "end": schema.StringAttribute{ /*START ATTRIBUTE*/ CustomType: timetypes.RFC3339Type{}, @@ -715,6 +801,23 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error Description: "The SCTE configuration.
", Computed: true, }, /*END ATTRIBUTE*/ + // Property: StartTag + "start_tag": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Precise + "precise": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TimeOffset + "time_offset": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Url "url": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The egress domain URL for stream delivery from MediaPackage.
", @@ -1131,6 +1234,7 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error "channel_group_name": "ChannelGroupName", "channel_name": "ChannelName", "child_manifest_name": "ChildManifestName", + "clip_start_time": "ClipStartTime", "cmaf_encryption_method": "CmafEncryptionMethod", "constant_initialization_vector": "ConstantInitializationVector", "container_type": "ContainerType", @@ -1162,6 +1266,7 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error "modified_at": "ModifiedAt", "origin_endpoint_name": "OriginEndpointName", "period_triggers": "PeriodTriggers", + "precise": "Precise", "preset_speke_20_audio": "PresetSpeke20Audio", "preset_speke_20_video": "PresetSpeke20Video", "program_date_time_interval_seconds": "ProgramDateTimeIntervalSeconds", @@ -1177,10 +1282,12 @@ func originEndpointDataSource(ctx context.Context) (datasource.DataSource, error "segment_template_format": "SegmentTemplateFormat", "speke_key_provider": "SpekeKeyProvider", "start": "Start", + "start_tag": "StartTag", "startover_window_seconds": "StartoverWindowSeconds", "suggested_presentation_delay_seconds": "SuggestedPresentationDelaySeconds", "tags": "Tags", "time_delay_seconds": "TimeDelaySeconds", + "time_offset": "TimeOffset", "timing_mode": "TimingMode", "timing_source": "TimingSource", "ts_encryption_method": "TsEncryptionMethod", diff --git a/internal/aws/mwaa/environment_resource_gen.go b/internal/aws/mwaa/environment_resource_gen.go index e9159af8df..60847397da 100644 --- a/internal/aws/mwaa/environment_resource_gen.go +++ b/internal/aws/mwaa/environment_resource_gen.go @@ -624,7 +624,7 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "Maximum webserver compute units.", - // "minimum": 2, + // "minimum": 1, // "type": "integer" // } "max_webservers": schema.Int64Attribute{ /*START ATTRIBUTE*/ @@ -632,7 +632,7 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.AtLeast(2), + int64validator.AtLeast(1), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), @@ -662,7 +662,7 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "Minimum webserver compute units.", - // "minimum": 2, + // "minimum": 1, // "type": "integer" // } "min_webservers": schema.Int64Attribute{ /*START ATTRIBUTE*/ @@ -670,7 +670,7 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.AtLeast(2), + int64validator.AtLeast(1), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), diff --git a/internal/aws/mwaa/environment_singular_data_source_gen.go b/internal/aws/mwaa/environment_singular_data_source_gen.go index abf3bc2b0b..e82982af73 100644 --- a/internal/aws/mwaa/environment_singular_data_source_gen.go +++ b/internal/aws/mwaa/environment_singular_data_source_gen.go @@ -425,7 +425,7 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "Maximum webserver compute units.", - // "minimum": 2, + // "minimum": 1, // "type": "integer" // } "max_webservers": schema.Int64Attribute{ /*START ATTRIBUTE*/ @@ -449,7 +449,7 @@ func environmentDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "Minimum webserver compute units.", - // "minimum": 2, + // "minimum": 1, // "type": "integer" // } "min_webservers": schema.Int64Attribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/networkfirewall/firewall_policy_resource_gen.go b/internal/aws/networkfirewall/firewall_policy_resource_gen.go index 2ae1067137..c5be199511 100644 --- a/internal/aws/networkfirewall/firewall_policy_resource_gen.go +++ b/internal/aws/networkfirewall/firewall_policy_resource_gen.go @@ -105,7 +105,7 @@ func firewallPolicyResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "properties": { // "TcpIdleTimeoutSeconds": { - // "maximum": 600, + // "maximum": 6000, // "minimum": 60, // "type": "integer" // } @@ -341,7 +341,7 @@ func firewallPolicyResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.Between(60, 600), + int64validator.Between(60, 6000), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), diff --git a/internal/aws/networkfirewall/firewall_policy_singular_data_source_gen.go b/internal/aws/networkfirewall/firewall_policy_singular_data_source_gen.go index c01505a0c9..9cbbbeb151 100644 --- a/internal/aws/networkfirewall/firewall_policy_singular_data_source_gen.go +++ b/internal/aws/networkfirewall/firewall_policy_singular_data_source_gen.go @@ -84,7 +84,7 @@ func firewallPolicyDataSource(ctx context.Context) (datasource.DataSource, error // "additionalProperties": false, // "properties": { // "TcpIdleTimeoutSeconds": { - // "maximum": 600, + // "maximum": 6000, // "minimum": 60, // "type": "integer" // } diff --git a/internal/aws/opensearchservice/application_plural_data_source_gen.go b/internal/aws/opensearchservice/application_plural_data_source_gen.go new file mode 100644 index 0000000000..61cda47a0e --- /dev/null +++ b/internal/aws/opensearchservice/application_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package opensearchservice + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_opensearchservice_applications", applicationsDataSource) +} + +// applicationsDataSource returns the Terraform awscc_opensearchservice_applications data source. +// This Terraform data source corresponds to the CloudFormation AWS::OpenSearchService::Application resource. +func applicationsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::OpenSearchService::Application", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::OpenSearchService::Application").WithTerraformTypeName("awscc_opensearchservice_applications") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/opensearchservice/application_plural_data_source_gen_test.go b/internal/aws/opensearchservice/application_plural_data_source_gen_test.go new file mode 100644 index 0000000000..5aa874f8ca --- /dev/null +++ b/internal/aws/opensearchservice/application_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package opensearchservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSOpenSearchServiceApplicationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::OpenSearchService::Application", "awscc_opensearchservice_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/opensearchservice/application_resource_gen.go b/internal/aws/opensearchservice/application_resource_gen.go new file mode 100644 index 0000000000..29e124527b --- /dev/null +++ b/internal/aws/opensearchservice/application_resource_gen.go @@ -0,0 +1,417 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package opensearchservice + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_opensearchservice_application", applicationResource) +} + +// applicationResource returns the Terraform awscc_opensearchservice_application resource. +// This Terraform resource corresponds to the CloudFormation AWS::OpenSearchService::Application resource. +func applicationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppConfigs + // CloudFormation resource type schema: + // + // { + // "description": "List of application configurations.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair of AppConfig", + // "properties": { + // "Key": { + // "description": "The configuration key", + // "enum": [ + // "opensearchDashboards.dashboardAdmin.users", + // "opensearchDashboards.dashboardAdmin.groups" + // ], + // "type": "string" + // }, + // "Value": { + // "description": "The configuration value.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "app_configs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration key", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "opensearchDashboards.dashboardAdmin.users", + "opensearchDashboards.dashboardAdmin.groups", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration value.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of application configurations.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Amazon Resource Name (ARN) format.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Amazon Resource Name (ARN) format.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataSources + // CloudFormation resource type schema: + // + // { + // "description": "List of data sources.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Datasource arn and description", + // "properties": { + // "DataSourceArn": { + // "description": "The ARN of the data source.", + // "type": "string" + // }, + // "DataSourceDescription": { + // "description": "Description of the data source.", + // "type": "string" + // } + // }, + // "required": [ + // "DataSourceArn" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "data_sources": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataSourceArn + "data_source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the data source.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DataSourceDescription + "data_source_description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description of the data source.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of data sources.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Endpoint + // CloudFormation resource type schema: + // + // { + // "description": "The endpoint for the application.", + // "type": "string" + // } + "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint for the application.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IamIdentityCenterOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Options for configuring IAM Identity Center", + // "properties": { + // "Enabled": { + // "description": "Whether IAM Identity Center is enabled.", + // "type": "boolean" + // }, + // "IamIdentityCenterInstanceArn": { + // "description": "The ARN of the IAM Identity Center instance.", + // "type": "string" + // }, + // "IamRoleForIdentityCenterApplicationArn": { + // "description": "The ARN of the IAM role for Identity Center application.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "iam_identity_center_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether IAM Identity Center is enabled.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IamIdentityCenterInstanceArn + "iam_identity_center_instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the IAM Identity Center instance.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IamRoleForIdentityCenterApplicationArn + "iam_role_for_identity_center_application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the IAM role for Identity Center application.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Options for configuring IAM Identity Center", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the application.", + // "maxLength": 40, + // "minLength": 3, + // "type": "string" + // } + "application_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the application.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the application.", + // "maxLength": 40, + // "minLength": 3, + // "pattern": "[a-z][a-z0-9\\-]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the application.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(3, 40), + stringvalidator.RegexMatches(regexp.MustCompile("[a-z][a-z0-9\\-]+"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this application.", + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair metadata associated with resource", + // "properties": { + // "Key": { + // "description": "The key in the key-value pair", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value in the key-value pair", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key in the key-value pair", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value in the key-value pair", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this application.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Amazon OpenSearchService application resource", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::OpenSearchService::Application").WithTerraformTypeName("awscc_opensearchservice_application") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "app_configs": "AppConfigs", + "application_id": "Id", + "arn": "Arn", + "data_source_arn": "DataSourceArn", + "data_source_description": "DataSourceDescription", + "data_sources": "DataSources", + "enabled": "Enabled", + "endpoint": "Endpoint", + "iam_identity_center_instance_arn": "IamIdentityCenterInstanceArn", + "iam_identity_center_options": "IamIdentityCenterOptions", + "iam_role_for_identity_center_application_arn": "IamRoleForIdentityCenterApplicationArn", + "key": "Key", + "name": "Name", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/opensearchservice/application_resource_gen_test.go b/internal/aws/opensearchservice/application_resource_gen_test.go new file mode 100644 index 0000000000..f0ca2f9af2 --- /dev/null +++ b/internal/aws/opensearchservice/application_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package opensearchservice_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSOpenSearchServiceApplication_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::OpenSearchService::Application", "awscc_opensearchservice_application", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/opensearchservice/application_singular_data_source_gen.go b/internal/aws/opensearchservice/application_singular_data_source_gen.go new file mode 100644 index 0000000000..4a56744fda --- /dev/null +++ b/internal/aws/opensearchservice/application_singular_data_source_gen.go @@ -0,0 +1,302 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package opensearchservice + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_opensearchservice_application", applicationDataSource) +} + +// applicationDataSource returns the Terraform awscc_opensearchservice_application data source. +// This Terraform data source corresponds to the CloudFormation AWS::OpenSearchService::Application resource. +func applicationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppConfigs + // CloudFormation resource type schema: + // + // { + // "description": "List of application configurations.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair of AppConfig", + // "properties": { + // "Key": { + // "description": "The configuration key", + // "enum": [ + // "opensearchDashboards.dashboardAdmin.users", + // "opensearchDashboards.dashboardAdmin.groups" + // ], + // "type": "string" + // }, + // "Value": { + // "description": "The configuration value.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "app_configs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration key", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration value.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of application configurations.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Amazon Resource Name (ARN) format.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Amazon Resource Name (ARN) format.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataSources + // CloudFormation resource type schema: + // + // { + // "description": "List of data sources.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Datasource arn and description", + // "properties": { + // "DataSourceArn": { + // "description": "The ARN of the data source.", + // "type": "string" + // }, + // "DataSourceDescription": { + // "description": "Description of the data source.", + // "type": "string" + // } + // }, + // "required": [ + // "DataSourceArn" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "data_sources": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataSourceArn + "data_source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the data source.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DataSourceDescription + "data_source_description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description of the data source.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of data sources.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Endpoint + // CloudFormation resource type schema: + // + // { + // "description": "The endpoint for the application.", + // "type": "string" + // } + "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint for the application.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IamIdentityCenterOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Options for configuring IAM Identity Center", + // "properties": { + // "Enabled": { + // "description": "Whether IAM Identity Center is enabled.", + // "type": "boolean" + // }, + // "IamIdentityCenterInstanceArn": { + // "description": "The ARN of the IAM Identity Center instance.", + // "type": "string" + // }, + // "IamRoleForIdentityCenterApplicationArn": { + // "description": "The ARN of the IAM role for Identity Center application.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "iam_identity_center_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether IAM Identity Center is enabled.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IamIdentityCenterInstanceArn + "iam_identity_center_instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the IAM Identity Center instance.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IamRoleForIdentityCenterApplicationArn + "iam_role_for_identity_center_application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the IAM role for Identity Center application.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Options for configuring IAM Identity Center", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the application.", + // "maxLength": 40, + // "minLength": 3, + // "type": "string" + // } + "application_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the application.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the application.", + // "maxLength": 40, + // "minLength": 3, + // "pattern": "[a-z][a-z0-9\\-]+", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the application.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this application.", + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair metadata associated with resource", + // "properties": { + // "Key": { + // "description": "The key in the key-value pair", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value in the key-value pair", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key in the key-value pair", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value in the key-value pair", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this application.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::OpenSearchService::Application", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::OpenSearchService::Application").WithTerraformTypeName("awscc_opensearchservice_application") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "app_configs": "AppConfigs", + "application_id": "Id", + "arn": "Arn", + "data_source_arn": "DataSourceArn", + "data_source_description": "DataSourceDescription", + "data_sources": "DataSources", + "enabled": "Enabled", + "endpoint": "Endpoint", + "iam_identity_center_instance_arn": "IamIdentityCenterInstanceArn", + "iam_identity_center_options": "IamIdentityCenterOptions", + "iam_role_for_identity_center_application_arn": "IamRoleForIdentityCenterApplicationArn", + "key": "Key", + "name": "Name", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/opensearchservice/application_singular_data_source_gen_test.go b/internal/aws/opensearchservice/application_singular_data_source_gen_test.go new file mode 100644 index 0000000000..0edd6d806e --- /dev/null +++ b/internal/aws/opensearchservice/application_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package opensearchservice_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSOpenSearchServiceApplicationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::OpenSearchService::Application", "awscc_opensearchservice_application", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSOpenSearchServiceApplicationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::OpenSearchService::Application", "awscc_opensearchservice_application", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/opensearchservice/domain_resource_gen.go b/internal/aws/opensearchservice/domain_resource_gen.go index d44732cec8..db1da8eae0 100644 --- a/internal/aws/opensearchservice/domain_resource_gen.go +++ b/internal/aws/opensearchservice/domain_resource_gen.go @@ -928,6 +928,124 @@ func domainResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: IdentityCenterOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Options for configuring Identity Center", + // "properties": { + // "EnabledAPIAccess": { + // "description": "Whether Identity Center is enabled.", + // "type": "boolean" + // }, + // "IdentityCenterApplicationARN": { + // "description": "The ARN of the Identity Center application.", + // "type": "string" + // }, + // "IdentityCenterInstanceARN": { + // "description": "The ARN of the Identity Center instance.", + // "type": "string" + // }, + // "IdentityStoreId": { + // "description": "The IdentityStoreId for Identity Center options.", + // "type": "string" + // }, + // "RolesKey": { + // "description": "The roles key for Identity Center options.", + // "enum": [ + // "GroupName", + // "GroupId" + // ], + // "type": "string" + // }, + // "SubjectKey": { + // "description": "The subject key for Identity Center options.", + // "enum": [ + // "UserName", + // "UserId", + // "Email" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "identity_center_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EnabledAPIAccess + "enabled_api_access": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether Identity Center is enabled.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityCenterApplicationARN + "identity_center_application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Identity Center application.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityCenterInstanceARN + "identity_center_instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Identity Center instance.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityStoreId + "identity_store_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IdentityStoreId for Identity Center options.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RolesKey + "roles_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The roles key for Identity Center options.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "GroupName", + "GroupId", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SubjectKey + "subject_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The subject key for Identity Center options.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "UserName", + "UserId", + "Email", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Options for configuring Identity Center", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: LogPublishingOptions // CloudFormation resource type schema: // @@ -1431,12 +1549,17 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "ebs_enabled": "EBSEnabled", "ebs_options": "EBSOptions", "enabled": "Enabled", + "enabled_api_access": "EnabledAPIAccess", "encryption_at_rest_options": "EncryptionAtRestOptions", "enforce_https": "EnforceHTTPS", "engine_version": "EngineVersion", "entity_id": "EntityId", "hours": "Hours", + "identity_center_application_arn": "IdentityCenterApplicationARN", + "identity_center_instance_arn": "IdentityCenterInstanceARN", + "identity_center_options": "IdentityCenterOptions", "identity_pool_id": "IdentityPoolId", + "identity_store_id": "IdentityStoreId", "idp": "Idp", "instance_count": "InstanceCount", "instance_type": "InstanceType", diff --git a/internal/aws/opensearchservice/domain_singular_data_source_gen.go b/internal/aws/opensearchservice/domain_singular_data_source_gen.go index e6954d0405..7c9998c6bc 100644 --- a/internal/aws/opensearchservice/domain_singular_data_source_gen.go +++ b/internal/aws/opensearchservice/domain_singular_data_source_gen.go @@ -631,6 +631,85 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "domain_id": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: IdentityCenterOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Options for configuring Identity Center", + // "properties": { + // "EnabledAPIAccess": { + // "description": "Whether Identity Center is enabled.", + // "type": "boolean" + // }, + // "IdentityCenterApplicationARN": { + // "description": "The ARN of the Identity Center application.", + // "type": "string" + // }, + // "IdentityCenterInstanceARN": { + // "description": "The ARN of the Identity Center instance.", + // "type": "string" + // }, + // "IdentityStoreId": { + // "description": "The IdentityStoreId for Identity Center options.", + // "type": "string" + // }, + // "RolesKey": { + // "description": "The roles key for Identity Center options.", + // "enum": [ + // "GroupName", + // "GroupId" + // ], + // "type": "string" + // }, + // "SubjectKey": { + // "description": "The subject key for Identity Center options.", + // "enum": [ + // "UserName", + // "UserId", + // "Email" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "identity_center_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EnabledAPIAccess + "enabled_api_access": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether Identity Center is enabled.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityCenterApplicationARN + "identity_center_application_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Identity Center application.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityCenterInstanceARN + "identity_center_instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Identity Center instance.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityStoreId + "identity_store_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IdentityStoreId for Identity Center options.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RolesKey + "roles_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The roles key for Identity Center options.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubjectKey + "subject_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The subject key for Identity Center options.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Options for configuring Identity Center", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: LogPublishingOptions // CloudFormation resource type schema: // @@ -1013,12 +1092,17 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "ebs_enabled": "EBSEnabled", "ebs_options": "EBSOptions", "enabled": "Enabled", + "enabled_api_access": "EnabledAPIAccess", "encryption_at_rest_options": "EncryptionAtRestOptions", "enforce_https": "EnforceHTTPS", "engine_version": "EngineVersion", "entity_id": "EntityId", "hours": "Hours", + "identity_center_application_arn": "IdentityCenterApplicationARN", + "identity_center_instance_arn": "IdentityCenterInstanceARN", + "identity_center_options": "IdentityCenterOptions", "identity_pool_id": "IdentityPoolId", + "identity_store_id": "IdentityStoreId", "idp": "Idp", "instance_count": "InstanceCount", "instance_type": "InstanceType", diff --git a/internal/aws/rds/db_instance_resource_gen.go b/internal/aws/rds/db_instance_resource_gen.go index aedb586445..7fc6c31f93 100644 --- a/internal/aws/rds/db_instance_resource_gen.go +++ b/internal/aws/rds/db_instance_resource_gen.go @@ -1122,9 +1122,7 @@ func dBInstanceResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ - // Port is a write-only property. }, /*END ATTRIBUTE*/ // Property: PreferredBackupWindow // CloudFormation resource type schema: @@ -1704,7 +1702,6 @@ func dBInstanceResource(ctx context.Context) (resource.Resource, error) { "/properties/DBSnapshotIdentifier", "/properties/DeleteAutomatedBackups", "/properties/MasterUserPassword", - "/properties/Port", "/properties/RestoreTime", "/properties/SourceDBInstanceAutomatedBackupsArn", "/properties/SourceDBInstanceIdentifier", diff --git a/internal/aws/route53/record_set_resource_gen.go b/internal/aws/route53/record_set_resource_gen.go index 6dc983478b..4d7d75bd3c 100644 --- a/internal/aws/route53/record_set_resource_gen.go +++ b/internal/aws/route53/record_set_resource_gen.go @@ -7,13 +7,9 @@ package route53 import ( "context" - "regexp" - "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" - "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" - "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" @@ -40,21 +36,14 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", // "properties": { // "DNSName": { - // "description": "The value that you specify depends on where you want to route queries.", - // "maxLength": 1024, // "type": "string" // }, // "EvaluateTargetHealth": { - // "default": false, - // "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", // "type": "boolean" // }, // "HostedZoneId": { - // "description": "The value used depends on where you want to route traffic.", - // "maxLength": 44, // "type": "string" // } // }, @@ -68,11 +57,9 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: DNSName "dns_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value that you specify depends on where you want to route queries.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(1024), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -81,21 +68,17 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: EvaluateTargetHealth "evaluate_target_health": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", - Optional: true, - Computed: true, - Default: booldefault.StaticBool(false), + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: HostedZoneId "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value used depends on where you want to route traffic.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(44), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -103,9 +86,8 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -115,18 +97,11 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", // "properties": { // "CollectionId": { - // "description": "The CIDR collection ID.", - // "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", // "type": "string" // }, // "LocationName": { - // "description": "The CIDR collection location name.", - // "maxLength": 16, - // "minLength": 1, - // "pattern": "[0-9A-Za-z_\\-\\*]+", // "type": "string" // } // }, @@ -140,11 +115,9 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CollectionId "collection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The CIDR collection ID.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -153,12 +126,9 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: LocationName "location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The CIDR collection location name.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthBetween(1, 16), - stringvalidator.RegexMatches(regexp.MustCompile("[0-9A-Za-z_\\-\\*]+"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -166,9 +136,8 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -177,43 +146,24 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Optional: Any comments you want to include about a change batch request.", - // "maxLength": 256, // "type": "string" // } "comment": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Optional: Any comments you want to include about a change batch request.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(256), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ - // Comment is a write-only property. }, /*END ATTRIBUTE*/ // Property: Failover // CloudFormation resource type schema: // // { - // "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", - // "enum": [ - // "PRIMARY", - // "SECONDARY" - // ], // "type": "string" // } "failover": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.OneOf( - "PRIMARY", - "SECONDARY", - ), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -223,36 +173,14 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", - // "oneOf": [ - // { - // "required": [ - // "ContinentCode" - // ] - // }, - // { - // "required": [ - // "CountryCode" - // ] - // } - // ], // "properties": { // "ContinentCode": { - // "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", - // "maxLength": 2, - // "minLength": 2, // "type": "string" // }, // "CountryCode": { - // "description": "For geolocation resource record sets, the two-letter code for a country.", - // "maxLength": 2, - // "minLength": 1, // "type": "string" // }, // "SubdivisionCode": { - // "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", - // "maxLength": 3, - // "minLength": 1, // "type": "string" // } // }, @@ -262,44 +190,130 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: ContinentCode "continent_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthBetween(2, 2), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: CountryCode "country_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, the two-letter code for a country.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthBetween(1, 2), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: SubdivisionCode "subdivision_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, the two-letter code for a state of the United States.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthBetween(1, 3), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GeoProximityLocation + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "AWSRegion": { + // "type": "string" + // }, + // "Bias": { + // "type": "integer" + // }, + // "Coordinates": { + // "additionalProperties": false, + // "properties": { + // "Latitude": { + // "type": "string" + // }, + // "Longitude": { + // "type": "string" + // } + // }, + // "required": [ + // "Latitude", + // "Longitude" + // ], + // "type": "object" + // }, + // "LocalZoneGroup": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "geo_proximity_location": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AWSRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Bias + "bias": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Coordinates + "coordinates": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Latitude + "latitude": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Longitude + "longitude": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocalZoneGroup + "local_zone_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -308,17 +322,11 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", - // "maxLength": 64, // "type": "string" // } "health_check_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(64), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -327,17 +335,11 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The ID of the hosted zone that you want to create records in.", - // "maxLength": 44, // "type": "string" // } "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ID of the hosted zone that you want to create records in.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(44), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplaceIfConfigured(), @@ -347,34 +349,37 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", - // "maxLength": 256, // "type": "string" // } "hosted_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(256), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ - // HostedZoneName is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "record_set_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: MultiValueAnswer // CloudFormation resource type schema: // // { - // "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", // "type": "boolean" // } "multi_value_answer": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -383,28 +388,23 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The name of the record that you want to create, update, or delete.", - // "maxLength": 1024, // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the record that you want to create, update, or delete.", - Required: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthAtMost(1024), - }, /*END VALIDATORS*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Region // CloudFormation resource type schema: // // { - // "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", // "type": "string" // } "region": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon EC2 Region where you created the resource that this resource record set refers to.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -413,26 +413,16 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "One or more values that correspond with the value that you specified for the Type property.", - // "insertionOrder": true, // "items": { - // "maxLength": 4000, // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } "resource_records": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "One or more values that correspond with the value that you specified for the Type property.", Optional: true, Computed: true, - Validators: []validator.List{ /*START VALIDATORS*/ - listvalidator.UniqueValues(), - listvalidator.ValueStringsAre( - stringvalidator.LengthAtMost(4000), - ), - }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -441,18 +431,11 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", - // "maxLength": 128, - // "minLength": 0, // "type": "string" // } "set_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", - Optional: true, - Computed: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.LengthBetween(0, 128), - }, /*END VALIDATORS*/ + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -461,13 +444,11 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The resource record cache time to live (TTL), in seconds.", // "type": "string" // } "ttl": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The resource record cache time to live (TTL), in seconds.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -476,24 +457,20 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The DNS record type.", // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The DNS record type.", - Required: true, + Required: true, }, /*END ATTRIBUTE*/ // Property: Weight // CloudFormation resource type schema: // // { - // "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", // "type": "integer" // } "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -510,7 +487,7 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { } schema := schema.Schema{ - Description: "Resource Type definition for AWS::Route53::RecordSet.", + Description: "Resource Type definition for AWS::Route53::RecordSet", Version: 1, Attributes: attributes, } @@ -521,21 +498,29 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "alias_target": "AliasTarget", + "aws_region": "AWSRegion", + "bias": "Bias", "cidr_routing_config": "CidrRoutingConfig", "collection_id": "CollectionId", "comment": "Comment", "continent_code": "ContinentCode", + "coordinates": "Coordinates", "country_code": "CountryCode", "dns_name": "DNSName", "evaluate_target_health": "EvaluateTargetHealth", "failover": "Failover", "geo_location": "GeoLocation", + "geo_proximity_location": "GeoProximityLocation", "health_check_id": "HealthCheckId", "hosted_zone_id": "HostedZoneId", "hosted_zone_name": "HostedZoneName", + "latitude": "Latitude", + "local_zone_group": "LocalZoneGroup", "location_name": "LocationName", + "longitude": "Longitude", "multi_value_answer": "MultiValueAnswer", "name": "Name", + "record_set_id": "Id", "region": "Region", "resource_records": "ResourceRecords", "set_identifier": "SetIdentifier", @@ -545,10 +530,6 @@ func recordSetResource(ctx context.Context) (resource.Resource, error) { "weight": "Weight", }) - opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/Comment", - "/properties/HostedZoneName", - }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/route53/record_set_singular_data_source_gen.go b/internal/aws/route53/record_set_singular_data_source_gen.go index 37ea71b85f..2ff306a2ba 100644 --- a/internal/aws/route53/record_set_singular_data_source_gen.go +++ b/internal/aws/route53/record_set_singular_data_source_gen.go @@ -28,21 +28,14 @@ func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "additionalProperties": false, - // "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", // "properties": { // "DNSName": { - // "description": "The value that you specify depends on where you want to route queries.", - // "maxLength": 1024, // "type": "string" // }, // "EvaluateTargetHealth": { - // "default": false, - // "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", // "type": "boolean" // }, // "HostedZoneId": { - // "description": "The value used depends on where you want to route traffic.", - // "maxLength": 44, // "type": "string" // } // }, @@ -56,40 +49,29 @@ func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: DNSName "dns_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value that you specify depends on where you want to route queries.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: EvaluateTargetHealth "evaluate_target_health": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: HostedZoneId "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The value used depends on where you want to route traffic.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: CidrRoutingConfig // CloudFormation resource type schema: // // { // "additionalProperties": false, - // "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", // "properties": { // "CollectionId": { - // "description": "The CIDR collection ID.", - // "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", // "type": "string" // }, // "LocationName": { - // "description": "The CIDR collection location name.", - // "maxLength": 16, - // "minLength": 1, - // "pattern": "[0-9A-Za-z_\\-\\*]+", // "type": "string" // } // }, @@ -103,80 +85,46 @@ func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CollectionId "collection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The CIDR collection ID.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: LocationName "location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The CIDR collection location name.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Comment // CloudFormation resource type schema: // // { - // "description": "Optional: Any comments you want to include about a change batch request.", - // "maxLength": 256, // "type": "string" // } "comment": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Optional: Any comments you want to include about a change batch request.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Failover // CloudFormation resource type schema: // // { - // "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", - // "enum": [ - // "PRIMARY", - // "SECONDARY" - // ], // "type": "string" // } "failover": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: GeoLocation // CloudFormation resource type schema: // // { // "additionalProperties": false, - // "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", - // "oneOf": [ - // { - // "required": [ - // "ContinentCode" - // ] - // }, - // { - // "required": [ - // "CountryCode" - // ] - // } - // ], // "properties": { // "ContinentCode": { - // "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", - // "maxLength": 2, - // "minLength": 2, // "type": "string" // }, // "CountryCode": { - // "description": "For geolocation resource record sets, the two-letter code for a country.", - // "maxLength": 2, - // "minLength": 1, // "type": "string" // }, // "SubdivisionCode": { - // "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", - // "maxLength": 3, - // "minLength": 1, // "type": "string" // } // }, @@ -186,156 +134,196 @@ func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: ContinentCode "continent_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: CountryCode "country_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, the two-letter code for a country.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: SubdivisionCode "subdivision_code": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "For geolocation resource record sets, the two-letter code for a state of the United States.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", - Computed: true, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GeoProximityLocation + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "AWSRegion": { + // "type": "string" + // }, + // "Bias": { + // "type": "integer" + // }, + // "Coordinates": { + // "additionalProperties": false, + // "properties": { + // "Latitude": { + // "type": "string" + // }, + // "Longitude": { + // "type": "string" + // } + // }, + // "required": [ + // "Latitude", + // "Longitude" + // ], + // "type": "object" + // }, + // "LocalZoneGroup": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "geo_proximity_location": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AWSRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Bias + "bias": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Coordinates + "coordinates": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Latitude + "latitude": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Longitude + "longitude": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocalZoneGroup + "local_zone_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, }, /*END ATTRIBUTE*/ // Property: HealthCheckId // CloudFormation resource type schema: // // { - // "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", - // "maxLength": 64, // "type": "string" // } "health_check_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: HostedZoneId // CloudFormation resource type schema: // // { - // "description": "The ID of the hosted zone that you want to create records in.", - // "maxLength": 44, // "type": "string" // } "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ID of the hosted zone that you want to create records in.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: HostedZoneName // CloudFormation resource type schema: // // { - // "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", - // "maxLength": 256, // "type": "string" // } "hosted_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", - Computed: true, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "record_set_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, }, /*END ATTRIBUTE*/ // Property: MultiValueAnswer // CloudFormation resource type schema: // // { - // "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", // "type": "boolean" // } "multi_value_answer": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // // { - // "description": "The name of the record that you want to create, update, or delete.", - // "maxLength": 1024, // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the record that you want to create, update, or delete.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Region // CloudFormation resource type schema: // // { - // "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", // "type": "string" // } "region": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon EC2 Region where you created the resource that this resource record set refers to.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: ResourceRecords // CloudFormation resource type schema: // // { - // "description": "One or more values that correspond with the value that you specified for the Type property.", - // "insertionOrder": true, // "items": { - // "maxLength": 4000, // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } "resource_records": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "One or more values that correspond with the value that you specified for the Type property.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SetIdentifier // CloudFormation resource type schema: // // { - // "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", - // "maxLength": 128, - // "minLength": 0, // "type": "string" // } "set_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: TTL // CloudFormation resource type schema: // // { - // "description": "The resource record cache time to live (TTL), in seconds.", // "type": "string" // } "ttl": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The resource record cache time to live (TTL), in seconds.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Type // CloudFormation resource type schema: // // { - // "description": "The DNS record type.", // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The DNS record type.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Weight // CloudFormation resource type schema: // // { - // "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", // "type": "integer" // } "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -355,21 +343,29 @@ func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "alias_target": "AliasTarget", + "aws_region": "AWSRegion", + "bias": "Bias", "cidr_routing_config": "CidrRoutingConfig", "collection_id": "CollectionId", "comment": "Comment", "continent_code": "ContinentCode", + "coordinates": "Coordinates", "country_code": "CountryCode", "dns_name": "DNSName", "evaluate_target_health": "EvaluateTargetHealth", "failover": "Failover", "geo_location": "GeoLocation", + "geo_proximity_location": "GeoProximityLocation", "health_check_id": "HealthCheckId", "hosted_zone_id": "HostedZoneId", "hosted_zone_name": "HostedZoneName", + "latitude": "Latitude", + "local_zone_group": "LocalZoneGroup", "location_name": "LocationName", + "longitude": "Longitude", "multi_value_answer": "MultiValueAnswer", "name": "Name", + "record_set_id": "Id", "region": "Region", "resource_records": "ResourceRecords", "set_identifier": "SetIdentifier", diff --git a/internal/aws/sagemaker/space_resource_gen.go b/internal/aws/sagemaker/space_resource_gen.go index c77bf1c259..9ea52d7eec 100644 --- a/internal/aws/sagemaker/space_resource_gen.go +++ b/internal/aws/sagemaker/space_resource_gen.go @@ -1682,7 +1682,6 @@ func spaceResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ // Property: Url // CloudFormation resource type schema: @@ -1762,7 +1761,6 @@ func spaceResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/SpaceSettings", - "/properties/Tags", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/sagemaker/studio_lifecycle_config_resource_gen.go b/internal/aws/sagemaker/studio_lifecycle_config_resource_gen.go index 23869146d6..771540d4e8 100644 --- a/internal/aws/sagemaker/studio_lifecycle_config_resource_gen.go +++ b/internal/aws/sagemaker/studio_lifecycle_config_resource_gen.go @@ -79,14 +79,14 @@ func studioLifecycleConfigResource(ctx context.Context) (resource.Resource, erro // CloudFormation resource type schema: // // { - // "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script.", + // "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.", // "maxLength": 16384, // "minLength": 1, // "pattern": "[\\S\\s]+", // "type": "string" // } "studio_lifecycle_config_content": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The content of your Amazon SageMaker Studio Lifecycle Configuration script.", + Description: "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 16384), @@ -121,7 +121,7 @@ func studioLifecycleConfigResource(ctx context.Context) (resource.Resource, erro // CloudFormation resource type schema: // // { - // "description": "Tags to be associated with the Lifecycle Configuration.", + // "description": "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -177,7 +177,7 @@ func studioLifecycleConfigResource(ctx context.Context) (resource.Resource, erro }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "Tags to be associated with the Lifecycle Configuration.", + Description: "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.", Optional: true, Computed: true, Validators: []validator.List{ /*START VALIDATORS*/ diff --git a/internal/aws/sagemaker/studio_lifecycle_config_singular_data_source_gen.go b/internal/aws/sagemaker/studio_lifecycle_config_singular_data_source_gen.go index 7b968b5873..9e44a55920 100644 --- a/internal/aws/sagemaker/studio_lifecycle_config_singular_data_source_gen.go +++ b/internal/aws/sagemaker/studio_lifecycle_config_singular_data_source_gen.go @@ -57,14 +57,14 @@ func studioLifecycleConfigDataSource(ctx context.Context) (datasource.DataSource // CloudFormation resource type schema: // // { - // "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script.", + // "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.", // "maxLength": 16384, // "minLength": 1, // "pattern": "[\\S\\s]+", // "type": "string" // } "studio_lifecycle_config_content": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The content of your Amazon SageMaker Studio Lifecycle Configuration script.", + Description: "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.", Computed: true, }, /*END ATTRIBUTE*/ // Property: StudioLifecycleConfigName @@ -85,7 +85,7 @@ func studioLifecycleConfigDataSource(ctx context.Context) (datasource.DataSource // CloudFormation resource type schema: // // { - // "description": "Tags to be associated with the Lifecycle Configuration.", + // "description": "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -125,7 +125,7 @@ func studioLifecycleConfigDataSource(ctx context.Context) (datasource.DataSource }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "Tags to be associated with the Lifecycle Configuration.", + Description: "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen.go b/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen.go new file mode 100644 index 0000000000..6603f958e5 --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package secretsmanager + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_secretsmanager_rotation_schedules", rotationSchedulesDataSource) +} + +// rotationSchedulesDataSource returns the Terraform awscc_secretsmanager_rotation_schedules data source. +// This Terraform data source corresponds to the CloudFormation AWS::SecretsManager::RotationSchedule resource. +func rotationSchedulesDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::SecretsManager::RotationSchedule", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SecretsManager::RotationSchedule").WithTerraformTypeName("awscc_secretsmanager_rotation_schedules") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen_test.go b/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen_test.go new file mode 100644 index 0000000000..bb8139b6f2 --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package secretsmanager_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSecretsManagerRotationSchedulesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SecretsManager::RotationSchedule", "awscc_secretsmanager_rotation_schedules", "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/secretsmanager/rotation_schedule_resource_gen.go b/internal/aws/secretsmanager/rotation_schedule_resource_gen.go new file mode 100644 index 0000000000..fa0f14ec50 --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_resource_gen.go @@ -0,0 +1,401 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package secretsmanager + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_secretsmanager_rotation_schedule", rotationScheduleResource) +} + +// rotationScheduleResource returns the Terraform awscc_secretsmanager_rotation_schedule resource. +// This Terraform resource corresponds to the CloudFormation AWS::SecretsManager::RotationSchedule resource. +func rotationScheduleResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HostedRotationLambda + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead.", + // "properties": { + // "ExcludeCharacters": { + // "description": "A string of the characters that you don't want in the password.", + // "type": "string" + // }, + // "KmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.", + // "type": "string" + // }, + // "MasterSecretArn": { + // "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + // "type": "string" + // }, + // "MasterSecretKmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + // "type": "string" + // }, + // "RotationLambdaName": { + // "description": "The name of the Lambda rotation function.", + // "type": "string" + // }, + // "RotationType": { + // "description": "The type of rotation template to use", + // "type": "string" + // }, + // "Runtime": { + // "description": "The python runtime associated with the Lambda function", + // "type": "string" + // }, + // "SuperuserSecretArn": { + // "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + // "type": "string" + // }, + // "SuperuserSecretKmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + // "type": "string" + // }, + // "VpcSecurityGroupIds": { + // "description": "A comma-separated list of security group IDs applied to the target database.", + // "type": "string" + // }, + // "VpcSubnetIds": { + // "description": "A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.", + // "type": "string" + // } + // }, + // "required": [ + // "RotationType" + // ], + // "type": "object" + // } + "hosted_rotation_lambda": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExcludeCharacters + "exclude_characters": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string of the characters that you don't want in the password.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // ExcludeCharacters is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: KmsKeyArn + "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // KmsKeyArn is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: MasterSecretArn + "master_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // MasterSecretArn is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: MasterSecretKmsKeyArn + "master_secret_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // MasterSecretKmsKeyArn is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: RotationLambdaName + "rotation_lambda_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Lambda rotation function.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // RotationLambdaName is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: RotationType + "rotation_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of rotation template to use", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // RotationType is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Runtime + "runtime": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The python runtime associated with the Lambda function", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // Runtime is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: SuperuserSecretArn + "superuser_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // SuperuserSecretArn is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: SuperuserSecretKmsKeyArn + "superuser_secret_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // SuperuserSecretKmsKeyArn is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: VpcSecurityGroupIds + "vpc_security_group_ids": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A comma-separated list of security group IDs applied to the target database.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // VpcSecurityGroupIds is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: VpcSubnetIds + "vpc_subnet_ids": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // VpcSubnetIds is a write-only property. + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // HostedRotationLambda is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The ARN of the secret.", + // "type": "string" + // } + "rotation_schedule_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RotateImmediatelyOnUpdate + // CloudFormation resource type schema: + // + // { + // "description": "Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.", + // "type": "boolean" + // } + "rotate_immediately_on_update": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // RotateImmediatelyOnUpdate is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: RotationLambdaARN + // CloudFormation resource type schema: + // + // { + // "description": "The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function.", + // "type": "string" + // } + "rotation_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RotationRules + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A structure that defines the rotation configuration for this secret.", + // "properties": { + // "AutomaticallyAfterDays": { + // "description": "The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.", + // "type": "integer" + // }, + // "Duration": { + // "description": "The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day.", + // "type": "string" + // }, + // "ScheduleExpression": { + // "description": "A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "rotation_rules": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutomaticallyAfterDays + "automatically_after_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Duration + "duration": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ScheduleExpression + "schedule_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A structure that defines the rotation configuration for this secret.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SecretId + // CloudFormation resource type schema: + // + // { + // "description": "The ARN or name of the secret to rotate.", + // "type": "string" + // } + "secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN or name of the secret to rotate.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::SecretsManager::RotationSchedule", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SecretsManager::RotationSchedule").WithTerraformTypeName("awscc_secretsmanager_rotation_schedule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "automatically_after_days": "AutomaticallyAfterDays", + "duration": "Duration", + "exclude_characters": "ExcludeCharacters", + "hosted_rotation_lambda": "HostedRotationLambda", + "kms_key_arn": "KmsKeyArn", + "master_secret_arn": "MasterSecretArn", + "master_secret_kms_key_arn": "MasterSecretKmsKeyArn", + "rotate_immediately_on_update": "RotateImmediatelyOnUpdate", + "rotation_lambda_arn": "RotationLambdaARN", + "rotation_lambda_name": "RotationLambdaName", + "rotation_rules": "RotationRules", + "rotation_schedule_id": "Id", + "rotation_type": "RotationType", + "runtime": "Runtime", + "schedule_expression": "ScheduleExpression", + "secret_id": "SecretId", + "superuser_secret_arn": "SuperuserSecretArn", + "superuser_secret_kms_key_arn": "SuperuserSecretKmsKeyArn", + "vpc_security_group_ids": "VpcSecurityGroupIds", + "vpc_subnet_ids": "VpcSubnetIds", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/RotateImmediatelyOnUpdate", + "/properties/HostedRotationLambda", + "/properties/HostedRotationLambda/ExcludeCharacters", + "/properties/HostedRotationLambda/KmsKeyArn", + "/properties/HostedRotationLambda/MasterSecretArn", + "/properties/HostedRotationLambda/MasterSecretKmsKeyArn", + "/properties/HostedRotationLambda/RotationLambdaName", + "/properties/HostedRotationLambda/RotationType", + "/properties/HostedRotationLambda/Runtime", + "/properties/HostedRotationLambda/SuperuserSecretArn", + "/properties/HostedRotationLambda/SuperuserSecretKmsKeyArn", + "/properties/HostedRotationLambda/VpcSecurityGroupIds", + "/properties/HostedRotationLambda/VpcSubnetIds", + }) + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/secretsmanager/rotation_schedule_resource_gen_test.go b/internal/aws/secretsmanager/rotation_schedule_resource_gen_test.go new file mode 100644 index 0000000000..fe4e55021f --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package secretsmanager_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSecretsManagerRotationSchedule_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SecretsManager::RotationSchedule", "awscc_secretsmanager_rotation_schedule", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen.go b/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen.go new file mode 100644 index 0000000000..c7fd3360a1 --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen.go @@ -0,0 +1,276 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package secretsmanager + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_secretsmanager_rotation_schedule", rotationScheduleDataSource) +} + +// rotationScheduleDataSource returns the Terraform awscc_secretsmanager_rotation_schedule data source. +// This Terraform data source corresponds to the CloudFormation AWS::SecretsManager::RotationSchedule resource. +func rotationScheduleDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HostedRotationLambda + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead.", + // "properties": { + // "ExcludeCharacters": { + // "description": "A string of the characters that you don't want in the password.", + // "type": "string" + // }, + // "KmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.", + // "type": "string" + // }, + // "MasterSecretArn": { + // "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + // "type": "string" + // }, + // "MasterSecretKmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + // "type": "string" + // }, + // "RotationLambdaName": { + // "description": "The name of the Lambda rotation function.", + // "type": "string" + // }, + // "RotationType": { + // "description": "The type of rotation template to use", + // "type": "string" + // }, + // "Runtime": { + // "description": "The python runtime associated with the Lambda function", + // "type": "string" + // }, + // "SuperuserSecretArn": { + // "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + // "type": "string" + // }, + // "SuperuserSecretKmsKeyArn": { + // "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + // "type": "string" + // }, + // "VpcSecurityGroupIds": { + // "description": "A comma-separated list of security group IDs applied to the target database.", + // "type": "string" + // }, + // "VpcSubnetIds": { + // "description": "A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.", + // "type": "string" + // } + // }, + // "required": [ + // "RotationType" + // ], + // "type": "object" + // } + "hosted_rotation_lambda": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExcludeCharacters + "exclude_characters": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A string of the characters that you don't want in the password.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: KmsKeyArn + "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MasterSecretArn + "master_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MasterSecretKmsKeyArn + "master_secret_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RotationLambdaName + "rotation_lambda_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the Lambda rotation function.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RotationType + "rotation_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of rotation template to use", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Runtime + "runtime": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The python runtime associated with the Lambda function", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SuperuserSecretArn + "superuser_secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SuperuserSecretKmsKeyArn + "superuser_secret_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcSecurityGroupIds + "vpc_security_group_ids": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A comma-separated list of security group IDs applied to the target database.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcSubnetIds + "vpc_subnet_ids": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The ARN of the secret.", + // "type": "string" + // } + "rotation_schedule_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the secret.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RotateImmediatelyOnUpdate + // CloudFormation resource type schema: + // + // { + // "description": "Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.", + // "type": "boolean" + // } + "rotate_immediately_on_update": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RotationLambdaARN + // CloudFormation resource type schema: + // + // { + // "description": "The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function.", + // "type": "string" + // } + "rotation_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RotationRules + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A structure that defines the rotation configuration for this secret.", + // "properties": { + // "AutomaticallyAfterDays": { + // "description": "The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.", + // "type": "integer" + // }, + // "Duration": { + // "description": "The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day.", + // "type": "string" + // }, + // "ScheduleExpression": { + // "description": "A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "rotation_rules": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutomaticallyAfterDays + "automatically_after_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Duration + "duration": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ScheduleExpression + "schedule_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A structure that defines the rotation configuration for this secret.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SecretId + // CloudFormation resource type schema: + // + // { + // "description": "The ARN or name of the secret to rotate.", + // "type": "string" + // } + "secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN or name of the secret to rotate.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::SecretsManager::RotationSchedule", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SecretsManager::RotationSchedule").WithTerraformTypeName("awscc_secretsmanager_rotation_schedule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "automatically_after_days": "AutomaticallyAfterDays", + "duration": "Duration", + "exclude_characters": "ExcludeCharacters", + "hosted_rotation_lambda": "HostedRotationLambda", + "kms_key_arn": "KmsKeyArn", + "master_secret_arn": "MasterSecretArn", + "master_secret_kms_key_arn": "MasterSecretKmsKeyArn", + "rotate_immediately_on_update": "RotateImmediatelyOnUpdate", + "rotation_lambda_arn": "RotationLambdaARN", + "rotation_lambda_name": "RotationLambdaName", + "rotation_rules": "RotationRules", + "rotation_schedule_id": "Id", + "rotation_type": "RotationType", + "runtime": "Runtime", + "schedule_expression": "ScheduleExpression", + "secret_id": "SecretId", + "superuser_secret_arn": "SuperuserSecretArn", + "superuser_secret_kms_key_arn": "SuperuserSecretKmsKeyArn", + "vpc_security_group_ids": "VpcSecurityGroupIds", + "vpc_subnet_ids": "VpcSubnetIds", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen_test.go b/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen_test.go new file mode 100644 index 0000000000..a9c9972448 --- /dev/null +++ b/internal/aws/secretsmanager/rotation_schedule_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package secretsmanager_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSecretsManagerRotationScheduleDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SecretsManager::RotationSchedule", "awscc_secretsmanager_rotation_schedule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSSecretsManagerRotationScheduleDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SecretsManager::RotationSchedule", "awscc_secretsmanager_rotation_schedule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/secretsmanager/secret_target_attachment_resource_gen.go b/internal/aws/secretsmanager/secret_target_attachment_resource_gen.go index f9d7d2cd43..e3dd14f0b7 100644 --- a/internal/aws/secretsmanager/secret_target_attachment_resource_gen.go +++ b/internal/aws/secretsmanager/secret_target_attachment_resource_gen.go @@ -44,6 +44,9 @@ func secretTargetAttachmentResource(ctx context.Context) (resource.Resource, err // } "secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: TargetId // CloudFormation resource type schema: diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 83aa9740e9..8fc42928c8 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -255,6 +255,10 @@ resource_schema "aws_appconfig_configuration_profile" { suppress_plural_data_source_generation = true } +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + resource_schema "aws_appconfig_environment" { cloudformation_type_name = "AWS::AppConfig::Environment" suppress_plural_data_source_generation = true @@ -371,6 +375,10 @@ resource_schema "aws_appstream_image_builder" { cloudformation_type_name = "AWS::AppStream::ImageBuilder" } +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + resource_schema "aws_appsync_data_source" { cloudformation_type_name = "AWS::AppSync::DataSource" suppress_plural_data_source_generation = true @@ -1202,6 +1210,10 @@ resource_schema "aws_customerprofiles_object_type" { suppress_plural_data_source_generation = true } +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + resource_schema "aws_dms_data_provider" { cloudformation_type_name = "AWS::DMS::DataProvider" } @@ -3494,6 +3506,10 @@ resource_schema "aws_opensearchserverless_vpc_endpoint" { cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" } +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + resource_schema "aws_opensearchservice_domain" { cloudformation_type_name = "AWS::OpenSearchService::Domain" suppress_plural_data_source_generation = true @@ -4391,6 +4407,10 @@ resource_schema "aws_secretsmanager_resource_policy" { cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" } +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + resource_schema "aws_secretsmanager_secret" { cloudformation_type_name = "AWS::SecretsManager::Secret" } diff --git a/internal/provider/generators/allschemas/available_schemas.2024-10-30.hcl b/internal/provider/generators/allschemas/available_schemas.2024-10-30.hcl new file mode 100644 index 0000000000..c945963784 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-10-30.hcl @@ -0,0 +1,4571 @@ +# 1077 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_nimblestudio_launch_profile" { + cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_streaming_image" { + cloudformation_type_name = "AWS::NimbleStudio::StreamingImage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_studio" { + cloudformation_type_name = "AWS::NimbleStudio::Studio" +} + +resource_schema "aws_nimblestudio_studio_component" { + cloudformation_type_name = "AWS::NimbleStudio::StudioComponent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 707b3cd8e0..c27d6e86be 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -224,6 +224,11 @@ "identifier": ["ApplicationId","ConfigurationProfileId"], "path": "./examples/resources/awscc_appconfig_configuration_profile/import.sh" }, + { + "resource": "awscc_appconfig_deployment_strategy", + "identifier": ["Id"], + "path": "./examples/resources/awscc_appconfig_deployment_strategy/import.sh" + }, { "resource": "awscc_appconfig_environment", "identifier": ["ApplicationId","EnvironmentId"], @@ -329,6 +334,11 @@ "identifier": ["Name"], "path": "./examples/resources/awscc_appstream_image_builder/import.sh" }, + { + "resource": "awscc_appsync_api", + "identifier": ["ApiArn"], + "path": "./examples/resources/awscc_appsync_api/import.sh" + }, { "resource": "awscc_appsync_data_source", "identifier": ["DataSourceArn"], @@ -1184,6 +1194,11 @@ "identifier": ["DomainName","ObjectTypeName"], "path": "./examples/resources/awscc_customerprofiles_object_type/import.sh" }, + { + "resource": "awscc_dms_data_migration", + "identifier": ["DataMigrationArn"], + "path": "./examples/resources/awscc_dms_data_migration/import.sh" + }, { "resource": "awscc_dms_data_provider", "identifier": ["DataProviderArn"], @@ -3784,6 +3799,11 @@ "identifier": ["Id"], "path": "./examples/resources/awscc_opensearchserverless_vpc_endpoint/import.sh" }, + { + "resource": "awscc_opensearchservice_application", + "identifier": ["Name"], + "path": "./examples/resources/awscc_opensearchservice_application/import.sh" + }, { "resource": "awscc_opensearchservice_domain", "identifier": ["DomainName"], @@ -4266,7 +4286,7 @@ }, { "resource": "awscc_route53_record_set", - "identifier": ["Name","HostedZoneId","Type","SetIdentifier"], + "identifier": ["Id"], "path": "./examples/resources/awscc_route53_record_set/import.sh" }, { @@ -4794,6 +4814,11 @@ "identifier": ["Id"], "path": "./examples/resources/awscc_secretsmanager_resource_policy/import.sh" }, + { + "resource": "awscc_secretsmanager_rotation_schedule", + "identifier": ["Id"], + "path": "./examples/resources/awscc_secretsmanager_rotation_schedule/import.sh" + }, { "resource": "awscc_secretsmanager_secret", "identifier": ["Id"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index 2fe29814e1..786ebef26d 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -24,6 +24,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_apigatewayv2_route_responses -cftype AWS::ApiGatewayV2::RouteResponse -package apigatewayv2 ../aws/apigatewayv2/route_response_plural_data_source_gen.go ../aws/apigatewayv2/route_response_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_apigatewayv2_vpc_links -cftype AWS::ApiGatewayV2::VpcLink -package apigatewayv2 ../aws/apigatewayv2/vpc_link_plural_data_source_gen.go ../aws/apigatewayv2/vpc_link_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appconfig_applications -cftype AWS::AppConfig::Application -package appconfig ../aws/appconfig/application_plural_data_source_gen.go ../aws/appconfig/application_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_appconfig_deployment_strategies -cftype AWS::AppConfig::DeploymentStrategy -package appconfig ../aws/appconfig/deployment_strategy_plural_data_source_gen.go ../aws/appconfig/deployment_strategy_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appconfig_extension_associations -cftype AWS::AppConfig::ExtensionAssociation -package appconfig ../aws/appconfig/extension_association_plural_data_source_gen.go ../aws/appconfig/extension_association_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appflow_connectors -cftype AWS::AppFlow::Connector -package appflow ../aws/appflow/connector_plural_data_source_gen.go ../aws/appflow/connector_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appflow_connector_profiles -cftype AWS::AppFlow::ConnectorProfile -package appflow ../aws/appflow/connector_profile_plural_data_source_gen.go ../aws/appflow/connector_profile_plural_data_source_gen_test.go @@ -38,6 +39,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_appstream_app_block_builders -cftype AWS::AppStream::AppBlockBuilder -package appstream ../aws/appstream/app_block_builder_plural_data_source_gen.go ../aws/appstream/app_block_builder_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appstream_directory_configs -cftype AWS::AppStream::DirectoryConfig -package appstream ../aws/appstream/directory_config_plural_data_source_gen.go ../aws/appstream/directory_config_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appstream_image_builders -cftype AWS::AppStream::ImageBuilder -package appstream ../aws/appstream/image_builder_plural_data_source_gen.go ../aws/appstream/image_builder_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_appsync_apis -cftype AWS::AppSync::Api -package appsync ../aws/appsync/api_plural_data_source_gen.go ../aws/appsync/api_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appsync_domain_names -cftype AWS::AppSync::DomainName -package appsync ../aws/appsync/domain_name_plural_data_source_gen.go ../aws/appsync/domain_name_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appsync_graph_ql_apis -cftype AWS::AppSync::GraphQLApi -package appsync ../aws/appsync/graph_ql_api_plural_data_source_gen.go ../aws/appsync/graph_ql_api_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_apptest_test_cases -cftype AWS::AppTest::TestCase -package apptest ../aws/apptest/test_case_plural_data_source_gen.go ../aws/apptest/test_case_plural_data_source_gen_test.go @@ -151,6 +153,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_connect_traffic_distribution_groups -cftype AWS::Connect::TrafficDistributionGroup -package connect ../aws/connect/traffic_distribution_group_plural_data_source_gen.go ../aws/connect/traffic_distribution_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_connectcampaigns_campaigns -cftype AWS::ConnectCampaigns::Campaign -package connectcampaigns ../aws/connectcampaigns/campaign_plural_data_source_gen.go ../aws/connectcampaigns/campaign_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_controltower_landing_zones -cftype AWS::ControlTower::LandingZone -package controltower ../aws/controltower/landing_zone_plural_data_source_gen.go ../aws/controltower/landing_zone_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_dms_data_migrations -cftype AWS::DMS::DataMigration -package dms ../aws/dms/data_migration_plural_data_source_gen.go ../aws/dms/data_migration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_dms_data_providers -cftype AWS::DMS::DataProvider -package dms ../aws/dms/data_provider_plural_data_source_gen.go ../aws/dms/data_provider_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_dms_instance_profiles -cftype AWS::DMS::InstanceProfile -package dms ../aws/dms/instance_profile_plural_data_source_gen.go ../aws/dms/instance_profile_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_dms_migration_projects -cftype AWS::DMS::MigrationProject -package dms ../aws/dms/migration_project_plural_data_source_gen.go ../aws/dms/migration_project_plural_data_source_gen_test.go @@ -575,6 +578,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_omics_workflows -cftype AWS::Omics::Workflow -package omics ../aws/omics/workflow_plural_data_source_gen.go ../aws/omics/workflow_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_opensearchserverless_collections -cftype AWS::OpenSearchServerless::Collection -package opensearchserverless ../aws/opensearchserverless/collection_plural_data_source_gen.go ../aws/opensearchserverless/collection_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_opensearchserverless_vpc_endpoints -cftype AWS::OpenSearchServerless::VpcEndpoint -package opensearchserverless ../aws/opensearchserverless/vpc_endpoint_plural_data_source_gen.go ../aws/opensearchserverless/vpc_endpoint_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_opensearchservice_applications -cftype AWS::OpenSearchService::Application -package opensearchservice ../aws/opensearchservice/application_plural_data_source_gen.go ../aws/opensearchservice/application_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_opsworkscm_servers -cftype AWS::OpsWorksCM::Server -package opsworkscm ../aws/opsworkscm/server_plural_data_source_gen.go ../aws/opsworkscm/server_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_organizations_accounts -cftype AWS::Organizations::Account -package organizations ../aws/organizations/account_plural_data_source_gen.go ../aws/organizations/account_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_organizations_organizations -cftype AWS::Organizations::Organization -package organizations ../aws/organizations/organization_plural_data_source_gen.go ../aws/organizations/organization_plural_data_source_gen_test.go @@ -739,6 +743,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_user_profiles -cftype AWS::SageMaker::UserProfile -package sagemaker ../aws/sagemaker/user_profile_plural_data_source_gen.go ../aws/sagemaker/user_profile_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_scheduler_schedule_groups -cftype AWS::Scheduler::ScheduleGroup -package scheduler ../aws/scheduler/schedule_group_plural_data_source_gen.go ../aws/scheduler/schedule_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_secretsmanager_resource_policies -cftype AWS::SecretsManager::ResourcePolicy -package secretsmanager ../aws/secretsmanager/resource_policy_plural_data_source_gen.go ../aws/secretsmanager/resource_policy_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_secretsmanager_rotation_schedules -cftype AWS::SecretsManager::RotationSchedule -package secretsmanager ../aws/secretsmanager/rotation_schedule_plural_data_source_gen.go ../aws/secretsmanager/rotation_schedule_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_secretsmanager_secrets -cftype AWS::SecretsManager::Secret -package secretsmanager ../aws/secretsmanager/secret_plural_data_source_gen.go ../aws/secretsmanager/secret_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_secretsmanager_secret_target_attachments -cftype AWS::SecretsManager::SecretTargetAttachment -package secretsmanager ../aws/secretsmanager/secret_target_attachment_plural_data_source_gen.go ../aws/secretsmanager/secret_target_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_securityhub_configuration_policies -cftype AWS::SecurityHub::ConfigurationPolicy -package securityhub ../aws/securityhub/configuration_policy_plural_data_source_gen.go ../aws/securityhub/configuration_policy_plural_data_source_gen_test.go @@ -954,6 +959,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/oam" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/omics" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opensearchserverless" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opensearchservice" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/opsworkscm" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/organizations" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/osis" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 7366d33802..ce6c1665f9 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -47,6 +47,7 @@ //go:generate go run generators/resource/main.go -resource awscc_apigatewayv2_vpc_link -cfschema ../service/cloudformation/schemas/AWS_ApiGatewayV2_VpcLink.json -package apigatewayv2 -- ../aws/apigatewayv2/vpc_link_resource_gen.go ../aws/apigatewayv2/vpc_link_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appconfig_application -cfschema ../service/cloudformation/schemas/AWS_AppConfig_Application.json -package appconfig -- ../aws/appconfig/application_resource_gen.go ../aws/appconfig/application_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appconfig_configuration_profile -cfschema ../service/cloudformation/schemas/AWS_AppConfig_ConfigurationProfile.json -package appconfig -- ../aws/appconfig/configuration_profile_resource_gen.go ../aws/appconfig/configuration_profile_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_appconfig_deployment_strategy -cfschema ../service/cloudformation/schemas/AWS_AppConfig_DeploymentStrategy.json -package appconfig -- ../aws/appconfig/deployment_strategy_resource_gen.go ../aws/appconfig/deployment_strategy_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appconfig_environment -cfschema ../service/cloudformation/schemas/AWS_AppConfig_Environment.json -package appconfig -- ../aws/appconfig/environment_resource_gen.go ../aws/appconfig/environment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appconfig_extension_association -cfschema ../service/cloudformation/schemas/AWS_AppConfig_ExtensionAssociation.json -package appconfig -- ../aws/appconfig/extension_association_resource_gen.go ../aws/appconfig/extension_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appconfig_hosted_configuration_version -cfschema ../service/cloudformation/schemas/AWS_AppConfig_HostedConfigurationVersion.json -package appconfig -- ../aws/appconfig/hosted_configuration_version_resource_gen.go ../aws/appconfig/hosted_configuration_version_resource_gen_test.go @@ -68,6 +69,7 @@ //go:generate go run generators/resource/main.go -resource awscc_appstream_directory_config -cfschema ../service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json -package appstream -- ../aws/appstream/directory_config_resource_gen.go ../aws/appstream/directory_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appstream_entitlement -cfschema ../service/cloudformation/schemas/AWS_AppStream_Entitlement.json -package appstream -- ../aws/appstream/entitlement_resource_gen.go ../aws/appstream/entitlement_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appstream_image_builder -cfschema ../service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json -package appstream -- ../aws/appstream/image_builder_resource_gen.go ../aws/appstream/image_builder_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_appsync_api -cfschema ../service/cloudformation/schemas/AWS_AppSync_Api.json -package appsync -- ../aws/appsync/api_resource_gen.go ../aws/appsync/api_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_data_source -cfschema ../service/cloudformation/schemas/AWS_AppSync_DataSource.json -package appsync -- ../aws/appsync/data_source_resource_gen.go ../aws/appsync/data_source_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_domain_name -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainName.json -package appsync -- ../aws/appsync/domain_name_resource_gen.go ../aws/appsync/domain_name_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_domain_name_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainNameApiAssociation.json -package appsync -- ../aws/appsync/domain_name_api_association_resource_gen.go ../aws/appsync/domain_name_api_association_resource_gen_test.go @@ -239,6 +241,7 @@ //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_event_stream -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_EventStream.json -package customerprofiles -- ../aws/customerprofiles/event_stream_resource_gen.go ../aws/customerprofiles/event_stream_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_integration -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_Integration.json -package customerprofiles -- ../aws/customerprofiles/integration_resource_gen.go ../aws/customerprofiles/integration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_object_type -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json -package customerprofiles -- ../aws/customerprofiles/object_type_resource_gen.go ../aws/customerprofiles/object_type_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_dms_data_migration -cfschema ../service/cloudformation/schemas/AWS_DMS_DataMigration.json -package dms -- ../aws/dms/data_migration_resource_gen.go ../aws/dms/data_migration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_dms_data_provider -cfschema ../service/cloudformation/schemas/AWS_DMS_DataProvider.json -package dms -- ../aws/dms/data_provider_resource_gen.go ../aws/dms/data_provider_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_dms_instance_profile -cfschema ../service/cloudformation/schemas/AWS_DMS_InstanceProfile.json -package dms -- ../aws/dms/instance_profile_resource_gen.go ../aws/dms/instance_profile_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_dms_migration_project -cfschema ../service/cloudformation/schemas/AWS_DMS_MigrationProject.json -package dms -- ../aws/dms/migration_project_resource_gen.go ../aws/dms/migration_project_resource_gen_test.go @@ -759,6 +762,7 @@ //go:generate go run generators/resource/main.go -resource awscc_opensearchserverless_security_config -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_SecurityConfig.json -package opensearchserverless -- ../aws/opensearchserverless/security_config_resource_gen.go ../aws/opensearchserverless/security_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_opensearchserverless_security_policy -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_SecurityPolicy.json -package opensearchserverless -- ../aws/opensearchserverless/security_policy_resource_gen.go ../aws/opensearchserverless/security_policy_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_opensearchserverless_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_VpcEndpoint.json -package opensearchserverless -- ../aws/opensearchserverless/vpc_endpoint_resource_gen.go ../aws/opensearchserverless/vpc_endpoint_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_opensearchservice_application -cfschema ../service/cloudformation/schemas/AWS_OpenSearchService_Application.json -package opensearchservice -- ../aws/opensearchservice/application_resource_gen.go ../aws/opensearchservice/application_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_opensearchservice_domain -cfschema ../service/cloudformation/schemas/AWS_OpenSearchService_Domain.json -package opensearchservice -- ../aws/opensearchservice/domain_resource_gen.go ../aws/opensearchservice/domain_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_opsworkscm_server -cfschema ../service/cloudformation/schemas/AWS_OpsWorksCM_Server.json -package opsworkscm -- ../aws/opsworkscm/server_resource_gen.go ../aws/opsworkscm/server_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_organizations_account -cfschema ../service/cloudformation/schemas/AWS_Organizations_Account.json -package organizations -- ../aws/organizations/account_resource_gen.go ../aws/organizations/account_resource_gen_test.go @@ -961,6 +965,7 @@ //go:generate go run generators/resource/main.go -resource awscc_sagemaker_user_profile -cfschema ../service/cloudformation/schemas/AWS_SageMaker_UserProfile.json -package sagemaker -- ../aws/sagemaker/user_profile_resource_gen.go ../aws/sagemaker/user_profile_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_scheduler_schedule_group -cfschema ../service/cloudformation/schemas/AWS_Scheduler_ScheduleGroup.json -package scheduler -- ../aws/scheduler/schedule_group_resource_gen.go ../aws/scheduler/schedule_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_secretsmanager_resource_policy -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_ResourcePolicy.json -package secretsmanager -- ../aws/secretsmanager/resource_policy_resource_gen.go ../aws/secretsmanager/resource_policy_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_secretsmanager_rotation_schedule -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_RotationSchedule.json -package secretsmanager -- ../aws/secretsmanager/rotation_schedule_resource_gen.go ../aws/secretsmanager/rotation_schedule_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_secretsmanager_secret -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_Secret.json -package secretsmanager -- ../aws/secretsmanager/secret_resource_gen.go ../aws/secretsmanager/secret_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_secretsmanager_secret_target_attachment -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json -package secretsmanager -- ../aws/secretsmanager/secret_target_attachment_resource_gen.go ../aws/secretsmanager/secret_target_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_securityhub_configuration_policy -cfschema ../service/cloudformation/schemas/AWS_SecurityHub_ConfigurationPolicy.json -package securityhub -- ../aws/securityhub/configuration_policy_resource_gen.go ../aws/securityhub/configuration_policy_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 8b0e484fff..9894059cc6 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -47,6 +47,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_apigatewayv2_vpc_link -cfschema ../service/cloudformation/schemas/AWS_ApiGatewayV2_VpcLink.json -package apigatewayv2 ../aws/apigatewayv2/vpc_link_singular_data_source_gen.go ../aws/apigatewayv2/vpc_link_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_application -cfschema ../service/cloudformation/schemas/AWS_AppConfig_Application.json -package appconfig ../aws/appconfig/application_singular_data_source_gen.go ../aws/appconfig/application_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_configuration_profile -cfschema ../service/cloudformation/schemas/AWS_AppConfig_ConfigurationProfile.json -package appconfig ../aws/appconfig/configuration_profile_singular_data_source_gen.go ../aws/appconfig/configuration_profile_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_deployment_strategy -cfschema ../service/cloudformation/schemas/AWS_AppConfig_DeploymentStrategy.json -package appconfig ../aws/appconfig/deployment_strategy_singular_data_source_gen.go ../aws/appconfig/deployment_strategy_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_environment -cfschema ../service/cloudformation/schemas/AWS_AppConfig_Environment.json -package appconfig ../aws/appconfig/environment_singular_data_source_gen.go ../aws/appconfig/environment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_extension_association -cfschema ../service/cloudformation/schemas/AWS_AppConfig_ExtensionAssociation.json -package appconfig ../aws/appconfig/extension_association_singular_data_source_gen.go ../aws/appconfig/extension_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appconfig_hosted_configuration_version -cfschema ../service/cloudformation/schemas/AWS_AppConfig_HostedConfigurationVersion.json -package appconfig ../aws/appconfig/hosted_configuration_version_singular_data_source_gen.go ../aws/appconfig/hosted_configuration_version_singular_data_source_gen_test.go @@ -68,6 +69,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_appstream_directory_config -cfschema ../service/cloudformation/schemas/AWS_AppStream_DirectoryConfig.json -package appstream ../aws/appstream/directory_config_singular_data_source_gen.go ../aws/appstream/directory_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appstream_entitlement -cfschema ../service/cloudformation/schemas/AWS_AppStream_Entitlement.json -package appstream ../aws/appstream/entitlement_singular_data_source_gen.go ../aws/appstream/entitlement_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appstream_image_builder -cfschema ../service/cloudformation/schemas/AWS_AppStream_ImageBuilder.json -package appstream ../aws/appstream/image_builder_singular_data_source_gen.go ../aws/appstream/image_builder_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_api -cfschema ../service/cloudformation/schemas/AWS_AppSync_Api.json -package appsync ../aws/appsync/api_singular_data_source_gen.go ../aws/appsync/api_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_data_source -cfschema ../service/cloudformation/schemas/AWS_AppSync_DataSource.json -package appsync ../aws/appsync/data_source_singular_data_source_gen.go ../aws/appsync/data_source_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_domain_name -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainName.json -package appsync ../aws/appsync/domain_name_singular_data_source_gen.go ../aws/appsync/domain_name_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_domain_name_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainNameApiAssociation.json -package appsync ../aws/appsync/domain_name_api_association_singular_data_source_gen.go ../aws/appsync/domain_name_api_association_singular_data_source_gen_test.go @@ -239,6 +241,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_event_stream -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_EventStream.json -package customerprofiles ../aws/customerprofiles/event_stream_singular_data_source_gen.go ../aws/customerprofiles/event_stream_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_integration -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_Integration.json -package customerprofiles ../aws/customerprofiles/integration_singular_data_source_gen.go ../aws/customerprofiles/integration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_object_type -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json -package customerprofiles ../aws/customerprofiles/object_type_singular_data_source_gen.go ../aws/customerprofiles/object_type_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_dms_data_migration -cfschema ../service/cloudformation/schemas/AWS_DMS_DataMigration.json -package dms ../aws/dms/data_migration_singular_data_source_gen.go ../aws/dms/data_migration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_dms_data_provider -cfschema ../service/cloudformation/schemas/AWS_DMS_DataProvider.json -package dms ../aws/dms/data_provider_singular_data_source_gen.go ../aws/dms/data_provider_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_dms_instance_profile -cfschema ../service/cloudformation/schemas/AWS_DMS_InstanceProfile.json -package dms ../aws/dms/instance_profile_singular_data_source_gen.go ../aws/dms/instance_profile_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_dms_migration_project -cfschema ../service/cloudformation/schemas/AWS_DMS_MigrationProject.json -package dms ../aws/dms/migration_project_singular_data_source_gen.go ../aws/dms/migration_project_singular_data_source_gen_test.go @@ -759,6 +762,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_opensearchserverless_security_config -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_SecurityConfig.json -package opensearchserverless ../aws/opensearchserverless/security_config_singular_data_source_gen.go ../aws/opensearchserverless/security_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_opensearchserverless_security_policy -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_SecurityPolicy.json -package opensearchserverless ../aws/opensearchserverless/security_policy_singular_data_source_gen.go ../aws/opensearchserverless/security_policy_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_opensearchserverless_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_OpenSearchServerless_VpcEndpoint.json -package opensearchserverless ../aws/opensearchserverless/vpc_endpoint_singular_data_source_gen.go ../aws/opensearchserverless/vpc_endpoint_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_opensearchservice_application -cfschema ../service/cloudformation/schemas/AWS_OpenSearchService_Application.json -package opensearchservice ../aws/opensearchservice/application_singular_data_source_gen.go ../aws/opensearchservice/application_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_opensearchservice_domain -cfschema ../service/cloudformation/schemas/AWS_OpenSearchService_Domain.json -package opensearchservice ../aws/opensearchservice/domain_singular_data_source_gen.go ../aws/opensearchservice/domain_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_opsworkscm_server -cfschema ../service/cloudformation/schemas/AWS_OpsWorksCM_Server.json -package opsworkscm ../aws/opsworkscm/server_singular_data_source_gen.go ../aws/opsworkscm/server_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_organizations_account -cfschema ../service/cloudformation/schemas/AWS_Organizations_Account.json -package organizations ../aws/organizations/account_singular_data_source_gen.go ../aws/organizations/account_singular_data_source_gen_test.go @@ -961,6 +965,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_user_profile -cfschema ../service/cloudformation/schemas/AWS_SageMaker_UserProfile.json -package sagemaker ../aws/sagemaker/user_profile_singular_data_source_gen.go ../aws/sagemaker/user_profile_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_scheduler_schedule_group -cfschema ../service/cloudformation/schemas/AWS_Scheduler_ScheduleGroup.json -package scheduler ../aws/scheduler/schedule_group_singular_data_source_gen.go ../aws/scheduler/schedule_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_secretsmanager_resource_policy -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_ResourcePolicy.json -package secretsmanager ../aws/secretsmanager/resource_policy_singular_data_source_gen.go ../aws/secretsmanager/resource_policy_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_secretsmanager_rotation_schedule -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_RotationSchedule.json -package secretsmanager ../aws/secretsmanager/rotation_schedule_singular_data_source_gen.go ../aws/secretsmanager/rotation_schedule_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_secretsmanager_secret -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_Secret.json -package secretsmanager ../aws/secretsmanager/secret_singular_data_source_gen.go ../aws/secretsmanager/secret_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_secretsmanager_secret_target_attachment -cfschema ../service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json -package secretsmanager ../aws/secretsmanager/secret_target_attachment_singular_data_source_gen.go ../aws/secretsmanager/secret_target_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_securityhub_configuration_policy -cfschema ../service/cloudformation/schemas/AWS_SecurityHub_ConfigurationPolicy.json -package securityhub ../aws/securityhub/configuration_policy_singular_data_source_gen.go ../aws/securityhub/configuration_policy_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_AppConfig_DeploymentStrategy.json b/internal/service/cloudformation/schemas/AWS_AppConfig_DeploymentStrategy.json new file mode 100644 index 0000000000..d6a0d061ee --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_AppConfig_DeploymentStrategy.json @@ -0,0 +1,133 @@ +{ + "typeName": "AWS::AppConfig::DeploymentStrategy", + "description": "Resource Type definition for AWS::AppConfig::DeploymentStrategy", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "properties": { + "DeploymentDurationInMinutes": { + "type": "number", + "description": "Total amount of time for a deployment to last." + }, + "Description": { + "type": "string", + "description": "A description of the deployment strategy." + }, + "FinalBakeTimeInMinutes": { + "type": "number", + "description": "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide." + }, + "GrowthFactor": { + "type": "number", + "description": "The percentage of targets to receive a deployed configuration during each interval." + }, + "GrowthType": { + "type": "string", + "description": "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + "enum": [ + "EXPONENTIAL", + "LINEAR" + ] + }, + "Name": { + "type": "string", + "description": "A name for the deployment strategy." + }, + "ReplicateTo": { + "type": "string", + "description": "Save the deployment strategy to a Systems Manager (SSM) document.", + "enum": [ + "NONE", + "SSM_DOCUMENT" + ] + }, + "Tags": { + "type": "array", + "description": "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Id": { + "type": "string", + "description": "The deployment strategy ID." + } + }, + "definitions": { + "Tag": { + "description": "Metadata to assign to the deployment strategy. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -." + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -." + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "readOnlyProperties": [ + "/properties/Id" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/ReplicateTo" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateDeploymentStrategy", + "appconfig:TagResource" + ] + }, + "read": { + "permissions": [ + "appconfig:GetDeploymentStrategy", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateDeploymentStrategy", + "appconfig:TagResource", + "appconfig:UntagResource" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteDeploymentStrategy" + ] + }, + "list": { + "permissions": [ + "appconfig:ListDeploymentStrategies" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ] + } +} diff --git a/internal/service/cloudformation/schemas/AWS_AppSync_Api.json b/internal/service/cloudformation/schemas/AWS_AppSync_Api.json new file mode 100644 index 0000000000..ba796d4ee5 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_AppSync_Api.json @@ -0,0 +1,327 @@ +{ + "typeName": "AWS::AppSync::Api", + "description": "Resource schema for AppSync Api", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "EventConfig": { + "description": "The configuration for an Event Api", + "type": "object", + "additionalProperties": false, + "properties": { + "AuthProviders": { + "$ref": "#/definitions/AuthProviders" + }, + "ConnectionAuthModes": { + "$ref": "#/definitions/AuthModes" + }, + "DefaultPublishAuthModes": { + "$ref": "#/definitions/AuthModes" + }, + "DefaultSubscribeAuthModes": { + "$ref": "#/definitions/AuthModes" + }, + "LogConfig": { + "$ref": "#/definitions/EventLogConfig" + } + }, + "required": [ + "AuthProviders", + "ConnectionAuthModes", + "DefaultPublishAuthModes", + "DefaultSubscribeAuthModes" + ] + }, + "AuthMode": { + "description": "An auth mode.", + "type": "object", + "additionalProperties": false, + "properties": { + "AuthType": { + "$ref": "#/definitions/AuthenticationType" + } + } + }, + "AuthModes": { + "description": "A list of auth modes for the AppSync API.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthMode" + } + }, + "AuthenticationType": { + "description": "Security configuration for your AppSync API.", + "type": "string", + "enum": [ + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA" + ] + }, + "OpenIDConnectConfig": { + "description": "The OpenID Connect configuration.", + "type": "object", + "additionalProperties": false, + "properties": { + "ClientId": { + "type": "string" + }, + "AuthTTL": { + "type": "number" + }, + "Issuer": { + "type": "string" + }, + "IatTTL": { + "type": "number" + } + }, + "required": [ + "Issuer" + ] + }, + "CognitoConfig": { + "description": "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + "type": "object", + "additionalProperties": false, + "properties": { + "AppIdClientRegex": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + }, + "AwsRegion": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "AwsRegion" + ] + }, + "LambdaAuthorizerConfig": { + "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + "type": "object", + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "type": "integer", + "minimum": 0, + "maximum": 3600 + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "required": [ + "AuthorizerUri" + ] + }, + "AuthProviders": { + "description": "A list of auth providers for the AppSync API.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthProvider" + } + }, + "AuthProvider": { + "description": "An auth provider for the AppSync API.", + "type": "object", + "additionalProperties": false, + "properties": { + "AuthType": { + "$ref": "#/definitions/AuthenticationType" + }, + "OpenIDConnectConfig": { + "$ref": "#/definitions/OpenIDConnectConfig" + }, + "CognitoConfig": { + "$ref": "#/definitions/CognitoConfig" + }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/LambdaAuthorizerConfig" + } + }, + "required": [ + "AuthType" + ] + }, + "Tag": { + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "type": "object", + "properties": { + "Key": { + "description": "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "" + }, + "Value": { + "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + "type": "string", + "minLength": 0, + "maxLength": 256, + "pattern": "^[\\s\\w+-=\\.:/@]*$" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "ApiName": { + "description": "The name of the AppSync API.", + "type": "string", + "minLength": 1, + "maxLength": 50, + "pattern": "[A-Za-z0-9_\\-\\ ]+" + }, + "OwnerContact": { + "description": "The owner contact information for an API resource.", + "type": "string", + "minLength": 1, + "maxLength": 250, + "pattern": "[A-Za-z0-9_\\-\\ \\.]+" + }, + "DnsMap": { + "description": "A map of DNS names for the AppSync API.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "EventLogLevel": { + "description": "Logging level for the AppSync API.", + "type": "string", + "enum": [ + "NONE", + "ERROR", + "ALL", + "INFO", + "DEBUG" + ] + }, + "EventLogConfig": { + "description": "The log config for the AppSync API.", + "type": "object", + "additionalProperties": false, + "properties": { + "LogLevel": { + "$ref": "#/definitions/EventLogLevel" + }, + "CloudWatchLogsRoleArn": { + "type": "string" + } + }, + "required": [ + "LogLevel", + "CloudWatchLogsRoleArn" + ] + } + }, + "properties": { + "ApiId": { + "description": "The unique identifier for the AppSync Api generated by the service", + "type": "string" + }, + "ApiArn": { + "description": "The Amazon Resource Name (ARN) of the AppSync Api", + "type": "string" + }, + "Name": { + "$ref": "#/definitions/ApiName" + }, + "OwnerContact": { + "$ref": "#/definitions/OwnerContact" + }, + "Dns": { + "$ref": "#/definitions/DnsMap" + }, + "EventConfig": { + "$ref": "#/definitions/EventConfig" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource" + ] + }, + "additionalProperties": false, + "required": [ + "Name" + ], + "readOnlyProperties": [ + "/properties/ApiId", + "/properties/Dns", + "/properties/ApiArn" + ], + "primaryIdentifier": [ + "/properties/ApiArn" + ], + "handlers": { + "create": { + "permissions": [ + "appsync:CreateApi", + "appsync:TagResource", + "appsync:GetApi", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "appsync:GetApi", + "appsync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appsync:UpdateApi", + "appsync:TagResource", + "appsync:UntagResource", + "appsync:GetApi", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteApi", + "appsync:UntagResource" + ] + }, + "list": { + "permissions": [ + "appsync:ListApis" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json b/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json index 578522a05f..995914c004 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json @@ -187,7 +187,6 @@ "create": { "permissions": [ "backup:GetBackupPlan", - "backup:ListTags", "backup:TagResource", "backup:CreateBackupPlan" ] diff --git a/internal/service/cloudformation/schemas/AWS_Batch_ComputeEnvironment.json b/internal/service/cloudformation/schemas/AWS_Batch_ComputeEnvironment.json index 8b91f40e68..8ca1e31dc1 100644 --- a/internal/service/cloudformation/schemas/AWS_Batch_ComputeEnvironment.json +++ b/internal/service/cloudformation/schemas/AWS_Batch_ComputeEnvironment.json @@ -213,7 +213,11 @@ "tagOnCreate": true, "tagUpdatable": false, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "Batch:TagResource", + "Batch:UntagResource" + ] }, "required": [ "Type" diff --git a/internal/service/cloudformation/schemas/AWS_Batch_JobQueue.json b/internal/service/cloudformation/schemas/AWS_Batch_JobQueue.json index 72bebc64ee..94e7b6a549 100644 --- a/internal/service/cloudformation/schemas/AWS_Batch_JobQueue.json +++ b/internal/service/cloudformation/schemas/AWS_Batch_JobQueue.json @@ -112,7 +112,11 @@ "tagOnCreate": true, "tagUpdatable": false, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "Batch:TagResource", + "Batch:UntagResource" + ] }, "required": [ "ComputeEnvironmentOrder", diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_Flow.json b/internal/service/cloudformation/schemas/AWS_Bedrock_Flow.json index 9d8ee0fbf6..2a739b4534 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_Flow.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_Flow.json @@ -520,8 +520,11 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", - "description": "ARN or name of a Bedrock model." + "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+\/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(\/[a-z0-9]{1,12})?$", + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models." + }, + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" } }, "required": [ @@ -589,6 +592,9 @@ "properties": { "SourceConfiguration": { "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + }, + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" } }, "required": [ @@ -636,8 +642,8 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", - "description": "ARN or name of a Bedrock model." + "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+\/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(\/[a-z0-9]{1,12})?$", + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models." }, "InferenceConfiguration": { "$ref": "#/definitions/PromptInferenceConfiguration" @@ -802,12 +808,6 @@ "minimum": 0, "description": "Cumulative probability cutoff for token selection" }, - "TopK": { - "type": "number", - "maximum": 500, - "minimum": 0, - "description": "Sample from the k most likely next tokens" - }, "MaxTokens": { "type": "number", "maximum": 4096, @@ -943,6 +943,24 @@ } }, "additionalProperties": false + }, + "GuardrailConfiguration": { + "type": "object", + "description": "Configuration for a guardrail", + "properties": { + "GuardrailIdentifier": { + "type": "string", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail\/[a-z0-9]+))$", + "description": "Identifier for the guardrail, could be the id or the arn" + }, + "GuardrailVersion": { + "type": "string", + "pattern": "^(([0-9]{1,8})|(DRAFT))$", + "description": "Version of the guardrail" + } + }, + "additionalProperties": false } }, "properties": { @@ -1064,14 +1082,18 @@ "bedrock:TagResource", "bedrock:ListTagsForResource", "kms:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "bedrock:CreateGuardrail", + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail" ] }, "read": { "permissions": [ "bedrock:GetFlow", "bedrock:ListTagsForResource", - "kms:Decrypt" + "kms:Decrypt", + "bedrock:GetGuardrail" ] }, "update": { @@ -1086,18 +1108,23 @@ "bedrock:UntagResource", "bedrock:ListTagsForResource", "kms:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "bedrock:UpdateGuardrail", + "bedrock:GetGuardrail" ] }, "delete": { "permissions": [ "bedrock:DeleteFlow", - "bedrock:GetFlow" + "bedrock:GetFlow", + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail" ] }, "list": { "permissions": [ - "bedrock:ListFlows" + "bedrock:ListFlows", + "bedrock:ListGuardrails" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_FlowVersion.json b/internal/service/cloudformation/schemas/AWS_Bedrock_FlowVersion.json index 3bab74f7bf..e83687479d 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_FlowVersion.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_FlowVersion.json @@ -521,8 +521,11 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", - "description": "ARN or name of a Bedrock model." + "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+\/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(\/[a-z0-9]{1,12})?$", + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models." + }, + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" } }, "required": [ @@ -567,6 +570,9 @@ "properties": { "SourceConfiguration": { "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + }, + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" } }, "required": [ @@ -614,8 +620,8 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", - "description": "ARN or name of a Bedrock model." + "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+\/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(\/[a-z0-9]{1,12})?$", + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models." }, "InferenceConfiguration": { "$ref": "#/definitions/PromptInferenceConfiguration" @@ -780,12 +786,6 @@ "minimum": 0, "description": "Cumulative probability cutoff for token selection" }, - "TopK": { - "type": "number", - "maximum": 500, - "minimum": 0, - "description": "Sample from the k most likely next tokens" - }, "MaxTokens": { "type": "number", "maximum": 4096, @@ -855,6 +855,24 @@ "Text" ], "additionalProperties": false + }, + "GuardrailConfiguration": { + "type": "object", + "description": "Configuration for a guardrail", + "properties": { + "GuardrailIdentifier": { + "type": "string", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail\/[a-z0-9]+))$", + "description": "Identifier for the guardrail, could be the id or the arn" + }, + "GuardrailVersion": { + "type": "string", + "pattern": "^(([0-9]{1,8})|(DRAFT))$", + "description": "Version of the guardrail" + } + }, + "additionalProperties": false } }, "properties": { @@ -936,24 +954,31 @@ "bedrock:CreateFlowVersion", "bedrock:GetFlowVersion", "kms:GenerateDataKey", - "kms:Decrypt" + "kms:Decrypt", + "bedrock:CreateGuardrail", + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail" ] }, "read": { "permissions": [ "bedrock:GetFlowVersion", - "kms:Decrypt" + "kms:Decrypt", + "bedrock:GetGuardrail" ] }, "delete": { "permissions": [ "bedrock:DeleteFlowVersion", - "bedrock:GetFlowVersion" + "bedrock:GetFlowVersion", + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail" ] }, "list": { "permissions": [ - "bedrock:ListFlowVersions" + "bedrock:ListFlowVersions", + "bedrock:ListGuardrails" ], "handlerSchema": { "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_Prompt.json b/internal/service/cloudformation/schemas/AWS_Bedrock_Prompt.json index dbdd42a3ba..1ca9f4ada1 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_Prompt.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_Prompt.json @@ -28,8 +28,8 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$", - "description": "ARN or name of a Bedrock model." + "pattern": "^(arn:aws(-[^:]{1,12})?:bedrock:[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+\/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(\/[a-z0-9]{1,12})?$", + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models." }, "InferenceConfiguration": { "$ref": "#/definitions/PromptInferenceConfiguration" @@ -37,7 +37,8 @@ }, "required": [ "Name", - "TemplateType" + "TemplateType", + "TemplateConfiguration" ], "additionalProperties": false }, @@ -132,12 +133,6 @@ "minimum": 0, "description": "Cumulative probability cutoff for token selection" }, - "TopK": { - "type": "number", - "maximum": 500, - "minimum": 0, - "description": "Sample from the k most likely next tokens" - }, "MaxTokens": { "type": "number", "maximum": 4096, @@ -246,7 +241,7 @@ "items": { "$ref": "#/definitions/PromptVariant" }, - "maxItems": 3, + "maxItems": 1, "minItems": 0, "description": "List of prompt variants", "insertionOrder": true diff --git a/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json b/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json index cba591c87e..99a29a2673 100644 --- a/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json +++ b/internal/service/cloudformation/schemas/AWS_CodePipeline_Pipeline.json @@ -503,9 +503,25 @@ "type": "string", "description": "The specified result for when the failure conditions are met, such as rolling back the stage", "enum": [ - "ROLLBACK" + "ROLLBACK", + "RETRY" ] }, + "RetryConfiguration": { + "description": "The configuration that specifies the retry configuration for a stage", + "type": "object", + "additionalProperties": false, + "properties": { + "RetryMode": { + "type": "string", + "description": "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + "enum": [ + "ALL_ACTIONS", + "FAILED_ACTIONS" + ] + } + } + }, "Conditions": { "type": "array", "uniqueItems": true, diff --git a/internal/service/cloudformation/schemas/AWS_Connect_ContactFlow.json b/internal/service/cloudformation/schemas/AWS_Connect_ContactFlow.json index bf97c1fd5e..4e589de264 100644 --- a/internal/service/cloudformation/schemas/AWS_Connect_ContactFlow.json +++ b/internal/service/cloudformation/schemas/AWS_Connect_ContactFlow.json @@ -79,7 +79,8 @@ "AGENT_WHISPER", "OUTBOUND_WHISPER", "AGENT_TRANSFER", - "QUEUE_TRANSFER" + "QUEUE_TRANSFER", + "CAMPAIGN" ] }, "Tags": { diff --git a/internal/service/cloudformation/schemas/AWS_DMS_DataMigration.json b/internal/service/cloudformation/schemas/AWS_DMS_DataMigration.json new file mode 100644 index 0000000000..2a3f8bcc44 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_DMS_DataMigration.json @@ -0,0 +1,216 @@ +{ + "typeName": "AWS::DMS::DataMigration", + "description": "Resource schema for AWS::DMS::DataMigration.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ] + }, + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + }, + "DataMigrationSettings": { + "type": "object", + "properties": { + "CloudwatchLogsEnabled": { + "type": "boolean", + "description": "The property specifies whether to enable the Cloudwatch log." + }, + "NumberOfJobs": { + "type": "integer", + "description": "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + "minimum": 1, + "maximum": 50 + }, + "SelectionRules": { + "type": "string", + "description": "The property specifies the rules of selecting objects for data migration." + } + }, + "additionalProperties": false + }, + "SourceDataSettings": { + "type": "object", + "properties": { + "CDCStartPosition": { + "type": "string", + "description": "The property is a point in the database engine's log that defines a time where you can begin CDC.", + "maxLength": 40 + }, + "CDCStartTime": { + "type": "string", + "description": "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + "maxLength": 40 + }, + "CDCStopTime": { + "type": "string", + "description": "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + "maxLength": 40 + }, + "SlotName": { + "type": "string", + "description": "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + "maxLength": 255 + } + }, + "additionalProperties": false + } + }, + "properties": { + "DataMigrationName": { + "description": "The property describes a name to identify the data migration.", + "type": "string", + "minLength": 1, + "maxLength": 300 + }, + "DataMigrationArn": { + "description": "The property describes an ARN of the data migration.", + "type": "string", + "minLength": 1, + "maxLength": 300 + }, + "DataMigrationIdentifier": { + "description": "The property describes an ARN of the data migration.", + "type": "string", + "minLength": 1, + "maxLength": 300 + }, + "DataMigrationCreateTime": { + "description": "The property describes the create time of the data migration.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "ServiceAccessRoleArn": { + "description": "The property describes Amazon Resource Name (ARN) of the service access role.", + "type": "string", + "minLength": 1, + "maxLength": 300 + }, + "MigrationProjectIdentifier": { + "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + "type": "string", + "minLength": 1, + "maxLength": 255 + }, + "DataMigrationType": { + "description": "The property describes the type of migration.", + "type": "string", + "enum": [ + "full-load", + "cdc", + "full-load-and-cdc" + ] + }, + "DataMigrationSettings": { + "description": "The property describes the settings for the data migration.", + "$ref": "#/definitions/DataMigrationSettings" + }, + "SourceDataSettings": { + "description": "The property describes the settings for the data migration.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SourceDataSettings" + } + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "primaryIdentifier": [ + "/properties/DataMigrationArn" + ], + "additionalIdentifiers": [ + [ + "/properties/DataMigrationName" + ] + ], + "readOnlyProperties": [ + "/properties/DataMigrationArn", + "/properties/DataMigrationCreateTime" + ], + "writeOnlyProperties": [ + "/properties/DataMigrationIdentifier" + ], + "required": [ + "DataMigrationType", + "MigrationProjectIdentifier", + "ServiceAccessRoleArn" + ], + "additionalProperties": false, + "handlers": { + "create": { + "permissions": [ + "dms:CreateDataMigration", + "dms:DescribeDataMigrations", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "dms:DescribeDataMigrations", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:ModifyDataMigration", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "dms:DeleteDataMigration", + "dms:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "dms:DescribeDataMigrations", + "dms:ListTagsForResource" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_EIP.json b/internal/service/cloudformation/schemas/AWS_EC2_EIP.json index 567cbdaf85..bfaad204cf 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_EIP.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_EIP.json @@ -60,6 +60,14 @@ "description": "The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool.\n Updates to the ``PublicIpv4Pool`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", "type": "string" }, + "IpamPoolId": { + "description": "", + "type": "string" + }, + "Address": { + "description": "", + "type": "string" + }, "Tags": { "description": "Any tags assigned to the Elastic IP address.\n Updates to the ``Tags`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", "type": "array", @@ -110,10 +118,14 @@ "createOnlyProperties": [ "/properties/Domain", "/properties/NetworkBorderGroup", - "/properties/TransferAddress" + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" ], "writeOnlyProperties": [ - "/properties/TransferAddress" + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" ], "readOnlyProperties": [ "/properties/PublicIp", diff --git a/internal/service/cloudformation/schemas/AWS_ECS_TaskSet.json b/internal/service/cloudformation/schemas/AWS_ECS_TaskSet.json index abbb4f89d2..a55a537126 100644 --- a/internal/service/cloudformation/schemas/AWS_ECS_TaskSet.json +++ b/internal/service/cloudformation/schemas/AWS_ECS_TaskSet.json @@ -1,9 +1,15 @@ { "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", "tagging": { + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, + "tagProperty": "/properties/Tags", "cloudFormationSystemTags": false }, "handlers": { diff --git a/internal/service/cloudformation/schemas/AWS_EKS_AccessEntry.json b/internal/service/cloudformation/schemas/AWS_EKS_AccessEntry.json index 7743a2fec4..059a738335 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_AccessEntry.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_AccessEntry.json @@ -129,7 +129,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ] }, "additionalProperties": false, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_Events_ApiDestination.json b/internal/service/cloudformation/schemas/AWS_Events_ApiDestination.json index f50460b1ae..21d219f5db 100644 --- a/internal/service/cloudformation/schemas/AWS_Events_ApiDestination.json +++ b/internal/service/cloudformation/schemas/AWS_Events_ApiDestination.json @@ -6,7 +6,8 @@ "description": "Name of the apiDestination.", "type": "string", "minLength": 1, - "maxLength": 64 + "maxLength": 64, + "pattern": "[\\.\\-_A-Za-z0-9]+" }, "Description": { "type": "string", @@ -14,11 +15,13 @@ }, "ConnectionArn": { "description": "The arn of the connection.", - "type": "string" + "type": "string", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\/[\\.\\-_A-Za-z0-9]+\/[\\-A-Za-z0-9]+$" }, "Arn": { "description": "The arn of the api destination.", - "type": "string" + "type": "string", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination\/[\\.\\-_A-Za-z0-9]+\/[\\-A-Za-z0-9]+$" }, "InvocationRateLimitPerSecond": { "type": "integer", @@ -26,7 +29,8 @@ }, "InvocationEndpoint": { "description": "Url endpoint to invoke.", - "type": "string" + "type": "string", + "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$" }, "HttpMethod": { "type": "string", @@ -57,7 +61,10 @@ "/properties/Name" ], "tagging": { - "taggable": false + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Events_Archive.json b/internal/service/cloudformation/schemas/AWS_Events_Archive.json index 0fb02a8ee6..8233087a97 100644 --- a/internal/service/cloudformation/schemas/AWS_Events_Archive.json +++ b/internal/service/cloudformation/schemas/AWS_Events_Archive.json @@ -6,7 +6,8 @@ "ArchiveName": { "type": "string", "minLength": 1, - "maxLength": 48 + "maxLength": 48, + "pattern": "[\\.\\-_A-Za-z0-9]+" }, "SourceArn": { "type": "string" @@ -18,7 +19,8 @@ "type": "object" }, "Arn": { - "type": "string" + "type": "string", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:.+\\/.+$" }, "RetentionDays": { "type": "integer" @@ -37,6 +39,12 @@ "primaryIdentifier": [ "/properties/ArchiveName" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_Events_Connection.json b/internal/service/cloudformation/schemas/AWS_Events_Connection.json index c06ce4948f..5b2016d2e8 100644 --- a/internal/service/cloudformation/schemas/AWS_Events_Connection.json +++ b/internal/service/cloudformation/schemas/AWS_Events_Connection.json @@ -1,25 +1,66 @@ { + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "read": { + "permissions": [ + "events:DescribeConnection" + ] + }, + "create": { + "permissions": [ + "events:CreateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "iam:CreateServiceLinkedRole" + ] + }, + "update": { + "permissions": [ + "events:UpdateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:UpdateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue" + ] + }, + "list": { + "permissions": [ + "events:ListConnections" + ] + }, + "delete": { + "permissions": [ + "events:DeleteConnection", + "events:DescribeConnection" + ] + } + }, "typeName": "AWS::Events::Connection", + "readOnlyProperties": [ + "/properties/Arn", + "/properties/SecretArn" + ], "description": "Resource Type definition for AWS::Events::Connection.", + "writeOnlyProperties": [ + "/properties/AuthParameters" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Name" + ], "definitions": { "AuthParameters": { - "type": "object", - "minProperties": 1, - "maxProperties": 2, - "properties": { - "ApiKeyAuthParameters": { - "$ref": "#/definitions/ApiKeyAuthParameters" - }, - "BasicAuthParameters": { - "$ref": "#/definitions/BasicAuthParameters" - }, - "OAuthParameters": { - "$ref": "#/definitions/OAuthParameters" - }, - "InvocationHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" - } - }, "oneOf": [ { "required": [ @@ -37,33 +78,93 @@ ] } ], - "additionalProperties": false + "maxProperties": 2, + "additionalProperties": false, + "type": "object", + "properties": { + "InvocationHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" + }, + "BasicAuthParameters": { + "$ref": "#/definitions/BasicAuthParameters" + }, + "ApiKeyAuthParameters": { + "$ref": "#/definitions/ApiKeyAuthParameters" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + } + }, + "minProperties": 1 + }, + "ClientParameters": { + "additionalProperties": false, + "type": "object", + "properties": { + "ClientSecret": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + }, + "ClientID": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + } + }, + "required": [ + "ClientID", + "ClientSecret" + ] }, "BasicAuthParameters": { + "additionalProperties": false, "type": "object", "properties": { "Username": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", "type": "string" }, "Password": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", "type": "string" } }, "required": [ "Username", "Password" - ], - "additionalProperties": false + ] + }, + "ApiKeyAuthParameters": { + "additionalProperties": false, + "type": "object", + "properties": { + "ApiKeyValue": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + }, + "ApiKeyName": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + } + }, + "required": [ + "ApiKeyName", + "ApiKeyValue" + ] }, "OAuthParameters": { + "additionalProperties": false, "type": "object", "properties": { "ClientParameters": { "$ref": "#/definitions/ClientParameters" }, + "OAuthHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" + }, "AuthorizationEndpoint": { - "type": "string", "minLength": 1, + "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", + "type": "string", "maxLength": 2048 }, "HttpMethod": { @@ -73,51 +174,36 @@ "POST", "PUT" ] - }, - "OAuthHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" } }, "required": [ "ClientParameters", "AuthorizationEndpoint", "HttpMethod" - ], - "additionalProperties": false + ] }, - "ApiKeyAuthParameters": { + "Parameter": { + "additionalProperties": false, "type": "object", "properties": { - "ApiKeyName": { + "Value": { "type": "string" }, - "ApiKeyValue": { - "type": "string" - } - }, - "required": [ - "ApiKeyName", - "ApiKeyValue" - ], - "additionalProperties": false - }, - "ClientParameters": { - "type": "object", - "properties": { - "ClientID": { - "type": "string" + "IsValueSecret": { + "default": true, + "type": "boolean" }, - "ClientSecret": { + "Key": { "type": "string" } }, "required": [ - "ClientID", - "ClientSecret" - ], - "additionalProperties": false + "Key", + "Value" + ] }, "ConnectionHttpParameters": { + "additionalProperties": false, "type": "object", "properties": { "HeaderParameters": { @@ -138,50 +224,28 @@ "$ref": "#/definitions/Parameter" } } - }, - "additionalProperties": false - }, - "Parameter": { - "type": "object", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - }, - "IsValueSecret": { - "type": "boolean", - "default": true - } - }, - "required": [ - "Key", - "Value" - ], - "additionalProperties": false + } } }, "properties": { - "Name": { - "description": "Name of the connection.", - "type": "string", - "minLength": 1, - "maxLength": 64 - }, - "Arn": { - "description": "The arn of the connection resource.", - "type": "string" - }, "SecretArn": { + "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:[\\/_+=\\.@\\-A-Za-z0-9]+$", "description": "The arn of the secrets manager secret created in the customer account.", "type": "string" }, + "AuthParameters": { + "$ref": "#/definitions/AuthParameters" + }, "Description": { "description": "Description of the connection.", "type": "string", "maxLength": 512 }, + "Arn": { + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", + "description": "The arn of the connection resource.", + "type": "string" + }, "AuthorizationType": { "type": "string", "enum": [ @@ -190,63 +254,12 @@ "OAUTH_CLIENT_CREDENTIALS" ] }, - "AuthParameters": { - "$ref": "#/definitions/AuthParameters" - } - }, - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "readOnlyProperties": [ - "/properties/Arn", - "/properties/SecretArn" - ], - "writeOnlyProperties": [ - "/properties/AuthParameters" - ], - "primaryIdentifier": [ - "/properties/Name" - ], - "tagging": { - "taggable": false - }, - "handlers": { - "create": { - "permissions": [ - "events:CreateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue", - "iam:CreateServiceLinkedRole" - ] - }, - "read": { - "permissions": [ - "events:DescribeConnection" - ] - }, - "update": { - "permissions": [ - "events:UpdateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:UpdateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue" - ] - }, - "delete": { - "permissions": [ - "events:DeleteConnection", - "events:DescribeConnection" - ] - }, - "list": { - "permissions": [ - "events:ListConnections" - ] + "Name": { + "minLength": 1, + "pattern": "[\\.\\-_A-Za-z0-9]+", + "description": "Name of the connection.", + "type": "string", + "maxLength": 64 } } } diff --git a/internal/service/cloudformation/schemas/AWS_FIS_ExperimentTemplate.json b/internal/service/cloudformation/schemas/AWS_FIS_ExperimentTemplate.json index ea84300239..00d93c55de 100644 --- a/internal/service/cloudformation/schemas/AWS_FIS_ExperimentTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_FIS_ExperimentTemplate.json @@ -1,141 +1,210 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", + "tagging": { + "permissions": [ + "fis:TagResource", + "fis:UntagResource", + "fis:ListTagsForResource" + ], + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true + }, + "handlers": { + "read": { + "permissions": [ + "fis:GetExperimentTemplate", + "fis:ListTagsForResource" + ] + }, + "create": { + "permissions": [ + "fis:CreateExperimentTemplate", + "fis:TagResource", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "fis:UpdateExperimentTemplate", + "fis:TagResource", + "fis:UntagResource", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "fis:ListExperimentTemplates", + "fis:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "fis:DeleteExperimentTemplate" + ] + } + }, "typeName": "AWS::FIS::ExperimentTemplate", + "readOnlyProperties": [ + "/properties/Id" + ], "description": "Resource schema for AWS::FIS::ExperimentTemplate", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", + "createOnlyProperties": [ + "/properties/Tags", + "/properties/ExperimentOptions/AccountTargeting" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Id" + ], "definitions": { - "ExperimentTemplateId": { - "type": "string" - }, - "ExperimentTemplateDescription": { + "ExperimentTemplateActionItemDescription": { + "description": "A description for the action.", "type": "string", - "description": "A description for the experiment template.", "maxLength": 512 }, + "CloudWatchDashboard": { + "additionalProperties": false, + "type": "object", + "properties": { + "DashboardIdentifier": { + "minLength": 1, + "type": "string", + "maxLength": 512 + } + }, + "required": [ + "DashboardIdentifier" + ] + }, "StopConditionSource": { "type": "string", "maxLength": 64 }, - "StopConditionValue": { - "type": "string", - "minLength": 20, - "maxLength": 2048 - }, "ExperimentTemplateStopCondition": { - "type": "object", "additionalProperties": false, + "type": "object", "properties": { - "Source": { - "$ref": "#/definitions/StopConditionSource" - }, "Value": { "$ref": "#/definitions/StopConditionValue" + }, + "Source": { + "$ref": "#/definitions/StopConditionSource" } }, "required": [ "Source" ] }, - "ExperimentTemplateStopConditionList": { - "type": "array", - "description": "One or more stop conditions.", - "items": { - "$ref": "#/definitions/ExperimentTemplateStopCondition" - } - }, - "ResourceType": { - "type": "string", - "description": "The AWS resource type. The resource type must be supported for the specified action.", - "maxLength": 64 - }, - "ResourceArn": { - "type": "string", - "minLength": 20, - "maxLength": 2048 - }, - "ResourceArnList": { - "type": "array", - "description": "The Amazon Resource Names (ARNs) of the target resources.", - "items": { - "$ref": "#/definitions/ResourceArn" - } - }, - "ExperimentTemplateTargetSelectionMode": { + "ExperimentTemplateActionItemStartAfter": { "type": "string", - "description": "Scopes the identified resources to a specific number of the resources at random, or a percentage of the resources.", "maxLength": 64 }, - "ExperimentTemplateTargetFilterPath": { - "type": "string", - "description": "The attribute path for the filter.", - "maxLength": 256 - }, - "ExperimentTemplateTargetFilterValue": { - "type": "string", - "maxLength": 128 - }, - "ExperimentTemplateTargetFilterValues": { - "type": "array", - "description": "The attribute values for the filter.", - "items": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterValue" - } - }, - "ExperimentTemplateTargetFilter": { - "type": "object", - "description": "Describes a filter used for the target resource input in an experiment template.", + "ExperimentTemplateLogConfiguration": { "additionalProperties": false, + "type": "object", "properties": { - "Path": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterPath" + "S3Configuration": { + "additionalProperties": false, + "type": "object", + "properties": { + "BucketName": { + "minLength": 3, + "type": "string", + "maxLength": 63 + }, + "Prefix": { + "minLength": 1, + "type": "string", + "maxLength": 1024 + } + }, + "required": [ + "BucketName" + ] }, - "Values": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterValues" + "LogSchemaVersion": { + "type": "integer", + "minimum": 1 + }, + "CloudWatchLogsConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "LogGroupArn": { + "minLength": 20, + "type": "string", + "maxLength": 2048 + } + }, + "required": [ + "LogGroupArn" + ] } }, "required": [ - "Path", - "Values" + "LogSchemaVersion" ] }, + "ExperimentTemplateId": { + "type": "string" + }, + "ExperimentTemplateTargetSelectionMode": { + "description": "Scopes the identified resources to a specific number of the resources at random, or a percentage of the resources.", + "type": "string", + "maxLength": 64 + }, + "ExperimentTemplateDescription": { + "description": "A description for the experiment template.", + "type": "string", + "maxLength": 512 + }, "ExperimentTemplateTargetFilterList": { "type": "array", "items": { "$ref": "#/definitions/ExperimentTemplateTargetFilter" } }, + "StopConditionValue": { + "minLength": 20, + "type": "string", + "maxLength": 2048 + }, "ExperimentTemplateTarget": { - "type": "object", "description": "Specifies a target for an experiment.", "additionalProperties": false, + "type": "object", "properties": { - "ResourceType": { - "$ref": "#/definitions/ResourceType" - }, - "ResourceArns": { - "$ref": "#/definitions/ResourceArnList" + "Filters": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterList" }, - "ResourceTags": { - "type": "object", + "Parameters": { "patternProperties": { "": { "type": "string", - "maxLength": 256 + "maxLength": 1024 } }, - "additionalProperties": false + "additionalProperties": false, + "type": "object" }, - "Parameters": { - "type": "object", + "ResourceTags": { "patternProperties": { "": { "type": "string", - "maxLength": 1024 + "maxLength": 256 } }, - "additionalProperties": false + "additionalProperties": false, + "type": "object" }, - "Filters": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterList" + "ResourceType": { + "$ref": "#/definitions/ResourceType" + }, + "ResourceArns": { + "$ref": "#/definitions/ResourceArnList" }, "SelectionMode": { "$ref": "#/definitions/ExperimentTemplateTargetSelectionMode" @@ -146,49 +215,123 @@ "SelectionMode" ] }, + "ExperimentTemplateActionItemTarget": { + "type": "string", + "maxLength": 64 + }, "ExperimentTemplateTargetMap": { - "type": "object", - "description": "The targets for the experiment.", "patternProperties": { "": { "$ref": "#/definitions/ExperimentTemplateTarget" } }, - "additionalProperties": false + "description": "The targets for the experiment.", + "additionalProperties": false, + "type": "object" }, - "ActionId": { - "type": "string", - "description": "The ID of the action.", - "maxLength": 64 + "ExperimentTemplateActionItemStartAfterList": { + "description": "The names of the actions that must be completed before the current action starts.", + "type": "array", + "items": { + "$ref": "#/definitions/ExperimentTemplateActionItemStartAfter" + } }, - "ExperimentTemplateActionItemDescription": { + "ExperimentTemplateTargetFilterPath": { + "description": "The attribute path for the filter.", "type": "string", - "description": "A description for the action.", - "maxLength": 512 + "maxLength": 256 }, "ExperimentTemplateActionItemParameter": { "type": "string", "maxLength": 1024 }, - "ExperimentTemplateActionItemTarget": { + "ExperimentTemplateTargetFilter": { + "description": "Describes a filter used for the target resource input in an experiment template.", + "additionalProperties": false, + "type": "object", + "properties": { + "Path": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterPath" + }, + "Values": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "Path", + "Values" + ] + }, + "ResourceType": { + "description": "The AWS resource type. The resource type must be supported for the specified action.", "type": "string", "maxLength": 64 }, - "ExperimentTemplateActionItemStartAfter": { + "ExperimentTemplateActionMap": { + "patternProperties": { + "": { + "$ref": "#/definitions/ExperimentTemplateAction" + } + }, + "description": "The actions for the experiment.", + "additionalProperties": false, + "type": "object" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.", + "type": "string", + "maxLength": 1224 + }, + "ResourceArnList": { + "description": "The Amazon Resource Names (ARNs) of the target resources.", + "type": "array", + "items": { + "$ref": "#/definitions/ResourceArn" + } + }, + "ResourceArn": { + "minLength": 20, + "type": "string", + "maxLength": 2048 + }, + "ExperimentTemplateExperimentOptions": { + "additionalProperties": false, + "type": "object", + "properties": { + "EmptyTargetResolutionMode": { + "description": "The target resolution failure mode for the experiment template.", + "type": "string", + "enum": [ + "fail", + "skip" + ] + }, + "AccountTargeting": { + "description": "The account targeting setting for the experiment template.", + "type": "string", + "enum": [ + "multi-account", + "single-account" + ] + } + } + }, + "ActionId": { + "description": "The ID of the action.", "type": "string", "maxLength": 64 }, - "ExperimentTemplateActionItemStartAfterList": { + "ExperimentTemplateStopConditionList": { + "description": "One or more stop conditions.", "type": "array", - "description": "The names of the actions that must be completed before the current action starts.", "items": { - "$ref": "#/definitions/ExperimentTemplateActionItemStartAfter" + "$ref": "#/definitions/ExperimentTemplateStopCondition" } }, "ExperimentTemplateAction": { - "type": "object", "description": "Specifies an action for the experiment template.", "additionalProperties": false, + "type": "object", "properties": { "ActionId": { "$ref": "#/definitions/ActionId" @@ -197,24 +340,24 @@ "$ref": "#/definitions/ExperimentTemplateActionItemDescription" }, "Parameters": { - "type": "object", - "description": "The parameters for the action, if applicable.", "patternProperties": { "": { "$ref": "#/definitions/ExperimentTemplateActionItemParameter" } }, - "additionalProperties": false + "description": "The parameters for the action, if applicable.", + "additionalProperties": false, + "type": "object" }, "Targets": { - "type": "object", - "description": "One or more targets for the action.", "patternProperties": { "": { "$ref": "#/definitions/ExperimentTemplateActionItemTarget" } }, - "additionalProperties": false + "description": "One or more targets for the action.", + "additionalProperties": false, + "type": "object" }, "StartAfter": { "$ref": "#/definitions/ExperimentTemplateActionItemStartAfterList" @@ -224,106 +367,44 @@ "ActionId" ] }, - "ExperimentTemplateActionMap": { - "type": "object", - "description": "The actions for the experiment.", - "patternProperties": { - "": { - "$ref": "#/definitions/ExperimentTemplateAction" - } - }, - "additionalProperties": false - }, - "ExperimentTemplateLogConfiguration": { - "type": "object", - "additionalProperties": false, - "properties": { - "CloudWatchLogsConfiguration": { - "type": "object", - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "type": "string", - "minLength": 20, - "maxLength": 2048 - } - }, - "required": [ - "LogGroupArn" - ] - }, - "S3Configuration": { - "type": "object", - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string", - "minLength": 3, - "maxLength": 63 - }, - "Prefix": { - "type": "string", - "minLength": 1, - "maxLength": 1024 - } - }, - "required": [ - "BucketName" - ] - }, - "LogSchemaVersion": { - "type": "integer", - "minimum": 1 - } - }, - "required": [ - "LogSchemaVersion" - ] - }, - "ExperimentTemplateExperimentOptions": { - "type": "object", - "additionalProperties": false, - "properties": { - "AccountTargeting": { - "type": "string", - "description": "The account targeting setting for the experiment template.", - "enum": [ - "multi-account", - "single-account" - ] - }, - "EmptyTargetResolutionMode": { - "type": "string", - "description": "The target resolution failure mode for the experiment template.", - "enum": [ - "fail", - "skip" - ] - } + "ExperimentTemplateTargetFilterValues": { + "description": "The attribute values for the filter.", + "type": "array", + "items": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterValue" } }, - "RoleArn": { + "ExperimentTemplateTargetFilterValue": { "type": "string", - "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.", - "maxLength": 1224 + "maxLength": 128 } }, + "required": [ + "Description", + "StopConditions", + "Targets", + "RoleArn", + "Tags" + ], "properties": { - "Id": { - "$ref": "#/definitions/ExperimentTemplateId" - }, "Description": { "$ref": "#/definitions/ExperimentTemplateDescription" }, - "Targets": { - "$ref": "#/definitions/ExperimentTemplateTargetMap" - }, "Actions": { "$ref": "#/definitions/ExperimentTemplateActionMap" }, + "ExperimentOptions": { + "$ref": "#/definitions/ExperimentTemplateExperimentOptions" + }, "StopConditions": { "$ref": "#/definitions/ExperimentTemplateStopConditionList" }, + "Targets": { + "$ref": "#/definitions/ExperimentTemplateTargetMap" + }, + "Id": { + "$ref": "#/definitions/ExperimentTemplateId" + }, "LogConfiguration": { "$ref": "#/definitions/ExperimentTemplateLogConfiguration" }, @@ -331,81 +412,14 @@ "$ref": "#/definitions/RoleArn" }, "Tags": { - "type": "object", "patternProperties": { "": { "type": "string", "maxLength": 256 } }, - "additionalProperties": false - }, - "ExperimentOptions": { - "$ref": "#/definitions/ExperimentTemplateExperimentOptions" - } - }, - "additionalProperties": false, - "required": [ - "Description", - "StopConditions", - "Targets", - "RoleArn", - "Tags" - ], - "readOnlyProperties": [ - "/properties/Id" - ], - "createOnlyProperties": [ - "/properties/Tags", - "/properties/ExperimentOptions/AccountTargeting" - ], - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags", - "permissions": [ - "fis:TagResource", - "fis:UntagResource", - "fis:ListTagsForResource" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "handlers": { - "create": { - "permissions": [ - "fis:CreateExperimentTemplate", - "fis:TagResource", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "fis:GetExperimentTemplate", - "fis:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "fis:UpdateExperimentTemplate", - "fis:TagResource", - "fis:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "fis:DeleteExperimentTemplate" - ] - }, - "list": { - "permissions": [ - "fis:ListExperimentTemplates", - "fis:ListTagsForResource" - ] + "additionalProperties": false, + "type": "object" } } } diff --git a/internal/service/cloudformation/schemas/AWS_M2_Application.json b/internal/service/cloudformation/schemas/AWS_M2_Application.json index 640b8c7f36..555fcc4841 100644 --- a/internal/service/cloudformation/schemas/AWS_M2_Application.json +++ b/internal/service/cloudformation/schemas/AWS_M2_Application.json @@ -100,7 +100,6 @@ "cloudFormationSystemTags": false }, "required": [ - "Definition", "EngineType", "Name" ], diff --git a/internal/service/cloudformation/schemas/AWS_M2_Environment.json b/internal/service/cloudformation/schemas/AWS_M2_Environment.json index 731b563fb5..c9f9b92d97 100644 --- a/internal/service/cloudformation/schemas/AWS_M2_Environment.json +++ b/internal/service/cloudformation/schemas/AWS_M2_Environment.json @@ -244,7 +244,8 @@ "m2:GetEnvironment", "m2:ListTagsForResource", "m2:TagResource" - ] + ], + "timeoutInMinutes": 60 }, "read": { "permissions": [ @@ -260,14 +261,16 @@ "m2:GetEnvironment", "m2:UpdateEnvironment", "kms:DescribeKey" - ] + ], + "timeoutInMinutes": 60 }, "delete": { "permissions": [ "elasticloadbalancing:DeleteLoadBalancer", "m2:DeleteEnvironment", "m2:GetEnvironment" - ] + ], + "timeoutInMinutes": 60 }, "list": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_MWAA_Environment.json b/internal/service/cloudformation/schemas/AWS_MWAA_Environment.json index 3a589ebf63..5e90d1a68f 100644 --- a/internal/service/cloudformation/schemas/AWS_MWAA_Environment.json +++ b/internal/service/cloudformation/schemas/AWS_MWAA_Environment.json @@ -178,12 +178,12 @@ "MaxWebservers": { "type": "integer", "description": "Maximum webserver compute units.", - "minimum": 2 + "minimum": 1 }, "MinWebservers": { "type": "integer", "description": "Minimum webserver compute units.", - "minimum": 2 + "minimum": 1 }, "Schedulers": { "type": "integer", diff --git a/internal/service/cloudformation/schemas/AWS_MediaPackageV2_OriginEndpoint.json b/internal/service/cloudformation/schemas/AWS_MediaPackageV2_OriginEndpoint.json index d7e041ee11..b4497ef2f7 100644 --- a/internal/service/cloudformation/schemas/AWS_MediaPackageV2_OriginEndpoint.json +++ b/internal/service/cloudformation/schemas/AWS_MediaPackageV2_OriginEndpoint.json @@ -181,6 +181,11 @@ "maximum": 1209600, "minimum": 0, "description": "Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL.
" + }, + "ClipStartTime": { + "type": "string", + "description": "Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.
", + "format": "date-time" } }, "additionalProperties": false @@ -291,6 +296,9 @@ }, "FilterConfiguration": { "$ref": "#/definitions/FilterConfiguration" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" } }, "required": [ @@ -333,6 +341,9 @@ }, "FilterConfiguration": { "$ref": "#/definitions/FilterConfiguration" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" } }, "required": [ @@ -498,6 +509,24 @@ ], "additionalProperties": false }, + "StartTag": { + "type": "object", + "description": "To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.
", + "properties": { + "TimeOffset": { + "type": "number", + "description": "Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.
" + }, + "Precise": { + "type": "boolean", + "description": "Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.
" + } + }, + "required": [ + "TimeOffset" + ], + "additionalProperties": false + }, "TsEncryptionMethod": { "type": "string", "enum": [ diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json index 46248cfc30..397d2452c9 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json @@ -263,7 +263,7 @@ "TcpIdleTimeoutSeconds": { "type": "integer", "minimum": 60, - "maximum": 600 + "maximum": 6000 } }, "additionalProperties": false diff --git a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Application.json b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Application.json new file mode 100644 index 0000000000..ee61546fa9 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Application.json @@ -0,0 +1,210 @@ +{ + "typeName": "AWS::OpenSearchService::Application", + "description": "Amazon OpenSearchService application resource", + "definitions": { + "AppConfigType": { + "type": "string", + "enum": [ + "opensearchDashboards.dashboardAdmin.users", + "opensearchDashboards.dashboardAdmin.groups" + ], + "description": "AppConfig type values." + }, + "Tag": { + "type": "object", + "description": "A key-value pair metadata associated with resource", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "The key in the key-value pair" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "The value in the key-value pair" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + }, + "AppConfig": { + "type": "object", + "description": "A key-value pair of AppConfig", + "properties": { + "Key": { + "$ref": "#/definitions/AppConfigType", + "description": "The configuration key" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "The configuration value." + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + }, + "DataSource": { + "type": "object", + "description": "Datasource arn and description", + "properties": { + "DataSourceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the data source." + }, + "DataSourceDescription": { + "type": "string", + "description": "Description of the data source." + } + }, + "required": [ + "DataSourceArn" + ], + "additionalProperties": false + } + }, + "properties": { + "IamIdentityCenterOptions": { + "type": "object", + "description": "Options for configuring IAM Identity Center", + "properties": { + "Enabled": { + "type": "boolean", + "description": "Whether IAM Identity Center is enabled." + }, + "IamIdentityCenterInstanceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the IAM Identity Center instance." + }, + "IamRoleForIdentityCenterApplicationArn": { + "type": "string", + "description": "The ARN of the IAM role for Identity Center application." + } + }, + "additionalProperties": false + }, + "Arn": { + "type": "string", + "description": "Amazon Resource Name (ARN) format." + }, + "Id": { + "type": "string", + "maxLength": 40, + "minLength": 3, + "description": "The identifier of the application." + }, + "Name": { + "type": "string", + "pattern": "[a-z][a-z0-9\\-]+", + "minLength": 3, + "maxLength": 40, + "description": "The name of the application." + }, + "Endpoint": { + "type": "string", + "description": "The endpoint for the application." + }, + "AppConfigs": { + "type": "array", + "items": { + "$ref": "#/definitions/AppConfig" + }, + "description": "List of application configurations.", + "insertionOrder": false + }, + "DataSources": { + "type": "array", + "items": { + "$ref": "#/definitions/DataSource" + }, + "description": "List of data sources.", + "insertionOrder": false + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this application.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Name" + ], + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "handlers": { + "create": { + "permissions": [ + "es:CreateApplication", + "es:GetApplication", + "es:AddTags", + "es:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "read": { + "permissions": [ + "es:GetApplication", + "es:ListTags" + ] + }, + "update": { + "permissions": [ + "es:UpdateApplication", + "es:GetApplication", + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ] + }, + "delete": { + "permissions": [ + "es:GetApplication", + "es:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "es:ListApplications" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ] + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json index 6509c2e6d7..5e339c4ec7 100644 --- a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json +++ b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json @@ -391,6 +391,54 @@ "type": "boolean" } } + }, + "SubjectKeyIdcType": { + "type": "string", + "enum": [ + "UserName", + "UserId", + "Email" + ], + "description": "Subject Key Idc type values." + }, + "RolesKeyIdcType": { + "type": "string", + "enum": [ + "GroupName", + "GroupId" + ], + "description": "Roles Key Idc type values." + }, + "IdentityCenterOptions": { + "type": "object", + "description": "Options for configuring Identity Center", + "properties": { + "EnabledAPIAccess": { + "type": "boolean", + "description": "Whether Identity Center is enabled." + }, + "IdentityCenterInstanceARN": { + "type": "string", + "description": "The ARN of the Identity Center instance." + }, + "SubjectKey": { + "$ref": "#/definitions/SubjectKeyIdcType", + "description": "The subject key for Identity Center options." + }, + "RolesKey": { + "$ref": "#/definitions/RolesKeyIdcType", + "description": "The roles key for Identity Center options." + }, + "IdentityCenterApplicationARN": { + "type": "string", + "description": "The ARN of the Identity Center application." + }, + "IdentityStoreId": { + "type": "string", + "description": "The IdentityStoreId for Identity Center options." + } + }, + "additionalProperties": false } }, "properties": { @@ -494,6 +542,9 @@ }, "SkipShardMigrationWait": { "type": "boolean" + }, + "IdentityCenterOptions": { + "$ref": "#/definitions/IdentityCenterOptions" } }, "additionalProperties": false, @@ -512,7 +563,9 @@ "/properties/DomainEndpointV2", "/properties/DomainEndpoints", "/properties/ServiceSoftwareOptions", - "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate" + "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate", + "/properties/IdentityCenterOptions/IdentityCenterApplicationARN", + "/properties/IdentityCenterOptions/IdentityStoreId" ], "writeOnlyProperties": [ "/properties/AdvancedSecurityOptions/MasterUserOptions", diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json b/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json index 39908ae020..deab08f313 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBCluster.json @@ -49,14 +49,14 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", "propertyTransform": { - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", + "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)", "/properties/StorageType": "$lowercase(StorageType)", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])", + "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )", "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKmsKeyId])", + "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKmsKeyId])", "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", diff --git a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json index ddacecdf50..f79fe8a66f 100644 --- a/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json +++ b/internal/service/cloudformation/schemas/AWS_RDS_DBInstance.json @@ -487,11 +487,11 @@ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", "/properties/Engine": "$lowercase(Engine)", "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])", + "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", + "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", "/properties/NetworkType": "$lowercase(NetworkType)", "/properties/OptionGroupName": "$lowercase(OptionGroupName)", - "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKMSKeyId])", + "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKMSKeyId])", "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", "/properties/SourceDBInstanceAutomatedBackupsArn": "$lowercase(SourceDBInstanceAutomatedBackupsArn)", "/properties/SourceDBInstanceIdentifier": "$lowercase(SourceDBInstanceIdentifier)", @@ -507,7 +507,6 @@ "/properties/KmsKeyId", "/properties/MasterUsername", "/properties/NcharCharacterSetName", - "/properties/Port", "/properties/SourceRegion", "/properties/StorageEncrypted", "/properties/Timezone" @@ -542,7 +541,6 @@ "/properties/DBSnapshotIdentifier", "/properties/DeleteAutomatedBackups", "/properties/MasterUserPassword", - "/properties/Port", "/properties/RestoreTime", "/properties/SourceDBInstanceAutomatedBackupsArn", "/properties/SourceDBInstanceIdentifier", diff --git a/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json b/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json index ea3f351cb3..0de9f01bc3 100644 --- a/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json @@ -73,6 +73,7 @@ "/properties/ResourceId", "/properties/ProfileId" ], + "replacementStrategy": "delete_then_create", "primaryIdentifier": [ "/properties/Id" ], diff --git a/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json b/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json index e4bc847730..148de48a5c 100644 --- a/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json +++ b/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json @@ -1,184 +1,32 @@ { - "tagging": { - "taggable": false - }, "typeName": "AWS::Route53::RecordSet", - "description": "Resource Type definition for AWS::Route53::RecordSet.", - "createOnlyProperties": [ - "/properties/HostedZoneName", - "/properties/HostedZoneId" - ], - "primaryIdentifier": [ - "/properties/Name", - "/properties/HostedZoneId", - "/properties/Type", - "/properties/SetIdentifier" - ], - "required": [ - "Type", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recordset", - "propertyTransform": { - "/properties/Name": "$lowercase($replace(Name, /(.*)\\.$/, \"$1\"))", - "/properties/AliasTarget/DNSName": "$join([DNSName, \".\"])" - }, - "oneOf": [ - { - "required": [ - "HostedZoneId" - ] - }, - { - "required": [ - "HostedZoneName" - ] - } - ], - "handlers": { - "read": { - "permissions": [ - "route53:ListHostedZones", - "route53:ListResourceRecordSets", - "route53:GetHostedZone" - ] - }, - "create": { - "permissions": [ - "route53:ListHostedZones", - "route53:GetChange", - "route53:ChangeResourceRecordSets", - "route53:ListResourceRecordSets", - "route53:GetHostedZone" - ] - }, - "update": { - "permissions": [ - "route53:ListHostedZones", - "route53:GetChange", - "route53:ChangeResourceRecordSets", - "route53:ListResourceRecordSets", - "route53:GetHostedZone" - ] - }, - "list": { - "permissions": [ - "route53:ListHostedZones", - "route53:ListResourceRecordSets", - "route53:GetHostedZone" - ], - "handlerSchema": { - "oneOf": [ - { - "required": [ - "HostedZoneId" - ] - }, - { - "required": [ - "HostedZoneName" - ] - } - ], - "properties": { - "HostedZoneName": { - "$ref": "resource-schema.json#/properties/HostedZoneName" - }, - "HostedZoneId": { - "$ref": "resource-schema.json#/properties/HostedZoneId" - } - } - } - }, - "delete": { - "permissions": [ - "route53:ListHostedZones", - "route53:GetChange", - "route53:ChangeResourceRecordSets", - "route53:ListResourceRecordSets", - "route53:GetHostedZone" - ] - } - }, - "writeOnlyProperties": [ - "/properties/Comment", - "/properties/HostedZoneName" - ], + "description": "Resource Type definition for AWS::Route53::RecordSet", "additionalProperties": false, - "definitions": { + "properties": { "HealthCheckId": { - "type": "string", - "maxLength": 64 - }, - "Comment": { - "type": "string", - "maxLength": 256 + "type": "string" }, "AliasTarget": { - "additionalProperties": false, - "type": "object", - "properties": { - "HostedZoneId": { - "description": "The value used depends on where you want to route traffic.", - "$ref": "#/definitions/HostedZoneId" - }, - "DNSName": { - "description": "The value that you specify depends on where you want to route queries.", - "type": "string", - "maxLength": 1024 - }, - "EvaluateTargetHealth": { - "default": false, - "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", - "type": "boolean" - } - }, - "required": [ - "HostedZoneId", - "DNSName" - ] + "$ref": "#/definitions/AliasTarget" + }, + "Comment": { + "type": "string" }, "HostedZoneName": { - "type": "string", - "maxLength": 256 + "type": "string" }, "ResourceRecords": { - "uniqueItems": true, - "insertionOrder": true, "type": "array", + "uniqueItems": false, "items": { - "type": "string", - "maxLength": 4000 + "type": "string" } }, "HostedZoneId": { - "type": "string", - "maxLength": 44 + "type": "string" }, "SetIdentifier": { - "minLength": 0, - "type": "string", - "maxLength": 128 - }, - "Coordinates": { - "additionalProperties": false, - "type": "object", - "properties": { - "Latitude": { - "pattern": "[-+]?[0-9]{1,2}(\\.[0-9]{0,2})?", - "description": "Specifies a coordinate of the north\u2013south position of a geographic point on the surface of the Earth.", - "type": "string" - }, - "Longitude": { - "pattern": "[-+]?[0-9]{1,3}(\\.[0-9]{0,2})?", - "description": "Specifies a coordinate of the east\u2013west position of a geographic point on the surface of the Earth.", - "type": "string" - } - }, - "required": [ - "Longitude", - "Latitude" - ] + "type": "string" }, "TTL": { "type": "string" @@ -187,34 +35,62 @@ "type": "integer" }, "Name": { - "type": "string", - "maxLength": 1024 + "type": "string" }, "Type": { "type": "string" }, + "CidrRoutingConfig": { + "$ref": "#/definitions/CidrRoutingConfig" + }, "Failover": { - "type": "string", - "enum": [ - "PRIMARY", - "SECONDARY" + "type": "string" + }, + "GeoProximityLocation": { + "$ref": "#/definitions/GeoProximityLocation" + }, + "Region": { + "type": "string" + }, + "GeoLocation": { + "$ref": "#/definitions/GeoLocation" + }, + "Id": { + "type": "string" + }, + "MultiValueAnswer": { + "type": "boolean" + } + }, + "definitions": { + "AliasTarget": { + "type": "object", + "additionalProperties": false, + "properties": { + "DNSName": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "EvaluateTargetHealth": { + "type": "boolean" + } + }, + "required": [ + "HostedZoneId", + "DNSName" ] }, "CidrRoutingConfig": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "CollectionId": { - "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", - "description": "The CIDR collection ID.", "type": "string" }, "LocationName": { - "minLength": 1, - "pattern": "[0-9A-Za-z_\\-\\*]+", - "description": "The CIDR collection location name.", - "type": "string", - "maxLength": 16 + "type": "string" } }, "required": [ @@ -223,157 +99,68 @@ ] }, "GeoProximityLocation": { - "oneOf": [ - { - "required": [ - "AWSRegion" - ] - }, - { - "required": [ - "LocalZoneGroup" - ] - }, - { - "required": [ - "Coordinates" - ] - } - ], - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { + "AWSRegion": { + "type": "string" + }, + "LocalZoneGroup": { + "type": "string" + }, "Bias": { - "description": "The bias increases or decreases the size of the geographic region from which Route 53 routes traffic to a resource.", - "maximum": 99, - "type": "integer", - "minimum": -99 + "type": "integer" }, "Coordinates": { - "description": "Contains the longitude and latitude for a geographic region.", "$ref": "#/definitions/Coordinates" - }, - "AWSRegion": { - "minLength": 1, - "description": "The AWS Region the resource you are directing DNS traffic to, is in.", - "type": "string", - "maxLength": 64 - }, - "LocalZoneGroup": { - "minLength": 1, - "description": "Specifies an AWS Local Zone.", - "type": "string", - "maxLength": 64 } } }, - "Region": { - "type": "string" - }, - "GeoLocation": { - "oneOf": [ - { - "required": [ - "ContinentCode" - ] + "Coordinates": { + "type": "object", + "additionalProperties": false, + "properties": { + "Longitude": { + "type": "string" }, - { - "required": [ - "CountryCode" - ] + "Latitude": { + "type": "string" } - ], - "additionalProperties": false, + }, + "required": [ + "Latitude", + "Longitude" + ] + }, + "GeoLocation": { "type": "object", + "additionalProperties": false, "properties": { "ContinentCode": { - "minLength": 2, - "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", - "type": "string", - "maxLength": 2 + "type": "string" }, "CountryCode": { - "minLength": 1, - "description": "For geolocation resource record sets, the two-letter code for a country.", - "type": "string", - "maxLength": 2 + "type": "string" }, "SubdivisionCode": { - "minLength": 1, - "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", - "type": "string", - "maxLength": 3 + "type": "string" } } - }, - "MultiValueAnswer": { - "type": "boolean" } }, - "properties": { - "HealthCheckId": { - "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", - "$ref": "#/definitions/HealthCheckId" - }, - "AliasTarget": { - "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", - "$ref": "#/definitions/AliasTarget" - }, - "Comment": { - "description": "Optional: Any comments you want to include about a change batch request.", - "$ref": "#/definitions/Comment" - }, - "HostedZoneName": { - "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", - "$ref": "#/definitions/HostedZoneName" - }, - "ResourceRecords": { - "description": "One or more values that correspond with the value that you specified for the Type property.", - "$ref": "#/definitions/ResourceRecords" - }, - "HostedZoneId": { - "description": "The ID of the hosted zone that you want to create records in.", - "$ref": "#/definitions/HostedZoneId" - }, - "SetIdentifier": { - "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", - "$ref": "#/definitions/SetIdentifier" - }, - "TTL": { - "description": "The resource record cache time to live (TTL), in seconds.", - "$ref": "#/definitions/TTL" - }, - "Weight": { - "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", - "$ref": "#/definitions/Weight" - }, - "Name": { - "description": "The name of the record that you want to create, update, or delete.", - "$ref": "#/definitions/Name" - }, - "Type": { - "description": "The DNS record type.", - "$ref": "#/definitions/Type" - }, - "CidrRoutingConfig": { - "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", - "$ref": "#/definitions/CidrRoutingConfig" - }, - "Failover": { - "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", - "$ref": "#/definitions/Failover" - }, - "Region": { - "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", - "$ref": "#/definitions/Region" - }, - "GeoLocation": { - "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", - "$ref": "#/definitions/GeoLocation" - }, - "MultiValueAnswer": { - "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", - "$ref": "#/definitions/MultiValueAnswer" - } - } + "required": [ + "Type", + "Name" + ], + "createOnlyProperties": [ + "/properties/HostedZoneName", + "/properties/Name", + "/properties/HostedZoneId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "readOnlyProperties": [ + "/properties/Id" + ] } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_Space.json b/internal/service/cloudformation/schemas/AWS_SageMaker_Space.json index bce51e55ca..9819b0e636 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_Space.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_Space.json @@ -473,8 +473,7 @@ "/properties/OwnershipSettings" ], "writeOnlyProperties": [ - "/properties/SpaceSettings", - "/properties/Tags" + "/properties/SpaceSettings" ], "primaryIdentifier": [ "/properties/DomainId", @@ -489,35 +488,48 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "sagemaker:ListTags" + ] }, "handlers": { "create": { "permissions": [ "sagemaker:CreateSpace", - "sagemaker:DescribeSpace" + "sagemaker:DescribeSpace", + "sagemaker:ListTags", + "sagemaker:AddTags" ] }, "read": { "permissions": [ - "sagemaker:DescribeSpace" + "sagemaker:DescribeSpace", + "sagemaker:ListTags" ] }, "update": { "permissions": [ "sagemaker:UpdateSpace", - "sagemaker:DescribeSpace" + "sagemaker:DescribeSpace", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "sagemaker:ListTags" ] }, "delete": { "permissions": [ "sagemaker:DeleteSpace", - "sagemaker:DescribeSpace" + "sagemaker:DescribeSpace", + "sagemaker:DeleteTags" ] }, "list": { "permissions": [ - "sagemaker:ListSpaces" + "sagemaker:ListSpaces", + "sagemaker:ListTags" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_StudioLifecycleConfig.json b/internal/service/cloudformation/schemas/AWS_SageMaker_StudioLifecycleConfig.json index b87b6524dd..5527c784d8 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_StudioLifecycleConfig.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_StudioLifecycleConfig.json @@ -22,7 +22,7 @@ }, "StudioLifecycleConfigContent": { "type": "string", - "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script.", + "description": "The content of your Amazon SageMaker Studio Lifecycle Configuration script. This content must be base64 encoded.", "minLength": 1, "maxLength": 16384, "pattern": "[\\S\\s]+" @@ -36,7 +36,7 @@ }, "Tags": { "type": "array", - "description": "Tags to be associated with the Lifecycle Configuration.", + "description": "Tags to be associated with the Lifecycle Configuration. Each tag consists of a key and an optional value. Tag keys must be unique per resource. Tags are searchable using the Search API.", "uniqueItems": false, "insertionOrder": false, "items": { diff --git a/internal/service/cloudformation/schemas/AWS_SecretsManager_RotationSchedule.json b/internal/service/cloudformation/schemas/AWS_SecretsManager_RotationSchedule.json new file mode 100644 index 0000000000..29bf74241c --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_SecretsManager_RotationSchedule.json @@ -0,0 +1,168 @@ +{ + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecretsManager::RotationSchedule", + "readOnlyProperties": [ + "/properties/Id" + ], + "description": "Resource Type definition for AWS::SecretsManager::RotationSchedule", + "createOnlyProperties": [ + "/properties/SecretId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "required": [ + "SecretId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-secretsmanager", + "handlers": { + "read": { + "permissions": [ + "secretsmanager:DescribeSecret" + ] + }, + "create": { + "permissions": [ + "secretsmanager:RotateSecret", + "secretsmanager:DescribeSecret", + "lambda:InvokeFunction" + ] + }, + "update": { + "permissions": [ + "secretsmanager:RotateSecret", + "secretsmanager:DescribeSecret", + "lambda:InvokeFunction" + ] + }, + "list": { + "permissions": [ + "secretsmanager:DescribeSecret", + "secretsmanager:ListSecrets" + ] + }, + "delete": { + "permissions": [ + "secretsmanager:CancelRotateSecret", + "secretsmanager:DescribeSecret" + ] + } + }, + "writeOnlyProperties": [ + "/properties/RotateImmediatelyOnUpdate", + "/properties/HostedRotationLambda", + "/properties/HostedRotationLambda/ExcludeCharacters", + "/properties/HostedRotationLambda/KmsKeyArn", + "/properties/HostedRotationLambda/MasterSecretArn", + "/properties/HostedRotationLambda/MasterSecretKmsKeyArn", + "/properties/HostedRotationLambda/RotationLambdaName", + "/properties/HostedRotationLambda/RotationType", + "/properties/HostedRotationLambda/Runtime", + "/properties/HostedRotationLambda/SuperuserSecretArn", + "/properties/HostedRotationLambda/SuperuserSecretKmsKeyArn", + "/properties/HostedRotationLambda/VpcSecurityGroupIds", + "/properties/HostedRotationLambda/VpcSubnetIds" + ], + "additionalProperties": false, + "definitions": { + "HostedRotationLambda": { + "additionalProperties": false, + "type": "object", + "properties": { + "Runtime": { + "description": "The python runtime associated with the Lambda function", + "type": "string" + }, + "KmsKeyArn": { + "description": "The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key aws/secretsmanager. If aws/secretsmanager doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.", + "type": "string" + }, + "MasterSecretArn": { + "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + "type": "string" + }, + "RotationLambdaName": { + "description": "The name of the Lambda rotation function.", + "type": "string" + }, + "RotationType": { + "description": "The type of rotation template to use", + "type": "string" + }, + "ExcludeCharacters": { + "description": "A string of the characters that you don't want in the password.", + "type": "string" + }, + "VpcSecurityGroupIds": { + "description": "A comma-separated list of security group IDs applied to the target database.", + "type": "string" + }, + "MasterSecretKmsKeyArn": { + "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + "type": "string" + }, + "SuperuserSecretArn": { + "description": "The ARN of the secret that contains superuser credentials, if you use the alternating users rotation strategy. CloudFormation grants the execution role for the Lambda rotation function GetSecretValue permission to the secret in this property.", + "type": "string" + }, + "SuperuserSecretKmsKeyArn": { + "description": "The ARN of the KMS key that Secrets Manager used to encrypt the superuser secret, if you use the alternating users strategy and the superuser secret is encrypted with a customer managed key. You don't need to specify this property if the superuser secret is encrypted using the key aws/secretsmanager. CloudFormation grants the execution role for the Lambda rotation function Decrypt, DescribeKey, and GenerateDataKey permission to the key in this property.", + "type": "string" + }, + "VpcSubnetIds": { + "description": "A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.", + "type": "string" + } + }, + "required": [ + "RotationType" + ] + }, + "RotationRules": { + "additionalProperties": false, + "type": "object", + "properties": { + "ScheduleExpression": { + "description": "A cron() or rate() expression that defines the schedule for rotating your secret. Secrets Manager rotation schedules use UTC time zone.", + "type": "string" + }, + "Duration": { + "description": "The length of the rotation window in hours, for example 3h for a three hour window. Secrets Manager rotates your secret at any time during this window. The window must not extend into the next rotation window or the next UTC day. The window starts according to the ScheduleExpression. If you don't specify a Duration, for a ScheduleExpression in hours, the window automatically closes after one hour. For a ScheduleExpression in days, the window automatically closes at the end of the UTC day.", + "type": "string" + }, + "AutomaticallyAfterDays": { + "description": "The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.", + "type": "integer" + } + } + } + }, + "properties": { + "HostedRotationLambda": { + "description": "Creates a new Lambda rotation function based on one of the Secrets Manager rotation function templates. To use a rotation function that already exists, specify RotationLambdaARN instead.", + "$ref": "#/definitions/HostedRotationLambda" + }, + "SecretId": { + "description": "The ARN or name of the secret to rotate.", + "type": "string" + }, + "Id": { + "description": "The ARN of the secret.", + "type": "string" + }, + "RotateImmediatelyOnUpdate": { + "description": "Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.", + "type": "boolean" + }, + "RotationLambdaARN": { + "description": "The ARN of an existing Lambda rotation function. To specify a rotation function that is also defined in this template, use the Ref function.", + "type": "string" + }, + "RotationRules": { + "description": "A structure that defines the rotation configuration for this secret.", + "$ref": "#/definitions/RotationRules" + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_SecretsManager_Secret.json b/internal/service/cloudformation/schemas/AWS_SecretsManager_Secret.json index 6f79ed7599..326c2d7dc2 100644 --- a/internal/service/cloudformation/schemas/AWS_SecretsManager_Secret.json +++ b/internal/service/cloudformation/schemas/AWS_SecretsManager_Secret.json @@ -1,5 +1,6 @@ { "typeName": "AWS::SecretsManager::Secret", + "$comment": "If you make any changes to this schema, be sure to also modify the regional schema template that generates schemas for contract tests: secret/templates/{region.region_name}_schema.json.erb", "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", "description": "Creates a new secret. A *secret* can be a password, a set of credentials such as a user name and password, an OAuth token, or other secret information that you store in an encrypted form in Secrets Manager.\n For RDS master user credentials, see [AWS::RDS::DBCluster MasterUserSecret](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html).\n For RS admin user credentials, see [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html).\n To retrieve a secret in a CFNshort template, use a *dynamic reference*. For more information, see [Retrieve a secret in an resource](https://docs.aws.amazon.com/secretsmanager/latest/userguide/cfn-example_reference-secret.html).\n For information about creating a secret in the console, see [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). For information about creating a secret using the CLI or SDK, see [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html).\n For information about retrieving a secret in code, see [Retrieve secrets from Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html).", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-secretsmanager.git", diff --git a/internal/service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json b/internal/service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json index 614c9acddf..e36a01fcab 100644 --- a/internal/service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json +++ b/internal/service/cloudformation/schemas/AWS_SecretsManager_SecretTargetAttachment.json @@ -31,6 +31,9 @@ "readOnlyProperties": [ "/properties/Id" ], + "createOnlyProperties": [ + "/properties/SecretId" + ], "handlers": { "read": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_WAFv2_IPSet.json b/internal/service/cloudformation/schemas/AWS_WAFv2_IPSet.json index 516a72f84b..c47bb4aae7 100644 --- a/internal/service/cloudformation/schemas/AWS_WAFv2_IPSet.json +++ b/internal/service/cloudformation/schemas/AWS_WAFv2_IPSet.json @@ -115,10 +115,11 @@ ], "additionalProperties": false, "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true, + "tagProperty": "/properties/Tags" }, "handlers": { "create": { @@ -144,7 +145,9 @@ "permissions": [ "wafv2:UpdateIPSet", "wafv2:GetIPSet", - "wafv2:ListTagsForResource" + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_WAFv2_RegexPatternSet.json b/internal/service/cloudformation/schemas/AWS_WAFv2_RegexPatternSet.json index 9d7c4649d6..1db174aaf6 100644 --- a/internal/service/cloudformation/schemas/AWS_WAFv2_RegexPatternSet.json +++ b/internal/service/cloudformation/schemas/AWS_WAFv2_RegexPatternSet.json @@ -81,10 +81,11 @@ ], "additionalProperties": false, "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true, + "tagProperty": "/properties/Tags" }, "handlers": { "create": { @@ -110,7 +111,9 @@ "permissions": [ "wafv2:UpdateRegexPatternSet", "wafv2:GetRegexPatternSet", - "wafv2:ListTagsForResource" + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_WAFv2_RuleGroup.json b/internal/service/cloudformation/schemas/AWS_WAFv2_RuleGroup.json index 579ed054f2..342b680e18 100644 --- a/internal/service/cloudformation/schemas/AWS_WAFv2_RuleGroup.json +++ b/internal/service/cloudformation/schemas/AWS_WAFv2_RuleGroup.json @@ -465,7 +465,7 @@ }, "RateLimit": { "type": "integer", - "minimum": 100, + "minimum": 10, "maximum": 2000000000 }, "EvaluationWindowSec": { @@ -1413,10 +1413,11 @@ ], "additionalProperties": false, "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true, + "tagProperty": "/properties/Tags" }, "handlers": { "create": { @@ -1440,6 +1441,8 @@ }, "update": { "permissions": [ + "wafv2:TagResource", + "wafv2:UntagResource", "wafv2:UpdateRuleGroup", "wafv2:GetRuleGroup", "wafv2:ListTagsForResource" diff --git a/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json b/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json index 40ce09f85c..73a7e64066 100644 --- a/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json +++ b/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json @@ -588,7 +588,7 @@ }, "RateLimit": { "type": "integer", - "minimum": 100, + "minimum": 10, "maximum": 2000000000 }, "EvaluationWindowSec": { @@ -1951,10 +1951,11 @@ ], "additionalProperties": false, "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true, + "tagProperty": "/properties/Tags" }, "handlers": { "create": { @@ -1980,7 +1981,9 @@ "permissions": [ "wafv2:UpdateWebACL", "wafv2:GetWebACL", - "wafv2:ListTagsForResource" + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" ] }, "list": {