diff --git a/CHANGELOG.md b/CHANGELOG.md index 43d5f2a27..aed1005ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ FEATURES: * **New Data Source:** `awscc_iot_commands` * **New Data Source:** `awscc_networkmanager_direct_connect_gateway_attachment` * **New Data Source:** `awscc_networkmanager_direct_connect_gateway_attachments` +* **New Data Source:** `awscc_pcs_cluster` +* **New Data Source:** `awscc_pcs_clusters` +* **New Data Source:** `awscc_pcs_compute_node_group` +* **New Data Source:** `awscc_pcs_queue` * **New Data Source:** `awscc_qbusiness_permission` * **New Data Source:** `awscc_ram_resource_share` * **New Data Source:** `awscc_ram_resource_shares` @@ -29,6 +33,9 @@ FEATURES: * **New Resource:** `awscc_cassandra_type` * **New Resource:** `awscc_iot_command` * **New Resource:** `awscc_networkmanager_direct_connect_gateway_attachment` +* **New Resource:** `awscc_pcs_cluster` +* **New Resource:** `awscc_pcs_compute_node_group` +* **New Resource:** `awscc_pcs_queue` * **New Resource:** `awscc_qbusiness_permission` * **New Resource:** `awscc_ram_resource_share` * **New Resource:** `awscc_s3tables_table_bucket` diff --git a/docs/data-sources/autoscaling_auto_scaling_group.md b/docs/data-sources/autoscaling_auto_scaling_group.md index ba196e1ff..7522256e7 100644 --- a/docs/data-sources/autoscaling_auto_scaling_group.md +++ b/docs/data-sources/autoscaling_auto_scaling_group.md @@ -24,8 +24,8 @@ Data Source schema for AWS::AutoScaling::AutoScalingGroup - `auto_scaling_group_name` (String) The name of the Auto Scaling group. This name must be unique per Region per account. The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters. You cannot use a colon (:) in the name. -- `availability_zone_distribution` (Attributes) (see [below for nested schema](#nestedatt--availability_zone_distribution)) -- `availability_zone_impairment_policy` (Attributes) (see [below for nested schema](#nestedatt--availability_zone_impairment_policy)) +- `availability_zone_distribution` (Attributes) The instance capacity distribution across Availability Zones. (see [below for nested schema](#nestedatt--availability_zone_distribution)) +- `availability_zone_impairment_policy` (Attributes) The Availability Zone impairment policy. (see [below for nested schema](#nestedatt--availability_zone_impairment_policy)) - `availability_zones` (List of String) A list of Availability Zones where instances in the Auto Scaling group can be created. Used for launching into the default VPC subnet in each Availability Zone when not using the ``VPCZoneIdentifier`` property, or for attaching a network interface when an existing network interface ID is specified in a launch template. - `capacity_rebalance` (Boolean) Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance is at an elevated risk of interruption. After launching a new instance, it then terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon EC2 Spot Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) in the in the *Amazon EC2 Auto Scaling User Guide*. - `capacity_reservation_specification` (Attributes) (see [below for nested schema](#nestedatt--capacity_reservation_specification)) @@ -89,7 +89,9 @@ Data Source schema for AWS::AutoScaling::AutoScalingGroup Read-Only: -- `capacity_distribution_strategy` (String) +- `capacity_distribution_strategy` (String) If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. + + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution. + + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead. @@ -97,8 +99,8 @@ Read-Only: Read-Only: -- `impaired_zone_health_check_behavior` (String) -- `zonal_shift_enabled` (Boolean) +- `impaired_zone_health_check_behavior` (String) Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*. +- `zonal_shift_enabled` (Boolean) If ``true``, enable zonal shift for your Auto Scaling group. diff --git a/docs/data-sources/databrew_dataset.md b/docs/data-sources/databrew_dataset.md index 9a8e92f71..32afd6dc9 100644 --- a/docs/data-sources/databrew_dataset.md +++ b/docs/data-sources/databrew_dataset.md @@ -26,6 +26,7 @@ Data Source schema for AWS::DataBrew::Dataset - `input` (Attributes) Input (see [below for nested schema](#nestedatt--input)) - `name` (String) Dataset name - `path_options` (Attributes) PathOptions (see [below for nested schema](#nestedatt--path_options)) +- `source` (String) Source type of the dataset - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) @@ -91,6 +92,7 @@ Read-Only: Read-Only: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) @@ -111,6 +113,7 @@ Read-Only: Read-Only: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) @@ -129,6 +132,7 @@ Read-Only: Read-Only: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) diff --git a/docs/data-sources/ec2_ec2_fleet.md b/docs/data-sources/ec2_ec2_fleet.md index 7059b3c4d..5708525ef 100644 --- a/docs/data-sources/ec2_ec2_fleet.md +++ b/docs/data-sources/ec2_ec2_fleet.md @@ -80,6 +80,7 @@ Read-Only: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -124,6 +125,30 @@ Read-Only: - `min` (Number) + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors` + +Read-Only: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu` + +Read-Only: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu.references` + +Read-Only: + +- `instance_family` (String) + + + + ### Nested Schema for `launch_template_configs.overrides.instance_requirements.memory_gi_b_per_v_cpu` diff --git a/docs/data-sources/ec2_spot_fleet.md b/docs/data-sources/ec2_spot_fleet.md index 7380a5a95..589a0c8fd 100644 --- a/docs/data-sources/ec2_spot_fleet.md +++ b/docs/data-sources/ec2_spot_fleet.md @@ -122,6 +122,7 @@ Read-Only: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -166,6 +167,30 @@ Read-Only: - `min` (Number) + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors` + +Read-Only: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors.cpu` + +Read-Only: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors.cpu.references` + +Read-Only: + +- `instance_family` (String) + + + + ### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.memory_gi_b_per_v_cpu` @@ -345,6 +370,7 @@ Read-Only: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -389,6 +415,30 @@ Read-Only: - `min` (Number) + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors` + +Read-Only: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu` + +Read-Only: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu.references` + +Read-Only: + +- `instance_family` (String) + + + + ### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.memory_gi_b_per_v_cpu` diff --git a/docs/data-sources/ec2_vpc_endpoint.md b/docs/data-sources/ec2_vpc_endpoint.md index 94894b1e2..dc64390d8 100644 --- a/docs/data-sources/ec2_vpc_endpoint.md +++ b/docs/data-sources/ec2_vpc_endpoint.md @@ -23,6 +23,8 @@ Data Source schema for AWS::EC2::VPCEndpoint - `creation_timestamp` (String) - `dns_entries` (List of String) +- `dns_options` (Attributes) (see [below for nested schema](#nestedatt--dns_options)) +- `ip_address_type` (String) - `network_interface_ids` (List of String) - `policy_document` (String) An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints. For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section: @@ -31,11 +33,21 @@ Data Source schema for AWS::EC2::VPCEndpoint To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``. This property is supported only for interface endpoints. Default: ``false`` +- `resource_configuration_arn` (String) - `route_table_ids` (Set of String) The IDs of the route tables. Routing is supported only for gateway endpoints. - `security_group_ids` (Set of String) The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints. - `service_name` (String) The name of the endpoint service. +- `service_network_arn` (String) - `subnet_ids` (Set of String) The IDs of the subnets in which to create endpoint network interfaces. You must specify this property for an interface endpoint or a Gateway Load Balancer endpoint. You can't specify this property for a gateway endpoint. For a Gateway Load Balancer endpoint, you can specify only one subnet. - `vpc_endpoint_id` (String) - `vpc_endpoint_type` (String) The type of endpoint. Default: Gateway - `vpc_id` (String) The ID of the VPC. + + +### Nested Schema for `dns_options` + +Read-Only: + +- `dns_record_ip_type` (String) +- `private_dns_only_for_inbound_resolver_endpoint` (String) diff --git a/docs/data-sources/lambda_function.md b/docs/data-sources/lambda_function.md index 177fc52c8..09e39b43a 100644 --- a/docs/data-sources/lambda_function.md +++ b/docs/data-sources/lambda_function.md @@ -38,13 +38,7 @@ Data Source schema for AWS::Lambda::Function If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name. - `handler` (String) The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html). - `image_config` (Attributes) Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms). (see [below for nested schema](#nestedatt--image_config)) -- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources: - + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). - + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots. - + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption). - + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle). - - If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). +- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key. - `layers` (List of String) A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version. - `logging_config` (Attributes) The function's Amazon CloudWatch Logs configuration settings. (see [below for nested schema](#nestedatt--logging_config)) - `memory_size` (Number) The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase. @@ -75,10 +69,9 @@ Read-Only: - `s3_bucket` (String) An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account. - `s3_key` (String) The Amazon S3 key of the deployment package. - `s3_object_version` (String) For versioned objects, the version of the deployment package object to use. -- `source_kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk). +- `source_kms_key_arn` (String) - `zip_file` (String) (Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``. - When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions. - For JSON, you must escape quotes and special characters such as newline (``\n``) with a backslash. + For JSON, you must escape quotes and special characters such as newline (``\n``) with a backslash. If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details. diff --git a/docs/data-sources/opensearchservice_domain.md b/docs/data-sources/opensearchservice_domain.md index a6ae083fc..47ecb80d8 100644 --- a/docs/data-sources/opensearchservice_domain.md +++ b/docs/data-sources/opensearchservice_domain.md @@ -119,6 +119,7 @@ Read-Only: - `instance_count` (Number) - `instance_type` (String) - `multi_az_with_standby_enabled` (Boolean) +- `node_options` (Attributes List) (see [below for nested schema](#nestedatt--cluster_config--node_options)) - `warm_count` (Number) - `warm_enabled` (Boolean) - `warm_type` (String) @@ -133,6 +134,25 @@ Read-Only: - `enabled` (Boolean) + +### Nested Schema for `cluster_config.node_options` + +Read-Only: + +- `node_config` (Attributes) (see [below for nested schema](#nestedatt--cluster_config--node_options--node_config)) +- `node_type` (String) + + +### Nested Schema for `cluster_config.node_options.node_config` + +Read-Only: + +- `count` (Number) +- `enabled` (Boolean) +- `type` (String) + + + ### Nested Schema for `cluster_config.zone_awareness_config` diff --git a/docs/data-sources/pcs_cluster.md b/docs/data-sources/pcs_cluster.md new file mode 100644 index 000000000..a3abb93ba --- /dev/null +++ b/docs/data-sources/pcs_cluster.md @@ -0,0 +1,98 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pcs_cluster Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::PCS::Cluster +--- + +# awscc_pcs_cluster (Data Source) + +Data Source schema for AWS::PCS::Cluster + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) The unique Amazon Resource Name (ARN) of the cluster. +- `cluster_id` (String) The generated unique ID of the cluster. +- `endpoints` (Attributes List) The list of endpoints available for interaction with the scheduler. (see [below for nested schema](#nestedatt--endpoints)) +- `error_info` (Attributes List) The list of errors that occurred during cluster provisioning. (see [below for nested schema](#nestedatt--error_info)) +- `name` (String) The name that identifies the cluster. +- `networking` (Attributes) The networking configuration for the cluster's control plane. (see [below for nested schema](#nestedatt--networking)) +- `scheduler` (Attributes) The cluster management and job scheduling software associated with the cluster. (see [below for nested schema](#nestedatt--scheduler)) +- `size` (String) The size of the cluster. +- `slurm_configuration` (Attributes) Additional options related to the Slurm scheduler. (see [below for nested schema](#nestedatt--slurm_configuration)) +- `status` (String) The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster. +- `tags` (Map of String) 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. + + +### Nested Schema for `endpoints` + +Read-Only: + +- `port` (String) The endpoint's connection port number. +- `private_ip_address` (String) The endpoint's private IP address. +- `public_ip_address` (String) The endpoint's public IP address. +- `type` (String) Indicates the type of endpoint running at the specific IP address. + + + +### Nested Schema for `error_info` + +Read-Only: + +- `code` (String) The short-form error code. +- `message` (String) The detailed error information. + + + +### Nested Schema for `networking` + +Read-Only: + +- `security_group_ids` (List of String) The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets. +- `subnet_ids` (List of String) The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list. + + + +### Nested Schema for `scheduler` + +Read-Only: + +- `type` (String) The software AWS PCS uses to manage cluster scaling and job scheduling. +- `version` (String) The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling. + + + +### Nested Schema for `slurm_configuration` + +Read-Only: + +- `auth_key` (Attributes) The shared Slurm key for authentication, also known as the cluster secret. (see [below for nested schema](#nestedatt--slurm_configuration--auth_key)) +- `scale_down_idle_time_in_seconds` (Number) The time before an idle node is scaled down. +- `slurm_custom_settings` (Attributes List) Additional Slurm-specific configuration that directly maps to Slurm settings. (see [below for nested schema](#nestedatt--slurm_configuration--slurm_custom_settings)) + + +### Nested Schema for `slurm_configuration.auth_key` + +Read-Only: + +- `secret_arn` (String) The Amazon Resource Name (ARN) of the the shared Slurm key. +- `secret_version` (String) The version of the shared Slurm key. + + + +### Nested Schema for `slurm_configuration.slurm_custom_settings` + +Read-Only: + +- `parameter_name` (String) AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters. +- `parameter_value` (String) The value for the configured Slurm setting. diff --git a/docs/data-sources/pcs_clusters.md b/docs/data-sources/pcs_clusters.md new file mode 100644 index 000000000..6bcecae38 --- /dev/null +++ b/docs/data-sources/pcs_clusters.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pcs_clusters Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::PCS::Cluster +--- + +# awscc_pcs_clusters (Data Source) + +Plural Data Source schema for AWS::PCS::Cluster + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/pcs_queue.md b/docs/data-sources/pcs_queue.md new file mode 100644 index 000000000..8c07a0559 --- /dev/null +++ b/docs/data-sources/pcs_queue.md @@ -0,0 +1,47 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pcs_queue Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::PCS::Queue +--- + +# awscc_pcs_queue (Data Source) + +Data Source schema for AWS::PCS::Queue + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) The unique Amazon Resource Name (ARN) of the queue. +- `cluster_id` (String) The ID of the cluster of the queue. +- `compute_node_group_configurations` (Attributes List) The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups. (see [below for nested schema](#nestedatt--compute_node_group_configurations)) +- `error_info` (Attributes List) The list of errors that occurred during queue provisioning. (see [below for nested schema](#nestedatt--error_info)) +- `name` (String) The name that identifies the queue. +- `queue_id` (String) The generated unique ID of the queue. +- `status` (String) The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue. +- `tags` (Map of String) 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. + + +### Nested Schema for `compute_node_group_configurations` + +Read-Only: + +- `compute_node_group_id` (String) The compute node group ID for the compute node group configuration. + + + +### Nested Schema for `error_info` + +Read-Only: + +- `code` (String) The short-form error code. +- `message` (String) The detailed error information. diff --git a/docs/data-sources/redshift_integration.md b/docs/data-sources/redshift_integration.md index 58461ddce..f90489934 100644 --- a/docs/data-sources/redshift_integration.md +++ b/docs/data-sources/redshift_integration.md @@ -21,14 +21,14 @@ Data Source schema for AWS::Redshift::Integration ### Read-Only -- `additional_encryption_context` (Map of String) An optional set of non-secret key?value pairs that contains additional contextual information about the data. +- `additional_encryption_context` (Map of String) An optional set of non-secret key–value pairs that contains additional contextual information about the data. - `create_time` (String) The time (UTC) when the integration was created. - `integration_arn` (String) The Amazon Resource Name (ARN) of the integration. - `integration_name` (String) The name of the integration. - `kms_key_id` (String) An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used. -- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable +- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) -- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf +- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication ### Nested Schema for `tags` diff --git a/docs/resources/autoscaling_auto_scaling_group.md b/docs/resources/autoscaling_auto_scaling_group.md index eccb530cd..da801133a 100644 --- a/docs/resources/autoscaling_auto_scaling_group.md +++ b/docs/resources/autoscaling_auto_scaling_group.md @@ -158,8 +158,8 @@ data "aws_ami" "amazon_linux" { - `auto_scaling_group_name` (String) The name of the Auto Scaling group. This name must be unique per Region per account. The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters. You cannot use a colon (:) in the name. -- `availability_zone_distribution` (Attributes) (see [below for nested schema](#nestedatt--availability_zone_distribution)) -- `availability_zone_impairment_policy` (Attributes) (see [below for nested schema](#nestedatt--availability_zone_impairment_policy)) +- `availability_zone_distribution` (Attributes) The instance capacity distribution across Availability Zones. (see [below for nested schema](#nestedatt--availability_zone_distribution)) +- `availability_zone_impairment_policy` (Attributes) The Availability Zone impairment policy. (see [below for nested schema](#nestedatt--availability_zone_impairment_policy)) - `availability_zones` (List of String) A list of Availability Zones where instances in the Auto Scaling group can be created. Used for launching into the default VPC subnet in each Availability Zone when not using the ``VPCZoneIdentifier`` property, or for attaching a network interface when an existing network interface ID is specified in a launch template. - `capacity_rebalance` (Boolean) Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance is at an elevated risk of interruption. After launching a new instance, it then terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon EC2 Spot Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) in the in the *Amazon EC2 Auto Scaling User Guide*. - `capacity_reservation_specification` (Attributes) (see [below for nested schema](#nestedatt--capacity_reservation_specification)) @@ -224,7 +224,9 @@ data "aws_ami" "amazon_linux" { Optional: -- `capacity_distribution_strategy` (String) +- `capacity_distribution_strategy` (String) If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. + + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution. + + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead. @@ -232,8 +234,8 @@ Optional: Optional: -- `impaired_zone_health_check_behavior` (String) -- `zonal_shift_enabled` (Boolean) +- `impaired_zone_health_check_behavior` (String) Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*. +- `zonal_shift_enabled` (Boolean) If ``true``, enable zonal shift for your Auto Scaling group. diff --git a/docs/resources/databrew_dataset.md b/docs/resources/databrew_dataset.md index ba016a6d9..0caaa2fdc 100644 --- a/docs/resources/databrew_dataset.md +++ b/docs/resources/databrew_dataset.md @@ -25,6 +25,7 @@ Resource schema for AWS::DataBrew::Dataset. - `format` (String) Dataset format - `format_options` (Attributes) Format options for dataset (see [below for nested schema](#nestedatt--format_options)) - `path_options` (Attributes) PathOptions (see [below for nested schema](#nestedatt--path_options)) +- `source` (String) Source type of the dataset - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) ### Read-Only @@ -57,6 +58,7 @@ Optional: Optional: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) @@ -77,6 +79,7 @@ Optional: Optional: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) @@ -95,6 +98,7 @@ Optional: Optional: - `bucket` (String) +- `bucket_owner` (String) Bucket owner - `key` (String) diff --git a/docs/resources/ec2_ec2_fleet.md b/docs/resources/ec2_ec2_fleet.md index 002b922d7..3063f9716 100644 --- a/docs/resources/ec2_ec2_fleet.md +++ b/docs/resources/ec2_ec2_fleet.md @@ -100,6 +100,7 @@ Optional: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -144,6 +145,30 @@ Optional: - `min` (Number) + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors` + +Optional: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu` + +Optional: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu.references` + +Optional: + +- `instance_family` (String) + + + + ### Nested Schema for `launch_template_configs.overrides.instance_requirements.memory_gi_b_per_v_cpu` diff --git a/docs/resources/ec2_network_acl.md b/docs/resources/ec2_network_acl.md index b2b7ff6b0..9aa518e25 100644 --- a/docs/resources/ec2_network_acl.md +++ b/docs/resources/ec2_network_acl.md @@ -3,11 +3,13 @@ page_title: "awscc_ec2_network_acl Resource - terraform-provider-awscc" subcategory: "" description: |- Specifies a network ACL for your VPC. + To add a network ACL entry, see AWS::EC2::NetworkAclEntry https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html. --- # awscc_ec2_network_acl (Resource) Specifies a network ACL for your VPC. + To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html). ## Example Usage diff --git a/docs/resources/ec2_spot_fleet.md b/docs/resources/ec2_spot_fleet.md index bb9305311..d9a5cf43e 100644 --- a/docs/resources/ec2_spot_fleet.md +++ b/docs/resources/ec2_spot_fleet.md @@ -125,6 +125,7 @@ Optional: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -169,6 +170,30 @@ Optional: - `min` (Number) + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors` + +Optional: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors.cpu` + +Optional: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_specifications--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.baseline_performance_factors.cpu.references` + +Optional: + +- `instance_family` (String) + + + + ### Nested Schema for `spot_fleet_request_config_data.launch_specifications.instance_requirements.memory_gi_b_per_v_cpu` @@ -348,6 +373,7 @@ Optional: - `allowed_instance_types` (List of String) - `bare_metal` (String) - `baseline_ebs_bandwidth_mbps` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_ebs_bandwidth_mbps)) +- `baseline_performance_factors` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors)) - `burstable_performance` (String) - `cpu_manufacturers` (List of String) - `excluded_instance_types` (List of String) @@ -392,6 +418,30 @@ Optional: - `min` (Number) + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors` + +Optional: + +- `cpu` (Attributes) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu` + +Optional: + +- `references` (Attributes List) (see [below for nested schema](#nestedatt--spot_fleet_request_config_data--launch_template_configs--overrides--instance_requirements--baseline_performance_factors--cpu--references)) + + +### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.baseline_performance_factors.cpu.references` + +Optional: + +- `instance_family` (String) + + + + ### Nested Schema for `spot_fleet_request_config_data.launch_template_configs.overrides.instance_requirements.memory_gi_b_per_v_cpu` diff --git a/docs/resources/ec2_vpc_endpoint.md b/docs/resources/ec2_vpc_endpoint.md index fa5b728b2..01c6a8cab 100644 --- a/docs/resources/ec2_vpc_endpoint.md +++ b/docs/resources/ec2_vpc_endpoint.md @@ -123,11 +123,12 @@ resource "awscc_ec2_vpc_endpoint" "example" { ### Required -- `service_name` (String) The name of the endpoint service. - `vpc_id` (String) The ID of the VPC. ### Optional +- `dns_options` (Attributes) (see [below for nested schema](#nestedatt--dns_options)) +- `ip_address_type` (String) - `policy_document` (String) An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints. For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section: ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ "Version":"2012-10-17", "Statement": [{ "Effect":"Allow", "Principal":"*", "Action":["logs:Describe*","logs:Get*","logs:List*","logs:FilterLogEvents"], "Resource":"*" }] }'`` @@ -135,8 +136,11 @@ resource "awscc_ec2_vpc_endpoint" "example" { To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``. This property is supported only for interface endpoints. Default: ``false`` +- `resource_configuration_arn` (String) - `route_table_ids` (Set of String) The IDs of the route tables. Routing is supported only for gateway endpoints. - `security_group_ids` (Set of String) The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints. +- `service_name` (String) The name of the endpoint service. +- `service_network_arn` (String) - `subnet_ids` (Set of String) The IDs of the subnets in which to create endpoint network interfaces. You must specify this property for an interface endpoint or a Gateway Load Balancer endpoint. You can't specify this property for a gateway endpoint. For a Gateway Load Balancer endpoint, you can specify only one subnet. - `vpc_endpoint_type` (String) The type of endpoint. Default: Gateway @@ -149,6 +153,14 @@ resource "awscc_ec2_vpc_endpoint" "example" { - `network_interface_ids` (List of String) - `vpc_endpoint_id` (String) + +### Nested Schema for `dns_options` + +Optional: + +- `dns_record_ip_type` (String) +- `private_dns_only_for_inbound_resolver_endpoint` (String) + ## Import Import is supported using the following syntax: diff --git a/docs/resources/lambda_function.md b/docs/resources/lambda_function.md index 5cc419691..1c8b929d1 100644 --- a/docs/resources/lambda_function.md +++ b/docs/resources/lambda_function.md @@ -201,13 +201,7 @@ resource "awscc_lambda_function" "main" { If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name. - `handler` (String) The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html). - `image_config` (Attributes) Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms). (see [below for nested schema](#nestedatt--image_config)) -- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources: - + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). - + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots. - + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption). - + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle). - - If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). +- `kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key. - `layers` (List of String) A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version. - `logging_config` (Attributes) The function's Amazon CloudWatch Logs configuration settings. (see [below for nested schema](#nestedatt--logging_config)) - `memory_size` (Number) The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase. @@ -242,10 +236,9 @@ Optional: - `s3_bucket` (String) An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account. - `s3_key` (String) The Amazon S3 key of the deployment package. - `s3_object_version` (String) For versioned objects, the version of the deployment package object to use. -- `source_kms_key_arn` (String) The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk). +- `source_kms_key_arn` (String) - `zip_file` (String) (Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``. - When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions. - For JSON, you must escape quotes and special characters such as newline (``\n``) with a backslash. + For JSON, you must escape quotes and special characters such as newline (``\n``) with a backslash. If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details. diff --git a/docs/resources/opensearchservice_domain.md b/docs/resources/opensearchservice_domain.md index 587401dfa..e4fa93198 100644 --- a/docs/resources/opensearchservice_domain.md +++ b/docs/resources/opensearchservice_domain.md @@ -122,6 +122,7 @@ Optional: - `instance_count` (Number) - `instance_type` (String) - `multi_az_with_standby_enabled` (Boolean) +- `node_options` (Attributes List) (see [below for nested schema](#nestedatt--cluster_config--node_options)) - `warm_count` (Number) - `warm_enabled` (Boolean) - `warm_type` (String) @@ -136,6 +137,25 @@ Optional: - `enabled` (Boolean) + +### Nested Schema for `cluster_config.node_options` + +Optional: + +- `node_config` (Attributes) (see [below for nested schema](#nestedatt--cluster_config--node_options--node_config)) +- `node_type` (String) + + +### Nested Schema for `cluster_config.node_options.node_config` + +Optional: + +- `count` (Number) +- `enabled` (Boolean) +- `type` (String) + + + ### Nested Schema for `cluster_config.zone_awareness_config` diff --git a/docs/resources/pcs_cluster.md b/docs/resources/pcs_cluster.md new file mode 100644 index 000000000..9d56204ac --- /dev/null +++ b/docs/resources/pcs_cluster.md @@ -0,0 +1,110 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pcs_cluster Resource - terraform-provider-awscc" +subcategory: "" +description: |- + AWS::PCS::Cluster resource creates an AWS PCS cluster. +--- + +# awscc_pcs_cluster (Resource) + +AWS::PCS::Cluster resource creates an AWS PCS cluster. + + + + +## Schema + +### Required + +- `networking` (Attributes) The networking configuration for the cluster's control plane. (see [below for nested schema](#nestedatt--networking)) +- `scheduler` (Attributes) The cluster management and job scheduling software associated with the cluster. (see [below for nested schema](#nestedatt--scheduler)) +- `size` (String) The size of the cluster. + +### Optional + +- `name` (String) The name that identifies the cluster. +- `slurm_configuration` (Attributes) Additional options related to the Slurm scheduler. (see [below for nested schema](#nestedatt--slurm_configuration)) +- `tags` (Map of String) 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. + +### Read-Only + +- `arn` (String) The unique Amazon Resource Name (ARN) of the cluster. +- `cluster_id` (String) The generated unique ID of the cluster. +- `endpoints` (Attributes List) The list of endpoints available for interaction with the scheduler. (see [below for nested schema](#nestedatt--endpoints)) +- `error_info` (Attributes List) The list of errors that occurred during cluster provisioning. (see [below for nested schema](#nestedatt--error_info)) +- `id` (String) Uniquely identifies the resource. +- `status` (String) The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster. + + +### Nested Schema for `networking` + +Optional: + +- `security_group_ids` (List of String) The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets. +- `subnet_ids` (List of String) The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list. + + + +### Nested Schema for `scheduler` + +Required: + +- `type` (String) The software AWS PCS uses to manage cluster scaling and job scheduling. +- `version` (String) The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling. + + + +### Nested Schema for `slurm_configuration` + +Optional: + +- `auth_key` (Attributes) The shared Slurm key for authentication, also known as the cluster secret. (see [below for nested schema](#nestedatt--slurm_configuration--auth_key)) +- `scale_down_idle_time_in_seconds` (Number) The time before an idle node is scaled down. +- `slurm_custom_settings` (Attributes List) Additional Slurm-specific configuration that directly maps to Slurm settings. (see [below for nested schema](#nestedatt--slurm_configuration--slurm_custom_settings)) + + +### Nested Schema for `slurm_configuration.auth_key` + +Optional: + +- `secret_arn` (String) The Amazon Resource Name (ARN) of the the shared Slurm key. +- `secret_version` (String) The version of the shared Slurm key. + + + +### Nested Schema for `slurm_configuration.slurm_custom_settings` + +Optional: + +- `parameter_name` (String) AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters. +- `parameter_value` (String) The value for the configured Slurm setting. + + + + +### Nested Schema for `endpoints` + +Read-Only: + +- `port` (String) The endpoint's connection port number. +- `private_ip_address` (String) The endpoint's private IP address. +- `public_ip_address` (String) The endpoint's public IP address. +- `type` (String) Indicates the type of endpoint running at the specific IP address. + + + +### Nested Schema for `error_info` + +Read-Only: + +- `code` (String) The short-form error code. +- `message` (String) The detailed error information. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_pcs_cluster.example "arn" +``` diff --git a/docs/resources/pcs_queue.md b/docs/resources/pcs_queue.md new file mode 100644 index 000000000..b8b5c38ec --- /dev/null +++ b/docs/resources/pcs_queue.md @@ -0,0 +1,58 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pcs_queue Resource - terraform-provider-awscc" +subcategory: "" +description: |- + AWS::PCS::Queue resource creates an AWS PCS queue. +--- + +# awscc_pcs_queue (Resource) + +AWS::PCS::Queue resource creates an AWS PCS queue. + + + + +## Schema + +### Required + +- `cluster_id` (String) The ID of the cluster of the queue. + +### Optional + +- `compute_node_group_configurations` (Attributes List) The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups. (see [below for nested schema](#nestedatt--compute_node_group_configurations)) +- `name` (String) The name that identifies the queue. +- `tags` (Map of String) 1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string. + +### Read-Only + +- `arn` (String) The unique Amazon Resource Name (ARN) of the queue. +- `error_info` (Attributes List) The list of errors that occurred during queue provisioning. (see [below for nested schema](#nestedatt--error_info)) +- `id` (String) Uniquely identifies the resource. +- `queue_id` (String) The generated unique ID of the queue. +- `status` (String) The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue. + + +### Nested Schema for `compute_node_group_configurations` + +Optional: + +- `compute_node_group_id` (String) The compute node group ID for the compute node group configuration. + + + +### Nested Schema for `error_info` + +Read-Only: + +- `code` (String) The short-form error code. +- `message` (String) The detailed error information. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_pcs_queue.example "arn" +``` diff --git a/docs/resources/redshift_integration.md b/docs/resources/redshift_integration.md index 712ead09c..1586d39ef 100644 --- a/docs/resources/redshift_integration.md +++ b/docs/resources/redshift_integration.md @@ -17,12 +17,12 @@ Integration from a source AWS service to a Redshift cluster ### Required -- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable -- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf +- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication +- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication ### Optional -- `additional_encryption_context` (Map of String) An optional set of non-secret key?value pairs that contains additional contextual information about the data. +- `additional_encryption_context` (Map of String) An optional set of non-secret key–value pairs that contains additional contextual information about the data. - `integration_name` (String) The name of the integration. - `kms_key_id` (String) An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used. - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) diff --git a/examples/resources/awscc_pcs_cluster/import.sh b/examples/resources/awscc_pcs_cluster/import.sh new file mode 100644 index 000000000..52518d22a --- /dev/null +++ b/examples/resources/awscc_pcs_cluster/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_pcs_cluster.example "arn" \ No newline at end of file diff --git a/examples/resources/awscc_pcs_compute_node_group/import.sh b/examples/resources/awscc_pcs_compute_node_group/import.sh new file mode 100644 index 000000000..3c1255534 --- /dev/null +++ b/examples/resources/awscc_pcs_compute_node_group/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_pcs_compute_node_group.example "arn" \ No newline at end of file diff --git a/examples/resources/awscc_pcs_queue/import.sh b/examples/resources/awscc_pcs_queue/import.sh new file mode 100644 index 000000000..8f8ba124a --- /dev/null +++ b/examples/resources/awscc_pcs_queue/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_pcs_queue.example "arn" \ No newline at end of file diff --git a/internal/aws/autoscaling/auto_scaling_group_resource_gen.go b/internal/aws/autoscaling/auto_scaling_group_resource_gen.go index 732a48215..a8a9cc8d7 100644 --- a/internal/aws/autoscaling/auto_scaling_group_resource_gen.go +++ b/internal/aws/autoscaling/auto_scaling_group_resource_gen.go @@ -57,9 +57,10 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "", + // "description": "The instance capacity distribution across Availability Zones.", // "properties": { // "CapacityDistributionStrategy": { + // "description": "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", // "enum": [ // "balanced-best-effort", // "balanced-only" @@ -73,8 +74,9 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CapacityDistributionStrategy "capacity_distribution_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "balanced-best-effort", @@ -86,7 +88,7 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The instance capacity distribution across Availability Zones.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -98,9 +100,10 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "", + // "description": "The Availability Zone impairment policy.", // "properties": { // "ImpairedZoneHealthCheckBehavior": { + // "description": "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", // "enum": [ // "IgnoreUnhealthy", // "ReplaceUnhealthy" @@ -108,6 +111,7 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "ZonalShiftEnabled": { + // "description": "If ``true``, enable zonal shift for your Auto Scaling group.", // "type": "boolean" // } // }, @@ -121,8 +125,9 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: ImpairedZoneHealthCheckBehavior "impaired_zone_health_check_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "IgnoreUnhealthy", @@ -136,8 +141,9 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ZonalShiftEnabled "zonal_shift_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "If ``true``, enable zonal shift for your Auto Scaling group.", + Optional: true, + Computed: true, Validators: []validator.Bool{ /*START VALIDATORS*/ fwvalidators.NotNullBool(), }, /*END VALIDATORS*/ @@ -146,7 +152,7 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The Availability Zone impairment policy.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -974,6 +980,7 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { // "description": "", // "properties": { // "InstanceFamily": { + // "description": "", // "type": "string" // } // }, @@ -1465,8 +1472,9 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: InstanceFamily "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ diff --git a/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go b/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go index 07c392f2d..108069087 100644 --- a/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go +++ b/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go @@ -39,9 +39,10 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err // // { // "additionalProperties": false, - // "description": "", + // "description": "The instance capacity distribution across Availability Zones.", // "properties": { // "CapacityDistributionStrategy": { + // "description": "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", // "enum": [ // "balanced-best-effort", // "balanced-only" @@ -55,10 +56,11 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CapacityDistributionStrategy "capacity_distribution_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The instance capacity distribution across Availability Zones.", Computed: true, }, /*END ATTRIBUTE*/ // Property: AvailabilityZoneImpairmentPolicy @@ -66,9 +68,10 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err // // { // "additionalProperties": false, - // "description": "", + // "description": "The Availability Zone impairment policy.", // "properties": { // "ImpairedZoneHealthCheckBehavior": { + // "description": "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", // "enum": [ // "IgnoreUnhealthy", // "ReplaceUnhealthy" @@ -76,6 +79,7 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err // "type": "string" // }, // "ZonalShiftEnabled": { + // "description": "If ``true``, enable zonal shift for your Auto Scaling group.", // "type": "boolean" // } // }, @@ -89,14 +93,16 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: ImpairedZoneHealthCheckBehavior "impaired_zone_health_check_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: ZonalShiftEnabled "zonal_shift_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "If ``true``, enable zonal shift for your Auto Scaling group.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "The Availability Zone impairment policy.", Computed: true, }, /*END ATTRIBUTE*/ // Property: AvailabilityZones @@ -742,6 +748,7 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err // "description": "", // "properties": { // "InstanceFamily": { + // "description": "", // "type": "string" // } // }, @@ -1124,7 +1131,8 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: InstanceFamily "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ diff --git a/internal/aws/cloudformation/guard_hook_resource_gen.go b/internal/aws/cloudformation/guard_hook_resource_gen.go index 93cf0d78a..9560fad9f 100644 --- a/internal/aws/cloudformation/guard_hook_resource_gen.go +++ b/internal/aws/cloudformation/guard_hook_resource_gen.go @@ -40,15 +40,12 @@ func guardHookResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The typename alias for the hook.", - // "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + // "pattern": "", // "type": "string" // } "alias": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The typename alias for the hook.", Required: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$"), ""), - }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ @@ -707,7 +704,8 @@ func guardHookResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "RESOURCE", // "STACK", - // "CHANGE_SET" + // "CHANGE_SET", + // "CLOUD_CONTROL" // ], // "type": "string" // }, @@ -725,6 +723,7 @@ func guardHookResource(ctx context.Context) (resource.Resource, error) { "RESOURCE", "STACK", "CHANGE_SET", + "CLOUD_CONTROL", ), ), }, /*END VALIDATORS*/ diff --git a/internal/aws/cloudformation/guard_hook_singular_data_source_gen.go b/internal/aws/cloudformation/guard_hook_singular_data_source_gen.go index 30ea54a62..f48d133fc 100644 --- a/internal/aws/cloudformation/guard_hook_singular_data_source_gen.go +++ b/internal/aws/cloudformation/guard_hook_singular_data_source_gen.go @@ -28,7 +28,7 @@ func guardHookDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The typename alias for the hook.", - // "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + // "pattern": "", // "type": "string" // } "alias": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -485,7 +485,8 @@ func guardHookDataSource(ctx context.Context) (datasource.DataSource, error) { // "enum": [ // "RESOURCE", // "STACK", - // "CHANGE_SET" + // "CHANGE_SET", + // "CLOUD_CONTROL" // ], // "type": "string" // }, diff --git a/internal/aws/cloudformation/lambda_hook_resource_gen.go b/internal/aws/cloudformation/lambda_hook_resource_gen.go index 3a1510427..5e8b12460 100644 --- a/internal/aws/cloudformation/lambda_hook_resource_gen.go +++ b/internal/aws/cloudformation/lambda_hook_resource_gen.go @@ -40,15 +40,12 @@ func lambdaHookResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The typename alias for the hook.", - // "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + // "pattern": "", // "type": "string" // } "alias": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The typename alias for the hook.", Required: true, - Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$"), ""), - }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ @@ -593,7 +590,8 @@ func lambdaHookResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "RESOURCE", // "STACK", - // "CHANGE_SET" + // "CHANGE_SET", + // "CLOUD_CONTROL" // ], // "type": "string" // }, @@ -611,6 +609,7 @@ func lambdaHookResource(ctx context.Context) (resource.Resource, error) { "RESOURCE", "STACK", "CHANGE_SET", + "CLOUD_CONTROL", ), ), }, /*END VALIDATORS*/ diff --git a/internal/aws/cloudformation/lambda_hook_singular_data_source_gen.go b/internal/aws/cloudformation/lambda_hook_singular_data_source_gen.go index 4a3736171..1f14aeead 100644 --- a/internal/aws/cloudformation/lambda_hook_singular_data_source_gen.go +++ b/internal/aws/cloudformation/lambda_hook_singular_data_source_gen.go @@ -28,7 +28,7 @@ func lambdaHookDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The typename alias for the hook.", - // "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + // "pattern": "", // "type": "string" // } "alias": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -402,7 +402,8 @@ func lambdaHookDataSource(ctx context.Context) (datasource.DataSource, error) { // "enum": [ // "RESOURCE", // "STACK", - // "CHANGE_SET" + // "CHANGE_SET", + // "CLOUD_CONTROL" // ], // "type": "string" // }, diff --git a/internal/aws/databrew/dataset_resource_gen.go b/internal/aws/databrew/dataset_resource_gen.go index e771f7e4d..af5471295 100644 --- a/internal/aws/databrew/dataset_resource_gen.go +++ b/internal/aws/databrew/dataset_resource_gen.go @@ -269,6 +269,12 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -303,6 +309,12 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -335,6 +347,12 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -393,6 +411,18 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(12, 12), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -463,6 +493,18 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(12, 12), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -519,6 +561,18 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(12, 12), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1080,6 +1134,33 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "description": "Source type of the dataset", + // "enum": [ + // "S3", + // "DATA-CATALOG", + // "DATABASE" + // ], + // "type": "string" + // } + "source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Source type of the dataset", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "S3", + "DATA-CATALOG", + "DATABASE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -1169,6 +1250,7 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "bucket": "Bucket", + "bucket_owner": "BucketOwner", "catalog_id": "CatalogId", "create_column": "CreateColumn", "csv": "Csv", @@ -1205,6 +1287,7 @@ func datasetResource(ctx context.Context) (resource.Resource, error) { "s3_input_definition": "S3InputDefinition", "sheet_indexes": "SheetIndexes", "sheet_names": "SheetNames", + "source": "Source", "source_arn": "SourceArn", "table_name": "TableName", "tags": "Tags", diff --git a/internal/aws/databrew/dataset_singular_data_source_gen.go b/internal/aws/databrew/dataset_singular_data_source_gen.go index e6cf5e9c6..511314e7d 100644 --- a/internal/aws/databrew/dataset_singular_data_source_gen.go +++ b/internal/aws/databrew/dataset_singular_data_source_gen.go @@ -196,6 +196,12 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -230,6 +236,12 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -262,6 +274,12 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { // "Bucket": { // "type": "string" // }, + // "BucketOwner": { + // "description": "Bucket owner", + // "maxLength": 12, + // "minLength": 12, + // "type": "string" + // }, // "Key": { // "type": "string" // } @@ -301,6 +319,11 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { "bucket": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -337,6 +360,11 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { "bucket": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -366,6 +394,11 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { "bucket": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BucketOwner + "bucket_owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Bucket owner", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -734,6 +767,22 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "PathOptions", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "description": "Source type of the dataset", + // "enum": [ + // "S3", + // "DATA-CATALOG", + // "DATABASE" + // ], + // "type": "string" + // } + "source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Source type of the dataset", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -796,6 +845,7 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "bucket": "Bucket", + "bucket_owner": "BucketOwner", "catalog_id": "CatalogId", "create_column": "CreateColumn", "csv": "Csv", @@ -832,6 +882,7 @@ func datasetDataSource(ctx context.Context) (datasource.DataSource, error) { "s3_input_definition": "S3InputDefinition", "sheet_indexes": "SheetIndexes", "sheet_names": "SheetNames", + "source": "Source", "source_arn": "SourceArn", "table_name": "TableName", "tags": "Tags", diff --git a/internal/aws/ec2/ec2_fleet_resource_gen.go b/internal/aws/ec2/ec2_fleet_resource_gen.go index 6d777b6e4..076bcf205 100644 --- a/internal/aws/ec2/ec2_fleet_resource_gen.go +++ b/internal/aws/ec2/ec2_fleet_resource_gen.go @@ -222,6 +222,31 @@ func eC2FleetResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -660,6 +685,46 @@ func eC2FleetResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1785,10 +1850,12 @@ func eC2FleetResource(ctx context.Context) (resource.Resource, error) { "availability_zone": "AvailabilityZone", "bare_metal": "BareMetal", "baseline_ebs_bandwidth_mbps": "BaselineEbsBandwidthMbps", + "baseline_performance_factors": "BaselinePerformanceFactors", "burstable_performance": "BurstablePerformance", "capacity_rebalance": "CapacityRebalance", "capacity_reservation_options": "CapacityReservationOptions", "context": "Context", + "cpu": "Cpu", "cpu_manufacturers": "CpuManufacturers", "default_target_capacity_type": "DefaultTargetCapacityType", "excess_capacity_termination_policy": "ExcessCapacityTerminationPolicy", @@ -1797,6 +1864,7 @@ func eC2FleetResource(ctx context.Context) (resource.Resource, error) { "group_name": "GroupName", "host_id": "HostId", "host_resource_group_arn": "HostResourceGroupArn", + "instance_family": "InstanceFamily", "instance_generations": "InstanceGenerations", "instance_interruption_behavior": "InstanceInterruptionBehavior", "instance_pools_to_use_count": "InstancePoolsToUseCount", @@ -1821,40 +1889,41 @@ func eC2FleetResource(ctx context.Context) (resource.Resource, error) { "network_bandwidth_gbps": "NetworkBandwidthGbps", "network_interface_count": "NetworkInterfaceCount", "on_demand_max_price_percentage_over_lowest_price": "OnDemandMaxPricePercentageOverLowestPrice", - "on_demand_options": "OnDemandOptions", - "on_demand_target_capacity": "OnDemandTargetCapacity", - "overrides": "Overrides", - "partition_number": "PartitionNumber", - "placement": "Placement", - "priority": "Priority", - "replace_unhealthy_instances": "ReplaceUnhealthyInstances", - "replacement_strategy": "ReplacementStrategy", - "require_hibernate_support": "RequireHibernateSupport", - "resource_type": "ResourceType", - "single_availability_zone": "SingleAvailabilityZone", - "single_instance_type": "SingleInstanceType", + "on_demand_options": "OnDemandOptions", + "on_demand_target_capacity": "OnDemandTargetCapacity", + "overrides": "Overrides", + "partition_number": "PartitionNumber", + "placement": "Placement", + "priority": "Priority", + "references": "References", + "replace_unhealthy_instances": "ReplaceUnhealthyInstances", + "replacement_strategy": "ReplacementStrategy", + "require_hibernate_support": "RequireHibernateSupport", + "resource_type": "ResourceType", + "single_availability_zone": "SingleAvailabilityZone", + "single_instance_type": "SingleInstanceType", "spot_max_price_percentage_over_lowest_price": "SpotMaxPricePercentageOverLowestPrice", - "spot_options": "SpotOptions", - "spot_target_capacity": "SpotTargetCapacity", - "spread_domain": "SpreadDomain", - "subnet_id": "SubnetId", - "tag_specifications": "TagSpecifications", - "tags": "Tags", - "target_capacity_specification": "TargetCapacitySpecification", - "target_capacity_unit_type": "TargetCapacityUnitType", - "tenancy": "Tenancy", - "terminate_instances_with_expiration": "TerminateInstancesWithExpiration", - "termination_delay": "TerminationDelay", - "total_local_storage_gb": "TotalLocalStorageGB", - "total_target_capacity": "TotalTargetCapacity", - "type": "Type", - "usage_strategy": "UsageStrategy", - "v_cpu_count": "VCpuCount", - "valid_from": "ValidFrom", - "valid_until": "ValidUntil", - "value": "Value", - "version": "Version", - "weighted_capacity": "WeightedCapacity", + "spot_options": "SpotOptions", + "spot_target_capacity": "SpotTargetCapacity", + "spread_domain": "SpreadDomain", + "subnet_id": "SubnetId", + "tag_specifications": "TagSpecifications", + "tags": "Tags", + "target_capacity_specification": "TargetCapacitySpecification", + "target_capacity_unit_type": "TargetCapacityUnitType", + "tenancy": "Tenancy", + "terminate_instances_with_expiration": "TerminateInstancesWithExpiration", + "termination_delay": "TerminationDelay", + "total_local_storage_gb": "TotalLocalStorageGB", + "total_target_capacity": "TotalTargetCapacity", + "type": "Type", + "usage_strategy": "UsageStrategy", + "v_cpu_count": "VCpuCount", + "valid_from": "ValidFrom", + "valid_until": "ValidUntil", + "value": "Value", + "version": "Version", + "weighted_capacity": "WeightedCapacity", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/ec2/ec2_fleet_singular_data_source_gen.go b/internal/aws/ec2/ec2_fleet_singular_data_source_gen.go index b2f84cbe8..32b741741 100644 --- a/internal/aws/ec2/ec2_fleet_singular_data_source_gen.go +++ b/internal/aws/ec2/ec2_fleet_singular_data_source_gen.go @@ -193,6 +193,31 @@ func eC2FleetDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -497,6 +522,30 @@ func eC2FleetDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1137,10 +1186,12 @@ func eC2FleetDataSource(ctx context.Context) (datasource.DataSource, error) { "availability_zone": "AvailabilityZone", "bare_metal": "BareMetal", "baseline_ebs_bandwidth_mbps": "BaselineEbsBandwidthMbps", + "baseline_performance_factors": "BaselinePerformanceFactors", "burstable_performance": "BurstablePerformance", "capacity_rebalance": "CapacityRebalance", "capacity_reservation_options": "CapacityReservationOptions", "context": "Context", + "cpu": "Cpu", "cpu_manufacturers": "CpuManufacturers", "default_target_capacity_type": "DefaultTargetCapacityType", "excess_capacity_termination_policy": "ExcessCapacityTerminationPolicy", @@ -1149,6 +1200,7 @@ func eC2FleetDataSource(ctx context.Context) (datasource.DataSource, error) { "group_name": "GroupName", "host_id": "HostId", "host_resource_group_arn": "HostResourceGroupArn", + "instance_family": "InstanceFamily", "instance_generations": "InstanceGenerations", "instance_interruption_behavior": "InstanceInterruptionBehavior", "instance_pools_to_use_count": "InstancePoolsToUseCount", @@ -1173,40 +1225,41 @@ func eC2FleetDataSource(ctx context.Context) (datasource.DataSource, error) { "network_bandwidth_gbps": "NetworkBandwidthGbps", "network_interface_count": "NetworkInterfaceCount", "on_demand_max_price_percentage_over_lowest_price": "OnDemandMaxPricePercentageOverLowestPrice", - "on_demand_options": "OnDemandOptions", - "on_demand_target_capacity": "OnDemandTargetCapacity", - "overrides": "Overrides", - "partition_number": "PartitionNumber", - "placement": "Placement", - "priority": "Priority", - "replace_unhealthy_instances": "ReplaceUnhealthyInstances", - "replacement_strategy": "ReplacementStrategy", - "require_hibernate_support": "RequireHibernateSupport", - "resource_type": "ResourceType", - "single_availability_zone": "SingleAvailabilityZone", - "single_instance_type": "SingleInstanceType", + "on_demand_options": "OnDemandOptions", + "on_demand_target_capacity": "OnDemandTargetCapacity", + "overrides": "Overrides", + "partition_number": "PartitionNumber", + "placement": "Placement", + "priority": "Priority", + "references": "References", + "replace_unhealthy_instances": "ReplaceUnhealthyInstances", + "replacement_strategy": "ReplacementStrategy", + "require_hibernate_support": "RequireHibernateSupport", + "resource_type": "ResourceType", + "single_availability_zone": "SingleAvailabilityZone", + "single_instance_type": "SingleInstanceType", "spot_max_price_percentage_over_lowest_price": "SpotMaxPricePercentageOverLowestPrice", - "spot_options": "SpotOptions", - "spot_target_capacity": "SpotTargetCapacity", - "spread_domain": "SpreadDomain", - "subnet_id": "SubnetId", - "tag_specifications": "TagSpecifications", - "tags": "Tags", - "target_capacity_specification": "TargetCapacitySpecification", - "target_capacity_unit_type": "TargetCapacityUnitType", - "tenancy": "Tenancy", - "terminate_instances_with_expiration": "TerminateInstancesWithExpiration", - "termination_delay": "TerminationDelay", - "total_local_storage_gb": "TotalLocalStorageGB", - "total_target_capacity": "TotalTargetCapacity", - "type": "Type", - "usage_strategy": "UsageStrategy", - "v_cpu_count": "VCpuCount", - "valid_from": "ValidFrom", - "valid_until": "ValidUntil", - "value": "Value", - "version": "Version", - "weighted_capacity": "WeightedCapacity", + "spot_options": "SpotOptions", + "spot_target_capacity": "SpotTargetCapacity", + "spread_domain": "SpreadDomain", + "subnet_id": "SubnetId", + "tag_specifications": "TagSpecifications", + "tags": "Tags", + "target_capacity_specification": "TargetCapacitySpecification", + "target_capacity_unit_type": "TargetCapacityUnitType", + "tenancy": "Tenancy", + "terminate_instances_with_expiration": "TerminateInstancesWithExpiration", + "termination_delay": "TerminationDelay", + "total_local_storage_gb": "TotalLocalStorageGB", + "total_target_capacity": "TotalTargetCapacity", + "type": "Type", + "usage_strategy": "UsageStrategy", + "v_cpu_count": "VCpuCount", + "valid_from": "ValidFrom", + "valid_until": "ValidUntil", + "value": "Value", + "version": "Version", + "weighted_capacity": "WeightedCapacity", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/ec2/network_acl_resource_gen.go b/internal/aws/ec2/network_acl_resource_gen.go index 4df401ae6..4cac28365 100644 --- a/internal/aws/ec2/network_acl_resource_gen.go +++ b/internal/aws/ec2/network_acl_resource_gen.go @@ -132,7 +132,7 @@ func networkAclResource(ctx context.Context) (resource.Resource, error) { } schema := schema.Schema{ - Description: "Specifies a network ACL for your VPC.", + Description: "Specifies a network ACL for your VPC.\n To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html).", Version: 1, Attributes: attributes, } diff --git a/internal/aws/ec2/spot_fleet_resource_gen.go b/internal/aws/ec2/spot_fleet_resource_gen.go index f85f20c2a..10846c3d9 100644 --- a/internal/aws/ec2/spot_fleet_resource_gen.go +++ b/internal/aws/ec2/spot_fleet_resource_gen.go @@ -269,6 +269,31 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -790,6 +815,31 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -1582,6 +1632,46 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -2529,6 +2619,46 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -3275,12 +3405,14 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { "availability_zone": "AvailabilityZone", "bare_metal": "BareMetal", "baseline_ebs_bandwidth_mbps": "BaselineEbsBandwidthMbps", + "baseline_performance_factors": "BaselinePerformanceFactors", "block_device_mappings": "BlockDeviceMappings", "burstable_performance": "BurstablePerformance", "capacity_rebalance": "CapacityRebalance", "classic_load_balancers": "ClassicLoadBalancers", "classic_load_balancers_config": "ClassicLoadBalancersConfig", "context": "Context", + "cpu": "Cpu", "cpu_manufacturers": "CpuManufacturers", "delete_on_termination": "DeleteOnTermination", "description": "Description", @@ -3298,6 +3430,7 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { "iam_fleet_role": "IamFleetRole", "iam_instance_profile": "IamInstanceProfile", "image_id": "ImageId", + "instance_family": "InstanceFamily", "instance_generations": "InstanceGenerations", "instance_interruption_behavior": "InstanceInterruptionBehavior", "instance_pools_to_use_count": "InstancePoolsToUseCount", @@ -3341,6 +3474,7 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { "private_ip_address": "PrivateIpAddress", "private_ip_addresses": "PrivateIpAddresses", "ramdisk_id": "RamdiskId", + "references": "References", "replace_unhealthy_instances": "ReplaceUnhealthyInstances", "replacement_strategy": "ReplacementStrategy", "require_hibernate_support": "RequireHibernateSupport", diff --git a/internal/aws/ec2/spot_fleet_singular_data_source_gen.go b/internal/aws/ec2/spot_fleet_singular_data_source_gen.go index d72b4cc3b..e29b48375 100644 --- a/internal/aws/ec2/spot_fleet_singular_data_source_gen.go +++ b/internal/aws/ec2/spot_fleet_singular_data_source_gen.go @@ -253,6 +253,31 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -774,6 +799,31 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "object" // }, + // "BaselinePerformanceFactors": { + // "additionalProperties": false, + // "properties": { + // "Cpu": { + // "additionalProperties": false, + // "properties": { + // "References": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "InstanceFamily": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // }, // "BurstablePerformance": { // "enum": [ // "included", @@ -1328,6 +1378,30 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1735,6 +1809,30 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BaselinePerformanceFactors + "baseline_performance_factors": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cpu + "cpu": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: References + "references": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceFamily + "instance_family": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: BurstablePerformance "burstable_performance": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -2064,12 +2162,14 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { "availability_zone": "AvailabilityZone", "bare_metal": "BareMetal", "baseline_ebs_bandwidth_mbps": "BaselineEbsBandwidthMbps", + "baseline_performance_factors": "BaselinePerformanceFactors", "block_device_mappings": "BlockDeviceMappings", "burstable_performance": "BurstablePerformance", "capacity_rebalance": "CapacityRebalance", "classic_load_balancers": "ClassicLoadBalancers", "classic_load_balancers_config": "ClassicLoadBalancersConfig", "context": "Context", + "cpu": "Cpu", "cpu_manufacturers": "CpuManufacturers", "delete_on_termination": "DeleteOnTermination", "description": "Description", @@ -2087,6 +2187,7 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { "iam_fleet_role": "IamFleetRole", "iam_instance_profile": "IamInstanceProfile", "image_id": "ImageId", + "instance_family": "InstanceFamily", "instance_generations": "InstanceGenerations", "instance_interruption_behavior": "InstanceInterruptionBehavior", "instance_pools_to_use_count": "InstancePoolsToUseCount", @@ -2130,6 +2231,7 @@ func spotFleetDataSource(ctx context.Context) (datasource.DataSource, error) { "private_ip_address": "PrivateIpAddress", "private_ip_addresses": "PrivateIpAddresses", "ramdisk_id": "RamdiskId", + "references": "References", "replace_unhealthy_instances": "ReplaceUnhealthyInstances", "replacement_strategy": "ReplacementStrategy", "require_hibernate_support": "RequireHibernateSupport", diff --git a/internal/aws/ec2/vpc_endpoint_resource_gen.go b/internal/aws/ec2/vpc_endpoint_resource_gen.go index 209955d1d..dc7e41bee 100644 --- a/internal/aws/ec2/vpc_endpoint_resource_gen.go +++ b/internal/aws/ec2/vpc_endpoint_resource_gen.go @@ -13,6 +13,7 @@ import ( "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/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" @@ -65,6 +66,76 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: DnsOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "DnsRecordIpType": { + // "enum": [ + // "ipv4", + // "ipv6", + // "dualstack", + // "service-defined", + // "not-specified" + // ], + // "type": "string" + // }, + // "PrivateDnsOnlyForInboundResolverEndpoint": { + // "enum": [ + // "OnlyInboundResolver", + // "AllResolvers", + // "NotSpecified" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "dns_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DnsRecordIpType + "dns_record_ip_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ipv4", + "ipv6", + "dualstack", + "service-defined", + "not-specified", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PrivateDnsOnlyForInboundResolverEndpoint + "private_dns_only_for_inbound_resolver_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "OnlyInboundResolver", + "AllResolvers", + "NotSpecified", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Id // CloudFormation resource type schema: // @@ -79,6 +150,35 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: IpAddressType + // CloudFormation resource type schema: + // + // { + // "description": "", + // "enum": [ + // "ipv4", + // "ipv6", + // "dualstack", + // "not-specified" + // ], + // "type": "string" + // } + "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ipv4", + "ipv6", + "dualstack", + "not-specified", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: NetworkInterfaceIds // CloudFormation resource type schema: // @@ -130,6 +230,22 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: RouteTableIds // CloudFormation resource type schema: // @@ -190,9 +306,27 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { // } "service_name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The name of the endpoint service.", - Required: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ServiceNetworkArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "service_network_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: SubnetIds @@ -228,7 +362,9 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "Interface", // "Gateway", - // "GatewayLoadBalancer" + // "GatewayLoadBalancer", + // "ServiceNetwork", + // "Resource" // ], // "type": "string" // } @@ -241,6 +377,8 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { "Interface", "Gateway", "GatewayLoadBalancer", + "ServiceNetwork", + "Resource", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -286,16 +424,22 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "creation_timestamp": "CreationTimestamp", "dns_entries": "DnsEntries", + "dns_options": "DnsOptions", + "dns_record_ip_type": "DnsRecordIpType", + "ip_address_type": "IpAddressType", "network_interface_ids": "NetworkInterfaceIds", "policy_document": "PolicyDocument", "private_dns_enabled": "PrivateDnsEnabled", - "route_table_ids": "RouteTableIds", - "security_group_ids": "SecurityGroupIds", - "service_name": "ServiceName", - "subnet_ids": "SubnetIds", - "vpc_endpoint_id": "Id", - "vpc_endpoint_type": "VpcEndpointType", - "vpc_id": "VpcId", + "private_dns_only_for_inbound_resolver_endpoint": "PrivateDnsOnlyForInboundResolverEndpoint", + "resource_configuration_arn": "ResourceConfigurationArn", + "route_table_ids": "RouteTableIds", + "security_group_ids": "SecurityGroupIds", + "service_name": "ServiceName", + "service_network_arn": "ServiceNetworkArn", + "subnet_ids": "SubnetIds", + "vpc_endpoint_id": "Id", + "vpc_endpoint_type": "VpcEndpointType", + "vpc_id": "VpcId", }) opts = opts.WithCreateTimeoutInMinutes(210).WithDeleteTimeoutInMinutes(210) diff --git a/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go b/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go index ffa1d8fd3..a46b2af64 100644 --- a/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go +++ b/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go @@ -51,6 +51,48 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "", Computed: true, }, /*END ATTRIBUTE*/ + // Property: DnsOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "DnsRecordIpType": { + // "enum": [ + // "ipv4", + // "ipv6", + // "dualstack", + // "service-defined", + // "not-specified" + // ], + // "type": "string" + // }, + // "PrivateDnsOnlyForInboundResolverEndpoint": { + // "enum": [ + // "OnlyInboundResolver", + // "AllResolvers", + // "NotSpecified" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "dns_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DnsRecordIpType + "dns_record_ip_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PrivateDnsOnlyForInboundResolverEndpoint + "private_dns_only_for_inbound_resolver_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Id // CloudFormation resource type schema: // @@ -62,6 +104,23 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "", Computed: true, }, /*END ATTRIBUTE*/ + // Property: IpAddressType + // CloudFormation resource type schema: + // + // { + // "description": "", + // "enum": [ + // "ipv4", + // "ipv6", + // "dualstack", + // "not-specified" + // ], + // "type": "string" + // } + "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: NetworkInterfaceIds // CloudFormation resource type schema: // @@ -101,6 +160,17 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.\n To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``.\n This property is supported only for interface endpoints.\n Default: ``false``", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ResourceConfigurationArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "resource_configuration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: RouteTableIds // CloudFormation resource type schema: // @@ -155,6 +225,17 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The name of the endpoint service.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ServiceNetworkArn + // CloudFormation resource type schema: + // + // { + // "description": "", + // "type": "string" + // } + "service_network_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: SubnetIds // CloudFormation resource type schema: // @@ -184,7 +265,9 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { // "enum": [ // "Interface", // "Gateway", - // "GatewayLoadBalancer" + // "GatewayLoadBalancer", + // "ServiceNetwork", + // "Resource" // ], // "type": "string" // } @@ -222,16 +305,22 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "creation_timestamp": "CreationTimestamp", "dns_entries": "DnsEntries", + "dns_options": "DnsOptions", + "dns_record_ip_type": "DnsRecordIpType", + "ip_address_type": "IpAddressType", "network_interface_ids": "NetworkInterfaceIds", "policy_document": "PolicyDocument", "private_dns_enabled": "PrivateDnsEnabled", - "route_table_ids": "RouteTableIds", - "security_group_ids": "SecurityGroupIds", - "service_name": "ServiceName", - "subnet_ids": "SubnetIds", - "vpc_endpoint_id": "Id", - "vpc_endpoint_type": "VpcEndpointType", - "vpc_id": "VpcId", + "private_dns_only_for_inbound_resolver_endpoint": "PrivateDnsOnlyForInboundResolverEndpoint", + "resource_configuration_arn": "ResourceConfigurationArn", + "route_table_ids": "RouteTableIds", + "security_group_ids": "SecurityGroupIds", + "service_name": "ServiceName", + "service_network_arn": "ServiceNetworkArn", + "subnet_ids": "SubnetIds", + "vpc_endpoint_id": "Id", + "vpc_endpoint_type": "VpcEndpointType", + "vpc_id": "VpcId", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/emr/studio_resource_gen.go b/internal/aws/emr/studio_resource_gen.go index 6f7a4bdba..4d4009df7 100644 --- a/internal/aws/emr/studio_resource_gen.go +++ b/internal/aws/emr/studio_resource_gen.go @@ -37,7 +37,7 @@ func studioResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The Amazon Resource Name (ARN) of the EMR Studio.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -114,7 +114,7 @@ func studioResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The AWS KMS key identifier (ARN) used to encrypt AWS EMR Studio workspace and notebook files when backed up to AWS S3.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "encryption_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -122,7 +122,7 @@ func studioResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -261,14 +261,14 @@ func studioResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The IAM role that will be assumed by the Amazon EMR Studio. The service role provides a way for Amazon EMR Studio to interoperate with other AWS services.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "service_role": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The IAM role that will be assumed by the Amazon EMR Studio. The service role provides a way for Amazon EMR Studio to interoperate with other AWS services.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), @@ -422,7 +422,7 @@ func studioResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The IAM user role that will be assumed by users and groups logged in to a Studio. The permissions attached to this IAM role can be scoped down for each user or group using session policies.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "user_role": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -430,7 +430,7 @@ func studioResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), diff --git a/internal/aws/emr/studio_session_mapping_resource_gen.go b/internal/aws/emr/studio_session_mapping_resource_gen.go index 1e909460a..2c5054521 100644 --- a/internal/aws/emr/studio_session_mapping_resource_gen.go +++ b/internal/aws/emr/studio_session_mapping_resource_gen.go @@ -70,14 +70,14 @@ func studioSessionMappingResource(ctx context.Context) (resource.Resource, error // // { // "description": "The Amazon Resource Name (ARN) for the session policy that will be applied to the user or group. Session policies refine Studio user permissions without the need to use multiple IAM user roles.", - // "pattern": "^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$", // "type": "string" // } "session_policy_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The Amazon Resource Name (ARN) for the session policy that will be applied to the user or group. Session policies refine Studio user permissions without the need to use multiple IAM user roles.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$"), ""), }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ // Property: StudioId diff --git a/internal/aws/emr/studio_session_mapping_singular_data_source_gen.go b/internal/aws/emr/studio_session_mapping_singular_data_source_gen.go index b89d2b2e7..52ca48bfc 100644 --- a/internal/aws/emr/studio_session_mapping_singular_data_source_gen.go +++ b/internal/aws/emr/studio_session_mapping_singular_data_source_gen.go @@ -53,7 +53,7 @@ func studioSessionMappingDataSource(ctx context.Context) (datasource.DataSource, // // { // "description": "The Amazon Resource Name (ARN) for the session policy that will be applied to the user or group. Session policies refine Studio user permissions without the need to use multiple IAM user roles.", - // "pattern": "^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$", // "type": "string" // } "session_policy_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/emr/studio_singular_data_source_gen.go b/internal/aws/emr/studio_singular_data_source_gen.go index 7f70f0e13..60773bba4 100644 --- a/internal/aws/emr/studio_singular_data_source_gen.go +++ b/internal/aws/emr/studio_singular_data_source_gen.go @@ -28,7 +28,7 @@ func studioDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The Amazon Resource Name (ARN) of the EMR Studio.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -82,7 +82,7 @@ func studioDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The AWS KMS key identifier (ARN) used to encrypt AWS EMR Studio workspace and notebook files when backed up to AWS S3.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "encryption_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -176,7 +176,7 @@ func studioDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The IAM role that will be assumed by the Amazon EMR Studio. The service role provides a way for Amazon EMR Studio to interoperate with other AWS services.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "service_role": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -296,7 +296,7 @@ func studioDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "The IAM user role that will be assumed by users and groups logged in to a Studio. The permissions attached to this IAM role can be scoped down for each user or group using session policies.", - // "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + // "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", // "type": "string" // } "user_role": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/lambda/event_invoke_config_resource_gen.go b/internal/aws/lambda/event_invoke_config_resource_gen.go index fcb64d663..cc2f5c911 100644 --- a/internal/aws/lambda/event_invoke_config_resource_gen.go +++ b/internal/aws/lambda/event_invoke_config_resource_gen.go @@ -46,7 +46,7 @@ func eventInvokeConfigResource(ctx context.Context) (resource.Resource, error) { // "description": "The Amazon Resource Name (ARN) of the destination resource.", // "maxLength": 350, // "minLength": 0, - // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", // "type": "string" // } // }, @@ -63,7 +63,7 @@ func eventInvokeConfigResource(ctx context.Context) (resource.Resource, error) { // "description": "The Amazon Resource Name (ARN) of the destination resource.", // "maxLength": 350, // "minLength": 0, - // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", // "type": "string" // } // }, @@ -87,7 +87,7 @@ func eventInvokeConfigResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(0, 350), - stringvalidator.RegexMatches(regexp.MustCompile("^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -112,7 +112,7 @@ func eventInvokeConfigResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(0, 350), - stringvalidator.RegexMatches(regexp.MustCompile("^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -140,14 +140,14 @@ func eventInvokeConfigResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "The name of the Lambda function.", - // "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + // "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", // "type": "string" // } "function_name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The name of the Lambda function.", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), diff --git a/internal/aws/lambda/event_invoke_config_singular_data_source_gen.go b/internal/aws/lambda/event_invoke_config_singular_data_source_gen.go index 5abef725d..31816cf6f 100644 --- a/internal/aws/lambda/event_invoke_config_singular_data_source_gen.go +++ b/internal/aws/lambda/event_invoke_config_singular_data_source_gen.go @@ -37,7 +37,7 @@ func eventInvokeConfigDataSource(ctx context.Context) (datasource.DataSource, er // "description": "The Amazon Resource Name (ARN) of the destination resource.", // "maxLength": 350, // "minLength": 0, - // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", // "type": "string" // } // }, @@ -54,7 +54,7 @@ func eventInvokeConfigDataSource(ctx context.Context) (datasource.DataSource, er // "description": "The Amazon Resource Name (ARN) of the destination resource.", // "maxLength": 350, // "minLength": 0, - // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + // "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", // "type": "string" // } // }, @@ -101,7 +101,7 @@ func eventInvokeConfigDataSource(ctx context.Context) (datasource.DataSource, er // // { // "description": "The name of the Lambda function.", - // "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + // "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", // "type": "string" // } "function_name": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/lambda/function_resource_gen.go b/internal/aws/lambda/function_resource_gen.go index 0724ec955..76064f419 100644 --- a/internal/aws/lambda/function_resource_gen.go +++ b/internal/aws/lambda/function_resource_gen.go @@ -118,12 +118,12 @@ func functionResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "SourceKMSKeyArn": { - // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).", + // "description": "", // "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", // "type": "string" // }, // "ZipFile": { - // "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + // "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", // "type": "string" // } // }, @@ -182,7 +182,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: SourceKMSKeyArn "source_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).", + Description: "", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -194,7 +194,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ZipFile "zip_file": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + Description: "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -563,12 +563,12 @@ func functionResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", // "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", // "type": "string" // } "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ diff --git a/internal/aws/lambda/function_singular_data_source_gen.go b/internal/aws/lambda/function_singular_data_source_gen.go index f6c989b08..8e17dd0fc 100644 --- a/internal/aws/lambda/function_singular_data_source_gen.go +++ b/internal/aws/lambda/function_singular_data_source_gen.go @@ -87,12 +87,12 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { // "type": "string" // }, // "SourceKMSKeyArn": { - // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).", + // "description": "", // "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", // "type": "string" // }, // "ZipFile": { - // "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + // "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", // "type": "string" // } // }, @@ -122,12 +122,12 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END ATTRIBUTE*/ // Property: SourceKMSKeyArn "source_kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: ZipFile "zip_file": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + Description: "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ @@ -380,12 +380,12 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + // "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", // "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", // "type": "string" // } "kms_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + Description: "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Layers diff --git a/internal/aws/logs/integration_resource_gen.go b/internal/aws/logs/integration_resource_gen.go index 8cd188f76..aac668c00 100644 --- a/internal/aws/logs/integration_resource_gen.go +++ b/internal/aws/logs/integration_resource_gen.go @@ -269,7 +269,7 @@ func integrationResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/ResourceConfig", }) - opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + opts = opts.WithCreateTimeoutInMinutes(30).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/opensearchservice/domain_resource_gen.go b/internal/aws/opensearchservice/domain_resource_gen.go index db1da8eae..accf1442f 100644 --- a/internal/aws/opensearchservice/domain_resource_gen.go +++ b/internal/aws/opensearchservice/domain_resource_gen.go @@ -423,6 +423,36 @@ func domainResource(ctx context.Context) (resource.Resource, error) { // "MultiAZWithStandbyEnabled": { // "type": "boolean" // }, + // "NodeOptions": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "NodeConfig": { + // "additionalProperties": false, + // "properties": { + // "Count": { + // "type": "integer" + // }, + // "Enabled": { + // "type": "boolean" + // }, + // "Type": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "NodeType": { + // "enum": [ + // "coordinator" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, // "WarmCount": { // "type": "integer" // }, @@ -515,6 +545,65 @@ func domainResource(ctx context.Context) (resource.Resource, error) { boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: NodeOptions + "node_options": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NodeConfig + "node_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Count + "count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": 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*/ + }, /*END ATTRIBUTE*/ + // Property: NodeType + "node_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "coordinator", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: WarmCount "warm_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1531,6 +1620,7 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "cluster_config": "ClusterConfig", "cognito_options": "CognitoOptions", "cold_storage_options": "ColdStorageOptions", + "count": "Count", "current_version": "CurrentVersion", "custom_endpoint": "CustomEndpoint", "custom_endpoint_certificate_arn": "CustomEndpointCertificateArn", @@ -1579,7 +1669,10 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "minutes": "Minutes", "multi_az_with_standby_enabled": "MultiAZWithStandbyEnabled", "new_version": "NewVersion", + "node_config": "NodeConfig", + "node_options": "NodeOptions", "node_to_node_encryption_options": "NodeToNodeEncryptionOptions", + "node_type": "NodeType", "off_peak_window": "OffPeakWindow", "off_peak_window_options": "OffPeakWindowOptions", "optional_deployment": "OptionalDeployment", @@ -1598,6 +1691,7 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "tags": "Tags", "throughput": "Throughput", "tls_security_policy": "TLSSecurityPolicy", + "type": "Type", "update_available": "UpdateAvailable", "update_status": "UpdateStatus", "user_pool_id": "UserPoolId", diff --git a/internal/aws/opensearchservice/domain_singular_data_source_gen.go b/internal/aws/opensearchservice/domain_singular_data_source_gen.go index 7c9998c6b..585cf17d1 100644 --- a/internal/aws/opensearchservice/domain_singular_data_source_gen.go +++ b/internal/aws/opensearchservice/domain_singular_data_source_gen.go @@ -294,6 +294,36 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { // "MultiAZWithStandbyEnabled": { // "type": "boolean" // }, + // "NodeOptions": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "NodeConfig": { + // "additionalProperties": false, + // "properties": { + // "Count": { + // "type": "integer" + // }, + // "Enabled": { + // "type": "boolean" + // }, + // "Type": { + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "NodeType": { + // "enum": [ + // "coordinator" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // }, // "WarmCount": { // "type": "integer" // }, @@ -354,6 +384,36 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "multi_az_with_standby_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: NodeOptions + "node_options": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: NodeConfig + "node_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Count + "count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodeType + "node_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: WarmCount "warm_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1074,6 +1134,7 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "cluster_config": "ClusterConfig", "cognito_options": "CognitoOptions", "cold_storage_options": "ColdStorageOptions", + "count": "Count", "current_version": "CurrentVersion", "custom_endpoint": "CustomEndpoint", "custom_endpoint_certificate_arn": "CustomEndpointCertificateArn", @@ -1122,7 +1183,10 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "minutes": "Minutes", "multi_az_with_standby_enabled": "MultiAZWithStandbyEnabled", "new_version": "NewVersion", + "node_config": "NodeConfig", + "node_options": "NodeOptions", "node_to_node_encryption_options": "NodeToNodeEncryptionOptions", + "node_type": "NodeType", "off_peak_window": "OffPeakWindow", "off_peak_window_options": "OffPeakWindowOptions", "optional_deployment": "OptionalDeployment", @@ -1141,6 +1205,7 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "tags": "Tags", "throughput": "Throughput", "tls_security_policy": "TLSSecurityPolicy", + "type": "Type", "update_available": "UpdateAvailable", "update_status": "UpdateStatus", "user_pool_id": "UserPoolId", diff --git a/internal/aws/pcs/cluster_plural_data_source_gen.go b/internal/aws/pcs/cluster_plural_data_source_gen.go new file mode 100644 index 000000000..b41e648a2 --- /dev/null +++ b/internal/aws/pcs/cluster_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package pcs + +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_pcs_clusters", clustersDataSource) +} + +// clustersDataSource returns the Terraform awscc_pcs_clusters data source. +// This Terraform data source corresponds to the CloudFormation AWS::PCS::Cluster resource. +func clustersDataSource(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::PCS::Cluster", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::Cluster").WithTerraformTypeName("awscc_pcs_clusters") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/cluster_plural_data_source_gen_test.go b/internal/aws/pcs/cluster_plural_data_source_gen_test.go new file mode 100644 index 000000000..456885a8f --- /dev/null +++ b/internal/aws/pcs/cluster_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package pcs_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSClustersDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Cluster", "awscc_pcs_clusters", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/pcs/cluster_resource_gen.go b/internal/aws/pcs/cluster_resource_gen.go new file mode 100644 index 000000000..715767aa2 --- /dev/null +++ b/internal/aws/pcs/cluster_resource_gen.go @@ -0,0 +1,594 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package pcs + +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/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/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_pcs_cluster", clusterResource) +} + +// clusterResource returns the Terraform awscc_pcs_cluster resource. +// This Terraform resource corresponds to the CloudFormation AWS::PCS::Cluster resource. +func clusterResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the cluster.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the cluster.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Endpoints + // CloudFormation resource type schema: + // + // { + // "description": "The list of endpoints available for interaction with the scheduler.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An endpoint available for interaction with the scheduler.", + // "properties": { + // "Port": { + // "description": "The endpoint's connection port number.", + // "type": "string" + // }, + // "PrivateIpAddress": { + // "description": "The endpoint's private IP address.", + // "type": "string" + // }, + // "PublicIpAddress": { + // "description": "The endpoint's public IP address.", + // "type": "string" + // }, + // "Type": { + // "description": "Indicates the type of endpoint running at the specific IP address.", + // "enum": [ + // "SLURMCTLD", + // "SLURMDBD" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Port", + // "PrivateIpAddress", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "endpoints": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Port + "port": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's connection port number.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PrivateIpAddress + "private_ip_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's private IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PublicIpAddress + "public_ip_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's public IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates the type of endpoint running at the specific IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of endpoints available for interaction with the scheduler.", + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during cluster provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during cluster provisioning.", + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the cluster.", + // "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the cluster.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the cluster.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Networking + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The networking configuration for the cluster's control plane.", + // "properties": { + // "SecurityGroupIds": { + // "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC security group ID.", + // "type": "string" + // }, + // "type": "array" + // }, + // "SubnetIds": { + // "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC subnet ID.", + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "networking": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecurityGroupIds + "security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SubnetIds + "subnet_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The networking configuration for the cluster's control plane.", + Required: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Scheduler + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The cluster management and job scheduling software associated with the cluster.", + // "properties": { + // "Type": { + // "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.", + // "enum": [ + // "SLURM" + // ], + // "type": "string" + // }, + // "Version": { + // "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + // "type": "string" + // } + // }, + // "required": [ + // "Type", + // "Version" + // ], + // "type": "object" + // } + "scheduler": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The software AWS PCS uses to manage cluster scaling and job scheduling.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "SLURM", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Version + "version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The cluster management and job scheduling software associated with the cluster.", + Required: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Size + // CloudFormation resource type schema: + // + // { + // "description": "The size of the cluster.", + // "enum": [ + // "SMALL", + // "MEDIUM", + // "LARGE" + // ], + // "type": "string" + // } + "size": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The size of the cluster.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "SMALL", + "MEDIUM", + "LARGE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SlurmConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional options related to the Slurm scheduler.", + // "properties": { + // "AuthKey": { + // "additionalProperties": false, + // "description": "The shared Slurm key for authentication, also known as the cluster secret.", + // "properties": { + // "SecretArn": { + // "description": "The Amazon Resource Name (ARN) of the the shared Slurm key.", + // "type": "string" + // }, + // "SecretVersion": { + // "description": "The version of the shared Slurm key.", + // "type": "string" + // } + // }, + // "required": [ + // "SecretArn", + // "SecretVersion" + // ], + // "type": "object" + // }, + // "ScaleDownIdleTimeInSeconds": { + // "description": "The time before an idle node is scaled down.", + // "minimum": 1, + // "type": "integer" + // }, + // "SlurmCustomSettings": { + // "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Additional settings that directly map to Slurm settings.", + // "properties": { + // "ParameterName": { + // "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + // "type": "string" + // }, + // "ParameterValue": { + // "description": "The value for the configured Slurm setting.", + // "type": "string" + // } + // }, + // "required": [ + // "ParameterName", + // "ParameterValue" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "slurm_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthKey + "auth_key": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecretArn + "secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the the shared Slurm key.", + 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: SecretVersion + "secret_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the shared Slurm key.", + 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 shared Slurm key for authentication, also known as the cluster secret.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ScaleDownIdleTimeInSeconds + "scale_down_idle_time_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The time before an idle node is scaled down.", + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.AtLeast(1), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SlurmCustomSettings + "slurm_custom_settings": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParameterName + "parameter_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + 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: ParameterValue + "parameter_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the configured Slurm setting.", + 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*/ + }, /*END NESTED OBJECT*/ + Description: "Additional Slurm-specific configuration that directly maps to Slurm settings.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional options related to the Slurm scheduler.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // } + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.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: "AWS::PCS::Cluster resource creates an AWS PCS cluster.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::Cluster").WithTerraformTypeName("awscc_pcs_cluster") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "auth_key": "AuthKey", + "cluster_id": "Id", + "code": "Code", + "endpoints": "Endpoints", + "error_info": "ErrorInfo", + "message": "Message", + "name": "Name", + "networking": "Networking", + "parameter_name": "ParameterName", + "parameter_value": "ParameterValue", + "port": "Port", + "private_ip_address": "PrivateIpAddress", + "public_ip_address": "PublicIpAddress", + "scale_down_idle_time_in_seconds": "ScaleDownIdleTimeInSeconds", + "scheduler": "Scheduler", + "secret_arn": "SecretArn", + "secret_version": "SecretVersion", + "security_group_ids": "SecurityGroupIds", + "size": "Size", + "slurm_configuration": "SlurmConfiguration", + "slurm_custom_settings": "SlurmCustomSettings", + "status": "Status", + "subnet_ids": "SubnetIds", + "tags": "Tags", + "type": "Type", + "version": "Version", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(60) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/cluster_resource_gen_test.go b/internal/aws/pcs/cluster_resource_gen_test.go new file mode 100644 index 000000000..d875d96ba --- /dev/null +++ b/internal/aws/pcs/cluster_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSCluster_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Cluster", "awscc_pcs_cluster", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/pcs/cluster_singular_data_source_gen.go b/internal/aws/pcs/cluster_singular_data_source_gen.go new file mode 100644 index 000000000..d96711079 --- /dev/null +++ b/internal/aws/pcs/cluster_singular_data_source_gen.go @@ -0,0 +1,469 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package pcs + +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_pcs_cluster", clusterDataSource) +} + +// clusterDataSource returns the Terraform awscc_pcs_cluster data source. +// This Terraform data source corresponds to the CloudFormation AWS::PCS::Cluster resource. +func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the cluster.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Endpoints + // CloudFormation resource type schema: + // + // { + // "description": "The list of endpoints available for interaction with the scheduler.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An endpoint available for interaction with the scheduler.", + // "properties": { + // "Port": { + // "description": "The endpoint's connection port number.", + // "type": "string" + // }, + // "PrivateIpAddress": { + // "description": "The endpoint's private IP address.", + // "type": "string" + // }, + // "PublicIpAddress": { + // "description": "The endpoint's public IP address.", + // "type": "string" + // }, + // "Type": { + // "description": "Indicates the type of endpoint running at the specific IP address.", + // "enum": [ + // "SLURMCTLD", + // "SLURMDBD" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Port", + // "PrivateIpAddress", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "endpoints": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Port + "port": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's connection port number.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PrivateIpAddress + "private_ip_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's private IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PublicIpAddress + "public_ip_address": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The endpoint's public IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates the type of endpoint running at the specific IP address.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of endpoints available for interaction with the scheduler.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during cluster provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during cluster provisioning.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the cluster.", + // "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the cluster.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Networking + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The networking configuration for the cluster's control plane.", + // "properties": { + // "SecurityGroupIds": { + // "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC security group ID.", + // "type": "string" + // }, + // "type": "array" + // }, + // "SubnetIds": { + // "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC subnet ID.", + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "networking": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecurityGroupIds + "security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubnetIds + "subnet_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The networking configuration for the cluster's control plane.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Scheduler + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The cluster management and job scheduling software associated with the cluster.", + // "properties": { + // "Type": { + // "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.", + // "enum": [ + // "SLURM" + // ], + // "type": "string" + // }, + // "Version": { + // "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + // "type": "string" + // } + // }, + // "required": [ + // "Type", + // "Version" + // ], + // "type": "object" + // } + "scheduler": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The software AWS PCS uses to manage cluster scaling and job scheduling.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Version + "version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The cluster management and job scheduling software associated with the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Size + // CloudFormation resource type schema: + // + // { + // "description": "The size of the cluster.", + // "enum": [ + // "SMALL", + // "MEDIUM", + // "LARGE" + // ], + // "type": "string" + // } + "size": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The size of the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SlurmConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional options related to the Slurm scheduler.", + // "properties": { + // "AuthKey": { + // "additionalProperties": false, + // "description": "The shared Slurm key for authentication, also known as the cluster secret.", + // "properties": { + // "SecretArn": { + // "description": "The Amazon Resource Name (ARN) of the the shared Slurm key.", + // "type": "string" + // }, + // "SecretVersion": { + // "description": "The version of the shared Slurm key.", + // "type": "string" + // } + // }, + // "required": [ + // "SecretArn", + // "SecretVersion" + // ], + // "type": "object" + // }, + // "ScaleDownIdleTimeInSeconds": { + // "description": "The time before an idle node is scaled down.", + // "minimum": 1, + // "type": "integer" + // }, + // "SlurmCustomSettings": { + // "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Additional settings that directly map to Slurm settings.", + // "properties": { + // "ParameterName": { + // "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + // "type": "string" + // }, + // "ParameterValue": { + // "description": "The value for the configured Slurm setting.", + // "type": "string" + // } + // }, + // "required": [ + // "ParameterName", + // "ParameterValue" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "slurm_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthKey + "auth_key": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SecretArn + "secret_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the the shared Slurm key.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SecretVersion + "secret_version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the shared Slurm key.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The shared Slurm key for authentication, also known as the cluster secret.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ScaleDownIdleTimeInSeconds + "scale_down_idle_time_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The time before an idle node is scaled down.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SlurmCustomSettings + "slurm_custom_settings": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParameterName + "parameter_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParameterValue + "parameter_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the configured Slurm setting.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Additional Slurm-specific configuration that directly maps to Slurm settings.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional options related to the Slurm scheduler.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // } + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + 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::PCS::Cluster", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::Cluster").WithTerraformTypeName("awscc_pcs_cluster") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "auth_key": "AuthKey", + "cluster_id": "Id", + "code": "Code", + "endpoints": "Endpoints", + "error_info": "ErrorInfo", + "message": "Message", + "name": "Name", + "networking": "Networking", + "parameter_name": "ParameterName", + "parameter_value": "ParameterValue", + "port": "Port", + "private_ip_address": "PrivateIpAddress", + "public_ip_address": "PublicIpAddress", + "scale_down_idle_time_in_seconds": "ScaleDownIdleTimeInSeconds", + "scheduler": "Scheduler", + "secret_arn": "SecretArn", + "secret_version": "SecretVersion", + "security_group_ids": "SecurityGroupIds", + "size": "Size", + "slurm_configuration": "SlurmConfiguration", + "slurm_custom_settings": "SlurmCustomSettings", + "status": "Status", + "subnet_ids": "SubnetIds", + "tags": "Tags", + "type": "Type", + "version": "Version", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/cluster_singular_data_source_gen_test.go b/internal/aws/pcs/cluster_singular_data_source_gen_test.go new file mode 100644 index 000000000..a12d3b03c --- /dev/null +++ b/internal/aws/pcs/cluster_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSClusterDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Cluster", "awscc_pcs_cluster", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSPCSClusterDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Cluster", "awscc_pcs_cluster", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/pcs/compute_node_group_resource_gen.go b/internal/aws/pcs/compute_node_group_resource_gen.go new file mode 100644 index 000000000..7dc698d2b --- /dev/null +++ b/internal/aws/pcs/compute_node_group_resource_gen.go @@ -0,0 +1,577 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package pcs + +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/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/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_pcs_compute_node_group", computeNodeGroupResource) +} + +// computeNodeGroupResource returns the Terraform awscc_pcs_compute_node_group resource. +// This Terraform resource corresponds to the CloudFormation AWS::PCS::ComputeNodeGroup resource. +func computeNodeGroupResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AmiId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + // "pattern": "^ami-[a-z0-9]+$", + // "type": "string" + // } + "ami_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^ami-[a-z0-9]+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the compute node group.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the compute node group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClusterId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the cluster of the compute node group.", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the cluster of the compute node group.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CustomLaunchTemplate + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + // "properties": { + // "Id": { + // "description": "The ID of the EC2 launch template to use to provision instances.", + // "type": "string" + // }, + // "Version": { + // "description": "The version of the EC2 launch template to use to provision instances.", + // "type": "string" + // } + // }, + // "required": [ + // "Id", + // "Version" + // ], + // "type": "object" + // } + "custom_launch_template": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Id + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the EC2 launch template to use to provision instances.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Version + "version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the EC2 launch template to use to provision instances.", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during compute node group provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during compute node group provisioning.", + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IamInstanceProfileArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + // "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$", + // "type": "string" + // } + "iam_instance_profile_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the compute node group.", + // "type": "string" + // } + "compute_node_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the compute node group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InstanceConfigs + // CloudFormation resource type schema: + // + // { + // "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.", + // "properties": { + // "InstanceType": { + // "description": "The EC2 instance type that AWS PCS can provision in the compute node group.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "instance_configs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceType + "instance_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The EC2 instance type that AWS PCS can provision in the compute node group.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + Required: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the compute node group.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the compute node group.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PurchaseOption + // CloudFormation resource type schema: + // + // { + // "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + // "enum": [ + // "ONDEMAND", + // "SPOT" + // ], + // "type": "string" + // } + "purchase_option": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ONDEMAND", + "SPOT", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ScalingConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies the boundaries of the compute node group auto scaling.", + // "properties": { + // "MaxInstanceCount": { + // "description": "The upper bound of the number of instances allowed in the compute fleet.", + // "minimum": 0, + // "type": "integer" + // }, + // "MinInstanceCount": { + // "description": "The lower bound of the number of instances allowed in the compute fleet.", + // "minimum": 0, + // "type": "integer" + // } + // }, + // "required": [ + // "MaxInstanceCount", + // "MinInstanceCount" + // ], + // "type": "object" + // } + "scaling_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxInstanceCount + "max_instance_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The upper bound of the number of instances allowed in the compute fleet.", + Required: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.AtLeast(0), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: MinInstanceCount + "min_instance_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The lower bound of the number of instances allowed in the compute fleet.", + Required: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + int64validator.AtLeast(0), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the boundaries of the compute node group auto scaling.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SlurmConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional options related to the Slurm scheduler.", + // "properties": { + // "SlurmCustomSettings": { + // "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Additional settings that directly map to Slurm settings.", + // "properties": { + // "ParameterName": { + // "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + // "type": "string" + // }, + // "ParameterValue": { + // "description": "The value for the configured Slurm setting.", + // "type": "string" + // } + // }, + // "required": [ + // "ParameterName", + // "ParameterValue" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "slurm_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SlurmCustomSettings + "slurm_custom_settings": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParameterName + "parameter_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + 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: ParameterValue + "parameter_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the configured Slurm setting.", + 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*/ + }, /*END NESTED OBJECT*/ + Description: "Additional Slurm-specific configuration that directly maps to Slurm settings.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional options related to the Slurm scheduler.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SpotOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional configuration when you specify SPOT as the purchase option.", + // "properties": { + // "AllocationStrategy": { + // "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + // "enum": [ + // "lowest-price", + // "capacity-optimized", + // "price-capacity-optimized" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "spot_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AllocationStrategy + "allocation_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "lowest-price", + "capacity-optimized", + "price-capacity-optimized", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional configuration when you specify SPOT as the purchase option.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SubnetIds + // CloudFormation resource type schema: + // + // { + // "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC subnet ID.", + // "type": "string" + // }, + // "type": "array" + // } + "subnet_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + Required: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // } + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.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: "AWS::PCS::ComputeNodeGroup resource creates an AWS PCS compute node group.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::ComputeNodeGroup").WithTerraformTypeName("awscc_pcs_compute_node_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "allocation_strategy": "AllocationStrategy", + "ami_id": "AmiId", + "arn": "Arn", + "cluster_id": "ClusterId", + "code": "Code", + "compute_node_group_id": "Id", + "custom_launch_template": "CustomLaunchTemplate", + "error_info": "ErrorInfo", + "iam_instance_profile_arn": "IamInstanceProfileArn", + "id": "Id", + "instance_configs": "InstanceConfigs", + "instance_type": "InstanceType", + "max_instance_count": "MaxInstanceCount", + "message": "Message", + "min_instance_count": "MinInstanceCount", + "name": "Name", + "parameter_name": "ParameterName", + "parameter_value": "ParameterValue", + "purchase_option": "PurchaseOption", + "scaling_configuration": "ScalingConfiguration", + "slurm_configuration": "SlurmConfiguration", + "slurm_custom_settings": "SlurmCustomSettings", + "spot_options": "SpotOptions", + "status": "Status", + "subnet_ids": "SubnetIds", + "tags": "Tags", + "version": "Version", + }) + + opts = opts.WithCreateTimeoutInMinutes(60).WithDeleteTimeoutInMinutes(60) + + opts = opts.WithUpdateTimeoutInMinutes(60) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/compute_node_group_resource_gen_test.go b/internal/aws/pcs/compute_node_group_resource_gen_test.go new file mode 100644 index 000000000..65d9066a5 --- /dev/null +++ b/internal/aws/pcs/compute_node_group_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 pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSComputeNodeGroup_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::ComputeNodeGroup", "awscc_pcs_compute_node_group", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/pcs/compute_node_group_singular_data_source_gen.go b/internal/aws/pcs/compute_node_group_singular_data_source_gen.go new file mode 100644 index 000000000..3bf034f33 --- /dev/null +++ b/internal/aws/pcs/compute_node_group_singular_data_source_gen.go @@ -0,0 +1,458 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package pcs + +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_pcs_compute_node_group", computeNodeGroupDataSource) +} + +// computeNodeGroupDataSource returns the Terraform awscc_pcs_compute_node_group data source. +// This Terraform data source corresponds to the CloudFormation AWS::PCS::ComputeNodeGroup resource. +func computeNodeGroupDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AmiId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + // "pattern": "^ami-[a-z0-9]+$", + // "type": "string" + // } + "ami_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the compute node group.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClusterId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the cluster of the compute node group.", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the cluster of the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CustomLaunchTemplate + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + // "properties": { + // "Id": { + // "description": "The ID of the EC2 launch template to use to provision instances.", + // "type": "string" + // }, + // "Version": { + // "description": "The version of the EC2 launch template to use to provision instances.", + // "type": "string" + // } + // }, + // "required": [ + // "Id", + // "Version" + // ], + // "type": "object" + // } + "custom_launch_template": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Id + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the EC2 launch template to use to provision instances.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Version + "version": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The version of the EC2 launch template to use to provision instances.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during compute node group provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during compute node group provisioning.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IamInstanceProfileArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + // "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$", + // "type": "string" + // } + "iam_instance_profile_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the compute node group.", + // "type": "string" + // } + "compute_node_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InstanceConfigs + // CloudFormation resource type schema: + // + // { + // "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.", + // "properties": { + // "InstanceType": { + // "description": "The EC2 instance type that AWS PCS can provision in the compute node group.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "instance_configs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: InstanceType + "instance_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The EC2 instance type that AWS PCS can provision in the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the compute node group.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PurchaseOption + // CloudFormation resource type schema: + // + // { + // "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + // "enum": [ + // "ONDEMAND", + // "SPOT" + // ], + // "type": "string" + // } + "purchase_option": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ScalingConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies the boundaries of the compute node group auto scaling.", + // "properties": { + // "MaxInstanceCount": { + // "description": "The upper bound of the number of instances allowed in the compute fleet.", + // "minimum": 0, + // "type": "integer" + // }, + // "MinInstanceCount": { + // "description": "The lower bound of the number of instances allowed in the compute fleet.", + // "minimum": 0, + // "type": "integer" + // } + // }, + // "required": [ + // "MaxInstanceCount", + // "MinInstanceCount" + // ], + // "type": "object" + // } + "scaling_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxInstanceCount + "max_instance_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The upper bound of the number of instances allowed in the compute fleet.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinInstanceCount + "min_instance_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The lower bound of the number of instances allowed in the compute fleet.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the boundaries of the compute node group auto scaling.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SlurmConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional options related to the Slurm scheduler.", + // "properties": { + // "SlurmCustomSettings": { + // "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Additional settings that directly map to Slurm settings.", + // "properties": { + // "ParameterName": { + // "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + // "type": "string" + // }, + // "ParameterValue": { + // "description": "The value for the configured Slurm setting.", + // "type": "string" + // } + // }, + // "required": [ + // "ParameterName", + // "ParameterValue" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "slurm_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SlurmCustomSettings + "slurm_custom_settings": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParameterName + "parameter_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParameterValue + "parameter_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the configured Slurm setting.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Additional Slurm-specific configuration that directly maps to Slurm settings.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional options related to the Slurm scheduler.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SpotOptions + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Additional configuration when you specify SPOT as the purchase option.", + // "properties": { + // "AllocationStrategy": { + // "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + // "enum": [ + // "lowest-price", + // "capacity-optimized", + // "price-capacity-optimized" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "spot_options": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AllocationStrategy + "allocation_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Additional configuration when you specify SPOT as the purchase option.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubnetIds + // CloudFormation resource type schema: + // + // { + // "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + // "insertionOrder": false, + // "items": { + // "description": "A VPC subnet ID.", + // "type": "string" + // }, + // "type": "array" + // } + "subnet_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // } + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + 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::PCS::ComputeNodeGroup", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::ComputeNodeGroup").WithTerraformTypeName("awscc_pcs_compute_node_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "allocation_strategy": "AllocationStrategy", + "ami_id": "AmiId", + "arn": "Arn", + "cluster_id": "ClusterId", + "code": "Code", + "compute_node_group_id": "Id", + "custom_launch_template": "CustomLaunchTemplate", + "error_info": "ErrorInfo", + "iam_instance_profile_arn": "IamInstanceProfileArn", + "id": "Id", + "instance_configs": "InstanceConfigs", + "instance_type": "InstanceType", + "max_instance_count": "MaxInstanceCount", + "message": "Message", + "min_instance_count": "MinInstanceCount", + "name": "Name", + "parameter_name": "ParameterName", + "parameter_value": "ParameterValue", + "purchase_option": "PurchaseOption", + "scaling_configuration": "ScalingConfiguration", + "slurm_configuration": "SlurmConfiguration", + "slurm_custom_settings": "SlurmCustomSettings", + "spot_options": "SpotOptions", + "status": "Status", + "subnet_ids": "SubnetIds", + "tags": "Tags", + "version": "Version", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/compute_node_group_singular_data_source_gen_test.go b/internal/aws/pcs/compute_node_group_singular_data_source_gen_test.go new file mode 100644 index 000000000..560af4f42 --- /dev/null +++ b/internal/aws/pcs/compute_node_group_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 pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSComputeNodeGroupDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::ComputeNodeGroup", "awscc_pcs_compute_node_group", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSPCSComputeNodeGroupDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::ComputeNodeGroup", "awscc_pcs_compute_node_group", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/pcs/queue_resource_gen.go b/internal/aws/pcs/queue_resource_gen.go new file mode 100644 index 000000000..6046a35d9 --- /dev/null +++ b/internal/aws/pcs/queue_resource_gen.go @@ -0,0 +1,268 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package pcs + +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/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "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.AddResourceFactory("awscc_pcs_queue", queueResource) +} + +// queueResource returns the Terraform awscc_pcs_queue resource. +// This Terraform resource corresponds to the CloudFormation AWS::PCS::Queue resource. +func queueResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the queue.", + // "pattern": "^(.*?)", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the queue.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClusterId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the cluster of the queue.", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the cluster of the queue.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ComputeNodeGroupConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "The compute node group configuration for a queue.", + // "properties": { + // "ComputeNodeGroupId": { + // "description": "The compute node group ID for the compute node group configuration.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "compute_node_group_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComputeNodeGroupId + "compute_node_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The compute node group ID for the compute node group configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during queue provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during queue provisioning.", + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the queue.", + // "type": "string" + // } + "queue_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the queue.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the queue.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the queue.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.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: "AWS::PCS::Queue resource creates an AWS PCS queue.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::Queue").WithTerraformTypeName("awscc_pcs_queue") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "cluster_id": "ClusterId", + "code": "Code", + "compute_node_group_configurations": "ComputeNodeGroupConfigurations", + "compute_node_group_id": "ComputeNodeGroupId", + "error_info": "ErrorInfo", + "message": "Message", + "name": "Name", + "queue_id": "Id", + "status": "Status", + "tags": "Tags", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(60) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/queue_resource_gen_test.go b/internal/aws/pcs/queue_resource_gen_test.go new file mode 100644 index 000000000..24dc2b11d --- /dev/null +++ b/internal/aws/pcs/queue_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 pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSQueue_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Queue", "awscc_pcs_queue", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/pcs/queue_singular_data_source_gen.go b/internal/aws/pcs/queue_singular_data_source_gen.go new file mode 100644 index 000000000..c8b4f4825 --- /dev/null +++ b/internal/aws/pcs/queue_singular_data_source_gen.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package pcs + +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_pcs_queue", queueDataSource) +} + +// queueDataSource returns the Terraform awscc_pcs_queue data source. +// This Terraform data source corresponds to the CloudFormation AWS::PCS::Queue resource. +func queueDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The unique Amazon Resource Name (ARN) of the queue.", + // "pattern": "^(.*?)", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unique Amazon Resource Name (ARN) of the queue.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClusterId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the cluster of the queue.", + // "type": "string" + // } + "cluster_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the cluster of the queue.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ComputeNodeGroupConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "The compute node group configuration for a queue.", + // "properties": { + // "ComputeNodeGroupId": { + // "description": "The compute node group ID for the compute node group configuration.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "compute_node_group_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComputeNodeGroupId + "compute_node_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The compute node group ID for the compute node group configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ErrorInfo + // CloudFormation resource type schema: + // + // { + // "description": "The list of errors that occurred during queue provisioning.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "An error that occurred during resource provisioning.", + // "properties": { + // "Code": { + // "description": "The short-form error code.", + // "type": "string" + // }, + // "Message": { + // "description": "The detailed error information.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array" + // } + "error_info": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Code + "code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The short-form error code.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Message + "message": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The detailed error information.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The list of errors that occurred during queue provisioning.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "The generated unique ID of the queue.", + // "type": "string" + // } + "queue_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The generated unique ID of the queue.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name that identifies the queue.", + // "pattern": "", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name that identifies the queue.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + // "enum": [ + // "CREATING", + // "ACTIVE", + // "UPDATING", + // "DELETING", + // "CREATE_FAILED", + // "DELETE_FAILED", + // "UPDATE_FAILED" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + 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::PCS::Queue", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::PCS::Queue").WithTerraformTypeName("awscc_pcs_queue") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "cluster_id": "ClusterId", + "code": "Code", + "compute_node_group_configurations": "ComputeNodeGroupConfigurations", + "compute_node_group_id": "ComputeNodeGroupId", + "error_info": "ErrorInfo", + "message": "Message", + "name": "Name", + "queue_id": "Id", + "status": "Status", + "tags": "Tags", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pcs/queue_singular_data_source_gen_test.go b/internal/aws/pcs/queue_singular_data_source_gen_test.go new file mode 100644 index 000000000..a94777ccd --- /dev/null +++ b/internal/aws/pcs/queue_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 pcs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPCSQueueDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Queue", "awscc_pcs_queue", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSPCSQueueDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::PCS::Queue", "awscc_pcs_queue", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/redshift/integration_resource_gen.go b/internal/aws/redshift/integration_resource_gen.go index d4a6410fa..2eb66c2a7 100644 --- a/internal/aws/redshift/integration_resource_gen.go +++ b/internal/aws/redshift/integration_resource_gen.go @@ -36,7 +36,7 @@ func integrationResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + // "description": "An optional set of non-secret key–value pairs that contains additional contextual information about the data.", // "patternProperties": { // "": { // "maxLength": 131072, @@ -49,7 +49,7 @@ func integrationResource(ctx context.Context) (resource.Resource, error) { "additional_encryption_context": // Pattern: "" schema.MapAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + Description: "An optional set of non-secret key–value pairs that contains additional contextual information about the data.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ @@ -129,11 +129,11 @@ func integrationResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication", // "type": "string" // } "source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication", Required: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), @@ -215,11 +215,11 @@ func integrationResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication", // "type": "string" // } "target_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication", Required: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), diff --git a/internal/aws/redshift/integration_singular_data_source_gen.go b/internal/aws/redshift/integration_singular_data_source_gen.go index 581cab564..1d1759354 100644 --- a/internal/aws/redshift/integration_singular_data_source_gen.go +++ b/internal/aws/redshift/integration_singular_data_source_gen.go @@ -28,7 +28,7 @@ func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "additionalProperties": false, - // "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + // "description": "An optional set of non-secret key–value pairs that contains additional contextual information about the data.", // "patternProperties": { // "": { // "maxLength": 131072, @@ -41,7 +41,7 @@ func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { "additional_encryption_context": // Pattern: "" schema.MapAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + Description: "An optional set of non-secret key–value pairs that contains additional contextual information about the data.", Computed: true, }, /*END ATTRIBUTE*/ // Property: CreateTime @@ -98,11 +98,11 @@ func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication", // "type": "string" // } "source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags @@ -159,11 +159,11 @@ func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication", // "type": "string" // } "target_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 8a6f7a4cd..49436c783 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -3709,6 +3709,20 @@ resource_schema "aws_pcaconnectorscep_connector" { cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" } +resource_schema "aws_pcs_cluster" { + cloudformation_type_name = "AWS::PCS::Cluster" +} + +resource_schema "aws_pcs_compute_node_group" { + cloudformation_type_name = "AWS::PCS::ComputeNodeGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcs_queue" { + cloudformation_type_name = "AWS::PCS::Queue" + suppress_plural_data_source_generation = true +} + resource_schema "aws_panorama_application_instance" { cloudformation_type_name = "AWS::Panorama::ApplicationInstance" } diff --git a/internal/provider/generators/allschemas/available_schemas.2024-12-18.hcl b/internal/provider/generators/allschemas/available_schemas.2024-12-18.hcl new file mode 100644 index 000000000..3592eb9cd --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-12-18.hcl @@ -0,0 +1,4778 @@ +# 1124 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping_v2" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMappingV2" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_domain_name_access_association" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameAccessAssociation" +} + +resource_schema "aws_apigateway_domain_name_v2" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameV2" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_channel_namespace" { + cloudformation_type_name = "AWS::AppSync::ChannelNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_definition" { + cloudformation_type_name = "AWS::Batch::JobDefinition" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_application_inference_profile" { + cloudformation_type_name = "AWS::Bedrock::ApplicationInferenceProfile" +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_cassandra_type" { + cloudformation_type_name = "AWS::Cassandra::Type" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_custom_action" { + cloudformation_type_name = "AWS::Chatbot::CustomAction" +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_guard_hook" { + cloudformation_type_name = "AWS::CloudFormation::GuardHook" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_lambda_hook" { + cloudformation_type_name = "AWS::CloudFormation::LambdaHook" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_dashboard" { + cloudformation_type_name = "AWS::CloudTrail::Dashboard" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_email_address" { + cloudformation_type_name = "AWS::Connect::EmailAddress" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_connectcampaignsv2_campaign" { + cloudformation_type_name = "AWS::ConnectCampaignsV2::Campaign" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_segment_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::SegmentDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_security_group_vpc_association" { + cloudformation_type_name = "AWS::EC2::SecurityGroupVpcAssociation" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_fleet" { + cloudformation_type_name = "AWS::GameLift::ContainerFleet" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_ingest_configuration" { + cloudformation_type_name = "AWS::IVS::IngestConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_invoicing_invoice_unit" { + cloudformation_type_name = "AWS::Invoicing::InvoiceUnit" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_command" { + cloudformation_type_name = "AWS::IoT::Command" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_state_template" { + cloudformation_type_name = "AWS::IoTFleetWise::StateTemplate" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_integration" { + cloudformation_type_name = "AWS::Logs::Integration" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_transformer" { + cloudformation_type_name = "AWS::Logs::Transformer" +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_deployment" { + cloudformation_type_name = "AWS::M2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_multi_region_cluster" { + cloudformation_type_name = "AWS::MemoryDB::MultiRegionCluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_direct_connect_gateway_attachment" { + cloudformation_type_name = "AWS::NetworkManager::DirectConnectGatewayAttachment" +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_pcs_cluster" { + cloudformation_type_name = "AWS::PCS::Cluster" +} + +resource_schema "aws_pcs_compute_node_group" { + cloudformation_type_name = "AWS::PCS::ComputeNodeGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcs_queue" { + cloudformation_type_name = "AWS::PCS::Queue" + suppress_plural_data_source_generation = true +} + +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_accessor" { + cloudformation_type_name = "AWS::QBusiness::DataAccessor" + suppress_plural_data_source_generation = true +} + +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_permission" { + cloudformation_type_name = "AWS::QBusiness::Permission" + 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_ram_resource_share" { + cloudformation_type_name = "AWS::RAM::ResourceShare" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_shard_group" { + cloudformation_type_name = "AWS::RDS::DBShardGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_rbin_rule" { + cloudformation_type_name = "AWS::Rbin::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_resourcegroups_tag_sync_task" { + cloudformation_type_name = "AWS::ResourceGroups::TagSyncTask" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_s3tables_table_bucket" { + cloudformation_type_name = "AWS::S3Tables::TableBucket" +} + +resource_schema "aws_s3tables_table_bucket_policy" { + cloudformation_type_name = "AWS::S3Tables::TableBucketPolicy" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_user" { + cloudformation_type_name = "AWS::Transfer::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_configuration" { + cloudformation_type_name = "AWS::VpcLattice::ResourceConfiguration" +} + +resource_schema "aws_vpclattice_resource_gateway" { + cloudformation_type_name = "AWS::VpcLattice::ResourceGateway" +} + +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_resource_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkResourceAssociation" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent" { + cloudformation_type_name = "AWS::Wisdom::AIAgent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent_version" { + cloudformation_type_name = "AWS::Wisdom::AIAgentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_guardrail" { + cloudformation_type_name = "AWS::Wisdom::AIGuardrail" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_guardrail_version" { + cloudformation_type_name = "AWS::Wisdom::AIGuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt_version" { + cloudformation_type_name = "AWS::Wisdom::AIPromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_wisdom_message_template" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_message_template_version" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplateVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_data_protection_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::DataProtectionSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index d8220b2a2..a570c8c17 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -4009,6 +4009,21 @@ "identifier": ["ConnectorArn"], "path": "./examples/resources/awscc_pcaconnectorscep_connector/import.sh" }, + { + "resource": "awscc_pcs_cluster", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_pcs_cluster/import.sh" + }, + { + "resource": "awscc_pcs_compute_node_group", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_pcs_compute_node_group/import.sh" + }, + { + "resource": "awscc_pcs_queue", + "identifier": ["Arn"], + "path": "./examples/resources/awscc_pcs_queue/import.sh" + }, { "resource": "awscc_panorama_application_instance", "identifier": ["ApplicationInstanceId"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index e8a8300aa..11704ef99 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -605,6 +605,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_pcaconnectorad_connectors -cftype AWS::PCAConnectorAD::Connector -package pcaconnectorad ../aws/pcaconnectorad/connector_plural_data_source_gen.go ../aws/pcaconnectorad/connector_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_pcaconnectorad_directory_registrations -cftype AWS::PCAConnectorAD::DirectoryRegistration -package pcaconnectorad ../aws/pcaconnectorad/directory_registration_plural_data_source_gen.go ../aws/pcaconnectorad/directory_registration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_pcaconnectorscep_connectors -cftype AWS::PCAConnectorSCEP::Connector -package pcaconnectorscep ../aws/pcaconnectorscep/connector_plural_data_source_gen.go ../aws/pcaconnectorscep/connector_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_pcs_clusters -cftype AWS::PCS::Cluster -package pcs ../aws/pcs/cluster_plural_data_source_gen.go ../aws/pcs/cluster_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_panorama_application_instances -cftype AWS::Panorama::ApplicationInstance -package panorama ../aws/panorama/application_instance_plural_data_source_gen.go ../aws/panorama/application_instance_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_panorama_packages -cftype AWS::Panorama::Package -package panorama ../aws/panorama/package_plural_data_source_gen.go ../aws/panorama/package_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_paymentcryptography_aliases -cftype AWS::PaymentCryptography::Alias -package paymentcryptography ../aws/paymentcryptography/alias_plural_data_source_gen.go ../aws/paymentcryptography/alias_plural_data_source_gen_test.go @@ -996,6 +997,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/paymentcryptography" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorad" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorscep" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcs" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/personalize" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pinpoint" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pipes" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 933d94f13..a4d030a07 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -804,6 +804,9 @@ //go:generate go run generators/resource/main.go -resource awscc_pcaconnectorad_template_group_access_control_entry -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorAD_TemplateGroupAccessControlEntry.json -package pcaconnectorad -- ../aws/pcaconnectorad/template_group_access_control_entry_resource_gen.go ../aws/pcaconnectorad/template_group_access_control_entry_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_pcaconnectorscep_challenge -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorSCEP_Challenge.json -package pcaconnectorscep -- ../aws/pcaconnectorscep/challenge_resource_gen.go ../aws/pcaconnectorscep/challenge_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_pcaconnectorscep_connector -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorSCEP_Connector.json -package pcaconnectorscep -- ../aws/pcaconnectorscep/connector_resource_gen.go ../aws/pcaconnectorscep/connector_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_pcs_cluster -cfschema ../service/cloudformation/schemas/AWS_PCS_Cluster.json -package pcs -- ../aws/pcs/cluster_resource_gen.go ../aws/pcs/cluster_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_pcs_compute_node_group -cfschema ../service/cloudformation/schemas/AWS_PCS_ComputeNodeGroup.json -package pcs -- ../aws/pcs/compute_node_group_resource_gen.go ../aws/pcs/compute_node_group_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_pcs_queue -cfschema ../service/cloudformation/schemas/AWS_PCS_Queue.json -package pcs -- ../aws/pcs/queue_resource_gen.go ../aws/pcs/queue_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_panorama_application_instance -cfschema ../service/cloudformation/schemas/AWS_Panorama_ApplicationInstance.json -package panorama -- ../aws/panorama/application_instance_resource_gen.go ../aws/panorama/application_instance_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_panorama_package -cfschema ../service/cloudformation/schemas/AWS_Panorama_Package.json -package panorama -- ../aws/panorama/package_resource_gen.go ../aws/panorama/package_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_panorama_package_version -cfschema ../service/cloudformation/schemas/AWS_Panorama_PackageVersion.json -package panorama -- ../aws/panorama/package_version_resource_gen.go ../aws/panorama/package_version_resource_gen_test.go @@ -1262,6 +1265,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/paymentcryptography" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorad" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorscep" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcs" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/personalize" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pinpoint" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pipes" diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index e3504cec7..7c1b5f4c4 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -804,6 +804,9 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_pcaconnectorad_template_group_access_control_entry -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorAD_TemplateGroupAccessControlEntry.json -package pcaconnectorad ../aws/pcaconnectorad/template_group_access_control_entry_singular_data_source_gen.go ../aws/pcaconnectorad/template_group_access_control_entry_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_pcaconnectorscep_challenge -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorSCEP_Challenge.json -package pcaconnectorscep ../aws/pcaconnectorscep/challenge_singular_data_source_gen.go ../aws/pcaconnectorscep/challenge_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_pcaconnectorscep_connector -cfschema ../service/cloudformation/schemas/AWS_PCAConnectorSCEP_Connector.json -package pcaconnectorscep ../aws/pcaconnectorscep/connector_singular_data_source_gen.go ../aws/pcaconnectorscep/connector_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_pcs_cluster -cfschema ../service/cloudformation/schemas/AWS_PCS_Cluster.json -package pcs ../aws/pcs/cluster_singular_data_source_gen.go ../aws/pcs/cluster_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_pcs_compute_node_group -cfschema ../service/cloudformation/schemas/AWS_PCS_ComputeNodeGroup.json -package pcs ../aws/pcs/compute_node_group_singular_data_source_gen.go ../aws/pcs/compute_node_group_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_pcs_queue -cfschema ../service/cloudformation/schemas/AWS_PCS_Queue.json -package pcs ../aws/pcs/queue_singular_data_source_gen.go ../aws/pcs/queue_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_panorama_application_instance -cfschema ../service/cloudformation/schemas/AWS_Panorama_ApplicationInstance.json -package panorama ../aws/panorama/application_instance_singular_data_source_gen.go ../aws/panorama/application_instance_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_panorama_package -cfschema ../service/cloudformation/schemas/AWS_Panorama_Package.json -package panorama ../aws/panorama/package_singular_data_source_gen.go ../aws/panorama/package_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_panorama_package_version -cfschema ../service/cloudformation/schemas/AWS_Panorama_PackageVersion.json -package panorama ../aws/panorama/package_version_singular_data_source_gen.go ../aws/panorama/package_version_singular_data_source_gen_test.go @@ -1262,6 +1265,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/paymentcryptography" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorad" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcaconnectorscep" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pcs" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/personalize" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pinpoint" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pipes" diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json index 0c79c1613..9a47f6f63 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json @@ -124,14 +124,16 @@ "additionalProperties": false, "definitions": { "AvailabilityZoneImpairmentPolicy": { - "description": "", + "description": "Describes an Availability Zone impairment policy.", "additionalProperties": false, "type": "object", "properties": { "ZonalShiftEnabled": { + "description": "If ``true``, enable zonal shift for your Auto Scaling group.", "type": "boolean" }, "ImpairedZoneHealthCheckBehavior": { + "description": "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", "type": "string", "enum": [ "IgnoreUnhealthy", @@ -279,6 +281,7 @@ "type": "object", "properties": { "InstanceFamily": { + "description": "", "type": "string" } } @@ -335,6 +338,7 @@ "type": "object", "properties": { "References": { + "description": "", "$ref": "#/definitions/PerformanceFactorReferenceSetRequest" } } @@ -466,11 +470,12 @@ } }, "AvailabilityZoneDistribution": { - "description": "", + "description": "``AvailabilityZoneDistribution`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.", "additionalProperties": false, "type": "object", "properties": { "CapacityDistributionStrategy": { + "description": "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", "type": "string", "enum": [ "balanced-best-effort", @@ -575,6 +580,7 @@ "type": "object", "properties": { "Cpu": { + "description": "", "$ref": "#/definitions/CpuPerformanceFactorRequest" } } @@ -830,7 +836,7 @@ "type": "string" }, "AvailabilityZoneImpairmentPolicy": { - "description": "", + "description": "The Availability Zone impairment policy.", "$ref": "#/definitions/AvailabilityZoneImpairmentPolicy" }, "TargetGroupARNs": { @@ -927,7 +933,7 @@ "$ref": "#/definitions/NotificationConfiguration" }, "AvailabilityZoneDistribution": { - "description": "", + "description": "The instance capacity distribution across Availability Zones.", "$ref": "#/definitions/AvailabilityZoneDistribution" }, "MetricsCollection": { diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_GuardHook.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_GuardHook.json index fb90f1061..ec16fa934 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_GuardHook.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_GuardHook.json @@ -39,7 +39,8 @@ "enum": [ "RESOURCE", "STACK", - "CHANGE_SET" + "CHANGE_SET", + "CLOUD_CONTROL" ] }, "TargetName": { @@ -267,7 +268,7 @@ }, "Alias": { "description": "The typename alias for the hook.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "pattern": "", "type": "string" }, "HookArn": { diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_LambdaHook.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_LambdaHook.json index a1aca743c..0108698f5 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_LambdaHook.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_LambdaHook.json @@ -21,7 +21,8 @@ "enum": [ "RESOURCE", "STACK", - "CHANGE_SET" + "CHANGE_SET", + "CLOUD_CONTROL" ] }, "TargetName": { @@ -248,7 +249,7 @@ }, "Alias": { "description": "The typename alias for the hook.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "pattern": "", "type": "string" }, "HookArn": { diff --git a/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json b/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json index ce2919934..d57c557ad 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json +++ b/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json @@ -310,6 +310,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "cloudwatch:ListTagsForResource" + ] } } diff --git a/internal/service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json b/internal/service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json index 79fc3ad62..ac68b08fc 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json +++ b/internal/service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json @@ -7,7 +7,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "cloudwatch:ListTagsForResource" + ] }, "properties": { "Arn": { diff --git a/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json b/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json index 23af249fc..951d3e734 100644 --- a/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json +++ b/internal/service/cloudformation/schemas/AWS_DataBrew_Dataset.json @@ -28,6 +28,15 @@ "description": "Input", "$ref": "#/definitions/Input" }, + "Source": { + "description": "Source type of the dataset", + "type": "string", + "enum": [ + "S3", + "DATA-CATALOG", + "DATABASE" + ] + }, "PathOptions": { "description": "PathOptions", "$ref": "#/definitions/PathOptions" @@ -150,6 +159,9 @@ }, "Key": { "type": "string" + }, + "BucketOwner": { + "$ref": "#/definitions/BucketOwner" } }, "additionalProperties": false, @@ -212,6 +224,12 @@ }, "additionalProperties": false }, + "BucketOwner": { + "description": "Bucket owner", + "type": "string", + "minLength": 12, + "maxLength": 12 + }, "PathOptions": { "description": "Path options for dataset", "type": "object", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_EC2Fleet.json b/internal/service/cloudformation/schemas/AWS_EC2_EC2Fleet.json index b5ab822d6..fc760bc93 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_EC2Fleet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_EC2Fleet.json @@ -319,6 +319,24 @@ } } }, + "BlockDeviceMapping": { + "additionalProperties": false, + "type": "object", + "properties": { + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + }, + "DeviceName": { + "type": "string" + } + } + }, "AcceleratorCountRequest": { "additionalProperties": false, "type": "object", @@ -521,6 +539,9 @@ "AcceleratorCount": { "$ref": "#/definitions/AcceleratorCountRequest" }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + }, "SpotMaxPricePercentageOverLowestPrice": { "type": "integer" }, @@ -662,6 +683,42 @@ } } }, + "EbsBlockDevice": { + "additionalProperties": false, + "type": "object", + "properties": { + "SnapshotId": { + "type": "string" + }, + "VolumeType": { + "type": "string", + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ] + }, + "KmsKeyId": { + "type": "string" + }, + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "DeleteOnTermination": { + "type": "boolean" + } + } + }, "Tag": { "additionalProperties": false, "type": "object", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json index 83c713362..751ee873f 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkAcl.json @@ -45,7 +45,7 @@ "readOnlyProperties": [ "/properties/Id" ], - "description": "Specifies a network ACL for your VPC.", + "description": "Specifies a network ACL for your VPC.\n To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html).", "createOnlyProperties": [ "/properties/VpcId" ], diff --git a/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json b/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json index 2ad36ce64..cbd7d09f1 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json @@ -1,485 +1,270 @@ { - "handlers": { - "read": { - "permissions": [ - "ec2:DescribeSpotFleetRequests" - ] - }, - "create": { - "permissions": [ - "iam:PassRole", - "ec2:CreateTags", - "ec2:RequestSpotFleet", - "ec2:DescribeSpotFleetRequests", - "ec2:RunInstances" - ] - }, - "update": { - "permissions": [ - "ec2:ModifySpotFleetRequest", - "ec2:DescribeSpotFleetRequests" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSpotFleetRequests" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSpotFleetRequests", - "ec2:CancelSpotFleetRequests" - ] - } - }, "typeName": "AWS::EC2::SpotFleet", - "readOnlyProperties": [ - "/properties/Id" - ], "description": "Resource Type definition for AWS::EC2::SpotFleet", - "writeOnlyProperties": [ - "/properties/SpotFleetRequestConfigData/TagSpecifications", - "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" - ], - "createOnlyProperties": [ - "/properties/SpotFleetRequestConfigData/AllocationStrategy", - "/properties/SpotFleetRequestConfigData/IamFleetRole", - "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior", - "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount", - "/properties/SpotFleetRequestConfigData/LaunchSpecifications", - "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs", - "/properties/SpotFleetRequestConfigData/LoadBalancersConfig", - "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy", - "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice", - "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity", - "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances", - "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies", - "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice", - "/properties/SpotFleetRequestConfigData/SpotPrice", - "/properties/SpotFleetRequestConfigData/TagSpecifications", - "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration", - "/properties/SpotFleetRequestConfigData/Type", - "/properties/SpotFleetRequestConfigData/ValidFrom", - "/properties/SpotFleetRequestConfigData/ValidUntil" - ], "additionalProperties": false, - "primaryIdentifier": [ - "/properties/Id" - ], + "properties": { + "Id": { + "type": "string" + }, + "SpotFleetRequestConfigData": { + "$ref": "#/definitions/SpotFleetRequestConfigData" + } + }, "definitions": { - "ClassicLoadBalancersConfig": { - "additionalProperties": false, + "SpotFleetRequestConfigData": { "type": "object", - "properties": { - "ClassicLoadBalancers": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/ClassicLoadBalancer" - } - } - }, - "required": [ - "ClassicLoadBalancers" - ] - }, - "MemoryGiBPerVCpuRequest": { "additionalProperties": false, - "type": "object", "properties": { - "Min": { - "type": "number" + "AllocationStrategy": { + "type": "string", + "enum": [ + "capacityOptimized", + "capacityOptimizedPrioritized", + "diversified", + "lowestPrice", + "priceCapacityOptimized" + ] }, - "Max": { - "type": "number" - } - } - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "type": "object", - "properties": { - "Ipv6Address": { + "Context": { "type": "string" - } - }, - "required": [ - "Ipv6Address" - ] - }, - "SpotFleetMonitoring": { - "additionalProperties": false, - "type": "object", - "properties": { - "Enabled": { - "default": false, - "type": "boolean" - } - } - }, - "TotalLocalStorageGBRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "number" }, - "Max": { - "type": "number" - } - } - }, - "NetworkBandwidthGbpsRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "number" + "ExcessCapacityTerminationPolicy": { + "type": "string", + "enum": [ + "Default", + "NoTermination", + "default", + "noTermination" + ] }, - "Max": { - "type": "number" - } - } - }, - "VCpuCountRangeRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "integer" + "IamFleetRole": { + "type": "string" }, - "Max": { - "type": "integer" - } - } - }, - "BaselineEbsBandwidthMbpsRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "integer" + "InstanceInterruptionBehavior": { + "type": "string", + "enum": [ + "hibernate", + "stop", + "terminate" + ] }, - "Max": { + "InstancePoolsToUseCount": { "type": "integer" - } - } - }, - "FleetLaunchTemplateSpecification": { - "additionalProperties": false, - "type": "object", - "properties": { - "LaunchTemplateName": { - "minLength": 3, - "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", - "type": "string", - "maxLength": 128 }, - "Version": { - "type": "string" + "LaunchSpecifications": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/SpotFleetLaunchSpecification" + } }, - "LaunchTemplateId": { - "type": "string" - } - }, - "required": [ - "Version" - ] - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "type": "object", - "properties": { - "PrivateIpAddress": { - "type": "string" + "LaunchTemplateConfigs": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/LaunchTemplateConfig" + } }, - "Primary": { - "type": "boolean" - } - }, - "required": [ - "PrivateIpAddress" - ] - }, - "NetworkInterfaceCountRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "integer" + "LoadBalancersConfig": { + "$ref": "#/definitions/LoadBalancersConfig" }, - "Max": { - "type": "integer" - } - } - }, - "PerformanceFactorReferenceRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "InstanceFamily": { + "OnDemandAllocationStrategy": { "type": "string" - } - } - }, - "LaunchTemplateOverrides": { - "additionalProperties": false, - "type": "object", - "properties": { - "SpotPrice": { + }, + "OnDemandMaxTotalPrice": { "type": "string" }, - "WeightedCapacity": { - "type": "number" + "OnDemandTargetCapacity": { + "type": "integer" }, - "Priority": { - "type": "number" + "ReplaceUnhealthyInstances": { + "type": "boolean" }, - "AvailabilityZone": { + "SpotMaintenanceStrategies": { + "$ref": "#/definitions/SpotMaintenanceStrategies" + }, + "SpotMaxTotalPrice": { "type": "string" }, - "SubnetId": { + "SpotPrice": { "type": "string" }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirementsRequest" + "TargetCapacity": { + "type": "integer" }, - "InstanceType": { - "type": "string" - } - } - }, - "SpotPlacement": { - "additionalProperties": false, - "type": "object", - "properties": { - "GroupName": { - "type": "string" + "TerminateInstancesWithExpiration": { + "type": "boolean" }, - "Tenancy": { + "Type": { "type": "string", "enum": [ - "dedicated", - "default", - "host" + "maintain", + "request" ] }, - "AvailabilityZone": { - "type": "string" - } - } - }, - "CpuPerformanceFactorRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "References": { - "uniqueItems": false, - "type": "array", - "items": { - "$ref": "#/definitions/PerformanceFactorReferenceRequest" - } - } - } - }, - "TargetGroup": { - "additionalProperties": false, - "type": "object", - "properties": { - "Arn": { + "ValidFrom": { "type": "string" - } - }, - "required": [ - "Arn" - ] - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "type": "object", - "properties": { - "Ebs": { - "$ref": "#/definitions/EbsBlockDevice" }, - "NoDevice": { + "ValidUntil": { "type": "string" }, - "VirtualName": { - "type": "string" + "TagSpecifications": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + } }, - "DeviceName": { - "type": "string" + "TargetCapacityUnitType": { + "type": "string", + "enum": [ + "vcpu", + "memory-mib", + "units" + ] } }, "required": [ - "DeviceName" + "IamFleetRole", + "TargetCapacity" ] }, - "TargetGroupsConfig": { - "additionalProperties": false, + "SpotFleetLaunchSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "TargetGroups": { - "uniqueItems": true, + "BlockDeviceMappings": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/TargetGroup" + "$ref": "#/definitions/BlockDeviceMapping" } - } - }, - "required": [ - "TargetGroups" - ] - }, - "SpotCapacityRebalance": { - "additionalProperties": false, - "type": "object", - "properties": { - "TerminationDelay": { - "type": "integer" }, - "ReplacementStrategy": { - "type": "string", - "enum": [ - "launch", - "launch-before-terminate" - ] - } - } - }, - "AcceleratorCountRequest": { - "additionalProperties": false, - "type": "object", - "properties": { - "Min": { - "type": "integer" + "EbsOptimized": { + "type": "boolean", + "default": false }, - "Max": { - "type": "integer" - } - } - }, - "SpotFleetRequestConfigData": { - "additionalProperties": false, - "type": "object", - "properties": { - "Context": { + "IamInstanceProfile": { + "$ref": "#/definitions/IamInstanceProfileSpecification" + }, + "ImageId": { "type": "string" }, - "SpotMaxTotalPrice": { + "InstanceType": { "type": "string" }, - "ExcessCapacityTerminationPolicy": { - "type": "string", - "enum": [ - "Default", - "NoTermination", - "default", - "noTermination" - ] + "KernelId": { + "type": "string" }, - "TagSpecifications": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/SpotFleetTagSpecification" - } + "KeyName": { + "type": "string" }, - "InstancePoolsToUseCount": { - "type": "integer" + "Monitoring": { + "$ref": "#/definitions/SpotFleetMonitoring" }, - "LaunchTemplateConfigs": { - "uniqueItems": true, + "NetworkInterfaces": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/LaunchTemplateConfig" + "$ref": "#/definitions/InstanceNetworkInterfaceSpecification" } }, - "TargetCapacityUnitType": { - "type": "string", - "enum": [ - "vcpu", - "memory-mib", - "units" - ] + "Placement": { + "$ref": "#/definitions/SpotPlacement" }, - "IamFleetRole": { + "RamdiskId": { "type": "string" }, - "SpotMaintenanceStrategies": { - "$ref": "#/definitions/SpotMaintenanceStrategies" - }, - "TerminateInstancesWithExpiration": { - "type": "boolean" + "SecurityGroups": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/GroupIdentifier" + } }, - "ValidUntil": { + "SpotPrice": { "type": "string" }, - "OnDemandMaxTotalPrice": { + "SubnetId": { "type": "string" }, - "OnDemandAllocationStrategy": { - "type": "string" + "TagSpecifications": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + } }, - "SpotPrice": { + "UserData": { "type": "string" }, - "AllocationStrategy": { - "type": "string", - "enum": [ - "capacityOptimized", - "capacityOptimizedPrioritized", - "diversified", - "lowestPrice", - "priceCapacityOptimized" - ] + "WeightedCapacity": { + "type": "number" }, - "OnDemandTargetCapacity": { - "type": "integer" + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + } + }, + "required": [ + "ImageId" + ] + }, + "LoadBalancersConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "ClassicLoadBalancersConfig": { + "$ref": "#/definitions/ClassicLoadBalancersConfig" }, - "Type": { + "TargetGroupsConfig": { + "$ref": "#/definitions/TargetGroupsConfig" + } + } + }, + "SpotMaintenanceStrategies": { + "type": "object", + "additionalProperties": false, + "properties": { + "CapacityRebalance": { + "$ref": "#/definitions/SpotCapacityRebalance" + } + } + }, + "SpotCapacityRebalance": { + "type": "object", + "additionalProperties": false, + "properties": { + "ReplacementStrategy": { "type": "string", "enum": [ - "maintain", - "request" + "launch", + "launch-before-terminate" ] }, - "LaunchSpecifications": { - "uniqueItems": true, + "TerminationDelay": { + "type": "integer" + } + } + }, + "LaunchTemplateConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/FleetLaunchTemplateSpecification" + }, + "Overrides": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/SpotFleetLaunchSpecification" + "$ref": "#/definitions/LaunchTemplateOverrides" } - }, - "InstanceInterruptionBehavior": { - "type": "string", - "enum": [ - "hibernate", - "stop", - "terminate" - ] - }, - "LoadBalancersConfig": { - "$ref": "#/definitions/LoadBalancersConfig" - }, - "ValidFrom": { - "type": "string" - }, - "ReplaceUnhealthyInstances": { - "type": "boolean" - }, - "TargetCapacity": { - "type": "integer" } - }, - "required": [ - "IamFleetRole", - "TargetCapacity" - ] + } }, "SpotFleetTagSpecification": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "ResourceType": { "type": "string", @@ -534,167 +319,384 @@ ] }, "Tags": { - "uniqueItems": false, "type": "array", + "uniqueItems": false, "items": { "$ref": "#/definitions/Tag" } } } }, - "SpotFleetLaunchSpecification": { + "FleetLaunchTemplateSpecification": { + "type": "object", + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "type": "string", + "minLength": 3, + "maxLength": 128, + "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Version" + ] + }, + "GroupIdentifier": { + "type": "object", "additionalProperties": false, + "properties": { + "GroupId": { + "type": "string" + } + }, + "required": [ + "GroupId" + ] + }, + "IamInstanceProfileSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "SecurityGroups": { - "uniqueItems": true, + "Arn": { + "type": "string" + } + } + }, + "ClassicLoadBalancersConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "ClassicLoadBalancers": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/GroupIdentifier" + "$ref": "#/definitions/ClassicLoadBalancer" } + } + }, + "required": [ + "ClassicLoadBalancers" + ] + }, + "LaunchTemplateOverrides": { + "type": "object", + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" }, - "TagSpecifications": { + "InstanceType": { + "type": "string" + }, + "SpotPrice": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "Priority": { + "type": "number" + } + } + }, + "SpotFleetMonitoring": { + "type": "object", + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean", + "default": false + } + } + }, + "SpotPlacement": { + "type": "object", + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Tenancy": { + "type": "string", + "enum": [ + "dedicated", + "default", + "host" + ] + } + } + }, + "InstanceNetworkInterfaceSpecification": { + "type": "object", + "additionalProperties": false, + "properties": { + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "DeleteOnTermination": { + "type": "boolean" + }, + "Description": { + "type": "string" + }, + "DeviceIndex": { + "type": "integer" + }, + "Groups": { + "type": "array", "uniqueItems": true, + "items": { + "type": "string" + } + }, + "Ipv6AddressCount": { + "type": "integer" + }, + "Ipv6Addresses": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/SpotFleetTagSpecification" + "$ref": "#/definitions/InstanceIpv6Address" } }, - "UserData": { + "NetworkInterfaceId": { "type": "string" }, - "BlockDeviceMappings": { - "uniqueItems": true, + "PrivateIpAddresses": { "type": "array", + "uniqueItems": true, "items": { - "$ref": "#/definitions/BlockDeviceMapping" + "$ref": "#/definitions/PrivateIpAddressSpecification" } }, - "IamInstanceProfile": { - "$ref": "#/definitions/IamInstanceProfileSpecification" - }, - "KernelId": { - "type": "string" + "SecondaryPrivateIpAddressCount": { + "type": "integer" }, "SubnetId": { "type": "string" - }, - "EbsOptimized": { - "default": false, - "type": "boolean" - }, - "KeyName": { + } + } + }, + "BlockDeviceMapping": { + "type": "object", + "additionalProperties": false, + "properties": { + "DeviceName": { "type": "string" }, - "RamdiskId": { - "type": "string" + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" }, - "SpotPrice": { + "NoDevice": { "type": "string" }, - "WeightedCapacity": { - "type": "number" + "VirtualName": { + "type": "string" + } + }, + "required": [ + "DeviceName" + ] + }, + "TargetGroupsConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "TargetGroups": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/TargetGroup" + } + } + }, + "required": [ + "TargetGroups" + ] + }, + "EbsBlockDevice": { + "type": "object", + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" }, - "Placement": { - "$ref": "#/definitions/SpotPlacement" + "Encrypted": { + "type": "boolean" }, - "NetworkInterfaces": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/InstanceNetworkInterfaceSpecification" - } + "Iops": { + "type": "integer" }, - "ImageId": { + "SnapshotId": { "type": "string" }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirementsRequest" + "VolumeSize": { + "type": "integer" }, - "InstanceType": { + "VolumeType": { + "type": "string", + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ] + } + } + }, + "TargetGroup": { + "type": "object", + "additionalProperties": false, + "properties": { + "Arn": { "type": "string" - }, - "Monitoring": { - "$ref": "#/definitions/SpotFleetMonitoring" } }, "required": [ - "ImageId" + "Arn" ] }, - "IamInstanceProfileSpecification": { + "Tag": { + "type": "object", "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + }, + "PrivateIpAddressSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "Arn": { + "Primary": { + "type": "boolean" + }, + "PrivateIpAddress": { "type": "string" } - } + }, + "required": [ + "PrivateIpAddress" + ] }, - "LaunchTemplateConfig": { + "ClassicLoadBalancer": { + "type": "object", "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ] + }, + "InstanceIpv6Address": { "type": "object", + "additionalProperties": false, "properties": { - "LaunchTemplateSpecification": { - "$ref": "#/definitions/FleetLaunchTemplateSpecification" - }, - "Overrides": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/LaunchTemplateOverrides" - } + "Ipv6Address": { + "type": "string" } - } + }, + "required": [ + "Ipv6Address" + ] }, "InstanceRequirementsRequest": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { - "InstanceGenerations": { - "uniqueItems": false, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRangeRequest" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest" + }, + "CpuManufacturers": { "type": "array", + "uniqueItems": false, "items": { "type": "string", "enum": [ - "current", - "previous" + "intel", + "amd", + "amazon-web-services", + "apple" ] } }, "MemoryGiBPerVCpu": { "$ref": "#/definitions/MemoryGiBPerVCpuRequest" }, - "AcceleratorTypes": { - "uniqueItems": false, + "AllowedInstanceTypes": { "type": "array", + "uniqueItems": false, "items": { "type": "string", - "enum": [ - "gpu", - "fpga", - "inference" - ] + "minLength": 1, + "maxLength": 30, + "pattern": "[a-zA-Z0-9\\.\\*]+" } }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRangeRequest" - }, - "AcceleratorManufacturers": { + "ExcludedInstanceTypes": { + "type": "array", "uniqueItems": false, + "items": { + "type": "string", + "minLength": 1, + "maxLength": 30, + "pattern": "[a-zA-Z0-9\\.\\*]+" + } + }, + "InstanceGenerations": { "type": "array", + "uniqueItems": false, "items": { "type": "string", "enum": [ - "amazon-web-services", - "amd", - "habana", - "nvidia", - "xilinx" + "current", + "previous" ] } }, - "LocalStorage": { + "SpotMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "type": "integer" + }, + "BareMetal": { "type": "string", "enum": [ "included", @@ -702,20 +704,7 @@ "excluded" ] }, - "CpuManufacturers": { - "uniqueItems": false, - "type": "array", - "items": { - "type": "string", - "enum": [ - "intel", - "amd", - "amazon-web-services", - "apple" - ] - } - }, - "BareMetal": { + "BurstablePerformance": { "type": "string", "enum": [ "included", @@ -726,18 +715,23 @@ "RequireHibernateSupport": { "type": "boolean" }, - "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { - "type": "integer" + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest" }, - "OnDemandMaxPricePercentageOverLowestPrice": { - "type": "integer" + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest" }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRequest" + "LocalStorage": { + "type": "string", + "enum": [ + "included", + "required", + "excluded" + ] }, "LocalStorageTypes": { - "uniqueItems": false, "type": "array", + "uniqueItems": false, "items": { "type": "string", "enum": [ @@ -746,44 +740,44 @@ ] } }, - "NetworkInterfaceCount": { - "$ref": "#/definitions/NetworkInterfaceCountRequest" + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest" }, - "ExcludedInstanceTypes": { - "uniqueItems": false, - "type": "array", - "items": { - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", - "type": "string", - "maxLength": 30 - } + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" }, - "AllowedInstanceTypes": { - "uniqueItems": false, + "AcceleratorTypes": { "type": "array", + "uniqueItems": false, "items": { - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", "type": "string", - "maxLength": 30 + "enum": [ + "gpu", + "fpga", + "inference" + ] } }, - "NetworkBandwidthGbps": { - "$ref": "#/definitions/NetworkBandwidthGbpsRequest" - }, "AcceleratorCount": { "$ref": "#/definitions/AcceleratorCountRequest" }, - "SpotMaxPricePercentageOverLowestPrice": { - "type": "integer" - }, - "BaselineEbsBandwidthMbps": { - "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" + "AcceleratorManufacturers": { + "type": "array", + "uniqueItems": false, + "items": { + "type": "string", + "enum": [ + "amazon-web-services", + "amd", + "habana", + "nvidia", + "xilinx" + ] + } }, "AcceleratorNames": { - "uniqueItems": false, "type": "array", + "uniqueItems": false, "items": { "type": "string", "enum": [ @@ -805,22 +799,26 @@ "AcceleratorTotalMemoryMiB": { "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" }, - "BurstablePerformance": { - "type": "string", - "enum": [ - "included", - "required", - "excluded" - ] + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + } + } + }, + "VCpuCountRangeRequest": { + "type": "object", + "additionalProperties": false, + "properties": { + "Min": { + "type": "integer" }, - "TotalLocalStorageGB": { - "$ref": "#/definitions/TotalLocalStorageGBRequest" + "Max": { + "type": "integer" } } }, "MemoryMiBRequest": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "Min": { "type": "integer" @@ -830,90 +828,69 @@ } } }, - "BaselinePerformanceFactorsRequest": { - "additionalProperties": false, + "MemoryGiBPerVCpuRequest": { "type": "object", + "additionalProperties": false, "properties": { - "Cpu": { - "$ref": "#/definitions/CpuPerformanceFactorRequest" + "Min": { + "type": "number" + }, + "Max": { + "type": "number" } } }, - "InstanceNetworkInterfaceSpecification": { - "additionalProperties": false, + "NetworkBandwidthGbpsRequest": { "type": "object", + "additionalProperties": false, "properties": { - "Description": { - "type": "string" - }, - "PrivateIpAddresses": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - } - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" + "Min": { + "type": "number" }, - "DeviceIndex": { + "Max": { + "type": "number" + } + } + }, + "NetworkInterfaceCountRequest": { + "type": "object", + "additionalProperties": false, + "properties": { + "Min": { "type": "integer" }, - "Groups": { - "uniqueItems": true, - "type": "array", - "items": { - "type": "string" - } - }, - "Ipv6AddressCount": { + "Max": { "type": "integer" - }, - "Ipv6Addresses": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - } - }, - "SubnetId": { - "type": "string" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "DeleteOnTermination": { - "type": "boolean" } } }, - "SpotMaintenanceStrategies": { - "additionalProperties": false, + "TotalLocalStorageGBRequest": { "type": "object", + "additionalProperties": false, "properties": { - "CapacityRebalance": { - "$ref": "#/definitions/SpotCapacityRebalance" + "Min": { + "type": "number" + }, + "Max": { + "type": "number" } } }, - "GroupIdentifier": { - "additionalProperties": false, + "BaselineEbsBandwidthMbpsRequest": { "type": "object", + "additionalProperties": false, "properties": { - "GroupId": { - "type": "string" + "Min": { + "type": "integer" + }, + "Max": { + "type": "integer" } - }, - "required": [ - "GroupId" - ] + } }, - "AcceleratorTotalMemoryMiBRequest": { - "additionalProperties": false, + "AcceleratorCountRequest": { "type": "object", + "additionalProperties": false, "properties": { "Min": { "type": "integer" @@ -923,89 +900,115 @@ } } }, - "EbsBlockDevice": { - "additionalProperties": false, + "AcceleratorTotalMemoryMiBRequest": { "type": "object", + "additionalProperties": false, "properties": { - "SnapshotId": { - "type": "string" - }, - "VolumeType": { - "type": "string", - "enum": [ - "gp2", - "gp3", - "io1", - "io2", - "sc1", - "st1", - "standard" - ] - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { + "Min": { "type": "integer" }, - "VolumeSize": { + "Max": { "type": "integer" - }, - "DeleteOnTermination": { - "type": "boolean" } } }, - "LoadBalancersConfig": { - "additionalProperties": false, + "BaselinePerformanceFactorsRequest": { "type": "object", + "additionalProperties": false, "properties": { - "ClassicLoadBalancersConfig": { - "$ref": "#/definitions/ClassicLoadBalancersConfig" - }, - "TargetGroupsConfig": { - "$ref": "#/definitions/TargetGroupsConfig" + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest" } } }, - "Tag": { - "additionalProperties": false, + "CpuPerformanceFactorRequest": { "type": "object", + "additionalProperties": false, "properties": { - "Value": { - "type": "string" - }, - "Key": { - "type": "string" + "References": { + "type": "array", + "uniqueItems": false, + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + } } - }, - "required": [ - "Value", - "Key" - ] + } }, - "ClassicLoadBalancer": { - "additionalProperties": false, + "PerformanceFactorReferenceRequest": { "type": "object", + "additionalProperties": false, "properties": { - "Name": { + "InstanceFamily": { "type": "string" } - }, - "required": [ - "Name" - ] - } - }, - "properties": { - "SpotFleetRequestConfigData": { - "$ref": "#/definitions/SpotFleetRequestConfigData" - }, - "Id": { - "type": "string" + } } }, "required": [ "SpotFleetRequestConfigData" - ] + ], + "createOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/AllocationStrategy", + "/properties/SpotFleetRequestConfigData/IamFleetRole", + "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior", + "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs", + "/properties/SpotFleetRequestConfigData/LoadBalancersConfig", + "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy", + "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity", + "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances", + "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies", + "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/SpotPrice", + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration", + "/properties/SpotFleetRequestConfigData/Type", + "/properties/SpotFleetRequestConfigData/ValidFrom", + "/properties/SpotFleetRequestConfigData/ValidUntil" + ], + "readOnlyProperties": [ + "/properties/Id" + ], + "writeOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "ec2:CreateTags", + "ec2:RequestSpotFleet", + "ec2:DescribeSpotFleetRequests", + "ec2:RunInstances" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSpotFleetRequests", + "ec2:CancelSpotFleetRequests" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "update": { + "permissions": [ + "ec2:ModifySpotFleetRequest", + "ec2:DescribeSpotFleetRequests" + ] + } + } } diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json index 633dc94a7..f53118623 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json @@ -8,32 +8,49 @@ "handlers": { "read": { "permissions": [ - "ec2:DescribeVpcEndpoints" + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" ] }, "create": { "permissions": [ "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints" + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" ], "timeoutInMinutes": 210 }, "update": { "permissions": [ "ec2:ModifyVpcEndpoint", - "ec2:DescribeVpcEndpoints" + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" ], "timeoutInMinutes": 210 }, "list": { "permissions": [ - "ec2:DescribeVpcEndpoints" + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" ] }, "delete": { "permissions": [ "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints" + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" ], "timeoutInMinutes": 210 } @@ -49,58 +66,64 @@ "createOnlyProperties": [ "/properties/ServiceName", "/properties/VpcEndpointType", - "/properties/VpcId" + "/properties/VpcId", + "/properties/ServiceNetworkArn", + "/properties/ResourceConfigurationArn" ], "additionalProperties": false, "primaryIdentifier": [ "/properties/Id" ], + "definitions": { + "DnsOptionsSpecification": { + "description": "", + "additionalProperties": false, + "type": "object", + "properties": { + "PrivateDnsOnlyForInboundResolverEndpoint": { + "type": "string", + "enum": [ + "OnlyInboundResolver", + "AllResolvers", + "NotSpecified" + ] + }, + "DnsRecordIpType": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "dualstack", + "service-defined", + "not-specified" + ] + } + } + } + }, "properties": { "PrivateDnsEnabled": { "description": "Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.\n To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``.\n This property is supported only for interface endpoints.\n Default: ``false``", "type": "boolean" }, - "CreationTimestamp": { + "IpAddressType": { "description": "", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - }, - "RouteTableIds": { - "uniqueItems": true, - "description": "The IDs of the route tables. Routing is supported only for gateway endpoints.", - "insertionOrder": false, - "type": "array", - "items": { - "relationshipRef": { - "typeName": "AWS::EC2::RouteTable", - "propertyPath": "/properties/RouteTableId" - }, - "type": "string" - } - }, - "ServiceName": { - "description": "The name of the endpoint service.", - "type": "string" - }, - "PolicyDocument": { - "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", - "type": [ - "string", - "object" - ] - }, - "VpcEndpointType": { - "description": "The type of endpoint.\n Default: Gateway", "type": "string", "enum": [ - "Interface", - "Gateway", - "GatewayLoadBalancer" + "ipv4", + "ipv6", + "dualstack", + "not-specified" ] }, + "CreationTimestamp": { + "description": "", + "type": "string" + }, + "DnsOptions": { + "description": "", + "$ref": "#/definitions/DnsOptionsSpecification" + }, "NetworkInterfaceIds": { "uniqueItems": false, "description": "", @@ -110,10 +133,6 @@ "type": "string" } }, - "Id": { - "description": "", - "type": "string" - }, "DnsEntries": { "uniqueItems": false, "description": "", @@ -123,6 +142,10 @@ "type": "string" } }, + "ResourceConfigurationArn": { + "description": "", + "type": "string" + }, "SecurityGroupIds": { "uniqueItems": true, "description": "The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints.", @@ -164,10 +187,56 @@ }, "type": "string" } + }, + "ServiceNetworkArn": { + "description": "", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + }, + "RouteTableIds": { + "uniqueItems": true, + "description": "The IDs of the route tables. Routing is supported only for gateway endpoints.", + "insertionOrder": false, + "type": "array", + "items": { + "relationshipRef": { + "typeName": "AWS::EC2::RouteTable", + "propertyPath": "/properties/RouteTableId" + }, + "type": "string" + } + }, + "ServiceName": { + "description": "The name of the endpoint service.", + "type": "string" + }, + "PolicyDocument": { + "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", + "type": [ + "string", + "object" + ] + }, + "VpcEndpointType": { + "description": "The type of endpoint.\n Default: Gateway", + "type": "string", + "enum": [ + "Interface", + "Gateway", + "GatewayLoadBalancer", + "ServiceNetwork", + "Resource" + ] + }, + "Id": { + "description": "", + "type": "string" } }, "required": [ - "VpcId", - "ServiceName" + "VpcId" ] } diff --git a/internal/service/cloudformation/schemas/AWS_EMR_Studio.json b/internal/service/cloudformation/schemas/AWS_EMR_Studio.json index 11f618c9c..841c40454 100644 --- a/internal/service/cloudformation/schemas/AWS_EMR_Studio.json +++ b/internal/service/cloudformation/schemas/AWS_EMR_Studio.json @@ -10,7 +10,7 @@ }, "Arn": { "type": "string", - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$" + "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$" }, "Tags": { "type": "array", @@ -183,6 +183,12 @@ "primaryIdentifier": [ "/properties/StudioId" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "createOnlyProperties": [ "/properties/AuthMode", "/properties/EngineSecurityGroupId", diff --git a/internal/service/cloudformation/schemas/AWS_EMR_StudioSessionMapping.json b/internal/service/cloudformation/schemas/AWS_EMR_StudioSessionMapping.json index d732f7e32..3acb5a0d5 100644 --- a/internal/service/cloudformation/schemas/AWS_EMR_StudioSessionMapping.json +++ b/internal/service/cloudformation/schemas/AWS_EMR_StudioSessionMapping.json @@ -6,7 +6,7 @@ "definitions": { "IamPolicyArn": { "type": "string", - "pattern": "^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$" + "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$" } }, "properties": { @@ -51,6 +51,12 @@ "/properties/IdentityType", "/properties/IdentityName" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "handlers": { "create": { "permissions": [ @@ -63,7 +69,24 @@ "sso:ListDirectoryAssociations", "sso:GetProfile", "sso:ListProfiles", - "sso:AssociateProfile" + "sso:AssociateProfile", + "sso:CreateApplication", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAssignmentConfiguration", + "sso:DescribeApplication", + "sso:DeleteApplication", + "sso:DeleteApplicationAuthenticationMethod", + "sso:DeleteApplicationAccessScope", + "sso:DeleteApplicationGrant", + "sso:ListInstances", + "sso-directory:CreateUser", + "sso-directory:CreateGroup", + "sso:CreateApplicationAssignment", + "sso:DescribeInstance", + "sso:DeleteApplicationAssignment", + "sso:ListApplicationAssignments" ] }, "read": { diff --git a/internal/service/cloudformation/schemas/AWS_ImageBuilder_Image.json b/internal/service/cloudformation/schemas/AWS_ImageBuilder_Image.json index 6ba12dcf2..996596bc4 100644 --- a/internal/service/cloudformation/schemas/AWS_ImageBuilder_Image.json +++ b/internal/service/cloudformation/schemas/AWS_ImageBuilder_Image.json @@ -246,7 +246,8 @@ }, "list": { "permissions": [ - "imagebuilder:ListImages" + "imagebuilder:ListImages", + "imagebuilder:ListImageBuildVersions" ], "handlerSchema": { "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json b/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json index 131ee3017..4ad3d0bb7 100644 --- a/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json +++ b/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json @@ -228,7 +228,12 @@ "tagOnCreate": false, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "internetmonitor:TagResource", + "internetmonitor:UntagResource", + "internetmonitor:ListTagsForResource" + ] }, "handlers": { "create": { @@ -282,6 +287,7 @@ "permissions": [ "internetmonitor:ListMonitors", "internetmonitor:GetMonitor", + "internetmonitor:ListTagsForResource", "logs:GetLogDelivery" ] } diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_EventInvokeConfig.json b/internal/service/cloudformation/schemas/AWS_Lambda_EventInvokeConfig.json index e815725af..e0ab38e15 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_EventInvokeConfig.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_EventInvokeConfig.json @@ -23,7 +23,7 @@ "Destination": { "description": "The Amazon Resource Name (ARN) of the destination resource.", "type": "string", - "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "minLength": 0, "maxLength": 350 } @@ -40,7 +40,7 @@ "Destination": { "description": "The Amazon Resource Name (ARN) of the destination resource.", "type": "string", - "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "minLength": 0, "maxLength": 350 } @@ -58,7 +58,7 @@ "FunctionName": { "description": "The name of the Lambda function.", "type": "string", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$" + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$" }, "MaximumEventAgeInSeconds": { "description": "The maximum age of a request that Lambda sends to a function for processing.", diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json index 79f451478..50ae88455 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json @@ -259,13 +259,13 @@ } }, "Code": { - "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.", + "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.", "additionalProperties": false, "type": "object", "properties": { "SourceKMSKeyArn": { "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's .zip deployment package. If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).", + "description": "", "type": "string" }, "S3ObjectVersion": { @@ -282,7 +282,7 @@ "maxLength": 63 }, "ZipFile": { - "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", + "description": "(Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, CFN places it in a file named ``index`` and zips it to create a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html). This zip file cannot exceed 4MB. For the ``Handler`` property, the first part of the handler identifier must be ``index``. For example, ``index.handler``.\n For JSON, you must escape quotes and special characters such as newline (``\\n``) with a backslash.\n If you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module ([cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html)) that simplifies sending responses. See [Using Lambda with CloudFormation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html) for details.", "type": "string" }, "S3Key": { @@ -477,7 +477,7 @@ }, "KmsKeyArn": { "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", "type": "string" }, "PackageType": { diff --git a/internal/service/cloudformation/schemas/AWS_Logs_Integration.json b/internal/service/cloudformation/schemas/AWS_Logs_Integration.json index e0b552a21..956e1000e 100644 --- a/internal/service/cloudformation/schemas/AWS_Logs_Integration.json +++ b/internal/service/cloudformation/schemas/AWS_Logs_Integration.json @@ -145,7 +145,8 @@ "es:GetDirectQueryDataSource", "es:AddTags", "es:ListApplications" - ] + ], + "timeoutInMinutes": 30 }, "read": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json index 5e339c4ec..11f44948c 100644 --- a/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json +++ b/internal/service/cloudformation/schemas/AWS_OpenSearchService_Domain.json @@ -12,6 +12,36 @@ } } }, + "NodeConfig": { + "type": "object", + "properties": { + "Enabled": { + "type": "boolean" + }, + "Type": { + "type": "string" + }, + "Count": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "NodeOption": { + "type": "object", + "properties": { + "NodeType": { + "type": "string", + "enum": [ + "coordinator" + ] + }, + "NodeConfig": { + "$ref": "#/definitions/NodeConfig" + } + }, + "additionalProperties": false + }, "ClusterConfig": { "type": "object", "additionalProperties": false, @@ -51,6 +81,12 @@ }, "ColdStorageOptions": { "$ref": "#/definitions/ColdStorageOptions" + }, + "NodeOptions": { + "type": "array", + "items": { + "$ref": "#/definitions/NodeOption" + } } } }, diff --git a/internal/service/cloudformation/schemas/AWS_PCS_Cluster.json b/internal/service/cloudformation/schemas/AWS_PCS_Cluster.json new file mode 100644 index 000000000..b49a1d950 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_PCS_Cluster.json @@ -0,0 +1,332 @@ +{ + "typeName": "AWS::PCS::Cluster", + "description": "AWS::PCS::Cluster resource creates an AWS PCS cluster.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "definitions": { + "AuthKey": { + "type": "object", + "description": "The shared Slurm key for authentication, also known as the cluster secret.", + "properties": { + "SecretArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the the shared Slurm key." + }, + "SecretVersion": { + "type": "string", + "description": "The version of the shared Slurm key." + } + }, + "required": [ + "SecretArn", + "SecretVersion" + ], + "additionalProperties": false + }, + "Endpoint": { + "type": "object", + "description": "An endpoint available for interaction with the scheduler.", + "properties": { + "Port": { + "type": "string", + "description": "The endpoint's connection port number." + }, + "PrivateIpAddress": { + "type": "string", + "description": "The endpoint's private IP address." + }, + "Type": { + "type": "string", + "description": "Indicates the type of endpoint running at the specific IP address.", + "enum": [ + "SLURMCTLD", + "SLURMDBD" + ] + }, + "PublicIpAddress": { + "type": "string", + "description": "The endpoint's public IP address." + } + }, + "required": [ + "Port", + "PrivateIpAddress", + "Type" + ], + "additionalProperties": false + }, + "ErrorInfo": { + "type": "object", + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "type": "string", + "description": "The short-form error code." + }, + "Message": { + "type": "string", + "description": "The detailed error information." + } + }, + "additionalProperties": false + }, + "SecurityGroupId": { + "type": "string", + "description": "A VPC security group ID." + }, + "SlurmCustomSetting": { + "type": "object", + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "type": "string", + "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters." + }, + "ParameterValue": { + "type": "string", + "description": "The value for the configured Slurm setting." + } + }, + "additionalProperties": false, + "required": [ + "ParameterName", + "ParameterValue" + ] + }, + "SubnetId": { + "type": "string", + "description": "A VPC subnet ID." + }, + "Tag": { + "type": "object", + "description": "A key-value pair to associate with a resource.", + "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 + } + }, + "additionalProperties": false, + "required": [ + "Key" + ] + } + }, + "properties": { + "Arn": { + "type": "string", + "description": "The unique Amazon Resource Name (ARN) of the cluster." + }, + "Endpoints": { + "type": "array", + "description": "The list of endpoints available for interaction with the scheduler.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Endpoint" + } + }, + "ErrorInfo": { + "type": "array", + "description": "The list of errors that occurred during cluster provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + } + }, + "Id": { + "type": "string", + "description": "The generated unique ID of the cluster.", + "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$" + }, + "Name": { + "type": "string", + "description": "The name that identifies the cluster.", + "pattern": "" + }, + "Networking": { + "type": "object", + "description": "The networking configuration for the cluster's control plane.", + "properties": { + "SecurityGroupIds": { + "type": "array", + "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + } + }, + "SubnetIds": { + "type": "array", + "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + } + } + }, + "additionalProperties": false + }, + "Scheduler": { + "type": "object", + "description": "The cluster management and job scheduling software associated with the cluster.", + "properties": { + "Type": { + "type": "string", + "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.", + "enum": [ + "SLURM" + ] + }, + "Version": { + "type": "string", + "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling." + } + }, + "required": [ + "Type", + "Version" + ], + "additionalProperties": false + }, + "Size": { + "type": "string", + "description": "The size of the cluster.", + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ] + }, + "SlurmConfiguration": { + "type": "object", + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "AuthKey": { + "$ref": "#/definitions/AuthKey" + }, + "ScaleDownIdleTimeInSeconds": { + "type": "integer", + "description": "The time before an idle node is scaled down.", + "minimum": 1 + }, + "SlurmCustomSettings": { + "type": "array", + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + } + } + }, + "additionalProperties": false + }, + "Status": { + "type": "string", + "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ] + }, + "Tags": { + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "required": [ + "Networking", + "Scheduler", + "Size" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/Networking", + "/properties/Scheduler", + "/properties/Size", + "/properties/SlurmConfiguration" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Endpoints", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateCluster", + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource" + ] + }, + "read": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteCluster", + "pcs:GetCluster" + ] + }, + "list": { + "permissions": [ + "pcs:ListClusters" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ] + } +} diff --git a/internal/service/cloudformation/schemas/AWS_PCS_ComputeNodeGroup.json b/internal/service/cloudformation/schemas/AWS_PCS_ComputeNodeGroup.json new file mode 100644 index 000000000..5e70b4c9a --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_PCS_ComputeNodeGroup.json @@ -0,0 +1,337 @@ +{ + "typeName": "AWS::PCS::ComputeNodeGroup", + "description": "AWS::PCS::ComputeNodeGroup resource creates an AWS PCS compute node group.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "definitions": { + "ErrorInfo": { + "type": "object", + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "type": "string", + "description": "The short-form error code." + }, + "Message": { + "type": "string", + "description": "The detailed error information." + } + }, + "additionalProperties": false + }, + "InstanceConfig": { + "type": "object", + "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.", + "properties": { + "InstanceType": { + "type": "string", + "description": "The EC2 instance type that AWS PCS can provision in the compute node group." + } + }, + "additionalProperties": false + }, + "SlurmCustomSetting": { + "type": "object", + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "type": "string", + "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory." + }, + "ParameterValue": { + "type": "string", + "description": "The value for the configured Slurm setting." + } + }, + "additionalProperties": false, + "required": [ + "ParameterName", + "ParameterValue" + ] + }, + "SubnetId": { + "type": "string", + "description": "A VPC subnet ID." + } + }, + "properties": { + "AmiId": { + "type": "string", + "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + "pattern": "^ami-[a-z0-9]+$" + }, + "Arn": { + "type": "string", + "description": "The unique Amazon Resource Name (ARN) of the compute node group." + }, + "ClusterId": { + "type": "string", + "description": "The ID of the cluster of the compute node group." + }, + "CustomLaunchTemplate": { + "type": "object", + "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + "properties": { + "Id": { + "type": "string", + "description": "The ID of the EC2 launch template to use to provision instances." + }, + "Version": { + "type": "string", + "description": "The version of the EC2 launch template to use to provision instances." + } + }, + "additionalProperties": false, + "required": [ + "Id", + "Version" + ] + }, + "ErrorInfo": { + "type": "array", + "description": "The list of errors that occurred during compute node group provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + } + }, + "IamInstanceProfileArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$" + }, + "Id": { + "type": "string", + "description": "The generated unique ID of the compute node group." + }, + "InstanceConfigs": { + "type": "array", + "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceConfig" + } + }, + "Name": { + "type": "string", + "description": "The name that identifies the compute node group.", + "pattern": "" + }, + "PurchaseOption": { + "type": "string", + "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + "enum": [ + "ONDEMAND", + "SPOT" + ] + }, + "ScalingConfiguration": { + "type": "object", + "description": "Specifies the boundaries of the compute node group auto scaling.", + "properties": { + "MaxInstanceCount": { + "type": "integer", + "description": "The upper bound of the number of instances allowed in the compute fleet.", + "minimum": 0 + }, + "MinInstanceCount": { + "type": "integer", + "description": "The lower bound of the number of instances allowed in the compute fleet.", + "minimum": 0 + } + }, + "additionalProperties": false, + "required": [ + "MaxInstanceCount", + "MinInstanceCount" + ] + }, + "SlurmConfiguration": { + "type": "object", + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "SlurmCustomSettings": { + "type": "array", + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + } + } + }, + "additionalProperties": false + }, + "SpotOptions": { + "type": "object", + "description": "Additional configuration when you specify SPOT as the purchase option.", + "properties": { + "AllocationStrategy": { + "type": "string", + "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + "enum": [ + "lowest-price", + "capacity-optimized", + "price-capacity-optimized" + ] + } + }, + "additionalProperties": false + }, + "Status": { + "type": "string", + "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ] + }, + "SubnetIds": { + "type": "array", + "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + } + }, + "Tags": { + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "required": [ + "ClusterId", + "CustomLaunchTemplate", + "IamInstanceProfileArn", + "InstanceConfigs", + "ScalingConfiguration", + "SubnetIds" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId", + "/properties/InstanceConfigs" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:CreateComputeNodeGroup", + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "read": { + "permissions": [ + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:UpdateComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:TerminateInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:DeleteComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListComputeNodeGroups" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ] + } +} diff --git a/internal/service/cloudformation/schemas/AWS_PCS_Queue.json b/internal/service/cloudformation/schemas/AWS_PCS_Queue.json new file mode 100644 index 000000000..3a4b0e850 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_PCS_Queue.json @@ -0,0 +1,177 @@ +{ + "typeName": "AWS::PCS::Queue", + "description": "AWS::PCS::Queue resource creates an AWS PCS queue.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "definitions": { + "ComputeNodeGroupConfiguration": { + "type": "object", + "description": "The compute node group configuration for a queue.", + "properties": { + "ComputeNodeGroupId": { + "type": "string", + "description": "The compute node group ID for the compute node group configuration." + } + }, + "additionalProperties": false + }, + "ErrorInfo": { + "type": "object", + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "type": "string", + "description": "The short-form error code." + }, + "Message": { + "type": "string", + "description": "The detailed error information." + } + }, + "additionalProperties": false + } + }, + "properties": { + "Arn": { + "type": "string", + "description": "The unique Amazon Resource Name (ARN) of the queue.", + "pattern": "^(.*?)" + }, + "ClusterId": { + "type": "string", + "description": "The ID of the cluster of the queue." + }, + "ComputeNodeGroupConfigurations": { + "type": "array", + "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComputeNodeGroupConfiguration" + } + }, + "ErrorInfo": { + "type": "array", + "description": "The list of errors that occurred during queue provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + } + }, + "Id": { + "type": "string", + "description": "The generated unique ID of the queue." + }, + "Name": { + "type": "string", + "description": "The name that identifies the queue.", + "pattern": "" + }, + "Status": { + "type": "string", + "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ] + }, + "Tags": { + "type": "object", + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "required": [ + "ClusterId" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateQueue", + "pcs:GetQueue", + "pcs:ListTagsForResource", + "pcs:TagResource" + ] + }, + "read": { + "permissions": [ + "pcs:GetQueue", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetQueue", + "pcs:UpdateQueue", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteQueue", + "pcs:GetQueue" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListQueues" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ] + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json b/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json index 222fc486d..a2f238204 100644 --- a/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json +++ b/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json @@ -15,11 +15,11 @@ }, "SourceArn": { "type": "string", - "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable" + "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication" }, "TargetArn": { "type": "string", - "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf" + "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication" }, "Tags": { "type": "array", @@ -103,7 +103,7 @@ "minLength": 0 } }, - "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data.", "additionalProperties": false } }, diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json b/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json index c64c59ff9..cf9596ea8 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_Cluster.json @@ -1,187 +1,259 @@ { + "tagging": { + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": false + }, + "handlers": { + "read": { + "permissions": [ + "sagemaker:DescribeCluster", + "sagemaker:ListTags" + ] + }, + "create": { + "permissions": [ + "sagemaker:CreateCluster", + "sagemaker:DescribeCluster", + "sagemaker:AddTags", + "sagemaker:ListTags", + "eks:DescribeAccessEntry", + "eks:DescribeCluster", + "eks:CreateAccessEntry", + "eks:DeleteAccessEntry", + "eks:AssociateAccessPolicy", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ], + "timeoutInMinutes": 720 + }, + "update": { + "permissions": [ + "sagemaker:UpdateCluster", + "sagemaker:DescribeCluster", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "eks:DescribeAccessEntry", + "eks:DescribeCluster", + "eks:CreateAccessEntry", + "eks:DeleteAccessEntry", + "iam:PassRole" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "sagemaker:ListClusters" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteCluster", + "sagemaker:DescribeCluster", + "eks:DescribeAccessEntry", + "eks:DeleteAccessEntry" + ], + "timeoutInMinutes": 720 + } + }, "typeName": "AWS::SageMaker::Cluster", + "readOnlyProperties": [ + "/properties/ClusterArn", + "/properties/CreationTime", + "/properties/ClusterStatus", + "/properties/FailureMessage", + "/properties/InstanceGroups/*/CurrentCount" + ], "description": "Resource Type definition for AWS::SageMaker::Cluster", + "additionalIdentifiers": [ + [ + "/properties/ClusterName" + ] + ], + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/VpcConfig", + "/properties/Orchestrator", + "/properties/InstanceGroups/*/OverrideVpcConfig", + "/properties/InstanceGroups/*/ExecutionRole", + "/properties/InstanceGroups/*/InstanceGroupName", + "/properties/InstanceGroups/*/InstanceType", + "/properties/InstanceGroups/*/ThreadsPerCore" + ], "additionalProperties": false, - "properties": { - "ClusterName": { - "type": "string", - "description": "The name of the HyperPod Cluster.", - "minLength": 1, - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$" - }, - "ClusterArn": { - "type": "string", - "description": "The Amazon Resource Name (ARN) of the HyperPod Cluster.", - "maxLength": 256, - "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:cluster/[a-z0-9]{12}$" + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "definitions": { + "ClusterOrchestratorEksConfig": { + "description": "Specifies parameter(s) related to EKS as orchestrator, e.g. the EKS cluster nodes will attach to,", + "additionalProperties": false, + "type": "object", + "properties": { + "ClusterArn": { + "description": "The ARN of the EKS cluster, such as arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster", + "type": "string" + } + }, + "required": [ + "ClusterArn" + ] }, - "ClusterStatus": { + "DeepHealthCheckType": { + "description": "The type of deep health check(s) to be performed on the instances in the SageMaker HyperPod cluster instance group.", "type": "string", - "description": "The status of the HyperPod Cluster.", "enum": [ - "Creating", - "Deleting", - "Failed", - "InService", - "RollingBack", - "SystemUpdating", - "Updating" + "InstanceStress", + "InstanceConnectivity" ] }, - "CreationTime": { - "description": "The time at which the HyperPod cluster was created.", - "type": "string" - }, - "FailureMessage": { - "type": "string", - "description": "The failure message of the HyperPod Cluster." - }, - "InstanceGroups": { - "$ref": "#/definitions/ClusterInstanceGroupsList" + "ClusterInstanceStorageConfig": { + "oneOf": [ + { + "additionalProperties": false, + "type": "object", + "properties": { + "EbsVolumeConfig": { + "$ref": "#/definitions/ClusterEbsVolumeConfig" + } + } + } + ], + "description": "Defines the configuration for attaching additional storage to the instances in the SageMaker HyperPod cluster instance group.", + "type": "object" }, "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - }, - "Orchestrator": { - "$ref": "#/definitions/Orchestrator" + "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + "additionalProperties": false, + "type": "object", + "properties": { + "Subnets": { + "minItems": 1, + "maxItems": 16, + "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", + "insertionOrder": false, + "type": "array", + "items": { + "pattern": "[-0-9a-zA-Z]+", + "type": "string", + "maxLength": 32 + } + }, + "SecurityGroupIds": { + "minItems": 1, + "maxItems": 5, + "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + "insertionOrder": false, + "type": "array", + "items": { + "pattern": "[-0-9a-zA-Z]+", + "type": "string", + "maxLength": 32 + } + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ] }, - "NodeRecovery": { - "description": "If node auto-recovery is set to true, faulty nodes will be replaced or rebooted when a failure is detected. If set to false, nodes will be labelled when a fault is detected.", + "InstanceGroupName": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "description": "The name of the instance group of a SageMaker HyperPod cluster.", "type": "string", - "enum": [ - "Automatic", - "None" - ] + "maxLength": 63 }, - "Tags": { - "description": "Custom tags for managing the SageMaker HyperPod cluster as an AWS resource. You can add tags to your cluster in the same way you add them in other AWS services that support tagging.", - "type": "array", - "uniqueItems": true, - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50 - } - }, - "definitions": { "ClusterInstanceGroupsList": { - "description": "The instance groups of the SageMaker HyperPod cluster.", "minItems": 1, + "description": "The instance groups of the SageMaker HyperPod cluster.", "insertionOrder": false, "type": "array", "items": { "$ref": "#/definitions/ClusterInstanceGroup" } }, - "ExecutionRole": { - "type": "string", - "description": "The execution role for the instance group to assume.", - "minLength": 20, - "maxLength": 2048, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$" - }, - "InstanceGroupName": { - "type": "string", - "description": "The name of the instance group of a SageMaker HyperPod cluster.", - "minLength": 1, - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$" + "Orchestrator": { + "description": "Specifies parameter(s) specific to the orchestrator, e.g. specify the EKS cluster.", + "additionalProperties": false, + "type": "object", + "properties": { + "Eks": { + "$ref": "#/definitions/ClusterOrchestratorEksConfig" + } + }, + "required": [ + "Eks" + ] }, "ClusterEbsVolumeConfig": { "description": "Defines the configuration for attaching additional Amazon Elastic Block Store (EBS) volumes to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { "VolumeSizeInGB": { - "type": "integer", "description": "The size in gigabytes (GB) of the additional EBS volume to be attached to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", - "minimum": 1, - "maximum": 16384 + "maximum": 16384, + "type": "integer", + "minimum": 1 } } }, - "ClusterInstanceStorageConfigs": { - "description": "The instance storage configuration for the instance group.", - "type": "array", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ClusterInstanceStorageConfig" - }, - "maxItems": 1 - }, - "ClusterInstanceStorageConfig": { - "description": "Defines the configuration for attaching additional storage to the instances in the SageMaker HyperPod cluster instance group.", - "type": "object", - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "EbsVolumeConfig": { - "$ref": "#/definitions/ClusterEbsVolumeConfig" - } - } - } - ] - }, - "InstanceType": { - "type": "string", - "description": "The instance type of the instance group of a SageMaker HyperPod cluster." - }, "ClusterLifeCycleConfig": { "description": "The lifecycle configuration for a SageMaker HyperPod cluster.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { - "OnCreate": { - "description": "The file name of the entrypoint script of lifecycle scripts under SourceS3Uri. This entrypoint script runs during cluster creation.", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^[\\S\\s]+$" - }, "SourceS3Uri": { + "pattern": "^(https|s3)://([^/]+)/?(.*)$", "description": "An Amazon S3 bucket path where your lifecycle scripts are stored.", "type": "string", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$" + "maxLength": 1024 + }, + "OnCreate": { + "minLength": 1, + "pattern": "^[\\S\\s]+$", + "description": "The file name of the entrypoint script of lifecycle scripts under SourceS3Uri. This entrypoint script runs during cluster creation.", + "type": "string", + "maxLength": 128 } - }, - "required": [ - "OnCreate", - "SourceS3Uri" - ] - }, - "DeepHealthCheckType": { - "type": "string", - "description": "The type of deep health check(s) to be performed on the instances in the SageMaker HyperPod cluster instance group.", - "enum": [ - "InstanceStress", - "InstanceConnectivity" + }, + "required": [ + "OnCreate", + "SourceS3Uri" ] }, "OnStartDeepHealthChecks": { "description": "Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in.", - "type": "array", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/DeepHealthCheckType" } }, "ClusterInstanceGroup": { "description": "Details of an instance group in a SageMaker HyperPod cluster.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { - "CurrentCount": { + "OverrideVpcConfig": { + "$ref": "#/definitions/VpcConfig" + }, + "InstanceCount": { + "description": "The number of instances you specified to add to the instance group of a SageMaker HyperPod cluster.", "type": "integer", - "description": "The number of instances that are currently in the instance group of a SageMaker HyperPod cluster.", "minimum": 0 }, - "ExecutionRole": { - "$ref": "#/definitions/ExecutionRole" + "OnStartDeepHealthChecks": { + "$ref": "#/definitions/OnStartDeepHealthChecks" }, "InstanceGroupName": { "$ref": "#/definitions/InstanceGroupName" @@ -189,28 +261,25 @@ "InstanceStorageConfigs": { "$ref": "#/definitions/ClusterInstanceStorageConfigs" }, - "InstanceType": { - "$ref": "#/definitions/InstanceType" + "CurrentCount": { + "description": "The number of instances that are currently in the instance group of a SageMaker HyperPod cluster.", + "type": "integer", + "minimum": 0 }, "LifeCycleConfig": { "$ref": "#/definitions/ClusterLifeCycleConfig" }, - "InstanceCount": { - "type": "integer", - "description": "The number of instances you specified to add to the instance group of a SageMaker HyperPod cluster.", - "minimum": 0 + "InstanceType": { + "$ref": "#/definitions/InstanceType" }, "ThreadsPerCore": { - "type": "integer", "description": "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", - "minimum": 1, - "maximum": 2 - }, - "OnStartDeepHealthChecks": { - "$ref": "#/definitions/OnStartDeepHealthChecks" + "maximum": 2, + "type": "integer", + "minimum": 1 }, - "OverrideVpcConfig": { - "$ref": "#/definitions/VpcConfig" + "ExecutionRole": { + "$ref": "#/definitions/ExecutionRole" } }, "required": [ @@ -221,185 +290,116 @@ "LifeCycleConfig" ] }, - "VpcConfig": { - "type": "object", - "additionalProperties": false, - "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", - "properties": { - "SecurityGroupIds": { - "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", - "type": "array", - "insertionOrder": false, - "minItems": 1, - "maxItems": 5, - "items": { - "type": "string", - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+" - } - }, - "Subnets": { - "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", - "type": "array", - "insertionOrder": false, - "minItems": 1, - "maxItems": 16, - "items": { - "type": "string", - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+" - } - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ] - }, - "ClusterOrchestratorEksConfig": { - "description": "Specifies parameter(s) related to EKS as orchestrator, e.g. the EKS cluster nodes will attach to,", - "type": "object", - "additionalProperties": false, - "properties": { - "ClusterArn": { - "type": "string", - "description": "The ARN of the EKS cluster, such as arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster" - } - }, - "required": [ - "ClusterArn" - ] - }, - "Orchestrator": { - "description": "Specifies parameter(s) specific to the orchestrator, e.g. specify the EKS cluster.", - "type": "object", - "additionalProperties": false, - "properties": { - "Eks": { - "$ref": "#/definitions/ClusterOrchestratorEksConfig" - } - }, - "required": [ - "Eks" - ] + "ClusterInstanceStorageConfigs": { + "maxItems": 1, + "description": "The instance storage configuration for the instance group.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/ClusterInstanceStorageConfig" + } }, "Tag": { "description": "A key-value pair to associate with a resource.", + "additionalProperties": false, "type": "object", "properties": { - "Key": { + "Value": { + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "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", - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" + "maxLength": 256 }, - "Value": { + "Key": { + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "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", - "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, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" + "maxLength": 128 } }, "required": [ "Key", "Value" - ], - "additionalProperties": false + ] + }, + "InstanceType": { + "description": "The instance type of the instance group of a SageMaker HyperPod cluster.", + "type": "string" + }, + "ExecutionRole": { + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "description": "The execution role for the instance group to assume.", + "type": "string", + "maxLength": 2048 } }, "required": [ "InstanceGroups" ], - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "additionalIdentifiers": [ - [ - "/properties/ClusterName" - ] - ], - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/CreationTime", - "/properties/ClusterStatus", - "/properties/FailureMessage", - "/properties/InstanceGroups/*/CurrentCount" - ], - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/VpcConfig", - "/properties/Orchestrator", - "/properties/InstanceGroups/*/OverrideVpcConfig", - "/properties/InstanceGroups/*/ExecutionRole", - "/properties/InstanceGroups/*/InstanceGroupName", - "/properties/InstanceGroups/*/InstanceType", - "/properties/InstanceGroups/*/ThreadsPerCore" - ], - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "permissions": [ - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ] - }, - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateCluster", - "sagemaker:DescribeCluster", - "sagemaker:AddTags", - "sagemaker:ListTags", - "eks:DescribeAccessEntry", - "eks:DescribeCluster", - "eks:CreateAccessEntry", - "eks:DeleteAccessEntry", - "eks:AssociateAccessPolicy", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ], - "timeoutInMinutes": 720 + "properties": { + "ClusterArn": { + "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:cluster/[a-z0-9]{12}$", + "description": "The Amazon Resource Name (ARN) of the HyperPod Cluster.", + "type": "string", + "maxLength": 256 }, - "read": { - "permissions": [ - "sagemaker:DescribeCluster", - "sagemaker:ListTags" + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + }, + "NodeRecovery": { + "description": "If node auto-recovery is set to true, faulty nodes will be replaced or rebooted when a failure is detected. If set to false, nodes will be labelled when a fault is detected.", + "type": "string", + "enum": [ + "Automatic", + "None" ] }, - "update": { - "permissions": [ - "sagemaker:UpdateCluster", - "sagemaker:DescribeCluster", - "sagemaker:ListTags", - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "eks:DescribeAccessEntry", - "eks:DescribeCluster", - "eks:CreateAccessEntry", - "eks:DeleteAccessEntry", - "iam:PassRole" - ], - "timeoutInMinutes": 720 + "CreationTime": { + "description": "The time at which the HyperPod cluster was created.", + "type": "string" }, - "delete": { - "permissions": [ - "sagemaker:DeleteCluster", - "sagemaker:DescribeCluster", - "eks:DescribeAccessEntry", - "eks:DeleteAccessEntry" - ], - "timeoutInMinutes": 720 + "InstanceGroups": { + "$ref": "#/definitions/ClusterInstanceGroupsList" }, - "list": { - "permissions": [ - "sagemaker:ListClusters" + "ClusterName": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", + "description": "The name of the HyperPod Cluster.", + "type": "string", + "maxLength": 63 + }, + "FailureMessage": { + "description": "The failure message of the HyperPod Cluster.", + "type": "string" + }, + "Orchestrator": { + "$ref": "#/definitions/Orchestrator" + }, + "ClusterStatus": { + "description": "The status of the HyperPod Cluster.", + "type": "string", + "enum": [ + "Creating", + "Deleting", + "Failed", + "InService", + "RollingBack", + "SystemUpdating", + "Updating" ] + }, + "Tags": { + "maxItems": 50, + "uniqueItems": true, + "description": "Custom tags for managing the SageMaker HyperPod cluster as an AWS resource. You can add tags to your cluster in the same way you add them in other AWS services that support tagging.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + } } } }