diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d3f5acd6..294685118 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ ## 1.22.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_cognito_managed_login_branding` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_exclusion` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_exclusions` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_options` +* **New Resource:** `awscc_cognito_managed_login_branding` +* **New Resource:** `awscc_ec2_vpc_block_public_access_exclusion` +* **New Resource:** `awscc_ec2_vpc_block_public_access_options` + ## 1.21.0 (November 22, 2024) +FEATURES: + * **New Data Source:** `awscc_apigateway_base_path_mapping_v2` * **New Data Source:** `awscc_apigateway_domain_name_access_association` * **New Data Source:** `awscc_apigateway_domain_name_access_associations` @@ -53,6 +66,8 @@ ## 1.20.0 (November 8, 2024) +FEATURES: + * **New Data Source:** `awscc_appsync_channel_namespace` * **New Data Source:** `awscc_bedrock_application_inference_profile` * **New Data Source:** `awscc_bedrock_application_inference_profiles` diff --git a/docs/data-sources/autoscaling_scaling_policy.md b/docs/data-sources/autoscaling_scaling_policy.md index aa8f3fdf1..b71b85e0e 100644 --- a/docs/data-sources/autoscaling_scaling_policy.md +++ b/docs/data-sources/autoscaling_scaling_policy.md @@ -264,6 +264,7 @@ Read-Only: - `metric_name` (String) - `metrics` (Attributes Set) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics)) - `namespace` (String) +- `period` (Number) - `statistic` (String) - `unit` (String) @@ -285,6 +286,7 @@ Read-Only: - `id` (String) - `label` (String) - `metric_stat` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat)) +- `period` (Number) - `return_data` (Boolean) @@ -293,6 +295,7 @@ Read-Only: Read-Only: - `metric` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat--metric)) +- `period` (Number) - `stat` (String) - `unit` (String) diff --git a/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md b/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md index 1cbf1a77f..3842b69ee 100644 --- a/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md +++ b/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md @@ -23,6 +23,7 @@ Data Source schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration - `arn` (String) Amazon Resource Name (ARN) of the configuration - `configuration_name` (String) The name of the configuration +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `iam_role_arn` (String) The ARN of the IAM role that defines the permissions for AWS Chatbot - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs diff --git a/docs/data-sources/chatbot_slack_channel_configuration.md b/docs/data-sources/chatbot_slack_channel_configuration.md index 224b28c8c..37bc966e5 100644 --- a/docs/data-sources/chatbot_slack_channel_configuration.md +++ b/docs/data-sources/chatbot_slack_channel_configuration.md @@ -23,6 +23,7 @@ Data Source schema for AWS::Chatbot::SlackChannelConfiguration - `arn` (String) Amazon Resource Name (ARN) of the configuration - `configuration_name` (String) The name of the configuration +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `iam_role_arn` (String) The ARN of the IAM role that defines the permissions for AWS Chatbot - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs diff --git a/docs/data-sources/cognito_managed_login_branding.md b/docs/data-sources/cognito_managed_login_branding.md new file mode 100644 index 000000000..e9e5c09dd --- /dev/null +++ b/docs/data-sources/cognito_managed_login_branding.md @@ -0,0 +1,41 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_managed_login_branding Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Cognito::ManagedLoginBranding +--- + +# awscc_cognito_managed_login_branding (Data Source) + +Data Source schema for AWS::Cognito::ManagedLoginBranding + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `assets` (Attributes List) (see [below for nested schema](#nestedatt--assets)) +- `client_id` (String) +- `managed_login_branding_id` (String) +- `return_merged_resources` (Boolean) +- `settings` (String) +- `use_cognito_provided_values` (Boolean) +- `user_pool_id` (String) + + +### Nested Schema for `assets` + +Read-Only: + +- `bytes` (String) +- `category` (String) +- `color_mode` (String) +- `extension` (String) +- `resource_id` (String) diff --git a/docs/data-sources/ec2_vpc_block_public_access_exclusion.md b/docs/data-sources/ec2_vpc_block_public_access_exclusion.md new file mode 100644 index 000000000..655bd2f51 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_exclusion.md @@ -0,0 +1,36 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusion Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion +--- + +# awscc_ec2_vpc_block_public_access_exclusion (Data Source) + +Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `exclusion_id` (String) The ID of the exclusion +- `internet_gateway_exclusion_mode` (String) The desired Block Public Access Exclusion Mode for a specific VPC/Subnet. +- `subnet_id` (String) The ID of the subnet. Required only if you don't specify VpcId +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `vpc_id` (String) The ID of the vpc. Required only if you don't specify SubnetId. + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. diff --git a/docs/data-sources/ec2_vpc_block_public_access_exclusions.md b/docs/data-sources/ec2_vpc_block_public_access_exclusions.md new file mode 100644 index 000000000..78c2acd78 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_exclusions.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusions Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion +--- + +# awscc_ec2_vpc_block_public_access_exclusions (Data Source) + +Plural Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ec2_vpc_block_public_access_options.md b/docs/data-sources/ec2_vpc_block_public_access_options.md new file mode 100644 index 000000000..404f445f8 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_options.md @@ -0,0 +1,25 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_options Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::VPCBlockPublicAccessOptions +--- + +# awscc_ec2_vpc_block_public_access_options (Data Source) + +Data Source schema for AWS::EC2::VPCBlockPublicAccessOptions + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `account_id` (String) The identifier for the specified AWS account. +- `internet_gateway_block_mode` (String) The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value diff --git a/docs/data-sources/eks_cluster.md b/docs/data-sources/eks_cluster.md index 4d9a66ecb..d6e8b2a89 100644 --- a/docs/data-sources/eks_cluster.md +++ b/docs/data-sources/eks_cluster.md @@ -27,6 +27,7 @@ Data Source schema for AWS::EKS::Cluster - `certificate_authority_data` (String) The certificate-authority-data for your cluster. - `cluster_id` (String) The unique ID given to your cluster. - `cluster_security_group_id` (String) The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication. +- `compute_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--compute_config)) - `encryption_config` (Attributes List) (see [below for nested schema](#nestedatt--encryption_config)) - `encryption_config_key_arn` (String) Amazon Resource Name (ARN) or alias of the customer master key (CMK). - `endpoint` (String) The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com. @@ -35,8 +36,10 @@ Data Source schema for AWS::EKS::Cluster - `name` (String) The unique name to give to your cluster. - `open_id_connect_issuer_url` (String) The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template. - `outpost_config` (Attributes) An object representing the Outpost configuration to use for AWS EKS outpost cluster. (see [below for nested schema](#nestedatt--outpost_config)) +- `remote_network_config` (Attributes) Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation. (see [below for nested schema](#nestedatt--remote_network_config)) - `resources_vpc_config` (Attributes) An object representing the VPC configuration to use for an Amazon EKS cluster. (see [below for nested schema](#nestedatt--resources_vpc_config)) - `role_arn` (String) The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. +- `storage_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config)) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `upgrade_policy` (Attributes) An object representing the Upgrade Policy to use for the cluster. (see [below for nested schema](#nestedatt--upgrade_policy)) - `version` (String) The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used. @@ -51,6 +54,16 @@ Read-Only: - `bootstrap_cluster_creator_admin_permissions` (Boolean) Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster. + +### Nested Schema for `compute_config` + +Read-Only: + +- `enabled` (Boolean) Todo: add description +- `node_pools` (List of String) Todo: add description +- `node_role_arn` (String) Todo: add description + + ### Nested Schema for `encryption_config` @@ -73,10 +86,19 @@ Read-Only: Read-Only: +- `elastic_load_balancing` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--kubernetes_network_config--elastic_load_balancing)) - `ip_family` (String) Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on - `service_ipv_4_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. - `service_ipv_6_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. + +### Nested Schema for `kubernetes_network_config.elastic_load_balancing` + +Read-Only: + +- `enabled` (Boolean) Todo: add description + + ### Nested Schema for `logging` @@ -120,6 +142,31 @@ Read-Only: + +### Nested Schema for `remote_network_config` + +Read-Only: + +- `remote_node_networks` (Attributes List) Network configuration of nodes run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_node_networks)) +- `remote_pod_networks` (Attributes List) Network configuration of pods run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_pod_networks)) + + +### Nested Schema for `remote_network_config.remote_node_networks` + +Read-Only: + +- `cidrs` (List of String) Specifies the list of remote node CIDRs. + + + +### Nested Schema for `remote_network_config.remote_pod_networks` + +Read-Only: + +- `cidrs` (List of String) Specifies the list of remote pod CIDRs. + + + ### Nested Schema for `resources_vpc_config` @@ -132,6 +179,22 @@ Read-Only: - `subnet_ids` (List of String) Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane. + +### Nested Schema for `storage_config` + +Read-Only: + +- `block_storage` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config--block_storage)) + + +### Nested Schema for `storage_config.block_storage` + +Read-Only: + +- `enabled` (Boolean) Todo: add description + + + ### Nested Schema for `tags` diff --git a/docs/data-sources/elasticloadbalancingv2_load_balancer.md b/docs/data-sources/elasticloadbalancingv2_load_balancer.md index 07ced3f7f..a72ab78ff 100644 --- a/docs/data-sources/elasticloadbalancingv2_load_balancer.md +++ b/docs/data-sources/elasticloadbalancingv2_load_balancer.md @@ -23,36 +23,35 @@ Data Source schema for AWS::ElasticLoadBalancingV2::LoadBalancer - `canonical_hosted_zone_id` (String) - `dns_name` (String) -- `enable_prefix_for_ipv_6_source_nat` (String) +- `enable_prefix_for_ipv_6_source_nat` (String) [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``. - `enforce_security_group_inbound_rules_on_private_link_traffic` (String) Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink. -- `ip_address_type` (String) Note: Internal load balancers must use the ``ipv4`` IP address type. - [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). - Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors. - [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener. - [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). +- `ip_address_type` (String) The IP address type. Internal load balancers must use ``ipv4``. + [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses). + Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors. + [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses). - `load_balancer_arn` (String) - `load_balancer_attributes` (Attributes Set) The load balancer attributes. (see [below for nested schema](#nestedatt--load_balancer_attributes)) - `load_balancer_full_name` (String) - `load_balancer_name` (String) +- `minimum_load_balancer_capacity` (Attributes) (see [below for nested schema](#nestedatt--minimum_load_balancer_capacity)) - `name` (String) The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with "internal-". If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name. - `scheme` (String) The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. - You cannot specify a scheme for a Gateway Load Balancer. + You can't specify a scheme for a Gateway Load Balancer. - `security_groups` (Set of String) [Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer. - `subnet_mappings` (Attributes Set) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. - [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. + [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) + [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) - `subnets` (Set of String) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. - [Network Load Balancers] You can specify subnets from one or more Availability Zones. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. - `tags` (Attributes List) The tags to assign to the load balancer. (see [below for nested schema](#nestedatt--tags)) - `type` (String) The type of load balancer. The default is ``application``. @@ -64,7 +63,7 @@ Read-Only: - `key` (String) The name of the attribute. The following attributes are supported by all load balancers: + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``. - + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed. + + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``. @@ -97,6 +96,14 @@ Read-Only: - `value` (String) The value of the attribute. + +### Nested Schema for `minimum_load_balancer_capacity` + +Read-Only: + +- `capacity_units` (Number) + + ### Nested Schema for `subnet_mappings` @@ -105,7 +112,7 @@ Read-Only: - `allocation_id` (String) [Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer. - `i_pv_6_address` (String) [Network Load Balancers] The IPv6 address. - `private_i_pv_4_address` (String) [Network Load Balancers] The private IPv4 address for an internal load balancer. -- `source_nat_ipv_6_prefix` (String) +- `source_nat_ipv_6_prefix` (String) [Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block. - `subnet_id` (String) The ID of the subnet. diff --git a/docs/data-sources/iot_domain_configuration.md b/docs/data-sources/iot_domain_configuration.md index 30629a269..c749da10a 100644 --- a/docs/data-sources/iot_domain_configuration.md +++ b/docs/data-sources/iot_domain_configuration.md @@ -61,6 +61,8 @@ Read-Only: Read-Only: - `enable_ocsp_check` (Boolean) +- `ocsp_authorized_responder_arn` (String) +- `ocsp_lambda_arn` (String) diff --git a/docs/data-sources/organizations_policy.md b/docs/data-sources/organizations_policy.md index eeccb606b..1aa06b778 100644 --- a/docs/data-sources/organizations_policy.md +++ b/docs/data-sources/organizations_policy.md @@ -29,7 +29,7 @@ Data Source schema for AWS::Organizations::Policy - `policy_id` (String) Id of the Policy - `tags` (Attributes Set) A list of tags that you want to attach to the newly created policy. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null. (see [below for nested schema](#nestedatt--tags)) - `target_ids` (Set of String) List of unique identifiers (IDs) of the root, OU, or account that you want to attach the policy to -- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY +- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY ### Nested Schema for `tags` diff --git a/docs/data-sources/sagemaker_inference_component.md b/docs/data-sources/sagemaker_inference_component.md index b7d1c1268..de4fbc193 100644 --- a/docs/data-sources/sagemaker_inference_component.md +++ b/docs/data-sources/sagemaker_inference_component.md @@ -49,6 +49,7 @@ Read-Only: Read-Only: +- `base_inference_component_name` (String) The name of the base inference component - `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - `container` (Attributes) (see [below for nested schema](#nestedatt--specification--container)) - `model_name` (String) The name of the model to use with the inference component diff --git a/docs/data-sources/wisdom_knowledge_base.md b/docs/data-sources/wisdom_knowledge_base.md index 8467821fe..f3ba7bf12 100644 --- a/docs/data-sources/wisdom_knowledge_base.md +++ b/docs/data-sources/wisdom_knowledge_base.md @@ -30,6 +30,7 @@ Data Source schema for AWS::Wisdom::KnowledgeBase - `server_side_encryption_configuration` (Attributes) (see [below for nested schema](#nestedatt--server_side_encryption_configuration)) - `source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration)) - `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) +- `vector_ingestion_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration)) ### Nested Schema for `rendering_configuration` @@ -53,6 +54,7 @@ Read-Only: Read-Only: - `app_integrations` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--app_integrations)) +- `managed_source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration)) ### Nested Schema for `source_configuration.app_integrations` @@ -63,6 +65,50 @@ Read-Only: - `object_fields` (List of String) + +### Nested Schema for `source_configuration.managed_source_configuration` + +Read-Only: + +- `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration` + +Read-Only: + +- `crawler_limits` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--crawler_limits)) +- `exclusion_filters` (List of String) +- `inclusion_filters` (List of String) +- `scope` (String) +- `url_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.crawler_limits` + +Read-Only: + +- `rate_limit` (Number) + + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration` + +Read-Only: + +- `seed_urls` (Attributes List) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration--seed_urls)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration.seed_urls` + +Read-Only: + +- `url` (String) + + + + + ### Nested Schema for `tags` @@ -71,3 +117,82 @@ Read-Only: - `key` (String) - `value` (String) + + + +### Nested Schema for `vector_ingestion_configuration` + +Read-Only: + +- `chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration)) +- `parsing_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration` + +Read-Only: + +- `chunking_strategy` (String) +- `fixed_size_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--fixed_size_chunking_configuration)) +- `hierarchical_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration)) +- `semantic_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--semantic_chunking_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.fixed_size_chunking_configuration` + +Read-Only: + +- `max_tokens` (Number) +- `overlap_percentage` (Number) + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration` + +Read-Only: + +- `level_configurations` (Attributes List) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration--level_configurations)) +- `overlap_tokens` (Number) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration.level_configurations` + +Read-Only: + +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.semantic_chunking_configuration` + +Read-Only: + +- `breakpoint_percentile_threshold` (Number) +- `buffer_size` (Number) +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration` + +Read-Only: + +- `bedrock_foundation_model_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration)) +- `parsing_strategy` (String) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration` + +Read-Only: + +- `model_arn` (String) +- `parsing_prompt` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration--parsing_prompt)) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration.parsing_prompt` + +Read-Only: + +- `parsing_prompt_text` (String) diff --git a/docs/resources/autoscaling_scaling_policy.md b/docs/resources/autoscaling_scaling_policy.md index 4fb6fb403..f423eb81d 100644 --- a/docs/resources/autoscaling_scaling_policy.md +++ b/docs/resources/autoscaling_scaling_policy.md @@ -267,6 +267,7 @@ Optional: - `metric_name` (String) - `metrics` (Attributes Set) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics)) - `namespace` (String) +- `period` (Number) - `statistic` (String) - `unit` (String) @@ -288,6 +289,7 @@ Optional: - `id` (String) - `label` (String) - `metric_stat` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat)) +- `period` (Number) - `return_data` (Boolean) @@ -296,6 +298,7 @@ Optional: Optional: - `metric` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat--metric)) +- `period` (Number) - `stat` (String) - `unit` (String) diff --git a/docs/resources/chatbot_microsoft_teams_channel_configuration.md b/docs/resources/chatbot_microsoft_teams_channel_configuration.md index 0f672742f..b95890fce 100644 --- a/docs/resources/chatbot_microsoft_teams_channel_configuration.md +++ b/docs/resources/chatbot_microsoft_teams_channel_configuration.md @@ -25,6 +25,7 @@ Resource schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration. ### Optional +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs - `sns_topic_arns` (List of String) ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications. diff --git a/docs/resources/chatbot_slack_channel_configuration.md b/docs/resources/chatbot_slack_channel_configuration.md index 7e136c3f3..33f589c1f 100644 --- a/docs/resources/chatbot_slack_channel_configuration.md +++ b/docs/resources/chatbot_slack_channel_configuration.md @@ -52,6 +52,7 @@ resource "awscc_iam_role" "example" { ### Optional +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs - `sns_topic_arns` (List of String) ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications. diff --git a/docs/resources/cognito_managed_login_branding.md b/docs/resources/cognito_managed_login_branding.md new file mode 100644 index 000000000..545a87096 --- /dev/null +++ b/docs/resources/cognito_managed_login_branding.md @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_managed_login_branding Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Cognito::ManagedLoginBranding +--- + +# awscc_cognito_managed_login_branding (Resource) + +Resource Type definition for AWS::Cognito::ManagedLoginBranding + + + + +## Schema + +### Required + +- `user_pool_id` (String) + +### Optional + +- `assets` (Attributes List) (see [below for nested schema](#nestedatt--assets)) +- `client_id` (String) +- `return_merged_resources` (Boolean) +- `settings` (String) +- `use_cognito_provided_values` (Boolean) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `managed_login_branding_id` (String) + + +### Nested Schema for `assets` + +Optional: + +- `bytes` (String) +- `category` (String) +- `color_mode` (String) +- `extension` (String) +- `resource_id` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_cognito_managed_login_branding.example "user_pool_id|managed_login_branding_id" +``` diff --git a/docs/resources/ec2_vpc_block_public_access_exclusion.md b/docs/resources/ec2_vpc_block_public_access_exclusion.md new file mode 100644 index 000000000..b6cb106be --- /dev/null +++ b/docs/resources/ec2_vpc_block_public_access_exclusion.md @@ -0,0 +1,47 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusion Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion. +--- + +# awscc_ec2_vpc_block_public_access_exclusion (Resource) + +Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion. + + + + +## Schema + +### Required + +- `internet_gateway_exclusion_mode` (String) The desired Block Public Access Exclusion Mode for a specific VPC/Subnet. + +### Optional + +- `subnet_id` (String) The ID of the subnet. Required only if you don't specify VpcId +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `vpc_id` (String) The ID of the vpc. Required only if you don't specify SubnetId. + +### Read-Only + +- `exclusion_id` (String) The ID of the exclusion +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_vpc_block_public_access_exclusion.example "exclusion_id" +``` diff --git a/docs/resources/ec2_vpc_block_public_access_options.md b/docs/resources/ec2_vpc_block_public_access_options.md new file mode 100644 index 000000000..94dfdc3c5 --- /dev/null +++ b/docs/resources/ec2_vpc_block_public_access_options.md @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_options Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions +--- + +# awscc_ec2_vpc_block_public_access_options (Resource) + +Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions + + + + +## Schema + +### Required + +- `internet_gateway_block_mode` (String) The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value + +### Read-Only + +- `account_id` (String) The identifier for the specified AWS account. +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_vpc_block_public_access_options.example "account_id" +``` diff --git a/docs/resources/eks_cluster.md b/docs/resources/eks_cluster.md index 5c24957b4..2c49e9de2 100644 --- a/docs/resources/eks_cluster.md +++ b/docs/resources/eks_cluster.md @@ -215,11 +215,14 @@ resource "awscc_kms_key" "main" { - `access_config` (Attributes) An object representing the Access Config to use for the cluster. (see [below for nested schema](#nestedatt--access_config)) - `bootstrap_self_managed_addons` (Boolean) Set this value to false to avoid creating the default networking add-ons when the cluster is created. +- `compute_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--compute_config)) - `encryption_config` (Attributes List) (see [below for nested schema](#nestedatt--encryption_config)) - `kubernetes_network_config` (Attributes) The Kubernetes network configuration for the cluster. (see [below for nested schema](#nestedatt--kubernetes_network_config)) - `logging` (Attributes) Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs. (see [below for nested schema](#nestedatt--logging)) - `name` (String) The unique name to give to your cluster. - `outpost_config` (Attributes) An object representing the Outpost configuration to use for AWS EKS outpost cluster. (see [below for nested schema](#nestedatt--outpost_config)) +- `remote_network_config` (Attributes) Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation. (see [below for nested schema](#nestedatt--remote_network_config)) +- `storage_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config)) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `upgrade_policy` (Attributes) An object representing the Upgrade Policy to use for the cluster. (see [below for nested schema](#nestedatt--upgrade_policy)) - `version` (String) The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used. @@ -260,6 +263,16 @@ Optional: - `bootstrap_cluster_creator_admin_permissions` (Boolean) Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster. + +### Nested Schema for `compute_config` + +Optional: + +- `enabled` (Boolean) Todo: add description +- `node_pools` (List of String) Todo: add description +- `node_role_arn` (String) Todo: add description + + ### Nested Schema for `encryption_config` @@ -282,6 +295,7 @@ Optional: Optional: +- `elastic_load_balancing` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--kubernetes_network_config--elastic_load_balancing)) - `ip_family` (String) Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on - `service_ipv_4_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. @@ -289,6 +303,14 @@ Read-Only: - `service_ipv_6_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. + +### Nested Schema for `kubernetes_network_config.elastic_load_balancing` + +Optional: + +- `enabled` (Boolean) Todo: add description + + ### Nested Schema for `logging` @@ -332,6 +354,47 @@ Optional: + +### Nested Schema for `remote_network_config` + +Optional: + +- `remote_node_networks` (Attributes List) Network configuration of nodes run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_node_networks)) +- `remote_pod_networks` (Attributes List) Network configuration of pods run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_pod_networks)) + + +### Nested Schema for `remote_network_config.remote_node_networks` + +Optional: + +- `cidrs` (List of String) Specifies the list of remote node CIDRs. + + + +### Nested Schema for `remote_network_config.remote_pod_networks` + +Optional: + +- `cidrs` (List of String) Specifies the list of remote pod CIDRs. + + + + +### Nested Schema for `storage_config` + +Optional: + +- `block_storage` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config--block_storage)) + + +### Nested Schema for `storage_config.block_storage` + +Optional: + +- `enabled` (Boolean) Todo: add description + + + ### Nested Schema for `tags` diff --git a/docs/resources/elasticloadbalancingv2_load_balancer.md b/docs/resources/elasticloadbalancingv2_load_balancer.md index 667bd4315..f01581cf3 100644 --- a/docs/resources/elasticloadbalancingv2_load_balancer.md +++ b/docs/resources/elasticloadbalancingv2_load_balancer.md @@ -153,33 +153,32 @@ resource "awscc_elasticloadbalancingv2_load_balancer" "example" { ### Optional -- `enable_prefix_for_ipv_6_source_nat` (String) +- `enable_prefix_for_ipv_6_source_nat` (String) [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``. - `enforce_security_group_inbound_rules_on_private_link_traffic` (String) Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink. -- `ip_address_type` (String) Note: Internal load balancers must use the ``ipv4`` IP address type. - [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). - Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors. - [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener. - [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). +- `ip_address_type` (String) The IP address type. Internal load balancers must use ``ipv4``. + [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses). + Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors. + [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses). - `load_balancer_attributes` (Attributes Set) The load balancer attributes. (see [below for nested schema](#nestedatt--load_balancer_attributes)) +- `minimum_load_balancer_capacity` (Attributes) (see [below for nested schema](#nestedatt--minimum_load_balancer_capacity)) - `name` (String) The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with "internal-". If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name. - `scheme` (String) The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. - You cannot specify a scheme for a Gateway Load Balancer. + You can't specify a scheme for a Gateway Load Balancer. - `security_groups` (Set of String) [Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer. - `subnet_mappings` (Attributes Set) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. - [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. + [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) + [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) - `subnets` (Set of String) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. - [Network Load Balancers] You can specify subnets from one or more Availability Zones. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. - `tags` (Attributes List) The tags to assign to the load balancer. (see [below for nested schema](#nestedatt--tags)) - `type` (String) The type of load balancer. The default is ``application``. @@ -200,7 +199,7 @@ Optional: - `key` (String) The name of the attribute. The following attributes are supported by all load balancers: + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``. - + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed. + + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``. @@ -233,6 +232,14 @@ Optional: - `value` (String) The value of the attribute. + +### Nested Schema for `minimum_load_balancer_capacity` + +Optional: + +- `capacity_units` (Number) + + ### Nested Schema for `subnet_mappings` @@ -241,7 +248,7 @@ Optional: - `allocation_id` (String) [Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer. - `i_pv_6_address` (String) [Network Load Balancers] The IPv6 address. - `private_i_pv_4_address` (String) [Network Load Balancers] The private IPv4 address for an internal load balancer. -- `source_nat_ipv_6_prefix` (String) +- `source_nat_ipv_6_prefix` (String) [Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block. - `subnet_id` (String) The ID of the subnet. diff --git a/docs/resources/iot_domain_configuration.md b/docs/resources/iot_domain_configuration.md index c267f357a..de76e1cbb 100644 --- a/docs/resources/iot_domain_configuration.md +++ b/docs/resources/iot_domain_configuration.md @@ -61,6 +61,8 @@ Optional: Optional: - `enable_ocsp_check` (Boolean) +- `ocsp_authorized_responder_arn` (String) +- `ocsp_lambda_arn` (String) diff --git a/docs/resources/organizations_policy.md b/docs/resources/organizations_policy.md index 0c0abb707..aad462f83 100644 --- a/docs/resources/organizations_policy.md +++ b/docs/resources/organizations_policy.md @@ -19,7 +19,7 @@ Policies in AWS Organizations enable you to manage different features of the AWS - `content` (String) The Policy text content. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it. - `name` (String) Name of the Policy -- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY +- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY ### Optional diff --git a/docs/resources/sagemaker_inference_component.md b/docs/resources/sagemaker_inference_component.md index 688b56650..4ac3a30e3 100644 --- a/docs/resources/sagemaker_inference_component.md +++ b/docs/resources/sagemaker_inference_component.md @@ -18,15 +18,15 @@ Resource Type definition for AWS::SageMaker::InferenceComponent ### Required - `endpoint_name` (String) The name of the endpoint the inference component is associated with -- `runtime_config` (Attributes) The runtime config for the inference component (see [below for nested schema](#nestedatt--runtime_config)) - `specification` (Attributes) The specification for the inference component (see [below for nested schema](#nestedatt--specification)) -- `variant_name` (String) The name of the endpoint variant the inference component is associated with ### Optional - `endpoint_arn` (String) The Amazon Resource Name (ARN) of the endpoint the inference component is associated with - `inference_component_name` (String) The name of the inference component +- `runtime_config` (Attributes) The runtime config for the inference component (see [below for nested schema](#nestedatt--runtime_config)) - `tags` (Attributes List) An array of tags to apply to the resource (see [below for nested schema](#nestedatt--tags)) +- `variant_name` (String) The name of the endpoint variant the inference component is associated with ### Read-Only @@ -37,28 +37,13 @@ Resource Type definition for AWS::SageMaker::InferenceComponent - `inference_component_status` (String) - `last_modified_time` (String) - -### Nested Schema for `runtime_config` - -Optional: - -- `copy_count` (Number) The number of copies for the inference component - -Read-Only: - -- `current_copy_count` (Number) The number of copies for the inference component -- `desired_copy_count` (Number) The number of copies for the inference component - - ### Nested Schema for `specification` -Required: - -- `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - Optional: +- `base_inference_component_name` (String) The name of the base inference component +- `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - `container` (Attributes) (see [below for nested schema](#nestedatt--specification--container)) - `model_name` (String) The name of the model to use with the inference component - `startup_parameters` (Attributes) (see [below for nested schema](#nestedatt--specification--startup_parameters)) @@ -108,6 +93,19 @@ Optional: + +### Nested Schema for `runtime_config` + +Optional: + +- `copy_count` (Number) The number of copies for the inference component + +Read-Only: + +- `current_copy_count` (Number) The number of copies for the inference component +- `desired_copy_count` (Number) The number of copies for the inference component + + ### Nested Schema for `tags` diff --git a/docs/resources/wisdom_knowledge_base.md b/docs/resources/wisdom_knowledge_base.md index 4645171d1..4bb2e0170 100644 --- a/docs/resources/wisdom_knowledge_base.md +++ b/docs/resources/wisdom_knowledge_base.md @@ -27,6 +27,7 @@ Definition of AWS::Wisdom::KnowledgeBase Resource Type - `server_side_encryption_configuration` (Attributes) (see [below for nested schema](#nestedatt--server_side_encryption_configuration)) - `source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration)) - `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) +- `vector_ingestion_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration)) ### Read-Only @@ -56,6 +57,7 @@ Optional: Optional: - `app_integrations` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--app_integrations)) +- `managed_source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration)) ### Nested Schema for `source_configuration.app_integrations` @@ -66,6 +68,50 @@ Optional: - `object_fields` (List of String) + +### Nested Schema for `source_configuration.managed_source_configuration` + +Optional: + +- `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration` + +Optional: + +- `crawler_limits` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--crawler_limits)) +- `exclusion_filters` (List of String) +- `inclusion_filters` (List of String) +- `scope` (String) +- `url_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.crawler_limits` + +Optional: + +- `rate_limit` (Number) + + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration` + +Optional: + +- `seed_urls` (Attributes List) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration--seed_urls)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration.seed_urls` + +Optional: + +- `url` (String) + + + + + ### Nested Schema for `tags` @@ -75,6 +121,85 @@ Optional: - `key` (String) - `value` (String) + + +### Nested Schema for `vector_ingestion_configuration` + +Optional: + +- `chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration)) +- `parsing_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration` + +Optional: + +- `chunking_strategy` (String) +- `fixed_size_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--fixed_size_chunking_configuration)) +- `hierarchical_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration)) +- `semantic_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--semantic_chunking_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.fixed_size_chunking_configuration` + +Optional: + +- `max_tokens` (Number) +- `overlap_percentage` (Number) + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration` + +Optional: + +- `level_configurations` (Attributes List) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration--level_configurations)) +- `overlap_tokens` (Number) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration.level_configurations` + +Optional: + +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.semantic_chunking_configuration` + +Optional: + +- `breakpoint_percentile_threshold` (Number) +- `buffer_size` (Number) +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration` + +Optional: + +- `bedrock_foundation_model_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration)) +- `parsing_strategy` (String) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration` + +Optional: + +- `model_arn` (String) +- `parsing_prompt` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration--parsing_prompt)) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration.parsing_prompt` + +Optional: + +- `parsing_prompt_text` (String) + ## Import Import is supported using the following syntax: diff --git a/examples/resources/awscc_cognito_managed_login_branding/import.sh b/examples/resources/awscc_cognito_managed_login_branding/import.sh new file mode 100644 index 000000000..c7f00583f --- /dev/null +++ b/examples/resources/awscc_cognito_managed_login_branding/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_cognito_managed_login_branding.example "user_pool_id|managed_login_branding_id" \ No newline at end of file diff --git a/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh b/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh new file mode 100644 index 000000000..3f018bf4f --- /dev/null +++ b/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_vpc_block_public_access_exclusion.example "exclusion_id" \ No newline at end of file diff --git a/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh b/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh new file mode 100644 index 000000000..d441adad8 --- /dev/null +++ b/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_vpc_block_public_access_options.example "account_id" \ No newline at end of file diff --git a/internal/aws/autoscaling/scaling_policy_resource_gen.go b/internal/aws/autoscaling/scaling_policy_resource_gen.go index bee285f1b..2fe3e622b 100644 --- a/internal/aws/autoscaling/scaling_policy_resource_gen.go +++ b/internal/aws/autoscaling/scaling_policy_resource_gen.go @@ -1311,6 +1311,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "Stat": { // "type": "string" // }, @@ -1324,6 +1327,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "ReturnData": { // "type": "boolean" // } @@ -1339,6 +1345,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // "Namespace": { // "type": "string" // }, + // "Period": { + // "type": "integer" + // }, // "Statistic": { // "type": "string" // }, @@ -1525,6 +1534,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Stat "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1551,6 +1568,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ReturnData "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1575,6 +1600,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Statistic "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1705,6 +1738,7 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { "mode": "Mode", "name": "Name", "namespace": "Namespace", + "period": "Period", "policy_name": "PolicyName", "policy_type": "PolicyType", "predefined_load_metric_specification": "PredefinedLoadMetricSpecification", diff --git a/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go b/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go index f6a1db474..5d5ffec14 100644 --- a/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go +++ b/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go @@ -915,6 +915,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "Stat": { // "type": "string" // }, @@ -928,6 +931,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "ReturnData": { // "type": "boolean" // } @@ -943,6 +949,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // "Namespace": { // "type": "string" // }, + // "Period": { + // "type": "integer" + // }, // "Statistic": { // "type": "string" // }, @@ -1053,6 +1062,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Stat "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1064,6 +1077,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ReturnData "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1076,6 +1093,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Statistic "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1159,6 +1180,7 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) "mode": "Mode", "name": "Name", "namespace": "Namespace", + "period": "Period", "policy_name": "PolicyName", "policy_type": "PolicyType", "predefined_load_metric_specification": "PredefinedLoadMetricSpecification", diff --git a/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go b/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go index 320f4562b..840d4d7e3 100644 --- a/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go +++ b/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" @@ -69,6 +70,33 @@ func microsoftTeamsChannelConfigurationResource(ctx context.Context) (resource.R stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$"), ""), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -305,19 +333,20 @@ func microsoftTeamsChannelConfigurationResource(ctx context.Context) (resource.R opts = opts.WithCloudFormationTypeName("AWS::Chatbot::MicrosoftTeamsChannelConfiguration").WithTerraformTypeName("awscc_chatbot_microsoft_teams_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "team_id": "TeamId", - "teams_channel_id": "TeamsChannelId", - "teams_tenant_id": "TeamsTenantId", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "team_id": "TeamId", + "teams_channel_id": "TeamsChannelId", + "teams_tenant_id": "TeamsTenantId", + "user_role_required": "UserRoleRequired", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go b/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go index 1cee4251c..9dedc3cbe 100644 --- a/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go +++ b/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go @@ -49,6 +49,23 @@ func microsoftTeamsChannelConfigurationDataSource(ctx context.Context) (datasour Description: "The name of the configuration", Computed: true, }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -220,19 +237,20 @@ func microsoftTeamsChannelConfigurationDataSource(ctx context.Context) (datasour opts = opts.WithCloudFormationTypeName("AWS::Chatbot::MicrosoftTeamsChannelConfiguration").WithTerraformTypeName("awscc_chatbot_microsoft_teams_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "team_id": "TeamId", - "teams_channel_id": "TeamsChannelId", - "teams_tenant_id": "TeamsTenantId", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "team_id": "TeamId", + "teams_channel_id": "TeamsChannelId", + "teams_tenant_id": "TeamsTenantId", + "user_role_required": "UserRoleRequired", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/chatbot/slack_channel_configuration_resource_gen.go b/internal/aws/chatbot/slack_channel_configuration_resource_gen.go index 429989910..63927daf6 100644 --- a/internal/aws/chatbot/slack_channel_configuration_resource_gen.go +++ b/internal/aws/chatbot/slack_channel_configuration_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" @@ -69,6 +70,33 @@ func slackChannelConfigurationResource(ctx context.Context) (resource.Resource, stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$"), ""), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -284,18 +312,19 @@ func slackChannelConfigurationResource(ctx context.Context) (resource.Resource, opts = opts.WithCloudFormationTypeName("AWS::Chatbot::SlackChannelConfiguration").WithTerraformTypeName("awscc_chatbot_slack_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "slack_channel_id": "SlackChannelId", - "slack_workspace_id": "SlackWorkspaceId", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "slack_channel_id": "SlackChannelId", + "slack_workspace_id": "SlackWorkspaceId", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "user_role_required": "UserRoleRequired", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go b/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go index edb4145a9..ea65e0aa3 100644 --- a/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go +++ b/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go @@ -49,6 +49,23 @@ func slackChannelConfigurationDataSource(ctx context.Context) (datasource.DataSo Description: "The name of the configuration", Computed: true, }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -206,18 +223,19 @@ func slackChannelConfigurationDataSource(ctx context.Context) (datasource.DataSo opts = opts.WithCloudFormationTypeName("AWS::Chatbot::SlackChannelConfiguration").WithTerraformTypeName("awscc_chatbot_slack_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "slack_channel_id": "SlackChannelId", - "slack_workspace_id": "SlackWorkspaceId", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "slack_channel_id": "SlackChannelId", + "slack_workspace_id": "SlackWorkspaceId", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "user_role_required": "UserRoleRequired", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/cognito/managed_login_branding_resource_gen.go b/internal/aws/cognito/managed_login_branding_resource_gen.go new file mode 100644 index 000000000..2477c5bf7 --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_resource_gen.go @@ -0,0 +1,327 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package cognito + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_cognito_managed_login_branding", managedLoginBrandingResource) +} + +// managedLoginBrandingResource returns the Terraform awscc_cognito_managed_login_branding resource. +// This Terraform resource corresponds to the CloudFormation AWS::Cognito::ManagedLoginBranding resource. +func managedLoginBrandingResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Assets + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Bytes": { + // "maxLength": 1000000, + // "type": "string" + // }, + // "Category": { + // "enum": [ + // "FAVICON_ICO", + // "FAVICON_SVG", + // "EMAIL_GRAPHIC", + // "SMS_GRAPHIC", + // "AUTH_APP_GRAPHIC", + // "PASSWORD_GRAPHIC", + // "PASSKEY_GRAPHIC", + // "PAGE_HEADER_LOGO", + // "PAGE_HEADER_BACKGROUND", + // "PAGE_FOOTER_LOGO", + // "PAGE_FOOTER_BACKGROUND", + // "PAGE_BACKGROUND", + // "FORM_BACKGROUND", + // "FORM_LOGO", + // "IDP_BUTTON_ICON" + // ], + // "type": "string" + // }, + // "ColorMode": { + // "enum": [ + // "LIGHT", + // "DARK", + // "DYNAMIC" + // ], + // "type": "string" + // }, + // "Extension": { + // "enum": [ + // "ICO", + // "JPEG", + // "PNG", + // "SVG", + // "WEBP" + // ], + // "type": "string" + // }, + // "ResourceId": { + // "maxLength": 40, + // "minLength": 1, + // "pattern": "^[\\w\\- ]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Category", + // "ColorMode", + // "Extension" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "assets": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Bytes + "bytes": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(1000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Category + "category": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "FAVICON_ICO", + "FAVICON_SVG", + "EMAIL_GRAPHIC", + "SMS_GRAPHIC", + "AUTH_APP_GRAPHIC", + "PASSWORD_GRAPHIC", + "PASSKEY_GRAPHIC", + "PAGE_HEADER_LOGO", + "PAGE_HEADER_BACKGROUND", + "PAGE_FOOTER_LOGO", + "PAGE_FOOTER_BACKGROUND", + "PAGE_BACKGROUND", + "FORM_BACKGROUND", + "FORM_LOGO", + "IDP_BUTTON_ICON", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ColorMode + "color_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "LIGHT", + "DARK", + "DYNAMIC", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Extension + "extension": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ICO", + "JPEG", + "PNG", + "SVG", + "WEBP", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceId + "resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 40), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\w\\- ]+$"), ""), + }, /*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: ClientId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // ClientId is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: ManagedLoginBrandingId + // CloudFormation resource type schema: + // + // { + // "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", + // "type": "string" + // } + "managed_login_branding_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReturnMergedResources + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "return_merged_resources": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // ReturnMergedResources is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Settings + // CloudFormation resource type schema: + // + // { + // "type": "object" + // } + "settings": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UseCognitoProvidedValues + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "use_cognito_provided_values": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Cognito::ManagedLoginBranding", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::ManagedLoginBranding").WithTerraformTypeName("awscc_cognito_managed_login_branding") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "assets": "Assets", + "bytes": "Bytes", + "category": "Category", + "client_id": "ClientId", + "color_mode": "ColorMode", + "extension": "Extension", + "managed_login_branding_id": "ManagedLoginBrandingId", + "resource_id": "ResourceId", + "return_merged_resources": "ReturnMergedResources", + "settings": "Settings", + "use_cognito_provided_values": "UseCognitoProvidedValues", + "user_pool_id": "UserPoolId", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ClientId", + "/properties/ReturnMergedResources", + }) + opts = opts.WithCreateTimeoutInMinutes(2).WithDeleteTimeoutInMinutes(2) + + opts = opts.WithUpdateTimeoutInMinutes(2) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cognito/managed_login_branding_resource_gen_test.go b/internal/aws/cognito/managed_login_branding_resource_gen_test.go new file mode 100644 index 000000000..0ca1dd351 --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_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 cognito_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCognitoManagedLoginBranding_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go b/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go new file mode 100644 index 000000000..562f4ea5d --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go @@ -0,0 +1,212 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package cognito + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_cognito_managed_login_branding", managedLoginBrandingDataSource) +} + +// managedLoginBrandingDataSource returns the Terraform awscc_cognito_managed_login_branding data source. +// This Terraform data source corresponds to the CloudFormation AWS::Cognito::ManagedLoginBranding resource. +func managedLoginBrandingDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Assets + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Bytes": { + // "maxLength": 1000000, + // "type": "string" + // }, + // "Category": { + // "enum": [ + // "FAVICON_ICO", + // "FAVICON_SVG", + // "EMAIL_GRAPHIC", + // "SMS_GRAPHIC", + // "AUTH_APP_GRAPHIC", + // "PASSWORD_GRAPHIC", + // "PASSKEY_GRAPHIC", + // "PAGE_HEADER_LOGO", + // "PAGE_HEADER_BACKGROUND", + // "PAGE_FOOTER_LOGO", + // "PAGE_FOOTER_BACKGROUND", + // "PAGE_BACKGROUND", + // "FORM_BACKGROUND", + // "FORM_LOGO", + // "IDP_BUTTON_ICON" + // ], + // "type": "string" + // }, + // "ColorMode": { + // "enum": [ + // "LIGHT", + // "DARK", + // "DYNAMIC" + // ], + // "type": "string" + // }, + // "Extension": { + // "enum": [ + // "ICO", + // "JPEG", + // "PNG", + // "SVG", + // "WEBP" + // ], + // "type": "string" + // }, + // "ResourceId": { + // "maxLength": 40, + // "minLength": 1, + // "pattern": "^[\\w\\- ]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Category", + // "ColorMode", + // "Extension" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "assets": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Bytes + "bytes": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Category + "category": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ColorMode + "color_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Extension + "extension": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceId + "resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClientId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ManagedLoginBrandingId + // CloudFormation resource type schema: + // + // { + // "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", + // "type": "string" + // } + "managed_login_branding_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReturnMergedResources + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "return_merged_resources": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Settings + // CloudFormation resource type schema: + // + // { + // "type": "object" + // } + "settings": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UseCognitoProvidedValues + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "use_cognito_provided_values": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::Cognito::ManagedLoginBranding", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::ManagedLoginBranding").WithTerraformTypeName("awscc_cognito_managed_login_branding") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "assets": "Assets", + "bytes": "Bytes", + "category": "Category", + "client_id": "ClientId", + "color_mode": "ColorMode", + "extension": "Extension", + "managed_login_branding_id": "ManagedLoginBrandingId", + "resource_id": "ResourceId", + "return_merged_resources": "ReturnMergedResources", + "settings": "Settings", + "use_cognito_provided_values": "UseCognitoProvidedValues", + "user_pool_id": "UserPoolId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go b/internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go new file mode 100644 index 000000000..0f139af8f --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_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 cognito_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCognitoManagedLoginBrandingDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSCognitoManagedLoginBrandingDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/connect/task_template_resource_gen.go b/internal/aws/connect/task_template_resource_gen.go index 287456163..cce4cb8e8 100644 --- a/internal/aws/connect/task_template_resource_gen.go +++ b/internal/aws/connect/task_template_resource_gen.go @@ -502,7 +502,9 @@ func taskTemplateResource(ctx context.Context) (resource.Resource, error) { // "DATE_TIME", // "BOOLEAN", // "SINGLE_SELECT", - // "EMAIL" + // "EMAIL", + // "EXPIRY_DURATION", + // "SELF_ASSIGN" // ], // "type": "string" // } @@ -594,6 +596,8 @@ func taskTemplateResource(ctx context.Context) (resource.Resource, error) { "BOOLEAN", "SINGLE_SELECT", "EMAIL", + "EXPIRY_DURATION", + "SELF_ASSIGN", ), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ diff --git a/internal/aws/connect/task_template_singular_data_source_gen.go b/internal/aws/connect/task_template_singular_data_source_gen.go index 6126189ba..024600ed2 100644 --- a/internal/aws/connect/task_template_singular_data_source_gen.go +++ b/internal/aws/connect/task_template_singular_data_source_gen.go @@ -367,7 +367,9 @@ func taskTemplateDataSource(ctx context.Context) (datasource.DataSource, error) // "DATE_TIME", // "BOOLEAN", // "SINGLE_SELECT", - // "EMAIL" + // "EMAIL", + // "EXPIRY_DURATION", + // "SELF_ASSIGN" // ], // "type": "string" // } diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go new file mode 100644 index 000000000..106d55ed3 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_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 ec2 + +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_ec2_vpc_block_public_access_exclusions", vPCBlockPublicAccessExclusionsDataSource) +} + +// vPCBlockPublicAccessExclusionsDataSource returns the Terraform awscc_ec2_vpc_block_public_access_exclusions data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionsDataSource(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::EC2::VPCBlockPublicAccessExclusion", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusions") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go new file mode 100644 index 000000000..d1576b1f4 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_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 ec2_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusionsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusions", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go new file mode 100644 index 000000000..afbf6d1f8 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go @@ -0,0 +1,211 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-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_ec2_vpc_block_public_access_exclusion", vPCBlockPublicAccessExclusionResource) +} + +// vPCBlockPublicAccessExclusionResource returns the Terraform awscc_ec2_vpc_block_public_access_exclusion resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExclusionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the exclusion", + // "type": "string" + // } + "exclusion_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the exclusion", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayExclusionMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + // "enum": [ + // "allow-bidirectional", + // "allow-egress" + // ], + // "type": "string" + // } + "internet_gateway_exclusion_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "allow-bidirectional", + "allow-egress", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: SubnetId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the subnet. Required only if you don't specify VpcId", + // "type": "string" + // } + "subnet_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the subnet. Required only if you don't specify VpcId", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VpcId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + // "type": "string" + // } + "vpc_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the vpc. Required only if you don't specify SubnetId.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusion") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "exclusion_id": "ExclusionId", + "internet_gateway_exclusion_mode": "InternetGatewayExclusionMode", + "key": "Key", + "subnet_id": "SubnetId", + "tags": "Tags", + "value": "Value", + "vpc_id": "VpcId", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go new file mode 100644 index 000000000..5a0d1ec85 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_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 ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusion_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go new file mode 100644 index 000000000..857d9dd07 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go @@ -0,0 +1,156 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_vpc_block_public_access_exclusion", vPCBlockPublicAccessExclusionDataSource) +} + +// vPCBlockPublicAccessExclusionDataSource returns the Terraform awscc_ec2_vpc_block_public_access_exclusion data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExclusionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the exclusion", + // "type": "string" + // } + "exclusion_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the exclusion", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayExclusionMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + // "enum": [ + // "allow-bidirectional", + // "allow-egress" + // ], + // "type": "string" + // } + "internet_gateway_exclusion_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubnetId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the subnet. Required only if you don't specify VpcId", + // "type": "string" + // } + "subnet_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the subnet. Required only if you don't specify VpcId", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + // "type": "string" + // } + "vpc_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the vpc. Required only if you don't specify SubnetId.", + 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::EC2::VPCBlockPublicAccessExclusion", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusion") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "exclusion_id": "ExclusionId", + "internet_gateway_exclusion_mode": "InternetGatewayExclusionMode", + "key": "Key", + "subnet_id": "SubnetId", + "tags": "Tags", + "value": "Value", + "vpc_id": "VpcId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go new file mode 100644 index 000000000..0f09b81dd --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_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 ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusionDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2VPCBlockPublicAccessExclusionDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go b/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go new file mode 100644 index 000000000..07783f59b --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go @@ -0,0 +1,101 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_ec2_vpc_block_public_access_options", vPCBlockPublicAccessOptionsResource) +} + +// vPCBlockPublicAccessOptionsResource returns the Terraform awscc_ec2_vpc_block_public_access_options resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessOptions resource. +func vPCBlockPublicAccessOptionsResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier for the specified AWS account.", + // "type": "string" + // } + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier for the specified AWS account.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayBlockMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + // "enum": [ + // "block-bidirectional", + // "block-ingress" + // ], + // "type": "string" + // } + "internet_gateway_block_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "block-bidirectional", + "block-ingress", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessOptions").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_options") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "internet_gateway_block_mode": "InternetGatewayBlockMode", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go b/internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go new file mode 100644 index 000000000..256841a9d --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_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 ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessOptions_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go new file mode 100644 index 000000000..e087d041b --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go @@ -0,0 +1,79 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_vpc_block_public_access_options", vPCBlockPublicAccessOptionsDataSource) +} + +// vPCBlockPublicAccessOptionsDataSource returns the Terraform awscc_ec2_vpc_block_public_access_options data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessOptions resource. +func vPCBlockPublicAccessOptionsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier for the specified AWS account.", + // "type": "string" + // } + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier for the specified AWS account.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayBlockMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + // "enum": [ + // "block-bidirectional", + // "block-ingress" + // ], + // "type": "string" + // } + "internet_gateway_block_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + 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::EC2::VPCBlockPublicAccessOptions", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessOptions").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_options") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "internet_gateway_block_mode": "InternetGatewayBlockMode", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go new file mode 100644 index 000000000..dde52220a --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_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 ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessOptionsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2VPCBlockPublicAccessOptionsDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/eks/cluster_resource_gen.go b/internal/aws/eks/cluster_resource_gen.go index 9b3297bee..11dcd973d 100644 --- a/internal/aws/eks/cluster_resource_gen.go +++ b/internal/aws/eks/cluster_resource_gen.go @@ -152,6 +152,71 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // }, + // "NodePools": { + // "description": "Todo: add description", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array" + // }, + // "NodeRoleArn": { + // "description": "Todo: add description", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NodePools + "node_pools": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NodeRoleArn + "node_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: EncryptionConfig // CloudFormation resource type schema: // @@ -278,6 +343,17 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "The Kubernetes network configuration for the cluster.", // "properties": { + // "ElasticLoadBalancing": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // }, // "IpFamily": { // "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", // "enum": [ @@ -299,6 +375,26 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // } "kubernetes_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ElasticLoadBalancing + "elastic_load_balancing": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: IpFamily "ip_family": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", @@ -565,6 +661,137 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: RemoteNetworkConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + // "properties": { + // "RemoteNodeNetworks": { + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote node CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "RemotePodNetworks": { + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote pod CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "RemoteNodeNetworks" + // ], + // "type": "object" + // } + "remote_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RemoteNodeNetworks + "remote_node_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote node CIDRs.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RemotePodNetworks + "remote_pod_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote pod CIDRs.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ResourcesVpcConfig // CloudFormation resource type schema: // @@ -682,6 +909,57 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: StorageConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "BlockStorage": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "storage_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BlockStorage + "block_storage": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -872,14 +1150,18 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "access_config": "AccessConfig", "arn": "Arn", "authentication_mode": "AuthenticationMode", + "block_storage": "BlockStorage", "bootstrap_cluster_creator_admin_permissions": "BootstrapClusterCreatorAdminPermissions", "bootstrap_self_managed_addons": "BootstrapSelfManagedAddons", "certificate_authority_data": "CertificateAuthorityData", + "cidrs": "Cidrs", "cluster_id": "Id", "cluster_logging": "ClusterLogging", "cluster_security_group_id": "ClusterSecurityGroupId", + "compute_config": "ComputeConfig", "control_plane_instance_type": "ControlPlaneInstanceType", "control_plane_placement": "ControlPlanePlacement", + "elastic_load_balancing": "ElasticLoadBalancing", "enabled": "Enabled", "enabled_types": "EnabledTypes", "encryption_config": "EncryptionConfig", @@ -894,17 +1176,23 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "kubernetes_network_config": "KubernetesNetworkConfig", "logging": "Logging", "name": "Name", + "node_pools": "NodePools", + "node_role_arn": "NodeRoleArn", "open_id_connect_issuer_url": "OpenIdConnectIssuerUrl", "outpost_arns": "OutpostArns", "outpost_config": "OutpostConfig", "provider": "Provider", "public_access_cidrs": "PublicAccessCidrs", + "remote_network_config": "RemoteNetworkConfig", + "remote_node_networks": "RemoteNodeNetworks", + "remote_pod_networks": "RemotePodNetworks", "resources": "Resources", "resources_vpc_config": "ResourcesVpcConfig", "role_arn": "RoleArn", "security_group_ids": "SecurityGroupIds", "service_ipv_4_cidr": "ServiceIpv4Cidr", "service_ipv_6_cidr": "ServiceIpv6Cidr", + "storage_config": "StorageConfig", "subnet_ids": "SubnetIds", "support_type": "SupportType", "tags": "Tags", diff --git a/internal/aws/eks/cluster_singular_data_source_gen.go b/internal/aws/eks/cluster_singular_data_source_gen.go index e5bbb4fe9..6287cf35c 100644 --- a/internal/aws/eks/cluster_singular_data_source_gen.go +++ b/internal/aws/eks/cluster_singular_data_source_gen.go @@ -106,6 +106,54 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // }, + // "NodePools": { + // "description": "Todo: add description", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array" + // }, + // "NodeRoleArn": { + // "description": "Todo: add description", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodePools + "node_pools": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodeRoleArn + "node_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: EncryptionConfig // CloudFormation resource type schema: // @@ -204,6 +252,17 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "The Kubernetes network configuration for the cluster.", // "properties": { + // "ElasticLoadBalancing": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // }, // "IpFamily": { // "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", // "enum": [ @@ -225,6 +284,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // } "kubernetes_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ElasticLoadBalancing + "elastic_load_balancing": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: IpFamily "ip_family": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", @@ -403,6 +474,103 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: RemoteNetworkConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + // "properties": { + // "RemoteNodeNetworks": { + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote node CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "RemotePodNetworks": { + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote pod CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "RemoteNodeNetworks" + // ], + // "type": "object" + // } + "remote_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RemoteNodeNetworks + "remote_node_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote node CIDRs.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RemotePodNetworks + "remote_pod_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote pod CIDRs.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ResourcesVpcConfig // CloudFormation resource type schema: // @@ -496,6 +664,45 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: StorageConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "BlockStorage": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "storage_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BlockStorage + "block_storage": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -632,14 +839,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "access_config": "AccessConfig", "arn": "Arn", "authentication_mode": "AuthenticationMode", + "block_storage": "BlockStorage", "bootstrap_cluster_creator_admin_permissions": "BootstrapClusterCreatorAdminPermissions", "bootstrap_self_managed_addons": "BootstrapSelfManagedAddons", "certificate_authority_data": "CertificateAuthorityData", + "cidrs": "Cidrs", "cluster_id": "Id", "cluster_logging": "ClusterLogging", "cluster_security_group_id": "ClusterSecurityGroupId", + "compute_config": "ComputeConfig", "control_plane_instance_type": "ControlPlaneInstanceType", "control_plane_placement": "ControlPlanePlacement", + "elastic_load_balancing": "ElasticLoadBalancing", "enabled": "Enabled", "enabled_types": "EnabledTypes", "encryption_config": "EncryptionConfig", @@ -654,17 +865,23 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "kubernetes_network_config": "KubernetesNetworkConfig", "logging": "Logging", "name": "Name", + "node_pools": "NodePools", + "node_role_arn": "NodeRoleArn", "open_id_connect_issuer_url": "OpenIdConnectIssuerUrl", "outpost_arns": "OutpostArns", "outpost_config": "OutpostConfig", "provider": "Provider", "public_access_cidrs": "PublicAccessCidrs", + "remote_network_config": "RemoteNetworkConfig", + "remote_node_networks": "RemoteNodeNetworks", + "remote_pod_networks": "RemotePodNetworks", "resources": "Resources", "resources_vpc_config": "ResourcesVpcConfig", "role_arn": "RoleArn", "security_group_ids": "SecurityGroupIds", "service_ipv_4_cidr": "ServiceIpv4Cidr", "service_ipv_6_cidr": "ServiceIpv6Cidr", + "storage_config": "StorageConfig", "subnet_ids": "SubnetIds", "support_type": "SupportType", "tags": "Tags", diff --git a/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go b/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go index 69263c172..595d758a5 100644 --- a/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go +++ b/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go @@ -10,7 +10,9 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" @@ -61,11 +63,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", // "type": "string" // } "enable_prefix_for_ipv_6_source_nat": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -91,11 +93,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + // "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", // "type": "string" // } "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + Description: "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -128,7 +130,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", // "properties": { // "Key": { - // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", // "type": "string" // }, // "Value": { @@ -146,7 +148,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -199,6 +201,43 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: MinimumLoadBalancerCapacity + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "CapacityUnits": { + // "type": "integer" + // } + // }, + // "required": [ + // "CapacityUnits" + // ], + // "type": "object" + // } + "minimum_load_balancer_capacity": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CapacityUnits + "capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + fwvalidators.NotNullInt64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.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: Name // CloudFormation resource type schema: // @@ -219,11 +258,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", // "type": "string" // } "scheme": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -256,7 +295,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -275,7 +314,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "SourceNatIpv6Prefix": { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", // "type": "string" // }, // "SubnetId": { @@ -323,7 +362,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: SourceNatIpv6Prefix "source_nat_ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -344,7 +383,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ @@ -355,7 +394,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", // "insertionOrder": false, // "items": { // "type": "string" @@ -365,7 +404,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // } "subnets": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ @@ -473,27 +512,29 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "allocation_id": "AllocationId", "canonical_hosted_zone_id": "CanonicalHostedZoneID", + "capacity_units": "CapacityUnits", "dns_name": "DNSName", "enable_prefix_for_ipv_6_source_nat": "EnablePrefixForIpv6SourceNat", "enforce_security_group_inbound_rules_on_private_link_traffic": "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic", - "i_pv_6_address": "IPv6Address", - "ip_address_type": "IpAddressType", - "key": "Key", - "load_balancer_arn": "LoadBalancerArn", - "load_balancer_attributes": "LoadBalancerAttributes", - "load_balancer_full_name": "LoadBalancerFullName", - "load_balancer_name": "LoadBalancerName", - "name": "Name", - "private_i_pv_4_address": "PrivateIPv4Address", - "scheme": "Scheme", - "security_groups": "SecurityGroups", - "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", - "subnet_id": "SubnetId", - "subnet_mappings": "SubnetMappings", - "subnets": "Subnets", - "tags": "Tags", - "type": "Type", - "value": "Value", + "i_pv_6_address": "IPv6Address", + "ip_address_type": "IpAddressType", + "key": "Key", + "load_balancer_arn": "LoadBalancerArn", + "load_balancer_attributes": "LoadBalancerAttributes", + "load_balancer_full_name": "LoadBalancerFullName", + "load_balancer_name": "LoadBalancerName", + "minimum_load_balancer_capacity": "MinimumLoadBalancerCapacity", + "name": "Name", + "private_i_pv_4_address": "PrivateIPv4Address", + "scheme": "Scheme", + "security_groups": "SecurityGroups", + "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", + "subnet_id": "SubnetId", + "subnet_mappings": "SubnetMappings", + "subnets": "Subnets", + "tags": "Tags", + "type": "Type", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(30).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go b/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go index a7b9d7195..ba863a52f 100644 --- a/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go +++ b/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go @@ -49,11 +49,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", // "type": "string" // } "enable_prefix_for_ipv_6_source_nat": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", Computed: true, }, /*END ATTRIBUTE*/ // Property: EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic @@ -71,11 +71,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + // "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", // "type": "string" // } "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + Description: "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", Computed: true, }, /*END ATTRIBUTE*/ // Property: LoadBalancerArn @@ -101,7 +101,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", // "properties": { // "Key": { - // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", // "type": "string" // }, // "Value": { @@ -119,7 +119,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Value @@ -154,6 +154,32 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) Description: "", Computed: true, }, /*END ATTRIBUTE*/ + // Property: MinimumLoadBalancerCapacity + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "CapacityUnits": { + // "type": "integer" + // } + // }, + // "required": [ + // "CapacityUnits" + // ], + // "type": "object" + // } + "minimum_load_balancer_capacity": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CapacityUnits + "capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -169,11 +195,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", // "type": "string" // } "scheme": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SecurityGroups @@ -197,7 +223,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -216,7 +242,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "string" // }, // "SourceNatIpv6Prefix": { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", // "type": "string" // }, // "SubnetId": { @@ -252,7 +278,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ // Property: SourceNatIpv6Prefix "source_nat_ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SubnetId @@ -262,14 +288,14 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Subnets // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", // "insertionOrder": false, // "items": { // "type": "string" @@ -279,7 +305,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // } "subnets": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags @@ -357,27 +383,29 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithAttributeNameMap(map[string]string{ "allocation_id": "AllocationId", "canonical_hosted_zone_id": "CanonicalHostedZoneID", + "capacity_units": "CapacityUnits", "dns_name": "DNSName", "enable_prefix_for_ipv_6_source_nat": "EnablePrefixForIpv6SourceNat", "enforce_security_group_inbound_rules_on_private_link_traffic": "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic", - "i_pv_6_address": "IPv6Address", - "ip_address_type": "IpAddressType", - "key": "Key", - "load_balancer_arn": "LoadBalancerArn", - "load_balancer_attributes": "LoadBalancerAttributes", - "load_balancer_full_name": "LoadBalancerFullName", - "load_balancer_name": "LoadBalancerName", - "name": "Name", - "private_i_pv_4_address": "PrivateIPv4Address", - "scheme": "Scheme", - "security_groups": "SecurityGroups", - "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", - "subnet_id": "SubnetId", - "subnet_mappings": "SubnetMappings", - "subnets": "Subnets", - "tags": "Tags", - "type": "Type", - "value": "Value", + "i_pv_6_address": "IPv6Address", + "ip_address_type": "IpAddressType", + "key": "Key", + "load_balancer_arn": "LoadBalancerArn", + "load_balancer_attributes": "LoadBalancerAttributes", + "load_balancer_full_name": "LoadBalancerFullName", + "load_balancer_name": "LoadBalancerName", + "minimum_load_balancer_capacity": "MinimumLoadBalancerCapacity", + "name": "Name", + "private_i_pv_4_address": "PrivateIPv4Address", + "scheme": "Scheme", + "security_groups": "SecurityGroups", + "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", + "subnet_id": "SubnetId", + "subnet_mappings": "SubnetMappings", + "subnets": "Subnets", + "tags": "Tags", + "type": "Type", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/iot/domain_configuration_resource_gen.go b/internal/aws/iot/domain_configuration_resource_gen.go index 4a90fdc40..f9f030849 100644 --- a/internal/aws/iot/domain_configuration_resource_gen.go +++ b/internal/aws/iot/domain_configuration_resource_gen.go @@ -303,6 +303,17 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) // "properties": { // "EnableOCSPCheck": { // "type": "boolean" + // }, + // "OcspAuthorizedResponderArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + // "type": "string" + // }, + // "OcspLambdaArn": { + // "maxLength": 170, + // "minLength": 1, + // "type": "string" // } // }, // "type": "object" @@ -317,6 +328,29 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: OcspAuthorizedResponderArn + "ocsp_authorized_responder_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OcspLambdaArn + "ocsp_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 170), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Optional: true, Computed: true, @@ -546,6 +580,8 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) "domain_type": "DomainType", "enable_ocsp_check": "EnableOCSPCheck", "key": "Key", + "ocsp_authorized_responder_arn": "OcspAuthorizedResponderArn", + "ocsp_lambda_arn": "OcspLambdaArn", "security_policy": "SecurityPolicy", "server_certificate_arn": "ServerCertificateArn", "server_certificate_arns": "ServerCertificateArns", diff --git a/internal/aws/iot/domain_configuration_singular_data_source_gen.go b/internal/aws/iot/domain_configuration_singular_data_source_gen.go index 8a07fbfcc..1a82dca6e 100644 --- a/internal/aws/iot/domain_configuration_singular_data_source_gen.go +++ b/internal/aws/iot/domain_configuration_singular_data_source_gen.go @@ -194,6 +194,17 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, // "properties": { // "EnableOCSPCheck": { // "type": "boolean" + // }, + // "OcspAuthorizedResponderArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + // "type": "string" + // }, + // "OcspLambdaArn": { + // "maxLength": 170, + // "minLength": 1, + // "type": "string" // } // }, // "type": "object" @@ -204,6 +215,14 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, "enable_ocsp_check": schema.BoolAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: OcspAuthorizedResponderArn + "ocsp_authorized_responder_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OcspLambdaArn + "ocsp_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ @@ -371,6 +390,8 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, "domain_type": "DomainType", "enable_ocsp_check": "EnableOCSPCheck", "key": "Key", + "ocsp_authorized_responder_arn": "OcspAuthorizedResponderArn", + "ocsp_lambda_arn": "OcspLambdaArn", "security_policy": "SecurityPolicy", "server_certificate_arn": "ServerCertificateArn", "server_certificate_arns": "ServerCertificateArns", diff --git a/internal/aws/organizations/policy_resource_gen.go b/internal/aws/organizations/policy_resource_gen.go index 5f953b4e3..6949272ab 100644 --- a/internal/aws/organizations/policy_resource_gen.go +++ b/internal/aws/organizations/policy_resource_gen.go @@ -239,18 +239,19 @@ func policyResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", // "enum": [ // "SERVICE_CONTROL_POLICY", // "AISERVICES_OPT_OUT_POLICY", // "BACKUP_POLICY", // "TAG_POLICY", - // "CHATBOT_POLICY" + // "CHATBOT_POLICY", + // "RESOURCE_CONTROL_POLICY" // ], // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( @@ -259,6 +260,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { "BACKUP_POLICY", "TAG_POLICY", "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/organizations/policy_singular_data_source_gen.go b/internal/aws/organizations/policy_singular_data_source_gen.go index cd92eba51..6846a6ce7 100644 --- a/internal/aws/organizations/policy_singular_data_source_gen.go +++ b/internal/aws/organizations/policy_singular_data_source_gen.go @@ -174,18 +174,19 @@ func policyDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", // "enum": [ // "SERVICE_CONTROL_POLICY", // "AISERVICES_OPT_OUT_POLICY", // "BACKUP_POLICY", // "TAG_POLICY", - // "CHATBOT_POLICY" + // "CHATBOT_POLICY", + // "RESOURCE_CONTROL_POLICY" // ], // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/sagemaker/inference_component_resource_gen.go b/internal/aws/sagemaker/inference_component_resource_gen.go index a529e66c2..88f741548 100644 --- a/internal/aws/sagemaker/inference_component_resource_gen.go +++ b/internal/aws/sagemaker/inference_component_resource_gen.go @@ -227,7 +227,11 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The runtime config for the inference component", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Specification // CloudFormation resource type schema: @@ -236,6 +240,12 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // "additionalProperties": false, // "description": "The specification for the inference component", // "properties": { + // "BaseInferenceComponentName": { + // "description": "The name of the base inference component", + // "maxLength": 63, + // "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + // "type": "string" + // }, // "ComputeResourceRequirements": { // "additionalProperties": false, // "description": "", @@ -335,13 +345,23 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // "type": "object" // } // }, - // "required": [ - // "ComputeResourceRequirements" - // ], // "type": "object" // } "specification": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BaseInferenceComponentName + "base_inference_component_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the base inference component", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(63), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ComputeResourceRequirements "compute_resource_requirements": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -391,7 +411,11 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Container "container": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -598,11 +622,15 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // } "variant_name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The name of the endpoint variant the inference component is associated with", - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthAtMost(63), stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"), ""), }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -627,6 +655,7 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "artifact_url": "ArtifactUrl", + "base_inference_component_name": "BaseInferenceComponentName", "compute_resource_requirements": "ComputeResourceRequirements", "container": "Container", "container_startup_health_check_timeout_in_seconds": "ContainerStartupHealthCheckTimeoutInSeconds", diff --git a/internal/aws/sagemaker/inference_component_singular_data_source_gen.go b/internal/aws/sagemaker/inference_component_singular_data_source_gen.go index 8131e3025..380776b7a 100644 --- a/internal/aws/sagemaker/inference_component_singular_data_source_gen.go +++ b/internal/aws/sagemaker/inference_component_singular_data_source_gen.go @@ -174,6 +174,12 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e // "additionalProperties": false, // "description": "The specification for the inference component", // "properties": { + // "BaseInferenceComponentName": { + // "description": "The name of the base inference component", + // "maxLength": 63, + // "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + // "type": "string" + // }, // "ComputeResourceRequirements": { // "additionalProperties": false, // "description": "", @@ -273,13 +279,15 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e // "type": "object" // } // }, - // "required": [ - // "ComputeResourceRequirements" - // ], // "type": "object" // } "specification": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BaseInferenceComponentName + "base_inference_component_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the base inference component", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ComputeResourceRequirements "compute_resource_requirements": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -451,6 +459,7 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "artifact_url": "ArtifactUrl", + "base_inference_component_name": "BaseInferenceComponentName", "compute_resource_requirements": "ComputeResourceRequirements", "container": "Container", "container_startup_health_check_timeout_in_seconds": "ContainerStartupHealthCheckTimeoutInSeconds", diff --git a/internal/aws/wisdom/knowledge_base_resource_gen.go b/internal/aws/wisdom/knowledge_base_resource_gen.go index 2ea67309d..53f9e1153 100644 --- a/internal/aws/wisdom/knowledge_base_resource_gen.go +++ b/internal/aws/wisdom/knowledge_base_resource_gen.go @@ -9,10 +9,12 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/float64validator" "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" "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" @@ -85,7 +87,8 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "EXTERNAL", // "CUSTOM", - // "MESSAGE_TEMPLATES" + // "MESSAGE_TEMPLATES", + // "MANAGED" // ], // "type": "string" // } @@ -96,6 +99,7 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { "EXTERNAL", "CUSTOM", "MESSAGE_TEMPLATES", + "MANAGED", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -192,14 +196,6 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "additionalProperties": false, - // "oneOf": [ - // { - // "required": [ - // "AppIntegrations" - // ] - // } - // ], // "properties": { // "AppIntegrations": { // "additionalProperties": false, @@ -226,6 +222,79 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // "AppIntegrationArn" // ], // "type": "object" + // }, + // "ManagedSourceConfiguration": { + // "properties": { + // "WebCrawlerConfiguration": { + // "additionalProperties": false, + // "properties": { + // "CrawlerLimits": { + // "additionalProperties": false, + // "properties": { + // "RateLimit": { + // "maximum": 3000, + // "minimum": 1, + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ExclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "InclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "Scope": { + // "enum": [ + // "HOST_ONLY", + // "SUBDOMAINS" + // ], + // "type": "string" + // }, + // "UrlConfiguration": { + // "additionalProperties": false, + // "properties": { + // "SeedUrls": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Url": { + // "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "maxItems": 100, + // "minItems": 1, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "UrlConfiguration" + // ], + // "type": "object" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -271,6 +340,130 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ManagedSourceConfiguration + "managed_source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: WebCrawlerConfiguration + "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CrawlerLimits + "crawler_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RateLimit + "rate_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 3000.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.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: ExclusionFilters + "exclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 25), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 1000), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InclusionFilters + "inclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 25), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 1000), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Scope + "scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "HOST_ONLY", + "SUBDOMAINS", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UrlConfiguration + "url_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SeedUrls + "seed_urls": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Url + "url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^https?://[A-Za-z0-9][^\\s]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 100), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*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, @@ -344,6 +537,389 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { setplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: VectorIngestionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "ChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ChunkingStrategy": { + // "enum": [ + // "FIXED_SIZE", + // "NONE", + // "HIERARCHICAL", + // "SEMANTIC" + // ], + // "type": "string" + // }, + // "FixedSizeChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // }, + // "OverlapPercentage": { + // "maximum": 99, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "OverlapPercentage" + // ], + // "type": "object" + // }, + // "HierarchicalChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "LevelConfigurations": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "maximum": 8192, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens" + // ], + // "type": "object" + // }, + // "maxItems": 2, + // "minItems": 2, + // "type": "array" + // }, + // "OverlapTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "LevelConfigurations", + // "OverlapTokens" + // ], + // "type": "object" + // }, + // "SemanticChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BreakpointPercentileThreshold": { + // "maximum": 99, + // "minimum": 50, + // "type": "number" + // }, + // "BufferSize": { + // "maximum": 1, + // "minimum": 0, + // "type": "number" + // }, + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "BufferSize", + // "BreakpointPercentileThreshold" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ChunkingStrategy" + // ], + // "type": "object" + // }, + // "ParsingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BedrockFoundationModelConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ModelArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$", + // "type": "string" + // }, + // "ParsingPrompt": { + // "additionalProperties": false, + // "properties": { + // "ParsingPromptText": { + // "maxLength": 10000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ParsingPromptText" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ModelArn" + // ], + // "type": "object" + // }, + // "ParsingStrategy": { + // "enum": [ + // "BEDROCK_FOUNDATION_MODEL" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ParsingStrategy" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "vector_ingestion_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingConfiguration + "chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingStrategy + "chunking_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FixedSizeChunkingConfiguration + "fixed_size_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OverlapPercentage + "overlap_percentage": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 99.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.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: HierarchicalChunkingConfiguration + "hierarchical_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelConfigurations + "level_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 8192.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(2, 2), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OverlapTokens + "overlap_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.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: SemanticChunkingConfiguration + "semantic_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BreakpointPercentileThreshold + "breakpoint_percentile_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(50.000000, 99.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BufferSize + "buffer_size": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.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: ParsingConfiguration + "parsing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BedrockFoundationModelConfiguration + "bedrock_foundation_model_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ModelArn + "model_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ParsingPrompt + "parsing_prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParsingPromptText + "parsing_prompt_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 10000), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ParsingStrategy + "parsing_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "BEDROCK_FOUNDATION_MODEL", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ // Corresponds to CloudFormation primaryIdentifier. @@ -366,22 +942,50 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::Wisdom::KnowledgeBase").WithTerraformTypeName("awscc_wisdom_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "app_integration_arn": "AppIntegrationArn", - "app_integrations": "AppIntegrations", - "description": "Description", - "key": "Key", - "kms_key_id": "KmsKeyId", - "knowledge_base_arn": "KnowledgeBaseArn", - "knowledge_base_id": "KnowledgeBaseId", - "knowledge_base_type": "KnowledgeBaseType", - "name": "Name", - "object_fields": "ObjectFields", - "rendering_configuration": "RenderingConfiguration", - "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", - "source_configuration": "SourceConfiguration", - "tags": "Tags", - "template_uri": "TemplateUri", - "value": "Value", + "app_integration_arn": "AppIntegrationArn", + "app_integrations": "AppIntegrations", + "bedrock_foundation_model_configuration": "BedrockFoundationModelConfiguration", + "breakpoint_percentile_threshold": "BreakpointPercentileThreshold", + "buffer_size": "BufferSize", + "chunking_configuration": "ChunkingConfiguration", + "chunking_strategy": "ChunkingStrategy", + "crawler_limits": "CrawlerLimits", + "description": "Description", + "exclusion_filters": "ExclusionFilters", + "fixed_size_chunking_configuration": "FixedSizeChunkingConfiguration", + "hierarchical_chunking_configuration": "HierarchicalChunkingConfiguration", + "inclusion_filters": "InclusionFilters", + "key": "Key", + "kms_key_id": "KmsKeyId", + "knowledge_base_arn": "KnowledgeBaseArn", + "knowledge_base_id": "KnowledgeBaseId", + "knowledge_base_type": "KnowledgeBaseType", + "level_configurations": "LevelConfigurations", + "managed_source_configuration": "ManagedSourceConfiguration", + "max_tokens": "MaxTokens", + "model_arn": "ModelArn", + "name": "Name", + "object_fields": "ObjectFields", + "overlap_percentage": "OverlapPercentage", + "overlap_tokens": "OverlapTokens", + "parsing_configuration": "ParsingConfiguration", + "parsing_prompt": "ParsingPrompt", + "parsing_prompt_text": "ParsingPromptText", + "parsing_strategy": "ParsingStrategy", + "rate_limit": "RateLimit", + "rendering_configuration": "RenderingConfiguration", + "scope": "Scope", + "seed_urls": "SeedUrls", + "semantic_chunking_configuration": "SemanticChunkingConfiguration", + "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", + "source_configuration": "SourceConfiguration", + "tags": "Tags", + "template_uri": "TemplateUri", + "url": "Url", + "url_configuration": "UrlConfiguration", + "value": "Value", + "vector_ingestion_configuration": "VectorIngestionConfiguration", + "web_crawler_configuration": "WebCrawlerConfiguration", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go b/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go index 765ef9f3f..84cda314d 100644 --- a/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go +++ b/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go @@ -61,7 +61,8 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // "enum": [ // "EXTERNAL", // "CUSTOM", - // "MESSAGE_TEMPLATES" + // "MESSAGE_TEMPLATES", + // "MANAGED" // ], // "type": "string" // } @@ -129,14 +130,6 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "additionalProperties": false, - // "oneOf": [ - // { - // "required": [ - // "AppIntegrations" - // ] - // } - // ], // "properties": { // "AppIntegrations": { // "additionalProperties": false, @@ -163,6 +156,79 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // "AppIntegrationArn" // ], // "type": "object" + // }, + // "ManagedSourceConfiguration": { + // "properties": { + // "WebCrawlerConfiguration": { + // "additionalProperties": false, + // "properties": { + // "CrawlerLimits": { + // "additionalProperties": false, + // "properties": { + // "RateLimit": { + // "maximum": 3000, + // "minimum": 1, + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ExclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "InclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "Scope": { + // "enum": [ + // "HOST_ONLY", + // "SUBDOMAINS" + // ], + // "type": "string" + // }, + // "UrlConfiguration": { + // "additionalProperties": false, + // "properties": { + // "SeedUrls": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Url": { + // "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "maxItems": 100, + // "minItems": 1, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "UrlConfiguration" + // ], + // "type": "object" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -184,6 +250,60 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: ManagedSourceConfiguration + "managed_source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: WebCrawlerConfiguration + "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CrawlerLimits + "crawler_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RateLimit + "rate_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ExclusionFilters + "exclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InclusionFilters + "inclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Scope + "scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UrlConfiguration + "url_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SeedUrls + "seed_urls": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Url + "url": 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*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ @@ -231,6 +351,253 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END NESTED OBJECT*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: VectorIngestionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "ChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ChunkingStrategy": { + // "enum": [ + // "FIXED_SIZE", + // "NONE", + // "HIERARCHICAL", + // "SEMANTIC" + // ], + // "type": "string" + // }, + // "FixedSizeChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // }, + // "OverlapPercentage": { + // "maximum": 99, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "OverlapPercentage" + // ], + // "type": "object" + // }, + // "HierarchicalChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "LevelConfigurations": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "maximum": 8192, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens" + // ], + // "type": "object" + // }, + // "maxItems": 2, + // "minItems": 2, + // "type": "array" + // }, + // "OverlapTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "LevelConfigurations", + // "OverlapTokens" + // ], + // "type": "object" + // }, + // "SemanticChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BreakpointPercentileThreshold": { + // "maximum": 99, + // "minimum": 50, + // "type": "number" + // }, + // "BufferSize": { + // "maximum": 1, + // "minimum": 0, + // "type": "number" + // }, + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "BufferSize", + // "BreakpointPercentileThreshold" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ChunkingStrategy" + // ], + // "type": "object" + // }, + // "ParsingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BedrockFoundationModelConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ModelArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$", + // "type": "string" + // }, + // "ParsingPrompt": { + // "additionalProperties": false, + // "properties": { + // "ParsingPromptText": { + // "maxLength": 10000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ParsingPromptText" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ModelArn" + // ], + // "type": "object" + // }, + // "ParsingStrategy": { + // "enum": [ + // "BEDROCK_FOUNDATION_MODEL" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ParsingStrategy" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "vector_ingestion_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingConfiguration + "chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingStrategy + "chunking_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FixedSizeChunkingConfiguration + "fixed_size_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OverlapPercentage + "overlap_percentage": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchicalChunkingConfiguration + "hierarchical_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelConfigurations + "level_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OverlapTokens + "overlap_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SemanticChunkingConfiguration + "semantic_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BreakpointPercentileThreshold + "breakpoint_percentile_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BufferSize + "buffer_size": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingConfiguration + "parsing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BedrockFoundationModelConfiguration + "bedrock_foundation_model_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ModelArn + "model_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingPrompt + "parsing_prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParsingPromptText + "parsing_prompt_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingStrategy + "parsing_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ attributes["id"] = schema.StringAttribute{ @@ -248,22 +615,50 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithCloudFormationTypeName("AWS::Wisdom::KnowledgeBase").WithTerraformTypeName("awscc_wisdom_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "app_integration_arn": "AppIntegrationArn", - "app_integrations": "AppIntegrations", - "description": "Description", - "key": "Key", - "kms_key_id": "KmsKeyId", - "knowledge_base_arn": "KnowledgeBaseArn", - "knowledge_base_id": "KnowledgeBaseId", - "knowledge_base_type": "KnowledgeBaseType", - "name": "Name", - "object_fields": "ObjectFields", - "rendering_configuration": "RenderingConfiguration", - "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", - "source_configuration": "SourceConfiguration", - "tags": "Tags", - "template_uri": "TemplateUri", - "value": "Value", + "app_integration_arn": "AppIntegrationArn", + "app_integrations": "AppIntegrations", + "bedrock_foundation_model_configuration": "BedrockFoundationModelConfiguration", + "breakpoint_percentile_threshold": "BreakpointPercentileThreshold", + "buffer_size": "BufferSize", + "chunking_configuration": "ChunkingConfiguration", + "chunking_strategy": "ChunkingStrategy", + "crawler_limits": "CrawlerLimits", + "description": "Description", + "exclusion_filters": "ExclusionFilters", + "fixed_size_chunking_configuration": "FixedSizeChunkingConfiguration", + "hierarchical_chunking_configuration": "HierarchicalChunkingConfiguration", + "inclusion_filters": "InclusionFilters", + "key": "Key", + "kms_key_id": "KmsKeyId", + "knowledge_base_arn": "KnowledgeBaseArn", + "knowledge_base_id": "KnowledgeBaseId", + "knowledge_base_type": "KnowledgeBaseType", + "level_configurations": "LevelConfigurations", + "managed_source_configuration": "ManagedSourceConfiguration", + "max_tokens": "MaxTokens", + "model_arn": "ModelArn", + "name": "Name", + "object_fields": "ObjectFields", + "overlap_percentage": "OverlapPercentage", + "overlap_tokens": "OverlapTokens", + "parsing_configuration": "ParsingConfiguration", + "parsing_prompt": "ParsingPrompt", + "parsing_prompt_text": "ParsingPromptText", + "parsing_strategy": "ParsingStrategy", + "rate_limit": "RateLimit", + "rendering_configuration": "RenderingConfiguration", + "scope": "Scope", + "seed_urls": "SeedUrls", + "semantic_chunking_configuration": "SemanticChunkingConfiguration", + "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", + "source_configuration": "SourceConfiguration", + "tags": "Tags", + "template_uri": "TemplateUri", + "url": "Url", + "url_configuration": "UrlConfiguration", + "value": "Value", + "vector_ingestion_configuration": "VectorIngestionConfiguration", + "web_crawler_configuration": "WebCrawlerConfiguration", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 025f16fe8..0e21e8e69 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -10,7 +10,7 @@ meta_schema { path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json" } -# 1074 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 1103 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -974,6 +974,11 @@ resource_schema "aws_cognito_log_delivery_configuration" { 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" @@ -1789,6 +1794,15 @@ 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 diff --git a/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl b/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl new file mode 100644 index 000000000..14061aa66 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl @@ -0,0 +1,4687 @@ +# 1103 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping_v2" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMappingV2" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_domain_name_access_association" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameAccessAssociation" +} + +resource_schema "aws_apigateway_domain_name_v2" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameV2" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_channel_namespace" { + cloudformation_type_name = "AWS::AppSync::ChannelNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_application_inference_profile" { + cloudformation_type_name = "AWS::Bedrock::ApplicationInferenceProfile" +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_custom_action" { + cloudformation_type_name = "AWS::Chatbot::CustomAction" +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_guard_hook" { + cloudformation_type_name = "AWS::CloudFormation::GuardHook" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_lambda_hook" { + cloudformation_type_name = "AWS::CloudFormation::LambdaHook" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_dashboard" { + cloudformation_type_name = "AWS::CloudTrail::Dashboard" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_email_address" { + cloudformation_type_name = "AWS::Connect::EmailAddress" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_connectcampaignsv2_campaign" { + cloudformation_type_name = "AWS::ConnectCampaignsV2::Campaign" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_segment_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::SegmentDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_security_group_vpc_association" { + cloudformation_type_name = "AWS::EC2::SecurityGroupVpcAssociation" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_fleet" { + cloudformation_type_name = "AWS::GameLift::ContainerFleet" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_ingest_configuration" { + cloudformation_type_name = "AWS::IVS::IngestConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_state_template" { + cloudformation_type_name = "AWS::IoTFleetWise::StateTemplate" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_deployment" { + cloudformation_type_name = "AWS::M2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_shard_group" { + cloudformation_type_name = "AWS::RDS::DBShardGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_rbin_rule" { + cloudformation_type_name = "AWS::Rbin::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_resourcegroups_tag_sync_task" { + cloudformation_type_name = "AWS::ResourceGroups::TagSyncTask" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_user" { + cloudformation_type_name = "AWS::Transfer::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent" { + cloudformation_type_name = "AWS::Wisdom::AIAgent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent_version" { + cloudformation_type_name = "AWS::Wisdom::AIAgentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt_version" { + cloudformation_type_name = "AWS::Wisdom::AIPromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_wisdom_message_template" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_message_template_version" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplateVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_data_protection_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::DataProtectionSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/generators/schema/main.go b/internal/provider/generators/schema/main.go index 6f8f0c45f..657ccc424 100644 --- a/internal/provider/generators/schema/main.go +++ b/internal/provider/generators/schema/main.go @@ -522,7 +522,7 @@ func (g *Generator) GenerateResourceImportExamples(packageName, filename string, for _, v := range resources { tmplData, err := shared.GenerateTemplateData(g.UI(), v.CloudFormationTypeSchemaFile, shared.ResourceType, v.TerraformResourceType, v.GeneratedCodePackageName) if err != nil { - return err + return fmt.Errorf("%s: %w", v.CloudFormationTypeSchemaFile, err) } r := &ResourceImportData{ diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 4731cc594..6f14faf2f 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -1004,6 +1004,11 @@ "identifier": ["Id"], "path": "./examples/resources/awscc_cognito_log_delivery_configuration/import.sh" }, + { + "resource": "awscc_cognito_managed_login_branding", + "identifier": ["UserPoolId","ManagedLoginBrandingId"], + "path": "./examples/resources/awscc_cognito_managed_login_branding/import.sh" + }, { "resource": "awscc_cognito_user_pool_client", "identifier": ["UserPoolId","ClientId"], @@ -1859,6 +1864,16 @@ "identifier": ["VpcId"], "path": "./examples/resources/awscc_ec2_vpc/import.sh" }, + { + "resource": "awscc_ec2_vpc_block_public_access_exclusion", + "identifier": ["ExclusionId"], + "path": "./examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh" + }, + { + "resource": "awscc_ec2_vpc_block_public_access_options", + "identifier": ["AccountId"], + "path": "./examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh" + }, { "resource": "awscc_ec2_vpc_cidr_block", "identifier": ["Id","VpcId"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index ecd3779eb..4d4f45734 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -259,6 +259,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_route_tables -cftype AWS::EC2::TransitGatewayRouteTable -package ec2 ../aws/ec2/transit_gateway_route_table_plural_data_source_gen.go ../aws/ec2/transit_gateway_route_table_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachments -cftype AWS::EC2::TransitGatewayVpcAttachment -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpcs -cftype AWS::EC2::VPC -package ec2 ../aws/ec2/vpc_plural_data_source_gen.go ../aws/ec2/vpc_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_exclusions -cftype AWS::EC2::VPCBlockPublicAccessExclusion -package ec2 ../aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go ../aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpcdhcp_options_associations -cftype AWS::EC2::VPCDHCPOptionsAssociation -package ec2 ../aws/ec2/vpcdhcp_options_association_plural_data_source_gen.go ../aws/ec2/vpcdhcp_options_association_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_endpoints -cftype AWS::EC2::VPCEndpoint -package ec2 ../aws/ec2/vpc_endpoint_plural_data_source_gen.go ../aws/ec2/vpc_endpoint_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_endpoint_connection_notifications -cftype AWS::EC2::VPCEndpointConnectionNotification -package ec2 ../aws/ec2/vpc_endpoint_connection_notification_plural_data_source_gen.go ../aws/ec2/vpc_endpoint_connection_notification_plural_data_source_gen_test.go diff --git a/internal/provider/resources.go b/internal/provider/resources.go index f1502e65d..cff0eb037 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -203,6 +203,7 @@ //go:generate go run generators/resource/main.go -resource awscc_cognito_identity_pool_principal_tag -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolPrincipalTag.json -package cognito -- ../aws/cognito/identity_pool_principal_tag_resource_gen.go ../aws/cognito/identity_pool_principal_tag_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_identity_pool_role_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolRoleAttachment.json -package cognito -- ../aws/cognito/identity_pool_role_attachment_resource_gen.go ../aws/cognito/identity_pool_role_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_log_delivery_configuration -cfschema ../service/cloudformation/schemas/AWS_Cognito_LogDeliveryConfiguration.json -package cognito -- ../aws/cognito/log_delivery_configuration_resource_gen.go ../aws/cognito/log_delivery_configuration_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_cognito_managed_login_branding -cfschema ../service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json -package cognito -- ../aws/cognito/managed_login_branding_resource_gen.go ../aws/cognito/managed_login_branding_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_client -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolClient.json -package cognito -- ../aws/cognito/user_pool_client_resource_gen.go ../aws/cognito/user_pool_client_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_group -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolGroup.json -package cognito -- ../aws/cognito/user_pool_group_resource_gen.go ../aws/cognito/user_pool_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_identity_provider -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json -package cognito -- ../aws/cognito/user_pool_identity_provider_resource_gen.go ../aws/cognito/user_pool_identity_provider_resource_gen_test.go @@ -374,6 +375,8 @@ //go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_route_table_propagation -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayRouteTablePropagation.json -package ec2 -- ../aws/ec2/transit_gateway_route_table_propagation_resource_gen.go ../aws/ec2/transit_gateway_route_table_propagation_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 -- ../aws/ec2/transit_gateway_vpc_attachment_resource_gen.go ../aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc -cfschema ../service/cloudformation/schemas/AWS_EC2_VPC.json -package ec2 -- ../aws/ec2/vpc_resource_gen.go ../aws/ec2/vpc_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_block_public_access_exclusion -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json -package ec2 -- ../aws/ec2/vpc_block_public_access_exclusion_resource_gen.go ../aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_block_public_access_options -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json -package ec2 -- ../aws/ec2/vpc_block_public_access_options_resource_gen.go ../aws/ec2/vpc_block_public_access_options_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_cidr_block -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json -package ec2 -- ../aws/ec2/vpc_cidr_block_resource_gen.go ../aws/ec2/vpc_cidr_block_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpcdhcp_options_association -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCDHCPOptionsAssociation.json -package ec2 -- ../aws/ec2/vpcdhcp_options_association_resource_gen.go ../aws/ec2/vpcdhcp_options_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json -package ec2 -- ../aws/ec2/vpc_endpoint_resource_gen.go ../aws/ec2/vpc_endpoint_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 599e39b9d..75fa0e77c 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -203,6 +203,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_identity_pool_principal_tag -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolPrincipalTag.json -package cognito ../aws/cognito/identity_pool_principal_tag_singular_data_source_gen.go ../aws/cognito/identity_pool_principal_tag_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_identity_pool_role_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolRoleAttachment.json -package cognito ../aws/cognito/identity_pool_role_attachment_singular_data_source_gen.go ../aws/cognito/identity_pool_role_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_log_delivery_configuration -cfschema ../service/cloudformation/schemas/AWS_Cognito_LogDeliveryConfiguration.json -package cognito ../aws/cognito/log_delivery_configuration_singular_data_source_gen.go ../aws/cognito/log_delivery_configuration_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_managed_login_branding -cfschema ../service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json -package cognito ../aws/cognito/managed_login_branding_singular_data_source_gen.go ../aws/cognito/managed_login_branding_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_client -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolClient.json -package cognito ../aws/cognito/user_pool_client_singular_data_source_gen.go ../aws/cognito/user_pool_client_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_group -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolGroup.json -package cognito ../aws/cognito/user_pool_group_singular_data_source_gen.go ../aws/cognito/user_pool_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_identity_provider -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json -package cognito ../aws/cognito/user_pool_identity_provider_singular_data_source_gen.go ../aws/cognito/user_pool_identity_provider_singular_data_source_gen_test.go @@ -374,6 +375,8 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_route_table_propagation -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayRouteTablePropagation.json -package ec2 ../aws/ec2/transit_gateway_route_table_propagation_singular_data_source_gen.go ../aws/ec2/transit_gateway_route_table_propagation_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc -cfschema ../service/cloudformation/schemas/AWS_EC2_VPC.json -package ec2 ../aws/ec2/vpc_singular_data_source_gen.go ../aws/ec2/vpc_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_exclusion -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json -package ec2 ../aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go ../aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_options -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json -package ec2 ../aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go ../aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_cidr_block -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json -package ec2 ../aws/ec2/vpc_cidr_block_singular_data_source_gen.go ../aws/ec2/vpc_cidr_block_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpcdhcp_options_association -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCDHCPOptionsAssociation.json -package ec2 ../aws/ec2/vpcdhcp_options_association_singular_data_source_gen.go ../aws/ec2/vpcdhcp_options_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json -package ec2 ../aws/ec2/vpc_endpoint_singular_data_source_gen.go ../aws/ec2/vpc_endpoint_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json index 157b6508a..3ecf3566a 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json @@ -93,6 +93,9 @@ }, "Namespace": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [] @@ -300,6 +303,9 @@ }, "Unit": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [ @@ -344,6 +350,9 @@ }, "Expression": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json b/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json index 12ac02deb..1e4d0ad0d 100644 --- a/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json @@ -96,6 +96,15 @@ "items": { "$ref": "#/definitions/Tag" } + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$" + } } }, "required": [ @@ -122,13 +131,16 @@ "permissions": [ "chatbot:CreateMicrosoftTeamsChannelConfiguration", "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", "iam:PassRole", "iam:CreateServiceLinkedRole" ] }, "read": { "permissions": [ - "chatbot:GetMicrosoftTeamsChannelConfiguration" + "chatbot:GetMicrosoftTeamsChannelConfiguration", + "chatbot:ListAssociations" ] }, "update": { @@ -137,18 +149,24 @@ "chatbot:TagResource", "chatbot:UntagResource", "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", "iam:PassRole" ] }, "delete": { "permissions": [ "chatbot:GetMicrosoftTeamsChannelConfiguration", - "chatbot:DeleteMicrosoftTeamsChannelConfiguration" + "chatbot:DeleteMicrosoftTeamsChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ] }, "list": { "permissions": [ - "chatbot:ListMicrosoftTeamsChannelConfigurations" + "chatbot:ListMicrosoftTeamsChannelConfigurations", + "chatbot:ListAssociations" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json b/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json index 4fb91f196..2ab76726a 100644 --- a/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json @@ -89,6 +89,15 @@ "description": "Enables use of a user role requirement in your chat configuration", "type": "boolean", "default": false + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$" + } } }, "required": [ @@ -113,13 +122,16 @@ "permissions": [ "chatbot:CreateSlackChannelConfiguration", "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", "iam:PassRole", "iam:CreateServiceLinkedRole" ] }, "read": { "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" ] }, "update": { @@ -128,17 +140,23 @@ "chatbot:TagResource", "chatbot:UntagResource", "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", "iam:PassRole" ] }, "delete": { "permissions": [ - "chatbot:DeleteSlackChannelConfiguration" + "chatbot:DeleteSlackChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ] }, "list": { "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json b/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json new file mode 100644 index 000000000..4a17d51b8 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json @@ -0,0 +1,165 @@ +{ + "typeName": "AWS::Cognito::ManagedLoginBranding", + "description": "Resource Type definition for AWS::Cognito::ManagedLoginBranding", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "ManagedLoginBrandingIdType": { + "type": "string", + "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" + }, + "CategoryType": { + "type": "string", + "enum": [ + "FAVICON_ICO", + "FAVICON_SVG", + "EMAIL_GRAPHIC", + "SMS_GRAPHIC", + "AUTH_APP_GRAPHIC", + "PASSWORD_GRAPHIC", + "PASSKEY_GRAPHIC", + "PAGE_HEADER_LOGO", + "PAGE_HEADER_BACKGROUND", + "PAGE_FOOTER_LOGO", + "PAGE_FOOTER_BACKGROUND", + "PAGE_BACKGROUND", + "FORM_BACKGROUND", + "FORM_LOGO", + "IDP_BUTTON_ICON" + ] + }, + "ColorModeType": { + "type": "string", + "enum": [ + "LIGHT", + "DARK", + "DYNAMIC" + ] + }, + "ExtensionType": { + "type": "string", + "enum": [ + "ICO", + "JPEG", + "PNG", + "SVG", + "WEBP" + ] + }, + "BytesType": { + "type": "string", + "maxLength": 1000000 + }, + "ResourceIdType": { + "type": "string", + "pattern": "^[\\w\\- ]+$", + "minLength": 1, + "maxLength": 40 + }, + "AssetType": { + "type": "object", + "properties": { + "Category": { + "$ref": "#/definitions/CategoryType" + }, + "ColorMode": { + "$ref": "#/definitions/ColorModeType" + }, + "Extension": { + "$ref": "#/definitions/ExtensionType" + }, + "Bytes": { + "$ref": "#/definitions/BytesType" + }, + "ResourceId": { + "$ref": "#/definitions/ResourceIdType" + } + }, + "additionalProperties": false, + "required": [ + "Category", + "ColorMode", + "Extension" + ] + }, + "AssetList": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetType" + } + } + }, + "properties": { + "UserPoolId": { + "type": "string" + }, + "ClientId": { + "type": "string" + }, + "UseCognitoProvidedValues": { + "type": "boolean" + }, + "Settings": { + "type": "object" + }, + "Assets": { + "$ref": "#/definitions/AssetList" + }, + "ManagedLoginBrandingId": { + "$ref": "#/definitions/ManagedLoginBrandingIdType" + }, + "ReturnMergedResources": { + "type": "boolean" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "additionalProperties": false, + "required": [ + "UserPoolId" + ], + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "readOnlyProperties": [ + "/properties/ManagedLoginBrandingId" + ], + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ManagedLoginBrandingId" + ], + "writeOnlyProperties": [ + "/properties/ClientId", + "/properties/ReturnMergedResources" + ], + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "update": { + "permissions": [ + "cognito-idp:UpdateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteManagedLoginBranding" + ], + "timeoutInMinutes": 2 + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json b/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json index d73c10f0f..7d52d1b9d 100644 --- a/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json +++ b/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json @@ -1,549 +1,582 @@ { + "typeName": "AWS::Cognito::UserPool", + "description": "Definition of AWS::Cognito::UserPool Resource Type", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { - "permissions": [ - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource" - ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, + "cloudFormationSystemTags": false, "tagProperty": "/properties/UserPoolTags", - "cloudFormationSystemTags": false - }, - "propertyTransform": { - "/properties/Schema/*/Name": "'custom:' & '' & Name" - }, - "handlers": { - "read": { - "permissions": [ - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig" - ] - }, - "create": { - "permissions": [ - "cognito-idp:CreateUserPool", - "iam:PassRole", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:DescribeUserPool", - "kms:CreateGrant", - "iam:CreateServiceLinkedRole", - "cognito-idp:TagResource" - ], - "timeoutInMinutes": 2 - }, - "update": { - "permissions": [ - "cognito-idp:UpdateUserPool", - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:AddCustomAttributes", - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - }, - "list": { - "permissions": [ - "cognito-idp:ListUserPools" - ] - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteUserPool" - ], - "timeoutInMinutes": 2 - } + "permissions": [ + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource" + ] }, - "typeName": "AWS::Cognito::UserPool", - "readOnlyProperties": [ - "/properties/ProviderName", - "/properties/UserPoolId", - "/properties/ProviderURL", - "/properties/Arn" - ], - "description": "Definition of AWS::Cognito::UserPool Resource Type", - "writeOnlyProperties": [ - "/properties/EnabledMfas" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/UserPoolId" - ], "definitions": { - "Policies": { - "additionalProperties": false, - "type": "object", - "properties": { - "PasswordPolicy": { - "$ref": "#/definitions/PasswordPolicy" - } - } - }, - "VerificationMessageTemplate": { - "additionalProperties": false, + "PasswordPolicy": { "type": "object", "properties": { - "EmailMessageByLink": { - "type": "string" + "MinimumLength": { + "type": "integer" }, - "EmailMessage": { - "type": "string" + "RequireLowercase": { + "type": "boolean" }, - "SmsMessage": { - "type": "string" + "RequireNumbers": { + "type": "boolean" }, - "EmailSubject": { - "type": "string" + "RequireSymbols": { + "type": "boolean" }, - "DefaultEmailOption": { - "type": "string" + "RequireUppercase": { + "type": "boolean" }, - "EmailSubjectByLink": { - "type": "string" + "TemporaryPasswordValidityDays": { + "type": "integer" + }, + "PasswordHistorySize": { + "type": "integer" } - } + }, + "additionalProperties": false + }, + "SignInPolicy": { + "type": "object", + "properties": { + "AllowedFirstAuthFactors": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "Policies": { + "type": "object", + "properties": { + "PasswordPolicy": { + "$ref": "#/definitions/PasswordPolicy" + }, + "SignInPolicy": { + "$ref": "#/definitions/SignInPolicy" + } + }, + "additionalProperties": false }, "InviteMessageTemplate": { - "additionalProperties": false, "type": "object", "properties": { "EmailMessage": { "type": "string" }, - "SMSMessage": { + "EmailSubject": { "type": "string" }, - "EmailSubject": { + "SMSMessage": { "type": "string" } - } + }, + "additionalProperties": false }, - "NumberAttributeConstraints": { - "additionalProperties": false, + "RecoveryOption": { "type": "object", "properties": { - "MinValue": { + "Name": { "type": "string" }, - "MaxValue": { - "type": "string" + "Priority": { + "type": "integer" } - } + }, + "additionalProperties": false }, - "AdvancedSecurityAdditionalFlows": { - "additionalProperties": false, + "AccountRecoverySetting": { "type": "object", "properties": { - "CustomAuthMode": { - "type": "string" + "RecoveryMechanisms": { + "type": "array", + "items": { + "$ref": "#/definitions/RecoveryOption" + } } - } + }, + "additionalProperties": false }, "AdminCreateUserConfig": { - "additionalProperties": false, "type": "object", "properties": { + "AllowAdminCreateUserOnly": { + "type": "boolean" + }, "InviteMessageTemplate": { "$ref": "#/definitions/InviteMessageTemplate" }, "UnusedAccountValidityDays": { "type": "integer" - }, - "AllowAdminCreateUserOnly": { - "type": "boolean" } - } + }, + "additionalProperties": false }, - "UsernameConfiguration": { - "additionalProperties": false, + "DeviceConfiguration": { "type": "object", "properties": { - "CaseSensitive": { + "ChallengeRequiredOnNewDevice": { + "type": "boolean" + }, + "DeviceOnlyRememberedOnUserPrompt": { "type": "boolean" } - } + }, + "additionalProperties": false }, - "UserPoolAddOns": { - "additionalProperties": false, + "EmailConfiguration": { "type": "object", "properties": { - "AdvancedSecurityAdditionalFlows": { - "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" + "ReplyToEmailAddress": { + "type": "string" }, - "AdvancedSecurityMode": { + "SourceArn": { "type": "string" - } - } - }, - "RecoveryOption": { - "additionalProperties": false, - "type": "object", - "properties": { - "Priority": { - "type": "integer" }, - "Name": { + "From": { + "type": "string" + }, + "ConfigurationSet": { + "type": "string" + }, + "EmailSendingAccount": { "type": "string" } - } + }, + "additionalProperties": false }, - "StringAttributeConstraints": { - "additionalProperties": false, + "CustomEmailSender": { "type": "object", "properties": { - "MinLength": { + "LambdaVersion": { "type": "string" }, - "MaxLength": { + "LambdaArn": { "type": "string" } - } + }, + "additionalProperties": false }, - "UserAttributeUpdateSettings": { - "additionalProperties": false, + "CustomSMSSender": { "type": "object", "properties": { - "AttributesRequireVerificationBeforeUpdate": { - "type": "array", - "items": { - "type": "string" - } + "LambdaVersion": { + "type": "string" + }, + "LambdaArn": { + "type": "string" } }, - "required": [ - "AttributesRequireVerificationBeforeUpdate" - ] + "additionalProperties": false }, - "CustomSMSSender": { - "additionalProperties": false, + "PreTokenGenerationConfig": { "type": "object", "properties": { - "LambdaArn": { + "LambdaVersion": { "type": "string" }, - "LambdaVersion": { + "LambdaArn": { "type": "string" } - } + }, + "additionalProperties": false }, - "EmailConfiguration": { - "additionalProperties": false, + "LambdaConfig": { "type": "object", "properties": { - "ReplyToEmailAddress": { + "CreateAuthChallenge": { "type": "string" }, - "ConfigurationSet": { + "CustomMessage": { "type": "string" }, - "EmailSendingAccount": { + "DefineAuthChallenge": { "type": "string" }, - "SourceArn": { + "PostAuthentication": { "type": "string" }, - "From": { + "PostConfirmation": { "type": "string" - } - } - }, - "SmsConfiguration": { - "additionalProperties": false, - "type": "object", - "properties": { - "SnsRegion": { + }, + "PreAuthentication": { "type": "string" }, - "ExternalId": { + "PreSignUp": { "type": "string" }, - "SnsCallerArn": { + "VerifyAuthChallengeResponse": { "type": "string" - } - } - }, - "PasswordPolicy": { - "additionalProperties": false, - "type": "object", - "properties": { - "RequireNumbers": { - "type": "boolean" }, - "MinimumLength": { - "type": "integer" + "UserMigration": { + "type": "string" }, - "TemporaryPasswordValidityDays": { - "type": "integer" + "PreTokenGeneration": { + "type": "string" }, - "RequireUppercase": { - "type": "boolean" + "CustomEmailSender": { + "$ref": "#/definitions/CustomEmailSender" }, - "RequireLowercase": { - "type": "boolean" + "CustomSMSSender": { + "$ref": "#/definitions/CustomSMSSender" }, - "RequireSymbols": { - "type": "boolean" + "KMSKeyID": { + "type": "string" }, - "PasswordHistorySize": { - "type": "integer" + "PreTokenGenerationConfig": { + "$ref": "#/definitions/PreTokenGenerationConfig" } - } + }, + "additionalProperties": false }, - "PreTokenGenerationConfig": { - "additionalProperties": false, + "SmsConfiguration": { "type": "object", "properties": { - "LambdaArn": { + "ExternalId": { "type": "string" }, - "LambdaVersion": { + "SnsCallerArn": { + "type": "string" + }, + "SnsRegion": { "type": "string" } - } + }, + "additionalProperties": false }, - "CustomEmailSender": { - "additionalProperties": false, + "StringAttributeConstraints": { "type": "object", "properties": { - "LambdaArn": { + "MaxLength": { "type": "string" }, - "LambdaVersion": { + "MinLength": { "type": "string" } - } + }, + "additionalProperties": false }, - "LambdaConfig": { - "additionalProperties": false, + "NumberAttributeConstraints": { "type": "object", "properties": { - "CreateAuthChallenge": { - "type": "string" - }, - "PreSignUp": { - "type": "string" - }, - "KMSKeyID": { - "type": "string" - }, - "UserMigration": { - "type": "string" - }, - "PostAuthentication": { - "type": "string" - }, - "VerifyAuthChallengeResponse": { - "type": "string" - }, - "PreAuthentication": { - "type": "string" - }, - "DefineAuthChallenge": { - "type": "string" - }, - "PreTokenGeneration": { - "type": "string" - }, - "CustomSMSSender": { - "$ref": "#/definitions/CustomSMSSender" - }, - "PostConfirmation": { + "MaxValue": { "type": "string" }, - "CustomMessage": { + "MinValue": { "type": "string" - }, - "PreTokenGenerationConfig": { - "$ref": "#/definitions/PreTokenGenerationConfig" - }, - "CustomEmailSender": { - "$ref": "#/definitions/CustomEmailSender" } - } + }, + "additionalProperties": false }, "SchemaAttribute": { - "additionalProperties": false, "type": "object", "properties": { + "AttributeDataType": { + "type": "string" + }, "DeveloperOnlyAttribute": { "type": "boolean" }, "Mutable": { "type": "boolean" }, - "AttributeDataType": { + "Name": { "type": "string" }, + "NumberAttributeConstraints": { + "$ref": "#/definitions/NumberAttributeConstraints" + }, "StringAttributeConstraints": { "$ref": "#/definitions/StringAttributeConstraints" }, "Required": { "type": "boolean" - }, - "NumberAttributeConstraints": { - "$ref": "#/definitions/NumberAttributeConstraints" - }, - "Name": { - "type": "string" } - } + }, + "additionalProperties": false }, - "DeviceConfiguration": { - "additionalProperties": false, + "UsernameConfiguration": { "type": "object", "properties": { - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - }, - "ChallengeRequiredOnNewDevice": { + "CaseSensitive": { "type": "boolean" } - } + }, + "additionalProperties": false }, - "AccountRecoverySetting": { - "additionalProperties": false, + "UserAttributeUpdateSettings": { "type": "object", "properties": { - "RecoveryMechanisms": { + "AttributesRequireVerificationBeforeUpdate": { "type": "array", "items": { - "$ref": "#/definitions/RecoveryOption" + "type": "string" } } - } - } - }, - "properties": { - "UserPoolTags": { - "patternProperties": { - "": { + }, + "required": [ + "AttributesRequireVerificationBeforeUpdate" + ], + "additionalProperties": false + }, + "VerificationMessageTemplate": { + "type": "object", + "properties": { + "DefaultEmailOption": { + "type": "string" + }, + "EmailMessage": { + "type": "string" + }, + "EmailMessageByLink": { + "type": "string" + }, + "EmailSubject": { + "type": "string" + }, + "EmailSubjectByLink": { + "type": "string" + }, + "SmsMessage": { "type": "string" } }, - "additionalProperties": false, - "type": "object" + "additionalProperties": false + }, + "AdvancedSecurityAdditionalFlows": { + "type": "object", + "properties": { + "CustomAuthMode": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UserPoolAddOns": { + "type": "object", + "properties": { + "AdvancedSecurityMode": { + "type": "string" + }, + "AdvancedSecurityAdditionalFlows": { + "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" + } + }, + "additionalProperties": false + } + }, + "properties": { + "UserPoolName": { + "type": "string", + "minLength": 1, + "maxLength": 128 }, "Policies": { "$ref": "#/definitions/Policies" }, - "Schema": { - "type": "array", - "items": { - "$ref": "#/definitions/SchemaAttribute" - } + "AccountRecoverySetting": { + "$ref": "#/definitions/AccountRecoverySetting" }, "AdminCreateUserConfig": { "$ref": "#/definitions/AdminCreateUserConfig" }, - "UsernameConfiguration": { - "$ref": "#/definitions/UsernameConfiguration" + "AliasAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "UserPoolName": { - "minLength": 1, - "type": "string", - "maxLength": 128 + "UsernameAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "SmsVerificationMessage": { - "minLength": 6, - "type": "string", - "maxLength": 140 + "AutoVerifiedAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "UserAttributeUpdateSettings": { - "$ref": "#/definitions/UserAttributeUpdateSettings" + "DeviceConfiguration": { + "$ref": "#/definitions/DeviceConfiguration" }, "EmailConfiguration": { "$ref": "#/definitions/EmailConfiguration" }, - "SmsConfiguration": { - "$ref": "#/definitions/SmsConfiguration" + "EmailVerificationMessage": { + "type": "string", + "minLength": 6, + "maxLength": 20000 }, "EmailVerificationSubject": { - "minLength": 1, "type": "string", - "maxLength": 140 - }, - "EmailAuthenticationSubject": { "minLength": 1, - "type": "string", "maxLength": 140 }, - "AccountRecoverySetting": { - "$ref": "#/definitions/AccountRecoverySetting" - }, - "VerificationMessageTemplate": { - "$ref": "#/definitions/VerificationMessageTemplate" - }, - "ProviderURL": { + "DeletionProtection": { "type": "string" }, + "LambdaConfig": { + "$ref": "#/definitions/LambdaConfig" + }, "MfaConfiguration": { "type": "string" }, - "DeletionProtection": { - "type": "string" + "EnabledMfas": { + "type": "array", + "items": { + "type": "string" + } }, "SmsAuthenticationMessage": { - "minLength": 6, "type": "string", + "minLength": 6, "maxLength": 140 }, - "UserPoolAddOns": { - "$ref": "#/definitions/UserPoolAddOns" + "EmailAuthenticationMessage": { + "type": "string", + "minLength": 6, + "maxLength": 20000 }, - "ProviderName": { - "type": "string" + "EmailAuthenticationSubject": { + "type": "string", + "minLength": 1, + "maxLength": 140 }, - "UserPoolId": { - "type": "string" + "SmsConfiguration": { + "$ref": "#/definitions/SmsConfiguration" }, - "EmailAuthenticationMessage": { + "SmsVerificationMessage": { + "type": "string", "minLength": 6, + "maxLength": 140 + }, + "WebAuthnRelyingPartyID": { "type": "string", - "maxLength": 20000 + "minLength": 1, + "maxLength": 63 }, - "AliasAttributes": { - "type": "array", - "items": { - "type": "string" - } + "WebAuthnUserVerification": { + "type": "string", + "minLength": 1, + "maxLength": 9 }, - "EnabledMfas": { + "Schema": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/SchemaAttribute" } }, - "LambdaConfig": { - "$ref": "#/definitions/LambdaConfig" + "UsernameConfiguration": { + "$ref": "#/definitions/UsernameConfiguration" }, - "Arn": { + "UserAttributeUpdateSettings": { + "$ref": "#/definitions/UserAttributeUpdateSettings" + }, + "UserPoolTags": { + "type": "object", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + }, + "VerificationMessageTemplate": { + "$ref": "#/definitions/VerificationMessageTemplate" + }, + "UserPoolAddOns": { + "$ref": "#/definitions/UserPoolAddOns" + }, + "ProviderName": { "type": "string" }, - "UsernameAttributes": { - "type": "array", - "items": { - "type": "string" - } + "ProviderURL": { + "type": "string" }, - "AutoVerifiedAttributes": { - "type": "array", - "items": { - "type": "string" - } + "Arn": { + "type": "string" }, - "DeviceConfiguration": { - "$ref": "#/definitions/DeviceConfiguration" + "UserPoolId": { + "type": "string" }, - "EmailVerificationMessage": { - "minLength": 6, + "UserPoolTier": { "type": "string", - "maxLength": 20000 + "enum": [ + "LITE", + "ESSENTIALS", + "PLUS" + ] + } + }, + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/UserPoolId" + ], + "readOnlyProperties": [ + "/properties/ProviderName", + "/properties/UserPoolId", + "/properties/ProviderURL", + "/properties/Arn" + ], + "writeOnlyProperties": [ + "/properties/EnabledMfas" + ], + "propertyTransform": { + "/properties/Schema/*/Name": "'custom:' & '' & Name" + }, + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateUserPool", + "iam:PassRole", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:DescribeUserPool", + "kms:CreateGrant", + "iam:CreateServiceLinkedRole", + "cognito-idp:TagResource" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateUserPool", + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:AddCustomAttributes", + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteUserPool" + ], + "timeoutInMinutes": 2 + }, + "list": { + "permissions": [ + "cognito-idp:ListUserPools" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json b/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json index 11c99a2ed..41fa78912 100644 --- a/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json @@ -26,7 +26,9 @@ "DATE_TIME", "BOOLEAN", "SINGLE_SELECT", - "EMAIL" + "EMAIL", + "EXPIRY_DURATION", + "SELF_ASSIGN" ] }, "FieldIdentifier": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json b/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json index 65397083b..7efd4be5b 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json @@ -42,7 +42,8 @@ "handlers": { "create": { "permissions": [ - "ec2:AssociateEnclaveCertificateIamRole" + "ec2:AssociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" ] }, "read": { @@ -52,7 +53,8 @@ }, "delete": { "permissions": [ - "ec2:DisassociateEnclaveCertificateIamRole" + "ec2:DisassociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json new file mode 100644 index 000000000..325d6d7e3 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json @@ -0,0 +1,131 @@ +{ + "typeName": "AWS::EC2::VPCBlockPublicAccessExclusion", + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessexclusion.git", + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "ExclusionId": { + "type": "string", + "description": "The ID of the exclusion" + }, + "InternetGatewayExclusionMode": { + "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + "type": "string", + "enum": [ + "allow-bidirectional", + "allow-egress" + ] + }, + "VpcId": { + "type": "string", + "description": "The ID of the vpc. Required only if you don't specify SubnetId." + }, + "SubnetId": { + "type": "string", + "description": "The ID of the subnet. Required only if you don't specify VpcId" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "VpcId" + ] + }, + { + "required": [ + "SubnetId" + ] + } + ], + "required": [ + "InternetGatewayExclusionMode" + ], + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/SubnetId" + ], + "readOnlyProperties": [ + "/properties/ExclusionId" + ], + "primaryIdentifier": [ + "/properties/ExclusionId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:CreateVpcBlockPublicAccessExclusion", + "ec2:CreateTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:ModifyVpcBlockPublicAccessExclusion", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json new file mode 100644 index 000000000..a5063a045 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json @@ -0,0 +1,60 @@ +{ + "typeName": "AWS::EC2::VPCBlockPublicAccessOptions", + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessoptions.git", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "properties": { + "InternetGatewayBlockMode": { + "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + "type": "string", + "enum": [ + "block-bidirectional", + "block-ingress" + ] + }, + "AccountId": { + "type": "string", + "description": "The identifier for the specified AWS account." + } + }, + "additionalProperties": false, + "required": [ + "InternetGatewayBlockMode" + ], + "readOnlyProperties": [ + "/properties/AccountId" + ], + "primaryIdentifier": [ + "/properties/AccountId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json index 1aa45d2a8..28c43c2fa 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json @@ -1,192 +1,107 @@ { - "tagging": { - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": true - }, "typeName": "AWS::EKS::Cluster", - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Endpoint", - "/properties/CertificateAuthorityData", - "/properties/ClusterSecurityGroupId", - "/properties/EncryptionConfigKeyArn", - "/properties/OpenIdConnectIssuerUrl", - "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" - ], "description": "An object representing an Amazon EKS cluster.", - "createOnlyProperties": [ - "/properties/OutpostConfig", - "/properties/EncryptionConfig", - "/properties/KubernetesNetworkConfig", - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/Name", - "/properties/RoleArn", - "/properties/BootstrapSelfManagedAddons" - ], - "primaryIdentifier": [ - "/properties/Name" - ], - "required": [ - "RoleArn", - "ResourcesVpcConfig" - ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "handlers": { - "read": { - "permissions": [ - "eks:DescribeCluster" - ] - }, - "create": { - "permissions": [ - "eks:CreateCluster", - "eks:DescribeCluster", - "eks:TagResource", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:CreateServiceLinkedRole", - "iam:CreateInstanceProfile", - "iam:TagInstanceProfile", - "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile", - "iam:DeleteInstanceProfile", - "iam:RemoveRoleFromInstanceProfile", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "eks:UpdateClusterConfig", - "eks:UpdateClusterVersion", - "eks:DescribeCluster", - "eks:DescribeUpdate", - "eks:TagResource", - "eks:UntagResource" - ], - "timeoutInMinutes": 180 - }, - "list": { - "permissions": [ - "eks:ListClusters" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteCluster", - "eks:DescribeCluster" - ] - } - }, - "writeOnlyProperties": [ - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/BootstrapSelfManagedAddons" - ], - "additionalProperties": false, "definitions": { - "Logging": { - "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", - "additionalProperties": false, + "Tag": { + "description": "A key-value pair to associate with a resource.", "type": "object", "properties": { - "ClusterLogging": { - "description": "The cluster control plane logging configuration for your cluster. ", - "$ref": "#/definitions/ClusterLogging" + "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 } - } - }, - "RemoteNodeNetworks": { - "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/RemoteNodeNetwork" - } - }, - "EnabledTypes": { - "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/LoggingTypeConfig" - } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false }, - "ControlPlanePlacement": { - "description": "Specify the placement group of the control plane machines for your cluster.", - "additionalProperties": false, + "Provider": { "type": "object", + "additionalProperties": false, "properties": { - "GroupName": { - "description": "Specify the placement group name of the control place machines for your cluster.", + "KeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", "type": "string" } } }, - "ZonalShiftConfig": { - "description": "The current zonal shift configuration to use for the cluster.", - "additionalProperties": false, + "EncryptionConfig": { + "description": "The encryption configuration for the cluster", "type": "object", "properties": { - "Enabled": { - "description": "Set this value to true to enable zonal shift for the cluster.", - "type": "boolean" + "Provider": { + "description": "The encryption provider for the cluster.", + "$ref": "#/definitions/Provider" + }, + "Resources": { + "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + } } - } + }, + "additionalProperties": false }, - "AccessConfig": { - "description": "An object representing the Access Config to use for the cluster.", - "additionalProperties": false, + "ResourcesVpcConfig": { + "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", "type": "object", + "additionalProperties": false, "properties": { - "AuthenticationMode": { - "description": "Specify the authentication mode that should be used to create your cluster.", - "type": "string", - "enum": [ - "CONFIG_MAP", - "API_AND_CONFIG_MAP", - "API" - ] + "EndpointPrivateAccess": { + "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", + "type": "boolean" }, - "BootstrapClusterCreatorAdminPermissions": { - "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", + "EndpointPublicAccess": { + "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", "type": "boolean" - } - } - }, - "EncryptionConfig": { - "description": "The encryption configuration for the cluster", - "additionalProperties": false, - "type": "object", - "properties": { - "Resources": { - "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", + }, + "PublicAccessCidrs": { + "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", + "type": "array", "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } + }, + "SecurityGroupIds": { + "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", "type": "array", + "insertionOrder": false, "items": { - "type": "string" + "type": "string", + "minItems": 1 } }, - "Provider": { - "description": "The encryption provider for the cluster.", - "$ref": "#/definitions/Provider" + "SubnetIds": { + "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } } - } + }, + "required": [ + "SubnetIds" + ] }, "LoggingTypeConfig": { "description": "Enabled Logging Type", - "additionalProperties": false, "type": "object", "properties": { "Type": { @@ -200,70 +115,133 @@ "scheduler" ] } + }, + "additionalProperties": false + }, + "EnabledTypes": { + "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoggingTypeConfig" } }, "ClusterLogging": { "description": "The cluster control plane logging configuration for your cluster. ", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "EnabledTypes": { "$ref": "#/definitions/EnabledTypes" } } }, - "KubernetesNetworkConfig": { - "description": "The Kubernetes network configuration for the cluster.", - "additionalProperties": false, + "Logging": { + "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", "type": "object", + "additionalProperties": false, "properties": { - "ServiceIpv4Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", - "type": "string" - }, - "ServiceIpv6Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from.", - "type": "string" - }, - "IpFamily": { - "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", - "type": "string", - "enum": [ - "ipv4", - "ipv6" - ] - } - } - }, - "Provider": { - "additionalProperties": false, - "type": "object", - "properties": { - "KeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", - "type": "string" + "ClusterLogging": { + "description": "The cluster control plane logging configuration for your cluster. ", + "$ref": "#/definitions/ClusterLogging" } } }, "RemoteNodeNetwork": { "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "additionalProperties": false, "type": "object", "properties": { "Cidrs": { "description": "Specifies the list of remote node CIDRs.", + "type": "array", "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } + } + }, + "additionalProperties": false, + "required": [ + "Cidrs" + ] + }, + "RemoteNodeNetworks": { + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemoteNodeNetwork" + } + }, + "RemotePodNetwork": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "type": "object", + "properties": { + "Cidrs": { + "description": "Specifies the list of remote pod CIDRs.", "type": "array", + "insertionOrder": false, "items": { - "minItems": 1, - "type": "string" + "type": "string", + "minItems": 1 } } }, + "additionalProperties": false, "required": [ "Cidrs" ] }, + "RemotePodNetworks": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemotePodNetwork" + } + }, + "RemoteNetworkConfig": { + "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + "additionalProperties": false, + "type": "object", + "properties": { + "RemoteNodeNetworks": { + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "$ref": "#/definitions/RemoteNodeNetworks" + }, + "RemotePodNetworks": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "$ref": "#/definitions/RemotePodNetworks" + } + }, + "required": [ + "RemoteNodeNetworks" + ] + }, + "ComputeConfig": { + "description": "Todo: add description", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + }, + "NodeRoleArn": { + "description": "Todo: add description", + "type": "string" + }, + "NodePools": { + "description": "Todo: add description", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + } + } + } + }, "BlockStorage": { "description": "Todo: add description", "additionalProperties": false, @@ -275,51 +253,65 @@ } } }, - "UpgradePolicy": { - "description": "An object representing the Upgrade Policy to use for the cluster.", + "StorageConfig": { + "description": "Todo: add description", "additionalProperties": false, "type": "object", "properties": { - "SupportType": { - "description": "Specify the support type for your cluster.", - "type": "string", - "enum": [ - "STANDARD", - "EXTENDED" - ] + "BlockStorage": { + "description": "Todo: add description", + "$ref": "#/definitions/BlockStorage" } } }, - "RemotePodNetworks": { - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/RemotePodNetwork" + "ElasticLoadBalancing": { + "description": "Todo: add description", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + } } }, - "Tag": { - "description": "A key-value pair to associate with a resource.", + "KubernetesNetworkConfig": { + "description": "The Kubernetes network configuration for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "Value": { - "minLength": 0, - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string", - "maxLength": 256 + "ServiceIpv4Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", + "type": "string" }, - "Key": { - "minLength": 1, - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "ServiceIpv6Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from.", + "type": "string" + }, + "IpFamily": { + "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", "type": "string", - "maxLength": 128 + "enum": [ + "ipv4", + "ipv6" + ] + }, + "ElasticLoadBalancing": { + "description": "Todo: add description", + "$ref": "#/definitions/ElasticLoadBalancing" } - }, - "required": [ - "Key", - "Value" - ] + } + }, + "ControlPlanePlacement": { + "description": "Specify the placement group of the control plane machines for your cluster.", + "type": "object", + "additionalProperties": false, + "properties": { + "GroupName": { + "description": "Specify the placement group name of the control place machines for your cluster.", + "type": "string" + } + } }, "OutpostConfig": { "description": "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", @@ -328,20 +320,20 @@ "properties": { "OutpostArns": { "description": "Specify one or more Arn(s) of Outpost(s) on which you would like to create your cluster.", - "insertionOrder": false, "type": "array", + "insertionOrder": false, "items": { - "minItems": 1, - "type": "string" + "type": "string", + "minItems": 1 } }, - "ControlPlanePlacement": { - "description": "Specify the placement group of the control plane machines for your cluster.", - "$ref": "#/definitions/ControlPlanePlacement" - }, "ControlPlaneInstanceType": { "description": "Specify the Instance type of the machines that should be used to create your cluster.", "type": "string" + }, + "ControlPlanePlacement": { + "description": "Specify the placement group of the control plane machines for your cluster.", + "$ref": "#/definitions/ControlPlanePlacement" } }, "required": [ @@ -349,157 +341,243 @@ "ControlPlaneInstanceType" ] }, - "ResourcesVpcConfig": { - "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", + "AccessConfig": { + "description": "An object representing the Access Config to use for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "EndpointPublicAccess": { - "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", - "type": "boolean" - }, - "PublicAccessCidrs": { - "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } - }, - "EndpointPrivateAccess": { - "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", + "BootstrapClusterCreatorAdminPermissions": { + "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", "type": "boolean" }, - "SecurityGroupIds": { - "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } - }, - "SubnetIds": { - "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } + "AuthenticationMode": { + "description": "Specify the authentication mode that should be used to create your cluster.", + "type": "string", + "enum": [ + "CONFIG_MAP", + "API_AND_CONFIG_MAP", + "API" + ] } - }, - "required": [ - "SubnetIds" - ] + } }, - "RemotePodNetwork": { - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "UpgradePolicy": { + "description": "An object representing the Upgrade Policy to use for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "Cidrs": { - "description": "Specifies the list of remote pod CIDRs.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } + "SupportType": { + "description": "Specify the support type for your cluster.", + "type": "string", + "enum": [ + "STANDARD", + "EXTENDED" + ] } - }, - "required": [ - "Cidrs" - ] + } + }, + "ZonalShiftConfig": { + "description": "The current zonal shift configuration to use for the cluster.", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Set this value to true to enable zonal shift for the cluster.", + "type": "boolean" + } + } } }, "properties": { + "EncryptionConfig": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EncryptionConfig", + "maxItems": 1 + } + }, + "KubernetesNetworkConfig": { + "$ref": "#/definitions/KubernetesNetworkConfig" + }, "Logging": { "$ref": "#/definitions/Logging" }, - "BootstrapSelfManagedAddons": { - "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", - "type": "boolean" + "Name": { + "description": "The unique name to give to your cluster.", + "type": "string", + "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", + "minLength": 1, + "maxLength": 100 }, - "EncryptionConfigKeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", + "Id": { + "description": "The unique ID given to your cluster.", "type": "string" }, - "ZonalShiftConfig": { - "$ref": "#/definitions/ZonalShiftConfig" + "ResourcesVpcConfig": { + "$ref": "#/definitions/ResourcesVpcConfig" + }, + "OutpostConfig": { + "$ref": "#/definitions/OutpostConfig" }, "AccessConfig": { "$ref": "#/definitions/AccessConfig" }, - "CertificateAuthorityData": { - "description": "The certificate-authority-data for your cluster.", - "type": "string" + "UpgradePolicy": { + "$ref": "#/definitions/UpgradePolicy" }, - "EncryptionConfig": { - "insertionOrder": false, - "type": "array", - "items": { - "maxItems": 1, - "$ref": "#/definitions/EncryptionConfig" - } + "RemoteNetworkConfig": { + "$ref": "#/definitions/RemoteNetworkConfig" }, - "KubernetesNetworkConfig": { - "$ref": "#/definitions/KubernetesNetworkConfig" + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "StorageConfig": { + "$ref": "#/definitions/StorageConfig" }, "RoleArn": { "description": "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", "type": "string" }, - "Name": { - "minLength": 1, - "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", - "description": "The unique name to give to your cluster.", + "Version": { + "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", "type": "string", - "maxLength": 100 + "pattern": "1\\.\\d\\d" }, - "UpgradePolicy": { - "$ref": "#/definitions/UpgradePolicy" + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Arn": { + "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", + "type": "string" }, "Endpoint": { "description": "The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.", "type": "string" }, - "Version": { - "pattern": "1\\.\\d\\d", - "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", + "CertificateAuthorityData": { + "description": "The certificate-authority-data for your cluster.", "type": "string" }, "ClusterSecurityGroupId": { "description": "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", "type": "string" }, - "Id": { - "description": "The unique ID given to your cluster.", + "EncryptionConfigKeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", "type": "string" }, - "OutpostConfig": { - "$ref": "#/definitions/OutpostConfig" - }, - "Arn": { - "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", + "OpenIdConnectIssuerUrl": { + "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", "type": "string" }, - "ResourcesVpcConfig": { - "$ref": "#/definitions/ResourcesVpcConfig" + "BootstrapSelfManagedAddons": { + "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", + "type": "boolean" }, - "Tags": { - "uniqueItems": true, - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - } + "ZonalShiftConfig": { + "$ref": "#/definitions/ZonalShiftConfig" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ] + }, + "additionalProperties": false, + "required": [ + "RoleArn", + "ResourcesVpcConfig" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "createOnlyProperties": [ + "/properties/OutpostConfig", + "/properties/EncryptionConfig", + "/properties/KubernetesNetworkConfig", + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/Name", + "/properties/RoleArn", + "/properties/BootstrapSelfManagedAddons", + "/properties/RemoteNetworkConfig" + ], + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Endpoint", + "/properties/CertificateAuthorityData", + "/properties/ClusterSecurityGroupId", + "/properties/EncryptionConfigKeyArn", + "/properties/OpenIdConnectIssuerUrl", + "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" + ], + "writeOnlyProperties": [ + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/BootstrapSelfManagedAddons" + ], + "handlers": { + "create": { + "permissions": [ + "eks:CreateCluster", + "eks:DescribeCluster", + "eks:TagResource", + "eks:CreateAccessEntry", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:CreateServiceLinkedRole", + "iam:CreateInstanceProfile", + "iam:TagInstanceProfile", + "iam:AddRoleToInstanceProfile", + "iam:GetInstanceProfile", + "iam:DeleteInstanceProfile", + "iam:RemoveRoleFromInstanceProfile", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "kms:DescribeKey", + "kms:CreateGrant" + ] }, - "OpenIdConnectIssuerUrl": { - "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", - "type": "string" + "read": { + "permissions": [ + "eks:DescribeCluster" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "eks:UpdateClusterConfig", + "eks:UpdateClusterVersion", + "eks:DescribeCluster", + "eks:DescribeUpdate", + "eks:TagResource", + "eks:UntagResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "eks:DeleteCluster", + "eks:DescribeCluster" + ] + }, + "list": { + "permissions": [ + "eks:ListClusters" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json index a2500cd81..d6d44ad65 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json @@ -286,7 +286,7 @@ "type": "string" }, "Protocol": { - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.", + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP.", "type": "string" }, "StatusCode": { @@ -495,7 +495,7 @@ } }, "Port": { - "description": "The port on which the load balancer is listening. You cannot specify a port for a Gateway Load Balancer.", + "description": "The port on which the load balancer is listening. You can't specify a port for a Gateway Load Balancer.", "type": "integer" }, "Certificates": { @@ -507,7 +507,7 @@ } }, "Protocol": { - "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer.", + "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer.", "type": "string" } } diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json index 56a76019b..c38629eae 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json @@ -302,7 +302,7 @@ }, "Protocol": { "type": "string", - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP." + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP." }, "StatusCode": { "type": "string", diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json index dab799fea..b500b48ba 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json @@ -7,11 +7,11 @@ "properties": { "IpAddressType": { "type": "string", - "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses)." + "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses)." }, "EnablePrefixForIpv6SourceNat": { "type": "string", - "description": "" + "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``." }, "SecurityGroups": { "type": "array", @@ -32,9 +32,14 @@ "$ref": "#/definitions/LoadBalancerAttribute" } }, + "MinimumLoadBalancerCapacity": { + "type": "object", + "description": "", + "$ref": "#/definitions/MinimumLoadBalancerCapacity" + }, "Scheme": { "type": "string", - "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer." + "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer." }, "DNSName": { "type": "string", @@ -54,7 +59,7 @@ }, "Subnets": { "type": "array", - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", "uniqueItems": true, "insertionOrder": false, "items": { @@ -84,7 +89,7 @@ }, "SubnetMappings": { "type": "array", - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", "uniqueItems": true, "insertionOrder": false, "items": { @@ -97,6 +102,19 @@ } }, "definitions": { + "MinimumLoadBalancerCapacity": { + "type": "object", + "additionalProperties": false, + "properties": { + "CapacityUnits": { + "type": "integer" + } + }, + "required": [ + "CapacityUnits" + ], + "description": "" + }, "SubnetMapping": { "type": "object", "additionalProperties": false, @@ -119,7 +137,7 @@ }, "SourceNatIpv6Prefix": { "type": "string", - "description": "" + "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block." } }, "required": [ @@ -137,7 +155,7 @@ }, "Key": { "type": "string", - "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``." + "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``." } }, "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer." @@ -213,12 +231,14 @@ "permissions": [ "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeCapacityReservation", "elasticloadbalancing:DescribeTags" ] }, "update": { "permissions": [ "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:ModifyCapacityReservation", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", diff --git a/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json b/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json index d057f2f9a..81a993ac8 100644 --- a/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json @@ -23,6 +23,17 @@ "properties": { "EnableOCSPCheck": { "type": "boolean" + }, + "OcspLambdaArn": { + "type": "string", + "minLength": 1, + "maxLength": 170 + }, + "OcspAuthorizedResponderArn": { + "type": "string", + "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + "minLength": 1, + "maxLength": 2048 } }, "additionalProperties": false @@ -193,7 +204,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "iot:ListTagsForResource", + "iot:TagResource", + "iot:UntagResource" + ] }, "additionalProperties": false, "required": [], diff --git a/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json b/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json index 0ed6a9ae9..173a46643 100644 --- a/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json +++ b/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json @@ -11,14 +11,15 @@ "maxLength": 128 }, "Type": { - "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", "type": "string", "enum": [ "SERVICE_CONTROL_POLICY", "AISERVICES_OPT_OUT_POLICY", "BACKUP_POLICY", "TAG_POLICY", - "CHATBOT_POLICY" + "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY" ] }, "Content": { diff --git a/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json b/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json index 0952cd06a..8e6282dcf 100644 --- a/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json +++ b/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json @@ -316,7 +316,16 @@ } }, "tagging": { - "taggable": true + "taggable": true, + "tagUpdatable": true, + "tagOnCreate": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json b/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json index 0e7bdea0a..217250e42 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json @@ -41,9 +41,7 @@ }, "required": [ "EndpointName", - "VariantName", - "Specification", - "RuntimeConfig" + "Specification" ], "additionalProperties": false, "definitions": { @@ -155,6 +153,12 @@ "minimum": 60, "maximum": 3600 }, + "BaseInferenceComponentName": { + "description": "The name of the base inference component", + "type": "string", + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "maxLength": 63 + }, "InferenceComponentStartupParameters": { "description": "", "type": "object", @@ -207,6 +211,9 @@ "ModelName": { "$ref": "#/definitions/ModelName" }, + "BaseInferenceComponentName": { + "$ref": "#/definitions/BaseInferenceComponentName" + }, "Container": { "$ref": "#/definitions/InferenceComponentContainerSpecification" }, @@ -216,10 +223,7 @@ "ComputeResourceRequirements": { "$ref": "#/definitions/InferenceComponentComputeResourceRequirements" } - }, - "required": [ - "ComputeResourceRequirements" - ] + } }, "InferenceComponentCopyCount": { "description": "The number of copies for the inference component", diff --git a/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json b/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json index 68fc0a777..d40038ca6 100644 --- a/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json +++ b/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json @@ -33,7 +33,8 @@ "enum": [ "EXTERNAL", "CUSTOM", - "MESSAGE_TEMPLATES" + "MESSAGE_TEMPLATES", + "MANAGED" ] }, "RenderingConfiguration": { @@ -58,21 +59,281 @@ }, "additionalProperties": false }, - "SourceConfiguration": { + "SeedUrl": { + "type": "object", + "additionalProperties": false, + "properties": { + "Url": { + "type": "string", + "pattern": "^https?://[A-Za-z0-9][^\\s]*$" + } + } + }, + "UrlFilterPattern": { + "type": "string", + "maxLength": 1000, + "minLength": 1 + }, + "UrlFilterList": { + "type": "array", + "items": { + "$ref": "#/definitions/UrlFilterPattern" + }, + "maxItems": 25, + "minItems": 1 + }, + "WebCrawlerConfiguration": { "type": "object", + "additionalProperties": false, "properties": { - "AppIntegrations": { - "$ref": "#/definitions/AppIntegrationsConfiguration" + "UrlConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "SeedUrls": { + "type": "array", + "items": { + "$ref": "#/definitions/SeedUrl" + }, + "maxItems": 100, + "minItems": 1 + } + } + }, + "CrawlerLimits": { + "type": "object", + "additionalProperties": false, + "properties": { + "RateLimit": { + "type": "number", + "minimum": 1, + "maximum": 3000 + } + } + }, + "InclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "ExclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "Scope": { + "type": "string", + "enum": [ + "HOST_ONLY", + "SUBDOMAINS" + ] } }, + "required": [ + "UrlConfiguration" + ] + }, + "ManagedSourceConfiguration": { "oneOf": [ { + "type": "object", + "properties": { + "WebCrawlerConfiguration": { + "$ref": "#/definitions/WebCrawlerConfiguration" + } + }, "required": [ - "AppIntegrations" + "WebCrawlerConfiguration" + ], + "additionalProperties": false + } + ] + }, + "FixedSizeChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1 + }, + "OverlapPercentage": { + "type": "number", + "minimum": 1, + "maximum": 99 + } + }, + "required": [ + "MaxTokens", + "OverlapPercentage" + ] + }, + "HierarchicalChunkingLevelConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1, + "maximum": 8192 + } + }, + "required": [ + "MaxTokens" + ] + }, + "HierarchicalChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "LevelConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/HierarchicalChunkingLevelConfiguration" + }, + "maxItems": 2, + "minItems": 2 + }, + "OverlapTokens": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "LevelConfigurations", + "OverlapTokens" + ] + }, + "SemanticChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1 + }, + "BufferSize": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "BreakpointPercentileThreshold": { + "type": "number", + "minimum": 50, + "maximum": 99 + } + }, + "required": [ + "MaxTokens", + "BufferSize", + "BreakpointPercentileThreshold" + ] + }, + "BedrockFoundationModelConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ModelArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$" + }, + "ParsingPrompt": { + "type": "object", + "additionalProperties": false, + "properties": { + "ParsingPromptText": { + "type": "string", + "maxLength": 10000, + "minLength": 1 + } + }, + "required": [ + "ParsingPromptText" ] } - ], - "additionalProperties": false + }, + "required": [ + "ModelArn" + ] + }, + "VectorIngestionConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ChunkingStrategy": { + "type": "string", + "enum": [ + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC" + ] + }, + "FixedSizeChunkingConfiguration": { + "$ref": "#/definitions/FixedSizeChunkingConfiguration" + }, + "HierarchicalChunkingConfiguration": { + "$ref": "#/definitions/HierarchicalChunkingConfiguration" + }, + "SemanticChunkingConfiguration": { + "$ref": "#/definitions/SemanticChunkingConfiguration" + } + }, + "required": [ + "ChunkingStrategy" + ] + }, + "ParsingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ParsingStrategy": { + "type": "string", + "enum": [ + "BEDROCK_FOUNDATION_MODEL" + ] + }, + "BedrockFoundationModelConfiguration": { + "$ref": "#/definitions/BedrockFoundationModelConfiguration" + } + }, + "required": [ + "ParsingStrategy" + ] + } + } + }, + "SourceConfiguration": { + "oneOf": [ + { + "type": "object", + "title": "AppIntegrationsConfiguration", + "properties": { + "AppIntegrations": { + "$ref": "#/definitions/AppIntegrationsConfiguration" + } + }, + "required": [ + "AppIntegrations" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "ManagedSourceConfiguration", + "properties": { + "ManagedSourceConfiguration": { + "$ref": "#/definitions/ManagedSourceConfiguration" + } + }, + "required": [ + "ManagedSourceConfiguration" + ], + "additionalProperties": false + } + ] }, "Tag": { "additionalProperties": false, @@ -127,6 +388,9 @@ "SourceConfiguration": { "$ref": "#/definitions/SourceConfiguration" }, + "VectorIngestionConfiguration": { + "$ref": "#/definitions/VectorIngestionConfiguration" + }, "Tags": { "insertionOrder": false, "uniqueItems": true, @@ -161,7 +425,16 @@ ] ], "additionalProperties": false, - "taggable": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": false, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "wisdom:TagResource" + ] + }, "replacementStrategy": "delete_then_create", "handlers": { "create": {