From 6fe6c0def1bd4f9e2d57ca5cb5036f2b19e796d8 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 22:01:09 -0400 Subject: [PATCH 1/6] 10/24/2024 CloudFormation schemas in us-east-1; Refresh existing schemas. --- .../schemas/AWS_ApiGatewayV2_DomainName.json | 4 +- .../schemas/AWS_ApiGateway_VpcLink.json | 6 +- .../AWS_AutoScaling_AutoScalingGroup.json | 41 +- .../schemas/AWS_AutoScaling_WarmPool.json | 3 + .../schemas/AWS_Backup_BackupPlan.json | 8 +- .../schemas/AWS_Backup_BackupVault.json | 7 +- .../schemas/AWS_Backup_Framework.json | 7 +- .../schemas/AWS_Backup_ReportPlan.json | 7 +- .../AWS_Backup_RestoreTestingPlan.json | 7 +- .../schemas/AWS_Bedrock_Agent.json | 5 +- .../schemas/AWS_DataSync_Task.json | 880 +++++++++--------- .../AWS_DevOpsGuru_NotificationChannel.json | 3 + .../schemas/AWS_DynamoDB_Table.json | 5 + .../schemas/AWS_EC2_CapacityReservation.json | 7 + .../schemas/AWS_EC2_CarrierGateway.json | 18 +- .../AWS_EC2_NetworkInsightsAccessScope.json | 11 + .../schemas/AWS_EC2_NetworkInsightsPath.json | 11 + .../schemas/AWS_EC2_NetworkInterface.json | 12 +- .../schemas/AWS_EC2_VPCEndpoint.json | 2 +- .../schemas/AWS_EC2_VPNConnection.json | 65 +- .../schemas/AWS_EC2_Volume.json | 10 +- .../schemas/AWS_ECS_CapacityProvider.json | 68 +- .../schemas/AWS_ECS_Service.json | 9 +- ...WS_ElastiCache_GlobalReplicationGroup.json | 4 + .../AWS_ElastiCache_ServerlessCache.json | 8 +- .../schemas/AWS_IVS_EncoderConfiguration.json | 8 +- .../schemas/AWS_ImageBuilder_Component.json | 3 +- ...geBuilder_InfrastructureConfiguration.json | 312 ++++--- .../AWS_InspectorV2_CisScanConfiguration.json | 2 +- .../schemas/AWS_IoT_TopicRule.json | 7 +- .../schemas/AWS_Lambda_Function.json | 4 +- .../schemas/AWS_Location_APIKey.json | 32 +- .../schemas/AWS_MemoryDB_Cluster.json | 23 +- .../AWS_NetworkFirewall_FirewallPolicy.json | 520 +++++------ .../cloudformation/schemas/AWS_Oam_Link.json | 8 +- .../cloudformation/schemas/AWS_Oam_Sink.json | 8 +- .../schemas/AWS_Omics_AnnotationStore.json | 8 +- .../schemas/AWS_Omics_ReferenceStore.json | 7 +- .../schemas/AWS_Omics_RunGroup.json | 8 +- .../schemas/AWS_Omics_SequenceStore.json | 7 +- .../schemas/AWS_Omics_VariantStore.json | 8 +- .../schemas/AWS_Omics_Workflow.json | 8 +- .../schemas/AWS_PCAConnectorAD_Connector.json | 21 +- ..._PCAConnectorAD_DirectoryRegistration.json | 27 +- .../schemas/AWS_PCAConnectorAD_Template.json | 19 +- ...S_Proton_EnvironmentAccountConnection.json | 7 +- .../AWS_Proton_EnvironmentTemplate.json | 166 +++- .../schemas/AWS_Proton_ServiceTemplate.json | 155 ++- .../AWS_RefactorSpaces_Environment.json | 24 +- ...53Profiles_ProfileResourceAssociation.json | 1 + .../schemas/AWS_S3_AccessGrant.json | 17 +- .../schemas/AWS_S3_AccessGrantsInstance.json | 14 +- .../schemas/AWS_S3_AccessGrantsLocation.json | 15 +- .../cloudformation/schemas/AWS_S3_Bucket.json | 8 +- .../cloudformation/schemas/AWS_SNS_Topic.json | 36 +- .../schemas/AWS_SageMaker_Domain.json | 16 + 56 files changed, 1658 insertions(+), 1049 deletions(-) diff --git a/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_DomainName.json b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_DomainName.json index cc97dff292..9e8ffb98ce 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_DomainName.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGatewayV2_DomainName.json @@ -17,7 +17,7 @@ "type": "string" }, "DomainName": { - "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", + "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", "type": "string" }, "DomainNameConfigurations": { @@ -80,7 +80,7 @@ "description": "An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source." } }, - "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource." + "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource." } }, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_VpcLink.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_VpcLink.json index d20f73b0a7..4e0733983e 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_VpcLink.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_VpcLink.json @@ -4,11 +4,11 @@ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "properties": { "Name": { - "description": "The name used to label and identify the VPC link.", + "description": "", "type": "string" }, "Description": { - "description": "The description of the VPC link.", + "description": "", "type": "string" }, "Tags": { @@ -21,7 +21,7 @@ } }, "TargetArns": { - "description": "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", + "description": "", "type": "array", "uniqueItems": false, "insertionOrder": false, diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json index 9f3e73e83b..bb9985c087 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_AutoScalingGroup.json @@ -25,7 +25,6 @@ "conditionalCreateOnlyProperties": [ "/properties/LaunchConfigurationName", "/properties/VPCZoneIdentifier", - "/properties/PlacementGroup", "/properties/LaunchTemplate", "/properties/MixedInstancesPolicy" ], @@ -57,7 +56,11 @@ "managed-fleets:Get*", "managed-fleets:CreateAutoScalingGroup", "managed-fleets:UpdateAutoScalingGroup", - "ssm:Get*" + "ssm:Get*", + "vpc-lattice:DeregisterTargets", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:RegisterTargets" ], "timeoutInMinutes": 360 }, @@ -90,7 +93,11 @@ "managed-fleets:RegisterAutoScalingGroup", "managed-fleets:DeregisterAutoScalingGroup", "managed-fleets:UpdateAutoScalingGroup", - "ssm:Get*" + "ssm:Get*", + "vpc-lattice:DeregisterTargets", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:RegisterTargets" ], "timeoutInMinutes": 660 }, @@ -487,6 +494,23 @@ } } }, + "TrafficSourceIdentifier": { + "description": "", + "additionalProperties": false, + "type": "object", + "properties": { + "Type": { + "type": "string" + }, + "Identifier": { + "type": "string" + } + }, + "required": [ + "Identifier", + "Type" + ] + }, "MixedInstancesPolicy": { "description": "Use this structure to launch multiple instance types and On-Demand Instances and Spot Instances within a single Auto Scaling group.\n A mixed instances policy contains information that Amazon EC2 Auto Scaling can use to launch instances and help optimize your costs. For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*.\n You can create a mixed instances policy for new and existing Auto Scaling groups. You must use a launch template to configure the policy. You cannot use a launch configuration.\n There are key differences between Spot Instances and On-Demand Instances:\n + The price for Spot Instances varies based on demand\n + Amazon EC2 can terminate an individual Spot Instance as the availability of, or price for, Spot Instances changes\n \n When a Spot Instance is terminated, Amazon EC2 Auto Scaling group attempts to launch a replacement instance to maintain the desired capacity for the group. \n ``MixedInstancesPolicy`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.", "additionalProperties": false, @@ -805,6 +829,15 @@ "description": "The name of the Auto Scaling group. This name must be unique per Region per account.\n The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters.\n You cannot use a colon (:) in the name.", "type": "string" }, + "TrafficSources": { + "uniqueItems": true, + "description": "", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/TrafficSourceIdentifier" + } + }, "DesiredCapacityType": { "description": "The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports ``DesiredCapacityType`` for attribute-based instance type selection only. For more information, see [Create a mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the *Amazon EC2 Auto Scaling User Guide*.\n By default, Amazon EC2 Auto Scaling specifies ``units``, which translates into number of instances.\n Valid values: ``units`` | ``vcpu`` | ``memory-mib``", "type": "string" @@ -814,7 +847,7 @@ "type": "string" }, "HealthCheckType": { - "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", "type": "string" }, "MaxInstanceLifetime": { diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_WarmPool.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_WarmPool.json index 8f95f1960b..9455371f85 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_WarmPool.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_WarmPool.json @@ -40,6 +40,9 @@ "required": [ "AutoScalingGroupName" ], + "tagging": { + "taggable": false + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json b/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json index f1d68ee8e8..578522a05f 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_BackupPlan.json @@ -34,7 +34,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/BackupPlanTags" + "tagProperty": "/properties/BackupPlanTags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] }, "readOnlyProperties": [ "/properties/BackupPlanId", @@ -182,6 +187,7 @@ "create": { "permissions": [ "backup:GetBackupPlan", + "backup:ListTags", "backup:TagResource", "backup:CreateBackupPlan" ] diff --git a/internal/service/cloudformation/schemas/AWS_Backup_BackupVault.json b/internal/service/cloudformation/schemas/AWS_Backup_BackupVault.json index ae0f323c50..6bf4b0f713 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_BackupVault.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_BackupVault.json @@ -85,7 +85,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/BackupVaultTags" + "tagProperty": "/properties/BackupVaultTags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] }, "required": [ "BackupVaultName" diff --git a/internal/service/cloudformation/schemas/AWS_Backup_Framework.json b/internal/service/cloudformation/schemas/AWS_Backup_Framework.json index 69f1d8a67b..eee3d19158 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_Framework.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_Framework.json @@ -146,7 +146,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/FrameworkTags" + "tagProperty": "/properties/FrameworkTags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] }, "required": [ "FrameworkControls" diff --git a/internal/service/cloudformation/schemas/AWS_Backup_ReportPlan.json b/internal/service/cloudformation/schemas/AWS_Backup_ReportPlan.json index 8406f7ba1f..8487214749 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_ReportPlan.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_ReportPlan.json @@ -134,7 +134,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/ReportPlanTags" + "tagProperty": "/properties/ReportPlanTags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] }, "required": [ "ReportDeliveryChannel", diff --git a/internal/service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json b/internal/service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json index 9a2a4d5c51..4899db6612 100644 --- a/internal/service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json +++ b/internal/service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json @@ -120,7 +120,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] }, "additionalProperties": false, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_Bedrock_Agent.json b/internal/service/cloudformation/schemas/AWS_Bedrock_Agent.json index 037fb53c32..f300e4c6d2 100644 --- a/internal/service/cloudformation/schemas/AWS_Bedrock_Agent.json +++ b/internal/service/cloudformation/schemas/AWS_Bedrock_Agent.json @@ -72,7 +72,8 @@ "type": "string", "description": "Action Group Signature for a BuiltIn Action", "enum": [ - "AMAZON.UserInput" + "AMAZON.UserInput", + "AMAZON.CodeInterpreter" ] }, "ActionGroupState": { @@ -522,7 +523,7 @@ "type": "string", "maxLength": 2048, "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", "description": "ARN or name of a Bedrock model." }, "GuardrailConfiguration": { diff --git a/internal/service/cloudformation/schemas/AWS_DataSync_Task.json b/internal/service/cloudformation/schemas/AWS_DataSync_Task.json index 54c961b14a..fe5e11fc3b 100644 --- a/internal/service/cloudformation/schemas/AWS_DataSync_Task.json +++ b/internal/service/cloudformation/schemas/AWS_DataSync_Task.json @@ -1,63 +1,333 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true + }, + "handlers": { + "read": { + "permissions": [ + "datasync:DescribeTask", + "datasync:ListTagsForResource" + ] + }, + "create": { + "permissions": [ + "datasync:CreateTask", + "datasync:DescribeTask", + "datasync:ListTagsForResource", + "datasync:TagResource", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeNetworkInterfaces", + "ec2:CreateNetworkInterface", + "ec2:DeleteNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:CreateNetworkInterfacePermission", + "fsx:DescribeFileSystems", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeMountTargets", + "logs:DescribeLogGroups", + "iam:GetRole", + "iam:PassRole", + "iam:AssumeRole" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateTask", + "datasync:DescribeTask", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "logs:DescribeLogGroups", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "datasync:ListTasks" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteTask", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "fsx:DescribeFileSystems", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeMountTargets", + "iam:GetRole" + ] + } + }, "typeName": "AWS::DataSync::Task", + "readOnlyProperties": [ + "/properties/TaskArn", + "/properties/Status", + "/properties/SourceNetworkInterfaceArns", + "/properties/DestinationNetworkInterfaceArns" + ], "description": "Resource schema for AWS::DataSync::Task.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "createOnlyProperties": [ + "/properties/DestinationLocationArn", + "/properties/SourceLocationArn" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/TaskArn" + ], "definitions": { - "FilterRule": { + "SourceNetworkInterfaceArns": { + "maxItems": 128, + "description": "The Amazon Resource Names (ARNs) of the source ENIs (Elastic Network Interfaces) that were created for your subnet.", + "insertionOrder": false, + "type": "array", + "items": { + "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", + "type": "string" + } + }, + "Options": { + "description": "Represents the options that are available to control the behavior of a StartTaskExecution operation.", "additionalProperties": false, - "description": "Specifies which files folders and objects to include or exclude when transferring files from source to destination.", "type": "object", "properties": { - "FilterType": { - "description": "The type of filter rule to apply. AWS DataSync only supports the SIMPLE_PATTERN rule type.", + "VerifyMode": { + "description": "A value that determines whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred.", "type": "string", "enum": [ - "SIMPLE_PATTERN" - ], - "pattern": "^[A-Z0-9_]+$", - "maxLength": 128 + "POINT_IN_TIME_CONSISTENT", + "ONLY_FILES_TRANSFERRED", + "NONE" + ] }, - "Value": { - "description": "A single filter string that consists of the patterns to include or exclude. The patterns are delimited by \"|\".", + "Gid": { + "description": "The group ID (GID) of the file's owners.", "type": "string", - "pattern": "^[^\\x00]+$", - "maxLength": 409600 + "enum": [ + "NONE", + "INT_VALUE", + "NAME", + "BOTH" + ] + }, + "Atime": { + "description": "A file metadata value that shows the last time a file was accessed (that is, when the file was read or written to).", + "type": "string", + "enum": [ + "NONE", + "BEST_EFFORT" + ] + }, + "OverwriteMode": { + "description": "A value that determines whether files at the destination should be overwritten or preserved when copying files.", + "type": "string", + "enum": [ + "ALWAYS", + "NEVER" + ] + }, + "PreserveDevices": { + "description": "A value that determines whether AWS DataSync should preserve the metadata of block and character devices in the source file system, and recreate the files with that device name and metadata on the destination.", + "type": "string", + "enum": [ + "NONE", + "PRESERVE" + ] + }, + "Mtime": { + "description": "A value that indicates the last time that a file was modified (that is, a file was written to) before the PREPARING phase.", + "type": "string", + "enum": [ + "NONE", + "PRESERVE" + ] + }, + "TaskQueueing": { + "description": "A value that determines whether tasks should be queued before executing the tasks.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "TransferMode": { + "description": "A value that determines whether DataSync transfers only the data and metadata that differ between the source and the destination location, or whether DataSync transfers all the content from the source, without comparing to the destination location.", + "type": "string", + "enum": [ + "CHANGED", + "ALL" + ] + }, + "LogLevel": { + "description": "A value that determines the types of logs that DataSync publishes to a log stream in the Amazon CloudWatch log group that you provide.", + "type": "string", + "enum": [ + "OFF", + "BASIC", + "TRANSFER" + ] + }, + "ObjectTags": { + "description": "A value that determines whether object tags should be read from the source object store and written to the destination object store.", + "type": "string", + "enum": [ + "PRESERVE", + "NONE" + ] + }, + "Uid": { + "description": "The user ID (UID) of the file's owner.", + "type": "string", + "enum": [ + "NONE", + "INT_VALUE", + "NAME", + "BOTH" + ] + }, + "BytesPerSecond": { + "format": "int64", + "description": "A value that limits the bandwidth used by AWS DataSync.", + "type": "integer", + "minimum": -1 + }, + "PosixPermissions": { + "description": "A value that determines which users or groups can access a file for a specific purpose such as reading, writing, or execution of the file.", + "type": "string", + "enum": [ + "NONE", + "PRESERVE" + ] + }, + "PreserveDeletedFiles": { + "description": "A value that specifies whether files in the destination that don't exist in the source file system should be preserved.", + "type": "string", + "enum": [ + "PRESERVE", + "REMOVE" + ] + }, + "SecurityDescriptorCopyFlags": { + "description": "A value that determines which components of the SMB security descriptor are copied during transfer.", + "type": "string", + "enum": [ + "NONE", + "OWNER_DACL", + "OWNER_DACL_SACL" + ] } } }, - "Tag": { + "TaskReportConfigDestinationS3": { + "description": "Specifies the Amazon S3 bucket where DataSync uploads your task report.", "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", "type": "object", "properties": { - "Key": { + "Subdirectory": { + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$", + "description": "Specifies a bucket prefix for your report.", "type": "string", - "description": "The key for an AWS resource tag.", - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "maxLength": 256, - "minLength": 1 + "maxLength": 4096 + }, + "S3BucketArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", + "description": "Specifies the ARN of the S3 bucket where Datasync uploads your report.", + "type": "string", + "maxLength": 156 + }, + "BucketAccessRoleArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "description": "Specifies the Amazon Resource Name (ARN) of the IAM policy that allows Datasync to upload a task report to your S3 bucket.", + "type": "string", + "maxLength": 2048 + } + } + }, + "DestinationNetworkInterfaceArns": { + "maxItems": 128, + "description": "The Amazon Resource Names (ARNs) of the destination ENIs (Elastic Network Interfaces) that were created for your subnet.", + "insertionOrder": false, + "type": "array", + "items": { + "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", + "type": "string" + } + }, + "ManifestConfigSourceS3": { + "description": "Specifies the S3 bucket where you're hosting the manifest that you want AWS DataSync to use.", + "additionalProperties": false, + "type": "object", + "properties": { + "S3BucketArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", + "description": "Specifies the Amazon Resource Name (ARN) of the S3 bucket where you're hosting your manifest.", + "type": "string", + "maxLength": 156 + }, + "BucketAccessRoleArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "description": "Specifies the AWS Identity and Access Management (IAM) role that allows DataSync to access your manifest.", + "type": "string", + "maxLength": 2048 + }, + "ManifestObjectVersionId": { + "pattern": "^.+$", + "description": "Specifies the object version ID of the manifest that you want DataSync to use.", + "type": "string", + "maxLength": 100 + }, + "ManifestObjectPath": { + "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + "description": "Specifies the Amazon S3 object key of your manifest.", + "type": "string", + "maxLength": 1024 + } + } + }, + "TaskSchedule": { + "description": "Specifies the schedule you want your task to use for repeated executions.", + "additionalProperties": false, + "type": "object", + "properties": { + "Status": { + "description": "Specifies status of a schedule.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] }, - "Value": { + "ScheduleExpression": { + "pattern": "^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$", + "description": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location", "type": "string", - "description": "The value for an AWS resource tag.", - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "maxLength": 256, - "minLength": 1 + "maxLength": 256 } - }, - "required": [ - "Key", - "Value" - ] + } }, "TaskReportConfig": { - "additionalProperties": false, "description": "Specifies how you want to configure a task report, which provides detailed information about for your Datasync transfer.", + "additionalProperties": false, "type": "object", "properties": { "Destination": { - "additionalProperties": false, "description": "Specifies where DataSync uploads your task report.", + "additionalProperties": false, "type": "object", "properties": { "S3": { @@ -65,14 +335,6 @@ } } }, - "OutputType": { - "description": "Specifies the type of task report that you want.", - "type": "string", - "enum": [ - "SUMMARY_ONLY", - "STANDARD" - ] - }, "ReportLevel": { "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", "type": "string", @@ -90,13 +352,13 @@ ] }, "Overrides": { - "additionalProperties": false, "description": "Customizes the reporting level for aspects of your task report. For example, your report might generally only include errors, but you could specify that you want a list of successes and errors just for the files that Datasync attempted to delete in your destination location.", + "additionalProperties": false, "type": "object", "properties": { - "Transferred": { + "Verified": { + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to verify at the end of your transfer. This only applies if you configure your task to verify data during and after the transfer (which Datasync does by default)", "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to transfer.", "type": "object", "properties": { "ReportLevel": { @@ -109,9 +371,9 @@ } } }, - "Verified": { + "Skipped": { + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to skip during your transfer.", "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to verify at the end of your transfer. This only applies if you configure your task to verify data during and after the transfer (which Datasync does by default)", "type": "object", "properties": { "ReportLevel": { @@ -124,9 +386,9 @@ } } }, - "Deleted": { + "Transferred": { + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to transfer.", "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to delete in your destination location. This only applies if you configure your task to delete data in the destination that isn't in the source.", "type": "object", "properties": { "ReportLevel": { @@ -139,9 +401,9 @@ } } }, - "Skipped": { + "Deleted": { + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to delete in your destination location. This only applies if you configure your task to delete data in the destination that isn't in the source.", "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to skip during your transfer.", "type": "object", "properties": { "ReportLevel": { @@ -155,324 +417,127 @@ } } } - } - }, - "required": [ - "Destination", - "OutputType" - ] - }, - "TaskReportConfigDestinationS3": { - "additionalProperties": false, - "description": "Specifies the Amazon S3 bucket where DataSync uploads your task report.", - "type": "object", - "properties": { - "Subdirectory": { - "description": "Specifies a bucket prefix for your report.", - "type": "string", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$" - }, - "BucketAccessRoleArn": { - "description": "Specifies the Amazon Resource Name (ARN) of the IAM policy that allows Datasync to upload a task report to your S3 bucket.", - "type": "string", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$" - }, - "S3BucketArn": { - "description": "Specifies the ARN of the S3 bucket where Datasync uploads your report.", - "type": "string", - "maxLength": 156, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$" - } - } - }, - "ManifestConfig": { - "additionalProperties": false, - "description": "Configures a manifest, which is a list of files or objects that you want DataSync to transfer.", - "type": "object", - "properties": { - "Action": { - "description": "Specifies what DataSync uses the manifest for.", - "type": "string", - "enum": [ - "TRANSFER" - ] }, - "Format": { - "description": "Specifies the file format of your manifest.", + "OutputType": { + "description": "Specifies the type of task report that you want.", "type": "string", "enum": [ - "CSV" + "SUMMARY_ONLY", + "STANDARD" ] - }, - "Source": { - "additionalProperties": false, - "description": "Specifies the manifest that you want DataSync to use and where it's hosted.", - "type": "object", - "properties": { - "S3": { - "$ref": "#/definitions/ManifestConfigSourceS3" - } - } } }, "required": [ - "Source" + "Destination", + "OutputType" ] }, - "ManifestConfigSourceS3": { - "additionalProperties": false, - "description": "Specifies the S3 bucket where you're hosting the manifest that you want AWS DataSync to use.", - "type": "object", - "properties": { - "ManifestObjectPath": { - "description": "Specifies the Amazon S3 object key of your manifest.", - "type": "string", - "maxLength": 1024, - "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$" - }, - "BucketAccessRoleArn": { - "description": "Specifies the AWS Identity and Access Management (IAM) role that allows DataSync to access your manifest.", - "type": "string", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$" - }, - "S3BucketArn": { - "description": "Specifies the Amazon Resource Name (ARN) of the S3 bucket where you're hosting your manifest.", - "type": "string", - "maxLength": 156, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$" - }, - "ManifestObjectVersionId": { - "description": "Specifies the object version ID of the manifest that you want DataSync to use.", - "type": "string", - "maxLength": 100, - "pattern": "^.+$" - } - } - }, - "TaskSchedule": { + "FilterRule": { + "description": "Specifies which files folders and objects to include or exclude when transferring files from source to destination.", "additionalProperties": false, - "description": "Specifies the schedule you want your task to use for repeated executions.", "type": "object", "properties": { - "ScheduleExpression": { - "description": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location", + "FilterType": { + "pattern": "^[A-Z0-9_]+$", + "description": "The type of filter rule to apply. AWS DataSync only supports the SIMPLE_PATTERN rule type.", "type": "string", - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$" + "enum": [ + "SIMPLE_PATTERN" + ], + "maxLength": 128 }, - "Status": { - "description": "Specifies status of a schedule.", + "Value": { + "pattern": "^[^\\x00]+$", + "description": "A single filter string that consists of the patterns to include or exclude. The patterns are delimited by \"|\".", "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ] + "maxLength": 409600 } } }, - "Options": { + "Tag": { + "description": "A key-value pair to associate with a resource.", "additionalProperties": false, - "description": "Represents the options that are available to control the behavior of a StartTaskExecution operation.", "type": "object", "properties": { - "Atime": { - "description": "A file metadata value that shows the last time a file was accessed (that is, when the file was read or written to).", - "type": "string", - "enum": [ - "NONE", - "BEST_EFFORT" - ] - }, - "BytesPerSecond": { - "description": "A value that limits the bandwidth used by AWS DataSync.", - "type": "integer", - "format": "int64", - "minimum": -1 - }, - "Gid": { - "description": "The group ID (GID) of the file's owners.", - "type": "string", - "enum": [ - "NONE", - "INT_VALUE", - "NAME", - "BOTH" - ] - }, - "LogLevel": { - "description": "A value that determines the types of logs that DataSync publishes to a log stream in the Amazon CloudWatch log group that you provide.", - "type": "string", - "enum": [ - "OFF", - "BASIC", - "TRANSFER" - ] - }, - "Mtime": { - "description": "A value that indicates the last time that a file was modified (that is, a file was written to) before the PREPARING phase.", - "type": "string", - "enum": [ - "NONE", - "PRESERVE" - ] - }, - "OverwriteMode": { - "description": "A value that determines whether files at the destination should be overwritten or preserved when copying files.", - "type": "string", - "enum": [ - "ALWAYS", - "NEVER" - ] - }, - "PosixPermissions": { - "description": "A value that determines which users or groups can access a file for a specific purpose such as reading, writing, or execution of the file.", - "type": "string", - "enum": [ - "NONE", - "PRESERVE" - ] - }, - "PreserveDeletedFiles": { - "description": "A value that specifies whether files in the destination that don't exist in the source file system should be preserved.", - "type": "string", - "enum": [ - "PRESERVE", - "REMOVE" - ] - }, - "PreserveDevices": { - "description": "A value that determines whether AWS DataSync should preserve the metadata of block and character devices in the source file system, and recreate the files with that device name and metadata on the destination.", - "type": "string", - "enum": [ - "NONE", - "PRESERVE" - ] - }, - "SecurityDescriptorCopyFlags": { - "description": "A value that determines which components of the SMB security descriptor are copied during transfer.", - "type": "string", - "enum": [ - "NONE", - "OWNER_DACL", - "OWNER_DACL_SACL" - ] - }, - "TaskQueueing": { - "description": "A value that determines whether tasks should be queued before executing the tasks.", - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ] - }, - "TransferMode": { - "description": "A value that determines whether DataSync transfers only the data and metadata that differ between the source and the destination location, or whether DataSync transfers all the content from the source, without comparing to the destination location.", - "type": "string", - "enum": [ - "CHANGED", - "ALL" - ] - }, - "Uid": { - "description": "The user ID (UID) of the file's owner.", - "type": "string", - "enum": [ - "NONE", - "INT_VALUE", - "NAME", - "BOTH" - ] + "Value": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "description": "The value for an AWS resource tag.", + "type": "string", + "maxLength": 256 }, - "VerifyMode": { - "description": "A value that determines whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred.", + "Key": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "description": "The key for an AWS resource tag.", + "type": "string", + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ] + }, + "ManifestConfig": { + "description": "Configures a manifest, which is a list of files or objects that you want DataSync to transfer.", + "additionalProperties": false, + "type": "object", + "properties": { + "Action": { + "description": "Specifies what DataSync uses the manifest for.", "type": "string", "enum": [ - "POINT_IN_TIME_CONSISTENT", - "ONLY_FILES_TRANSFERRED", - "NONE" + "TRANSFER" ] }, - "ObjectTags": { - "description": "A value that determines whether object tags should be read from the source object store and written to the destination object store.", + "Format": { + "description": "Specifies the file format of your manifest.", "type": "string", "enum": [ - "PRESERVE", - "NONE" + "CSV" ] + }, + "Source": { + "description": "Specifies the manifest that you want DataSync to use and where it's hosted.", + "additionalProperties": false, + "type": "object", + "properties": { + "S3": { + "$ref": "#/definitions/ManifestConfigSourceS3" + } + } } - } - }, - "SourceNetworkInterfaceArns": { - "description": "The Amazon Resource Names (ARNs) of the source ENIs (Elastic Network Interfaces) that were created for your subnet.", - "type": "array", - "items": { - "type": "string", - "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$" - }, - "maxItems": 128, - "insertionOrder": false - }, - "DestinationNetworkInterfaceArns": { - "description": "The Amazon Resource Names (ARNs) of the destination ENIs (Elastic Network Interfaces) that were created for your subnet.", - "type": "array", - "items": { - "type": "string", - "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$" }, - "maxItems": 128, - "insertionOrder": false + "required": [ + "Source" + ] } }, + "required": [ + "DestinationLocationArn", + "SourceLocationArn" + ], "properties": { - "Excludes": { - "type": "array", - "minItems": 0, - "maxItems": 1, - "items": { - "$ref": "#/definitions/FilterRule" - }, - "insertionOrder": false - }, - "Includes": { - "type": "array", - "minItems": 0, - "maxItems": 1, - "items": { - "$ref": "#/definitions/FilterRule" - }, - "insertionOrder": false - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "type": "array", - "maxItems": 50, - "uniqueItems": true, - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - } - }, - "CloudWatchLogGroupArn": { - "description": "The ARN of the Amazon CloudWatch log group that is used to monitor and log events in the task.", + "Status": { + "description": "The status of the task that was described.", "type": "string", - "maxLength": 562, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]*:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$" + "enum": [ + "AVAILABLE", + "CREATING", + "QUEUED", + "RUNNING", + "UNAVAILABLE" + ] + }, + "SourceNetworkInterfaceArns": { + "$ref": "#/definitions/SourceNetworkInterfaceArns" }, "DestinationLocationArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", "description": "The ARN of an AWS storage resource's location.", "type": "string", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$" - }, - "Name": { - "description": "The name of a task. This value is a text reference that is used to identify the task in the console.", - "type": "string", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$" + "maxLength": 128 }, "Options": { "$ref": "#/definitions/Options" @@ -480,132 +545,67 @@ "TaskReportConfig": { "$ref": "#/definitions/TaskReportConfig" }, - "ManifestConfig": { - "$ref": "#/definitions/ManifestConfig" - }, - "Schedule": { - "$ref": "#/definitions/TaskSchedule" + "Excludes": { + "minItems": 0, + "maxItems": 1, + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/FilterRule" + } }, - "SourceLocationArn": { - "description": "The ARN of the source location for the task.", + "Name": { + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "description": "The name of a task. This value is a text reference that is used to identify the task in the console.", "type": "string", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$" + "maxLength": 256 + }, + "ManifestConfig": { + "$ref": "#/definitions/ManifestConfig" }, "TaskArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]*:[0-9]{12}:task/task-[0-9a-f]{17}$", "description": "The ARN of the task.", "type": "string", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]*:[0-9]{12}:task/task-[0-9a-f]{17}$" - }, - "Status": { - "description": "The status of the task that was described.", - "type": "string", - "enum": [ - "AVAILABLE", - "CREATING", - "QUEUED", - "RUNNING", - "UNAVAILABLE" - ] + "maxLength": 128 }, - "SourceNetworkInterfaceArns": { - "$ref": "#/definitions/SourceNetworkInterfaceArns" + "Includes": { + "minItems": 0, + "maxItems": 1, + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/FilterRule" + } }, "DestinationNetworkInterfaceArns": { "$ref": "#/definitions/DestinationNetworkInterfaceArns" - } - }, - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags", - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ] - }, - "additionalProperties": false, - "required": [ - "DestinationLocationArn", - "SourceLocationArn" - ], - "readOnlyProperties": [ - "/properties/TaskArn", - "/properties/Status", - "/properties/SourceNetworkInterfaceArns", - "/properties/DestinationNetworkInterfaceArns" - ], - "primaryIdentifier": [ - "/properties/TaskArn" - ], - "createOnlyProperties": [ - "/properties/DestinationLocationArn", - "/properties/SourceLocationArn" - ], - "handlers": { - "create": { - "permissions": [ - "datasync:CreateTask", - "datasync:DescribeTask", - "datasync:ListTagsForResource", - "datasync:TagResource", - "s3:ListAllMyBuckets", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeNetworkInterfaces", - "ec2:CreateNetworkInterface", - "ec2:DeleteNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:CreateNetworkInterfacePermission", - "fsx:DescribeFileSystems", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeMountTargets", - "logs:DescribeLogGroups", - "iam:GetRole", - "iam:PassRole", - "iam:AssumeRole" - ] }, - "read": { - "permissions": [ - "datasync:DescribeTask", - "datasync:ListTagsForResource" - ] + "Schedule": { + "$ref": "#/definitions/TaskSchedule" }, - "update": { - "permissions": [ - "datasync:UpdateTask", - "datasync:DescribeTask", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "logs:DescribeLogGroups", - "iam:PassRole" - ] + "CloudWatchLogGroupArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]*:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$", + "description": "The ARN of the Amazon CloudWatch log group that is used to monitor and log events in the task.", + "type": "string", + "maxLength": 562 }, - "delete": { - "permissions": [ - "datasync:DeleteTask", - "ec2:DescribeNetworkInterfaces", - "ec2:DeleteNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "fsx:DescribeFileSystems", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeMountTargets", - "iam:GetRole" - ] + "SourceLocationArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "description": "The ARN of the source location for the task.", + "type": "string", + "maxLength": 128 }, - "list": { - "permissions": [ - "datasync:ListTasks" - ] + "Tags": { + "maxItems": 50, + "uniqueItems": true, + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + } } } } diff --git a/internal/service/cloudformation/schemas/AWS_DevOpsGuru_NotificationChannel.json b/internal/service/cloudformation/schemas/AWS_DevOpsGuru_NotificationChannel.json index 065c91e77c..faeb2d7cb3 100644 --- a/internal/service/cloudformation/schemas/AWS_DevOpsGuru_NotificationChannel.json +++ b/internal/service/cloudformation/schemas/AWS_DevOpsGuru_NotificationChannel.json @@ -96,6 +96,9 @@ } }, "additionalProperties": false, + "tagging": { + "taggable": false + }, "required": [ "Config" ], diff --git a/internal/service/cloudformation/schemas/AWS_DynamoDB_Table.json b/internal/service/cloudformation/schemas/AWS_DynamoDB_Table.json index c76ccbdbc4..ffa53b84e1 100644 --- a/internal/service/cloudformation/schemas/AWS_DynamoDB_Table.json +++ b/internal/service/cloudformation/schemas/AWS_DynamoDB_Table.json @@ -1,5 +1,10 @@ { "tagging": { + "permissions": [ + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:ListTagsOfResource" + ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, diff --git a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json index 7411ff165a..cebf9e90d7 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json @@ -55,6 +55,9 @@ }, "InstanceMatchCriteria": { "type": "string" + }, + "UnusedReservationBillingOwnerId": { + "type": "string" } }, "definitions": { @@ -117,6 +120,9 @@ "/properties/AvailableInstanceCount", "/properties/TotalInstanceCount" ], + "writeOnlyProperties": [ + "/properties/UnusedReservationBillingOwnerId" + ], "handlers": { "create": { "permissions": [ @@ -150,6 +156,7 @@ "ec2:CreateCapacityReservation", "ec2:DescribeCapacityReservations", "ec2:CancelCapacityReservation", + "ec2:AssociateCapacityReservationBillingOwner", "ec2:CreateTags", "ec2:DeleteTags" ] diff --git a/internal/service/cloudformation/schemas/AWS_EC2_CarrierGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_CarrierGateway.json index 0c33cad541..48ef7ca248 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_CarrierGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_CarrierGateway.json @@ -66,6 +66,18 @@ "primaryIdentifier": [ "/properties/CarrierGatewayId" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, "handlers": { "create": { "permissions": [ @@ -76,14 +88,16 @@ }, "read": { "permissions": [ - "ec2:DescribeCarrierGateways" + "ec2:DescribeCarrierGateways", + "ec2:DescribeTags" ] }, "update": { "permissions": [ "ec2:DescribeCarrierGateways", "ec2:CreateTags", - "ec2:DeleteTags" + "ec2:DeleteTags", + "ec2:DescribeTags" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsAccessScope.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsAccessScope.json index 5dbccd3637..2045608914 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsAccessScope.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsAccessScope.json @@ -177,6 +177,17 @@ } }, "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, "readOnlyProperties": [ "/properties/NetworkInsightsAccessScopeId", "/properties/NetworkInsightsAccessScopeArn", diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json index 5797504309..59716157b6 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json @@ -118,6 +118,17 @@ } }, "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, "required": [ "Protocol", "Source" diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json index 7e1d33eb16..02ff855c23 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json @@ -236,7 +236,17 @@ "/properties/EnablePrimaryIpv6", "/properties/ConnectionTrackingSpecification" ], - "taggable": true, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json index 5f992e4b45..633dc94a75 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json @@ -86,7 +86,7 @@ "type": "string" }, "PolicyDocument": { - "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint.", + "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", "type": [ "string", "object" diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json b/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json index bfab0154e2..de33a1ba9b 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPNConnection.json @@ -70,14 +70,16 @@ ], "definitions": { "CloudwatchLogOptionsSpecification": { - "description": "", + "description": "Options for sending VPN tunnel logs to CloudWatch.", "additionalProperties": false, "type": "object", "properties": { "LogEnabled": { + "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", "type": "boolean" }, "LogOutputFormat": { + "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", "type": "string", "enum": [ "json", @@ -85,16 +87,18 @@ ] }, "LogGroupArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", "type": "string" } } }, "Phase1IntegrityAlgorithmsRequestListValue": { - "description": "", + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The value for the integrity algorithm.", "type": "string", "enum": [ "SHA1", @@ -106,11 +110,12 @@ } }, "Phase2EncryptionAlgorithmsRequestListValue": { - "description": "", + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The encryption algorithm.", "type": "string", "enum": [ "AES128", @@ -122,11 +127,12 @@ } }, "Phase2IntegrityAlgorithmsRequestListValue": { - "description": "", + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The integrity algorithm.", "type": "string", "enum": [ "SHA1", @@ -138,11 +144,12 @@ } }, "Phase1DHGroupNumbersRequestListValue": { - "description": "", + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The Diffie-Hellmann group number.", "type": "integer", "enum": [ 2, @@ -168,7 +175,7 @@ "properties": { "Phase2EncryptionAlgorithms": { "uniqueItems": false, - "description": "", + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", "insertionOrder": false, "type": "array", "items": { @@ -177,7 +184,7 @@ }, "Phase2DHGroupNumbers": { "uniqueItems": false, - "description": "", + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", "insertionOrder": false, "type": "array", "items": { @@ -185,11 +192,11 @@ } }, "TunnelInsideIpv6Cidr": { - "description": "", + "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", "type": "string" }, "StartupAction": { - "description": "", + "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", "type": "string", "enum": [ "add", @@ -202,7 +209,7 @@ }, "IKEVersions": { "uniqueItems": false, - "description": "", + "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", "insertionOrder": false, "type": "array", "items": { @@ -210,12 +217,12 @@ } }, "LogOptions": { - "description": "", + "description": "Options for logging VPN tunnel activity.", "$ref": "#/definitions/VpnTunnelLogOptionsSpecification" }, "Phase1DHGroupNumbers": { "uniqueItems": false, - "description": "", + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", "insertionOrder": false, "type": "array", "items": { @@ -223,22 +230,22 @@ } }, "ReplayWindowSize": { - "description": "", + "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", "maximum": 2048, "type": "integer", "minimum": 64 }, "EnableTunnelLifecycleControl": { - "description": "", + "description": "Turn on or off tunnel endpoint lifecycle control feature.", "type": "boolean" }, "RekeyMarginTimeSeconds": { - "description": "", + "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", "type": "integer", "minimum": 60 }, "DPDTimeoutAction": { - "description": "", + "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", "type": "string", "enum": [ "clear", @@ -247,14 +254,14 @@ ] }, "Phase2LifetimeSeconds": { - "description": "", + "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", "maximum": 3600, "type": "integer", "minimum": 900 }, "Phase2IntegrityAlgorithms": { "uniqueItems": false, - "description": "", + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", "insertionOrder": false, "type": "array", "items": { @@ -263,7 +270,7 @@ }, "Phase1IntegrityAlgorithms": { "uniqueItems": false, - "description": "", + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", "insertionOrder": false, "type": "array", "items": { @@ -275,20 +282,20 @@ "type": "string" }, "Phase1LifetimeSeconds": { - "description": "", + "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", "maximum": 28800, "type": "integer", "minimum": 900 }, "RekeyFuzzPercentage": { - "description": "", + "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", "maximum": 100, "type": "integer", "minimum": 0 }, "Phase1EncryptionAlgorithms": { "uniqueItems": false, - "description": "", + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", "insertionOrder": false, "type": "array", "items": { @@ -296,18 +303,19 @@ } }, "DPDTimeoutSeconds": { - "description": "", + "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", "type": "integer", "minimum": 30 } } }, "Phase1EncryptionAlgorithmsRequestListValue": { - "description": "", + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The value for the encryption algorithm.", "type": "string", "enum": [ "AES128", @@ -319,11 +327,12 @@ } }, "IKEVersionsRequestListValue": { - "description": "", + "description": "The IKE version that is permitted for the VPN tunnel.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The IKE version.", "type": "string", "enum": [ "ikev1", @@ -352,21 +361,23 @@ ] }, "VpnTunnelLogOptionsSpecification": { - "description": "", + "description": "Options for logging VPN tunnel activity.", "additionalProperties": false, "type": "object", "properties": { "CloudwatchLogOptions": { + "description": "Options for sending VPN tunnel logs to CloudWatch.", "$ref": "#/definitions/CloudwatchLogOptionsSpecification" } } }, "Phase2DHGroupNumbersRequestListValue": { - "description": "", + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The Diffie-Hellmann group number.", "type": "integer", "enum": [ 2, diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Volume.json b/internal/service/cloudformation/schemas/AWS_EC2_Volume.json index e16e10ecb3..90c1d1b310 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_Volume.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_Volume.json @@ -88,7 +88,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] }, "handlers": { "create": { @@ -100,7 +105,8 @@ "ec2:CreateTags", "kms:GenerateDataKeyWithoutPlaintext", "kms:CreateGrant" - ] + ], + "timeoutInMinutes": 725 }, "read": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_ECS_CapacityProvider.json b/internal/service/cloudformation/schemas/AWS_ECS_CapacityProvider.json index c6c19d164f..1c4f4bb68f 100644 --- a/internal/service/cloudformation/schemas/AWS_ECS_CapacityProvider.json +++ b/internal/service/cloudformation/schemas/AWS_ECS_CapacityProvider.json @@ -3,7 +3,16 @@ "/properties/AutoScalingGroupProvider/AutoScalingGroupArn": "$split(AutoScalingGroupProvider.AutoScalingGroupArn, \"autoScalingGroupName/\")[-1] $OR $split(AutoScalingGroupArn, \"autoScalingGroupName/\")[-1]" }, "tagging": { - "taggable": true + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true }, "handlers": { "read": { @@ -51,32 +60,6 @@ "/properties/Name" ], "definitions": { - "ManagedScaling": { - "description": "The managed scaling settings for the Auto Scaling group capacity provider.", - "additionalProperties": false, - "type": "object", - "properties": { - "Status": { - "type": "string", - "enum": [ - "DISABLED", - "ENABLED" - ] - }, - "MinimumScalingStepSize": { - "type": "integer" - }, - "InstanceWarmupPeriod": { - "type": "integer" - }, - "TargetCapacity": { - "type": "integer" - }, - "MaximumScalingStepSize": { - "type": "integer" - } - } - }, "AutoScalingGroupProvider": { "additionalProperties": false, "type": "object", @@ -106,6 +89,32 @@ "AutoScalingGroupArn" ] }, + "ManagedScaling": { + "description": "The managed scaling settings for the Auto Scaling group capacity provider.", + "additionalProperties": false, + "type": "object", + "properties": { + "Status": { + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ] + }, + "MinimumScalingStepSize": { + "type": "integer" + }, + "InstanceWarmupPeriod": { + "type": "integer" + }, + "TargetCapacity": { + "type": "integer" + }, + "MaximumScalingStepSize": { + "type": "integer" + } + } + }, "Tag": { "additionalProperties": false, "type": "object", @@ -134,8 +143,5 @@ "Name": { "type": "string" } - }, - "required": [ - "AutoScalingGroupProvider" - ] + } } diff --git a/internal/service/cloudformation/schemas/AWS_ECS_Service.json b/internal/service/cloudformation/schemas/AWS_ECS_Service.json index 5e30af2456..885442a560 100644 --- a/internal/service/cloudformation/schemas/AWS_ECS_Service.json +++ b/internal/service/cloudformation/schemas/AWS_ECS_Service.json @@ -1,10 +1,15 @@ { "tagging": { + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": true + "cloudFormationSystemTags": false }, "propertyTransform": { "/properties/Role": "Role $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:iam::[0-9]{12}[:]role/{1}\", Role])" @@ -277,7 +282,7 @@ "type": "string" } }, - "description": "The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", "additionalProperties": false, "type": "object" }, diff --git a/internal/service/cloudformation/schemas/AWS_ElastiCache_GlobalReplicationGroup.json b/internal/service/cloudformation/schemas/AWS_ElastiCache_GlobalReplicationGroup.json index e98b8ffbc6..7b7a35be7a 100644 --- a/internal/service/cloudformation/schemas/AWS_ElastiCache_GlobalReplicationGroup.json +++ b/internal/service/cloudformation/schemas/AWS_ElastiCache_GlobalReplicationGroup.json @@ -83,6 +83,10 @@ "description": "The engine version of the Global Datastore.", "type": "string" }, + "Engine": { + "description": "The engine of the Global Datastore.", + "type": "string" + }, "CacheParameterGroupName": { "description": "Cache parameter group name to use for the new engine version. This parameter cannot be modified independently.", "type": "string" diff --git a/internal/service/cloudformation/schemas/AWS_ElastiCache_ServerlessCache.json b/internal/service/cloudformation/schemas/AWS_ElastiCache_ServerlessCache.json index 87dbb61f4c..23ad1667fa 100644 --- a/internal/service/cloudformation/schemas/AWS_ElastiCache_ServerlessCache.json +++ b/internal/service/cloudformation/schemas/AWS_ElastiCache_ServerlessCache.json @@ -200,7 +200,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] }, "additionalProperties": false, "readOnlyProperties": [ @@ -219,8 +223,6 @@ ], "createOnlyProperties": [ "/properties/ServerlessCacheName", - "/properties/Engine", - "/properties/MajorEngineVersion", "/properties/KmsKeyId", "/properties/SnapshotArnsToRestore", "/properties/SubnetIds" diff --git a/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json b/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json index f247e15fa0..90afe70050 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_EncoderConfiguration.json @@ -55,16 +55,16 @@ "default": 30 }, "Height": { - "description": "Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + "description": "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", "type": "integer", - "minimum": 1, + "minimum": 2, "maximum": 1920, "default": 720 }, "Width": { - "description": "Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + "description": "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", "type": "integer", - "minimum": 1, + "minimum": 2, "maximum": 1920, "default": 1280 } diff --git a/internal/service/cloudformation/schemas/AWS_ImageBuilder_Component.json b/internal/service/cloudformation/schemas/AWS_ImageBuilder_Component.json index 07ccdbd014..f4e1203f12 100644 --- a/internal/service/cloudformation/schemas/AWS_ImageBuilder_Component.json +++ b/internal/service/cloudformation/schemas/AWS_ImageBuilder_Component.json @@ -36,7 +36,8 @@ "type": "string", "enum": [ "Windows", - "Linux" + "Linux", + "macOS" ] }, "Data": { diff --git a/internal/service/cloudformation/schemas/AWS_ImageBuilder_InfrastructureConfiguration.json b/internal/service/cloudformation/schemas/AWS_ImageBuilder_InfrastructureConfiguration.json index 2a15d77f4e..6c1670b4f7 100644 --- a/internal/service/cloudformation/schemas/AWS_ImageBuilder_InfrastructureConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_ImageBuilder_InfrastructureConfiguration.json @@ -1,64 +1,113 @@ { + "typeName": "AWS::ImageBuilder::InfrastructureConfiguration", + "description": "Resource schema for AWS::ImageBuilder::InfrastructureConfiguration", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "handlers": { - "read": { - "permissions": [ - "imagebuilder:GetInfrastructureConfiguration" - ] + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", + "type": "string" }, - "create": { - "permissions": [ - "iam:PassRole", - "iam:GetRole", - "iam:GetInstanceProfile", - "iam:CreateServiceLinkedRole", - "sns:Publish", - "imagebuilder:TagResource", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:CreateInfrastructureConfiguration" - ] + "Name": { + "description": "The name of the infrastructure configuration.", + "type": "string" }, - "update": { - "permissions": [ - "iam:PassRole", - "sns:Publish", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:UpdateInfrastructureConfiguration" - ] + "Description": { + "description": "The description of the infrastructure configuration.", + "type": "string" }, - "list": { - "permissions": [ - "imagebuilder:ListInfrastructureConfigurations" - ] + "InstanceTypes": { + "description": "The instance types of the infrastructure configuration.", + "type": "array", + "insertionOrder": true, + "items": { + "type": "string" + } }, - "delete": { - "permissions": [ - "imagebuilder:UnTagResource", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:DeleteInfrastructureConfiguration" - ] + "SecurityGroupIds": { + "description": "The security group IDs of the infrastructure configuration.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + } + }, + "Logging": { + "description": "The logging configuration of the infrastructure configuration.", + "$ref": "#/definitions/Logging" + }, + "SubnetId": { + "description": "The subnet ID of the infrastructure configuration.", + "type": "string" + }, + "KeyPair": { + "description": "The EC2 key pair of the infrastructure configuration..", + "type": "string" + }, + "TerminateInstanceOnFailure": { + "description": "The terminate instance on failure configuration of the infrastructure configuration.", + "type": "boolean" + }, + "InstanceProfileName": { + "description": "The instance profile of the infrastructure configuration.", + "type": "string" + }, + "InstanceMetadataOptions": { + "description": "The instance metadata option settings for the infrastructure configuration.", + "$ref": "#/definitions/InstanceMetadataOptions" + }, + "SnsTopicArn": { + "description": "The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration.", + "type": "string" + }, + "ResourceTags": { + "description": "The tags attached to the resource created by Image Builder.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "Tags": { + "description": "The tags associated with the component.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "Placement": { + "description": "The placement option settings for the infrastructure configuration.", + "$ref": "#/definitions/Placement" } }, - "typeName": "AWS::ImageBuilder::InfrastructureConfiguration", - "readOnlyProperties": [ - "/properties/Arn" - ], - "description": "Resource schema for AWS::ImageBuilder::InfrastructureConfiguration", - "createOnlyProperties": [ - "/properties/Name" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/Arn" - ], "definitions": { + "TagMap": { + "description": "TagMap", + "type": "object", + "additionalProperties": false, + "properties": { + "TagKey": { + "description": "TagKey", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "TagValue": { + "description": "TagValue", + "type": "string", + "minLength": 1, + "maxLength": 256 + } + } + }, "Logging": { "description": "The logging configuration of the infrastructure configuration.", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "S3Logs": { "$ref": "#/definitions/S3Logs" @@ -67,8 +116,8 @@ }, "InstanceMetadataOptions": { "description": "The instance metadata option settings for the infrastructure configuration.", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "HttpPutResponseHopLimit": { "description": "Limit the number of hops that an instance metadata request can traverse to reach its destination.", @@ -86,35 +135,44 @@ }, "S3Logs": { "description": "The S3 path in which to store the logs.", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { - "S3KeyPrefix": { - "description": "S3KeyPrefix", - "type": "string" - }, "S3BucketName": { "description": "S3BucketName", "type": "string" + }, + "S3KeyPrefix": { + "description": "S3KeyPrefix", + "type": "string" } } }, - "TagMap": { - "description": "TagMap", - "additionalProperties": false, + "Placement": { + "description": "The placement options", "type": "object", + "additionalProperties": false, "properties": { - "TagKey": { - "minLength": 1, - "description": "TagKey", - "type": "string", - "maxLength": 128 + "AvailabilityZone": { + "description": "AvailabilityZone", + "type": "string" }, - "TagValue": { - "minLength": 1, - "description": "TagValue", + "Tenancy": { + "description": "Tenancy", "type": "string", - "maxLength": 256 + "enum": [ + "default", + "dedicated", + "host" + ] + }, + "HostId": { + "description": "HostId", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "HostResourceGroupArn", + "type": "string" } } } @@ -123,82 +181,56 @@ "Name", "InstanceProfileName" ], - "properties": { - "Logging": { - "description": "The logging configuration of the infrastructure configuration.", - "$ref": "#/definitions/Logging" - }, - "KeyPair": { - "description": "The EC2 key pair of the infrastructure configuration..", - "type": "string" - }, - "Description": { - "description": "The description of the infrastructure configuration.", - "type": "string" - }, - "InstanceProfileName": { - "description": "The instance profile of the infrastructure configuration.", - "type": "string" - }, - "ResourceTags": { - "patternProperties": { - "": { - "type": "string" - } - }, - "description": "The tags attached to the resource created by Image Builder.", - "additionalProperties": false, - "type": "object" - }, - "TerminateInstanceOnFailure": { - "description": "The terminate instance on failure configuration of the infrastructure configuration.", - "type": "boolean" - }, - "SubnetId": { - "description": "The subnet ID of the infrastructure configuration.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "The security group IDs of the infrastructure configuration.", - "insertionOrder": false, - "type": "array", - "items": { - "type": "string" - } - }, - "Name": { - "description": "The name of the infrastructure configuration.", - "type": "string" - }, - "InstanceMetadataOptions": { - "description": "The instance metadata option settings for the infrastructure configuration.", - "$ref": "#/definitions/InstanceMetadataOptions" + "primaryIdentifier": [ + "/properties/Arn" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "tagging": { + "taggable": false + }, + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iam:GetRole", + "iam:GetInstanceProfile", + "iam:CreateServiceLinkedRole", + "sns:Publish", + "imagebuilder:TagResource", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:CreateInfrastructureConfiguration" + ] }, - "InstanceTypes": { - "description": "The instance types of the infrastructure configuration.", - "insertionOrder": true, - "type": "array", - "items": { - "type": "string" - } + "update": { + "permissions": [ + "iam:PassRole", + "sns:Publish", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:UpdateInfrastructureConfiguration" + ] }, - "SnsTopicArn": { - "description": "The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration.", - "type": "string" + "read": { + "permissions": [ + "imagebuilder:GetInfrastructureConfiguration" + ] }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", - "type": "string" + "delete": { + "permissions": [ + "imagebuilder:UnTagResource", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:DeleteInfrastructureConfiguration" + ] }, - "Tags": { - "patternProperties": { - "": { - "type": "string" - } - }, - "description": "The tags associated with the component.", - "additionalProperties": false, - "type": "object" + "list": { + "permissions": [ + "imagebuilder:ListInfrastructureConfigurations" + ] } - } + }, + "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json b/internal/service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json index 958bc044d3..db1ed1436a 100644 --- a/internal/service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_InspectorV2_CisScanConfiguration.json @@ -120,7 +120,7 @@ "maxItems": 10000, "items": { "type": "string", - "pattern": "^\\d{12}|ALL_MEMBERS|SELF$" + "pattern": "^\\d{12}|ALL_ACCOUNTS|SELF$" }, "uniqueItems": true }, diff --git a/internal/service/cloudformation/schemas/AWS_IoT_TopicRule.json b/internal/service/cloudformation/schemas/AWS_IoT_TopicRule.json index 96b1c94b7c..c59c2e552c 100644 --- a/internal/service/cloudformation/schemas/AWS_IoT_TopicRule.json +++ b/internal/service/cloudformation/schemas/AWS_IoT_TopicRule.json @@ -950,7 +950,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "iot:UntagResource", + "iot:TagResource", + "iot:ListTagsForResource" + ] }, "required": [ "TopicRulePayload" diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json index 068bc43a2d..6fb55abda1 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_Function.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_Function.json @@ -371,7 +371,7 @@ "type": "object", "properties": { "Arn": { - "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", + "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", "description": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", "type": "string", "maxLength": 200 @@ -489,7 +489,7 @@ ] }, "CodeSigningConfigArn": { - "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", + "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", "type": "string" }, diff --git a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json index 3f085d4fab..2ff466a8da 100644 --- a/internal/service/cloudformation/schemas/AWS_Location_APIKey.json +++ b/internal/service/cloudformation/schemas/AWS_Location_APIKey.json @@ -11,7 +11,7 @@ "type": "string", "maxLength": 200, "minLength": 5, - "pattern": "^geo:\\w*\\*?$" + "pattern": "^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$" }, "maxItems": 24, "minItems": 1, @@ -182,7 +182,21 @@ "geo:SearchPlaceIndexForSuggestions", "geo:GetPlace", "geo:CalculateRoute", - "geo:CalculateRouteMatrix" + "geo:CalculateRouteMatrix", + "geo-maps:GetTile", + "geo-maps:GetStaticMap", + "geo-places:Autocomplete", + "geo-places:Geocode", + "geo-places:GetPlace", + "geo-places:ReverseGeocode", + "geo-places:SearchNearby", + "geo-places:SearchText", + "geo-places:Suggest", + "geo-routes:CalculateIsolines", + "geo-routes:CalculateRouteMatrix", + "geo-routes:CalculateRoutes", + "geo-routes:OptimizeWaypoints", + "geo-routes:SnapToRoads" ] }, "read": { @@ -206,6 +220,20 @@ "geo:GetPlace", "geo:CalculateRoute", "geo:CalculateRouteMatrix", + "geo-maps:GetTile", + "geo-maps:GetStaticMap", + "geo-places:Autocomplete", + "geo-places:Geocode", + "geo-places:GetPlace", + "geo-places:ReverseGeocode", + "geo-places:SearchNearby", + "geo-places:SearchText", + "geo-places:Suggest", + "geo-routes:CalculateIsolines", + "geo-routes:CalculateRouteMatrix", + "geo-routes:CalculateRoutes", + "geo-routes:OptimizeWaypoints", + "geo-routes:SnapToRoads", "geo:UpdateKey" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json b/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json index 5d8bbf0066..73fc33e400 100644 --- a/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_MemoryDB_Cluster.json @@ -2,7 +2,6 @@ "typeName": "AWS::MemoryDB::Cluster", "description": "The AWS::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "taggable": true, "definitions": { "Endpoint": { "type": "object", @@ -161,6 +160,10 @@ "description": "The Amazon Resource Name (ARN) of the cluster.", "type": "string" }, + "Engine": { + "description": "The engine type used by the cluster.", + "type": "string" + }, "EngineVersion": { "description": "The Redis engine version used by the cluster.", "type": "string" @@ -184,6 +187,18 @@ } } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ] + }, "additionalProperties": false, "readOnlyProperties": [ "/properties/Status", @@ -218,8 +233,11 @@ "handlers": { "create": { "permissions": [ + "kms:DescribeKey", + "kms:CreateGrant", "memorydb:CreateCluster", "memorydb:DescribeClusters", + "memorydb:TagResource", "memorydb:ListTags" ] }, @@ -236,7 +254,8 @@ "memorydb:ListTags", "memorydb:TagResource", "memorydb:UntagResource" - ] + ], + "timeoutInMinutes": 2160 }, "delete": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json index da44b6d84c..46248cfc30 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json @@ -1,204 +1,85 @@ { - "tagging": { - "permissions": [ - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListTagsForResource" - ], - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": true - }, "typeName": "AWS::NetworkFirewall::FirewallPolicy", - "readOnlyProperties": [ - "/properties/FirewallPolicyArn", - "/properties/FirewallPolicyId" - ], "description": "Resource type definition for AWS::NetworkFirewall::FirewallPolicy", - "createOnlyProperties": [ - "/properties/FirewallPolicyName" - ], - "primaryIdentifier": [ - "/properties/FirewallPolicyArn" - ], - "required": [ - "FirewallPolicyName", - "FirewallPolicy" - ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "handlers": { - "read": { - "permissions": [ - "network-firewall:DescribeFirewallPolicy", - "network-firewall:ListTagsForResources" - ] - }, - "create": { - "permissions": [ - "network-firewall:CreateFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:ListTLSInspectionConfigurations", - "network-firewall:TagResource", - "network-firewall:ListRuleGroups" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListRuleGroups", - "network-firewall:ListTLSInspectionConfigurations" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListFirewallPolicies" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:UntagResource" - ] - } - }, "additionalProperties": false, "definitions": { - "VariableDefinition": { + "ResourceArn": { + "description": "A resource ARN.", + "type": "string", + "pattern": "^(arn:aws.*)$", "minLength": 1, - "pattern": "^.*$", - "type": "string" + "maxLength": 256 }, - "CustomAction": { - "additionalProperties": false, + "Tag": { "type": "object", "properties": { - "ActionName": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", + "Key": { "type": "string", - "maxLength": 128 - }, - "ActionDefinition": { - "$ref": "#/definitions/ActionDefinition" - } - }, - "required": [ - "ActionName", - "ActionDefinition" - ] - }, - "Priority": { - "maximum": 65535, - "type": "integer", - "minimum": 1 - }, - "StatefulEngineOptions": { - "additionalProperties": false, - "type": "object", - "properties": { - "StreamExceptionPolicy": { - "$ref": "#/definitions/StreamExceptionPolicy" - }, - "FlowTimeouts": { - "additionalProperties": false, - "type": "object", - "properties": { - "TcpIdleTimeoutSeconds": { - "maximum": 600, - "type": "integer", - "minimum": 60 - } - } + "minLength": 1, + "maxLength": 128, + "pattern": "^.*$" }, - "RuleOrder": { - "$ref": "#/definitions/RuleOrder" - } - } - }, - "Dimension": { - "additionalProperties": false, - "type": "object", - "properties": { "Value": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_ ]+$", "type": "string", - "maxLength": 128 + "minLength": 0, + "maxLength": 255, + "pattern": "^.*$" } }, "required": [ + "Key", "Value" - ] - }, - "OverrideAction": { - "type": "string", - "enum": [ - "DROP_TO_ALERT" - ] - }, - "RuleOrder": { - "type": "string", - "enum": [ - "DEFAULT_ACTION_ORDER", - "STRICT_ORDER" - ] + ], + "additionalProperties": false }, - "PublishMetricAction": { - "additionalProperties": false, + "FirewallPolicy": { "type": "object", "properties": { - "Dimensions": { + "StatelessDefaultActions": { + "type": "array", + "insertionOrder": true, "uniqueItems": false, + "items": { + "type": "string" + } + }, + "StatelessFragmentDefaultActions": { + "type": "array", "insertionOrder": true, + "uniqueItems": false, + "items": { + "type": "string" + } + }, + "StatelessCustomActions": { "type": "array", + "insertionOrder": true, + "uniqueItems": false, "items": { - "$ref": "#/definitions/Dimension" + "$ref": "#/definitions/CustomAction" } - } - }, - "required": [ - "Dimensions" - ] - }, - "ActionDefinition": { - "additionalProperties": false, - "type": "object", - "properties": { - "PublishMetricAction": { - "$ref": "#/definitions/PublishMetricAction" - } - } - }, - "FirewallPolicy": { - "additionalProperties": false, - "type": "object", - "properties": { + }, "StatelessRuleGroupReferences": { - "uniqueItems": false, - "insertionOrder": true, "type": "array", + "insertionOrder": true, + "uniqueItems": false, "items": { "$ref": "#/definitions/StatelessRuleGroupReference" } }, "StatefulRuleGroupReferences": { - "uniqueItems": false, - "insertionOrder": true, "type": "array", + "insertionOrder": true, + "uniqueItems": false, "items": { "$ref": "#/definitions/StatefulRuleGroupReference" } }, - "StatelessDefaultActions": { - "uniqueItems": false, - "insertionOrder": true, + "StatefulDefaultActions": { "type": "array", + "insertionOrder": true, + "uniqueItems": false, "items": { "type": "string" } @@ -206,38 +87,14 @@ "StatefulEngineOptions": { "$ref": "#/definitions/StatefulEngineOptions" }, - "StatelessCustomActions": { - "uniqueItems": false, - "insertionOrder": true, - "type": "array", - "items": { - "$ref": "#/definitions/CustomAction" - } - }, - "StatelessFragmentDefaultActions": { - "uniqueItems": false, - "insertionOrder": true, - "type": "array", - "items": { - "type": "string" - } - }, "PolicyVariables": { - "additionalProperties": false, "type": "object", "properties": { "RuleVariables": { "$ref": "#/definitions/RuleVariables" } - } - }, - "StatefulDefaultActions": { - "uniqueItems": false, - "insertionOrder": true, - "type": "array", - "items": { - "type": "string" - } + }, + "additionalProperties": false }, "TLSInspectionConfigurationArn": { "$ref": "#/definitions/ResourceArn" @@ -246,10 +103,79 @@ "required": [ "StatelessDefaultActions", "StatelessFragmentDefaultActions" - ] + ], + "additionalProperties": false + }, + "RuleVariables": { + "type": "object", + "patternProperties": { + "": { + "$ref": "#/definitions/IPSet" + } + }, + "additionalProperties": false + }, + "CustomAction": { + "type": "object", + "properties": { + "ActionName": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[a-zA-Z0-9]+$" + }, + "ActionDefinition": { + "$ref": "#/definitions/ActionDefinition" + } + }, + "required": [ + "ActionName", + "ActionDefinition" + ], + "additionalProperties": false + }, + "ActionDefinition": { + "type": "object", + "properties": { + "PublishMetricAction": { + "$ref": "#/definitions/PublishMetricAction" + } + }, + "additionalProperties": false + }, + "PublishMetricAction": { + "type": "object", + "properties": { + "Dimensions": { + "type": "array", + "insertionOrder": true, + "uniqueItems": false, + "items": { + "$ref": "#/definitions/Dimension" + } + } + }, + "required": [ + "Dimensions" + ], + "additionalProperties": false + }, + "Dimension": { + "type": "object", + "properties": { + "Value": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[a-zA-Z0-9-_ ]+$" + } + }, + "required": [ + "Value" + ], + "additionalProperties": false }, "StatefulRuleGroupReference": { - "additionalProperties": false, "type": "object", "properties": { "ResourceArn": { @@ -264,126 +190,200 @@ }, "required": [ "ResourceArn" - ] + ], + "additionalProperties": false }, - "StatefulRuleGroupOverride": { - "additionalProperties": false, + "StatelessRuleGroupReference": { "type": "object", "properties": { - "Action": { - "$ref": "#/definitions/OverrideAction" + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + }, + "Priority": { + "$ref": "#/definitions/Priority" } - } + }, + "required": [ + "ResourceArn", + "Priority" + ], + "additionalProperties": false }, - "ResourceArn": { - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "description": "A resource ARN.", + "Priority": { + "type": "integer", + "minimum": 1, + "maximum": 65535 + }, + "VariableDefinition": { "type": "string", - "maxLength": 256 + "minLength": 1, + "pattern": "^.*$" }, "IPSet": { - "additionalProperties": false, "type": "object", "properties": { "Definition": { - "uniqueItems": false, - "insertionOrder": true, "type": "array", + "insertionOrder": true, + "uniqueItems": false, "items": { "$ref": "#/definitions/VariableDefinition" } } - } + }, + "additionalProperties": false }, - "StatelessRuleGroupReference": { - "additionalProperties": false, + "StatefulRuleGroupOverride": { "type": "object", "properties": { - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - }, - "Priority": { - "$ref": "#/definitions/Priority" + "Action": { + "$ref": "#/definitions/OverrideAction" } }, - "required": [ - "ResourceArn", - "Priority" - ] + "additionalProperties": false }, - "StreamExceptionPolicy": { + "OverrideAction": { "type": "string", "enum": [ - "DROP", - "CONTINUE", - "REJECT" + "DROP_TO_ALERT" ] }, - "Tag": { - "additionalProperties": false, + "StatefulEngineOptions": { "type": "object", "properties": { - "Value": { - "minLength": 0, - "pattern": "^.*$", - "type": "string", - "maxLength": 255 + "RuleOrder": { + "$ref": "#/definitions/RuleOrder" }, - "Key": { - "minLength": 1, - "pattern": "^.*$", - "type": "string", - "maxLength": 128 + "StreamExceptionPolicy": { + "$ref": "#/definitions/StreamExceptionPolicy" + }, + "FlowTimeouts": { + "type": "object", + "properties": { + "TcpIdleTimeoutSeconds": { + "type": "integer", + "minimum": 60, + "maximum": 600 + } + }, + "additionalProperties": false } }, - "required": [ - "Key", - "Value" + "additionalProperties": false + }, + "RuleOrder": { + "type": "string", + "enum": [ + "DEFAULT_ACTION_ORDER", + "STRICT_ORDER" ] }, - "RuleVariables": { - "patternProperties": { - "": { - "$ref": "#/definitions/IPSet" - } - }, - "additionalProperties": false, - "type": "object" + "StreamExceptionPolicy": { + "type": "string", + "enum": [ + "DROP", + "CONTINUE", + "REJECT" + ] } }, "properties": { + "FirewallPolicyName": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[a-zA-Z0-9-]+$" + }, "FirewallPolicyArn": { "$ref": "#/definitions/ResourceArn" }, - "Description": { - "minLength": 1, - "pattern": "^.*$", - "type": "string", - "maxLength": 512 - }, - "FirewallPolicyName": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string", - "maxLength": 128 + "FirewallPolicy": { + "$ref": "#/definitions/FirewallPolicy" }, "FirewallPolicyId": { + "type": "string", "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "maxLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$" + }, + "Description": { "type": "string", - "maxLength": 36 + "minLength": 1, + "maxLength": 512, + "pattern": "^.*$" }, "Tags": { - "uniqueItems": true, - "insertionOrder": false, "type": "array", + "insertionOrder": false, + "uniqueItems": true, "items": { "$ref": "#/definitions/Tag" } + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ] + }, + "required": [ + "FirewallPolicyName", + "FirewallPolicy" + ], + "readOnlyProperties": [ + "/properties/FirewallPolicyArn", + "/properties/FirewallPolicyId" + ], + "primaryIdentifier": [ + "/properties/FirewallPolicyArn" + ], + "createOnlyProperties": [ + "/properties/FirewallPolicyName" + ], + "handlers": { + "create": { + "permissions": [ + "network-firewall:CreateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTLSInspectionConfigurations", + "network-firewall:TagResource", + "network-firewall:ListRuleGroups" + ] }, - "FirewallPolicy": { - "$ref": "#/definitions/FirewallPolicy" + "read": { + "permissions": [ + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListRuleGroups", + "network-firewall:ListTLSInspectionConfigurations" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListFirewallPolicies" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_Oam_Link.json b/internal/service/cloudformation/schemas/AWS_Oam_Link.json index fd1c958fa4..c16c2abef9 100644 --- a/internal/service/cloudformation/schemas/AWS_Oam_Link.json +++ b/internal/service/cloudformation/schemas/AWS_Oam_Link.json @@ -89,7 +89,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ] }, "required": [ "ResourceTypes", diff --git a/internal/service/cloudformation/schemas/AWS_Oam_Sink.json b/internal/service/cloudformation/schemas/AWS_Oam_Sink.json index 9e325c7701..87fc7c1c92 100644 --- a/internal/service/cloudformation/schemas/AWS_Oam_Sink.json +++ b/internal/service/cloudformation/schemas/AWS_Oam_Sink.json @@ -37,7 +37,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ] }, "required": [ "Name" diff --git a/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json b/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json index fbb575f1c7..2ecfb1a837 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json @@ -248,7 +248,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": true + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_ReferenceStore.json b/internal/service/cloudformation/schemas/AWS_Omics_ReferenceStore.json index 2ad3e649a8..af6fefdca7 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_ReferenceStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_ReferenceStore.json @@ -104,7 +104,12 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": false, - "cloudFormationSystemTags": true + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json b/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json index b084d61a1f..ee820427c6 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json @@ -75,7 +75,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_SequenceStore.json b/internal/service/cloudformation/schemas/AWS_Omics_SequenceStore.json index 799cdc67ab..d0728b3919 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_SequenceStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_SequenceStore.json @@ -111,7 +111,12 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": false, - "cloudFormationSystemTags": true + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json b/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json index 1eb3450f54..fe6ac4685d 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json @@ -138,7 +138,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json b/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json index 2368515cdd..244d6bd18f 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json @@ -170,7 +170,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ] }, "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Connector.json b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Connector.json index 9c7769010d..12551f5ec5 100644 --- a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Connector.json +++ b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Connector.json @@ -67,17 +67,16 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] }, "readOnlyProperties": [ "/properties/ConnectorArn" ], - "writeOnlyProperties": [ - "/properties/CertificateAuthorityArn", - "/properties/DirectoryId", - "/properties/Tags", - "/properties/VpcInformation" - ], "createOnlyProperties": [ "/properties/CertificateAuthorityArn", "/properties/DirectoryId", @@ -98,7 +97,8 @@ "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpoints", "pca-connector-ad:CreateConnector", - "pca-connector-ad:GetConnector" + "pca-connector-ad:GetConnector", + "pca-connector-ad:TagResource" ] }, "read": { @@ -109,10 +109,11 @@ }, "delete": { "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", "pca-connector-ad:GetConnector", "pca-connector-ad:DeleteConnector", - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints" + "pca-connector-ad:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_DirectoryRegistration.json b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_DirectoryRegistration.json index 5ecf35b4d9..9bee30889a 100644 --- a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_DirectoryRegistration.json +++ b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_DirectoryRegistration.json @@ -35,15 +35,16 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] }, "readOnlyProperties": [ "/properties/DirectoryRegistrationArn" ], - "writeOnlyProperties": [ - "/properties/DirectoryId", - "/properties/Tags" - ], "createOnlyProperties": [ "/properties/DirectoryId" ], @@ -53,25 +54,27 @@ "handlers": { "create": { "permissions": [ + "ds:AuthorizeApplication", + "ds:DescribeDirectories", "pca-connector-ad:GetDirectoryRegistration", "pca-connector-ad:CreateDirectoryRegistration", - "ds:AuthorizeApplication", - "ds:DescribeDirectories" + "pca-connector-ad:TagResource" ] }, "read": { "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:GetDirectoryRegistration" + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:ListTagsForResource" ] }, "delete": { "permissions": [ - "pca-connector-ad:GetDirectoryRegistration", - "pca-connector-ad:DeleteDirectoryRegistration", "ds:DescribeDirectories", "ds:UnauthorizeApplication", - "ds:UpdateAuthorizedApplication" + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:DeleteDirectoryRegistration", + "pca-connector-ad:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Template.json b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Template.json index e7109ffd07..5dd4112c73 100644 --- a/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Template.json +++ b/internal/service/cloudformation/schemas/AWS_PCAConnectorAD_Template.json @@ -972,17 +972,18 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] }, "readOnlyProperties": [ "/properties/TemplateArn" ], "writeOnlyProperties": [ - "/properties/ConnectorArn", - "/properties/Definition", - "/properties/Name", - "/properties/ReenrollAllCertificateHolders", - "/properties/Tags" + "/properties/ReenrollAllCertificateHolders" ], "createOnlyProperties": [ "/properties/ConnectorArn", @@ -994,7 +995,8 @@ "handlers": { "create": { "permissions": [ - "pca-connector-ad:CreateTemplate" + "pca-connector-ad:CreateTemplate", + "pca-connector-ad:TagResource" ] }, "read": { @@ -1014,7 +1016,8 @@ "delete": { "permissions": [ "pca-connector-ad:GetTemplate", - "pca-connector-ad:DeleteTemplate" + "pca-connector-ad:DeleteTemplate", + "pca-connector-ad:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json index 8ec492c926..8f0463b39c 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json @@ -160,6 +160,11 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ] } } diff --git a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json index 827c976ffb..f4f76cbd77 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json @@ -96,34 +96,179 @@ "create": { "permissions": [ "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:ListTagsForResource", "proton:TagResource", "proton:GetEnvironmentTemplate", - "kms:*" + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "read": { "permissions": [ - "proton:GetEnvironmentTemplate", + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", "proton:ListTagsForResource", - "kms:*" + "proton:GetEnvironmentTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "update": { "permissions": [ "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", "proton:ListTagsForResource", "proton:TagResource", - "proton:UntagResource", "proton:UpdateEnvironmentTemplate", - "proton:GetEnvironmentTemplate", - "kms:*" + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "delete": { "permissions": [ + "proton:CreateEnvironmentTemplate", "proton:DeleteEnvironmentTemplate", "proton:GetEnvironmentTemplate", - "kms:*" + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "list": { @@ -138,7 +283,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ] }, "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton" } diff --git a/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json b/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json index b5dd95eabc..114c461537 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json @@ -100,15 +100,83 @@ "permissions": [ "proton:CreateServiceTemplate", "proton:TagResource", - "kms:*", - "proton:GetServiceTemplate" + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "read": { "permissions": [ "proton:GetServiceTemplate", "proton:ListTagsForResource", - "kms:*" + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "update": { @@ -119,15 +187,83 @@ "proton:TagResource", "proton:UntagResource", "proton:UpdateServiceTemplate", - "kms:*" + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "delete": { "permissions": [ "proton:DeleteServiceTemplate", "proton:UntagResource", - "kms:*", - "proton:GetServiceTemplate" + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" ] }, "list": { @@ -142,7 +278,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ] }, "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton" } diff --git a/internal/service/cloudformation/schemas/AWS_RefactorSpaces_Environment.json b/internal/service/cloudformation/schemas/AWS_RefactorSpaces_Environment.json index 9b2213ccd1..00f95ac011 100644 --- a/internal/service/cloudformation/schemas/AWS_RefactorSpaces_Environment.json +++ b/internal/service/cloudformation/schemas/AWS_RefactorSpaces_Environment.json @@ -77,10 +77,6 @@ "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair." } }, - "required": [ - "Name", - "NetworkFabricType" - ], "readOnlyProperties": [ "/properties/EnvironmentIdentifier", "/properties/Arn", @@ -138,6 +134,13 @@ "refactor-spaces:ListTagsForResource" ] }, + "update": { + "permissions": [ + "refactor-spaces:GetEnvironment", + "refactor-spaces:TagResource", + "refactor-spaces:UntagResource" + ] + }, "delete": { "permissions": [ "refactor-spaces:GetEnvironment", @@ -159,5 +162,16 @@ ] } }, - "taggable": true + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "refactor-spaces:TagResource", + "refactor-spaces:ListTagsForResource", + "refactor-spaces:UntagResource" + ] + } } diff --git a/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json b/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json index 1fdb169dec..0d3407ad4b 100644 --- a/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json @@ -43,6 +43,7 @@ "/properties/Name", "/properties/ResourceArn" ], + "replacementStrategy": "delete_then_create", "primaryIdentifier": [ "/properties/Id" ], diff --git a/internal/service/cloudformation/schemas/AWS_S3_AccessGrant.json b/internal/service/cloudformation/schemas/AWS_S3_AccessGrant.json index 1957417775..3b9f42b4d4 100644 --- a/internal/service/cloudformation/schemas/AWS_S3_AccessGrant.json +++ b/internal/service/cloudformation/schemas/AWS_S3_AccessGrant.json @@ -1,7 +1,7 @@ { "typeName": "AWS::S3::AccessGrant", "description": "The AWS::S3::AccessGrant resource is an Amazon S3 resource type representing permissions to a specific S3 bucket or prefix hosted in an S3 Access Grants instance.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "definitions": { "Grantee": { "type": "object", @@ -133,7 +133,6 @@ "/properties/Tags" ], "writeOnlyProperties": [ - "/properties/Tags", "/properties/S3PrefixType" ], "readOnlyProperties": [ @@ -148,7 +147,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "tagProperty": "/properties/Tags" + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ] }, "handlers": { "create": { @@ -159,7 +164,8 @@ }, "read": { "permissions": [ - "s3:GetAccessGrant" + "s3:GetAccessGrant", + "s3:ListTagsForResource" ] }, "delete": { @@ -174,7 +180,8 @@ }, "update": { "permissions": [ - "s3:TagResource" + "s3:TagResource", + "s3:UntagResource" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsInstance.json b/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsInstance.json index 6923405b79..d597f0bf20 100644 --- a/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsInstance.json +++ b/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsInstance.json @@ -74,7 +74,13 @@ "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "tagProperty": "/properties/Tags" + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ] }, "handlers": { "create": { @@ -85,7 +91,8 @@ }, "read": { "permissions": [ - "s3:GetAccessGrantsInstance" + "s3:GetAccessGrantsInstance", + "s3:ListTagsForResource" ] }, "delete": { @@ -95,7 +102,8 @@ }, "update": { "permissions": [ - "s3:TagResource" + "s3:TagResource", + "s3:UntagResource" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsLocation.json b/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsLocation.json index 2ab7ba3dda..8b283d4a85 100644 --- a/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsLocation.json +++ b/internal/service/cloudformation/schemas/AWS_S3_AccessGrantsLocation.json @@ -66,14 +66,17 @@ "createOnlyProperties": [ "/properties/Tags" ], - "writeOnlyProperties": [ - "/properties/Tags" - ], "tagging": { "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "tagProperty": "/properties/Tags" + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ] }, "handlers": { "create": { @@ -85,7 +88,8 @@ }, "read": { "permissions": [ - "s3:GetAccessGrantsLocation" + "s3:GetAccessGrantsLocation", + "s3:ListTagsForResource" ] }, "delete": { @@ -102,6 +106,7 @@ "permissions": [ "s3:UpdateAccessGrantsLocation", "s3:TagResource", + "s3:UntagResource", "iam:PassRole" ] } diff --git a/internal/service/cloudformation/schemas/AWS_S3_Bucket.json b/internal/service/cloudformation/schemas/AWS_S3_Bucket.json index 13dd967a5b..09e6e88b9c 100644 --- a/internal/service/cloudformation/schemas/AWS_S3_Bucket.json +++ b/internal/service/cloudformation/schemas/AWS_S3_Bucket.json @@ -308,7 +308,7 @@ ] }, "ServerSideEncryptionRule": { - "description": "Specifies the default server-side encryption configuration.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", + "description": "Specifies the default server-side encryption configuration.\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.\n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.", "type": "object", "additionalProperties": false, "properties": { @@ -323,11 +323,11 @@ } }, "ServerSideEncryptionByDefault": { - "description": "Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an AWS KMS key in your AWS account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. For more information, see [PUT Bucket encryption](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) in the *Amazon S3 API Reference*.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", + "description": "Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. For more information, see [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html).\n + *General purpose buckets* - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an AWS KMS key (``aws/s3``) in your AWS account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. \n + *Directory buckets* - Your SSE-KMS configuration can only support 1 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) per directory bucket for the lifetime of the bucket. The [managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (``aws/s3``) isn't supported. \n + *Directory buckets* - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.", "type": "object", "properties": { "KMSMasterKeyID": { - "description": "AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", "type": "string" }, "SSEAlgorithm": { @@ -337,7 +337,7 @@ "AES256", "aws:kms:dsse" ], - "description": "Server-side encryption algorithm to use for the default encryption." + "description": "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``." } }, "additionalProperties": false, diff --git a/internal/service/cloudformation/schemas/AWS_SNS_Topic.json b/internal/service/cloudformation/schemas/AWS_SNS_Topic.json index 6936b01681..5469565710 100644 --- a/internal/service/cloudformation/schemas/AWS_SNS_Topic.json +++ b/internal/service/cloudformation/schemas/AWS_SNS_Topic.json @@ -10,27 +10,7 @@ }, "KmsMasterKeyId": { "description": "The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*.\n This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html).", - "type": "string", - "anyOf": [ - { - "relationshipRef": { - "typeName": "AWS::KMS::Key", - "propertyPath": "/properties/Arn" - } - }, - { - "relationshipRef": { - "typeName": "AWS::KMS::Key", - "propertyPath": "/properties/KeyId" - } - }, - { - "relationshipRef": { - "typeName": "AWS::KMS::Alias", - "propertyPath": "/properties/AliasName" - } - } - ] + "type": "string" }, "DataProtectionPolicy": { "description": "The body of the policy document you want to use for this topic.\n You can only add one policy per topic.\n The policy must be in JSON string format.\n Length Constraints: Maximum length of 30,720.", @@ -118,20 +98,6 @@ "properties": { "Endpoint": { "type": "string", - "anyOf": [ - { - "relationshipRef": { - "typeName": "AWS::Lambda::Function", - "propertyPath": "/properties/Arn" - } - }, - { - "relationshipRef": { - "typeName": "AWS::SQS::Queue", - "propertyPath": "/properties/Arn" - } - } - ], "description": "The endpoint that receives notifications from the SNS topic. The endpoint value depends on the protocol that you specify. For more information, see the ``Endpoint`` parameter of the ``Subscribe`` action in the *API Reference*." }, "Protocol": { diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_Domain.json b/internal/service/cloudformation/schemas/AWS_SageMaker_Domain.json index 8190b4293b..110d70dd8a 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_Domain.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_Domain.json @@ -117,6 +117,14 @@ "description": "The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+" + }, + "TagPropagation": { + "type": "string", + "description": "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + "enum": [ + "ENABLED", + "DISABLED" + ] } }, "definitions": { @@ -743,6 +751,14 @@ }, "DockerSettings": { "$ref": "#/definitions/DockerSettings" + }, + "ExecutionRoleIdentityConfig": { + "type": "string", + "description": "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + "enum": [ + "USER_PROFILE_NAME", + "DISABLED" + ] } } }, From d39e93b14ab31d7290dcd4e01a05bf29c06091a7 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 22:24:59 -0400 Subject: [PATCH 2/6] 10/24/2024 CloudFormation schemas in us-east-1; New schemas. --- internal/provider/all_schemas.hcl | 28 +- .../available_schemas.2024-10-24.hcl | 4556 +++++++++++++++++ internal/provider/import_examples_gen.json | 30 + internal/provider/plural_data_sources.go | 4 + internal/provider/resources.go | 6 + internal/provider/singular_data_sources.go | 6 + .../schemas/AWS_AppSync_GraphQLApi.json | 343 ++ ..._Backup_LogicallyAirGappedBackupVault.json | 149 + .../AWS_Cognito_UserPoolIdentityProvider.json | 105 + .../schemas/AWS_Redshift_Integration.json | 182 + .../schemas/AWS_Route53_RecordSet.json | 379 ++ .../schemas/AWS_SageMaker_Endpoint.json | 279 + 12 files changed, 6066 insertions(+), 1 deletion(-) create mode 100644 internal/provider/generators/allschemas/available_schemas.2024-10-24.hcl create mode 100644 internal/service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json create mode 100644 internal/service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json create mode 100644 internal/service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json create mode 100644 internal/service/cloudformation/schemas/AWS_Redshift_Integration.json create mode 100644 internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json create mode 100644 internal/service/cloudformation/schemas/AWS_SageMaker_Endpoint.json diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index bec4ccfedf..83aa9740e9 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -390,6 +390,10 @@ resource_schema "aws_appsync_function_configuration" { 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 @@ -513,6 +517,10 @@ 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" } @@ -935,6 +943,11 @@ resource_schema "aws_cognito_user_pool_group" { 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 @@ -3781,6 +3794,10 @@ 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" } @@ -3913,6 +3930,11 @@ resource_schema "aws_route53_key_signing_key" { cloudformation_type_name = "AWS::Route53::KeySigningKey" } +resource_schema "aws_route53_record_set" { + cloudformation_type_name = "AWS::Route53::RecordSet" + suppress_plural_data_source_generation = true +} + resource_schema "aws_route53profiles_profile" { cloudformation_type_name = "AWS::Route53Profiles::Profile" } @@ -4267,6 +4289,10 @@ 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" } @@ -4775,4 +4801,4 @@ resource_schema "aws_xray_resource_policy" { resource_schema "aws_xray_sampling_rule" { cloudformation_type_name = "AWS::XRay::SamplingRule" -} \ No newline at end of file +} diff --git a/internal/provider/generators/allschemas/available_schemas.2024-10-24.hcl b/internal/provider/generators/allschemas/available_schemas.2024-10-24.hcl new file mode 100644 index 0000000000..c54a1f2c64 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-10-24.hcl @@ -0,0 +1,4556 @@ +# 1073 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_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_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_nimblestudio_launch_profile" { + cloudformation_type_name = "AWS::NimbleStudio::LaunchProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_streaming_image" { + cloudformation_type_name = "AWS::NimbleStudio::StreamingImage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_nimblestudio_studio" { + cloudformation_type_name = "AWS::NimbleStudio::Studio" +} + +resource_schema "aws_nimblestudio_studio_component" { + cloudformation_type_name = "AWS::NimbleStudio::StudioComponent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53_record_set" { + cloudformation_type_name = "AWS::Route53::RecordSet" + suppress_plural_data_source_generation = true +} + +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_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 08da582fa1..707b3cd8e0 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -349,6 +349,11 @@ "identifier": ["FunctionArn"], "path": "./examples/resources/awscc_appsync_function_configuration/import.sh" }, + { + "resource": "awscc_appsync_graph_ql_api", + "identifier": ["ApiId"], + "path": "./examples/resources/awscc_appsync_graph_ql_api/import.sh" + }, { "resource": "awscc_appsync_resolver", "identifier": ["ResolverArn"], @@ -484,6 +489,11 @@ "identifier": ["FrameworkArn"], "path": "./examples/resources/awscc_backup_framework/import.sh" }, + { + "resource": "awscc_backup_logically_air_gapped_backup_vault", + "identifier": ["BackupVaultName"], + "path": "./examples/resources/awscc_backup_logically_air_gapped_backup_vault/import.sh" + }, { "resource": "awscc_backup_report_plan", "identifier": ["ReportPlanArn"], @@ -949,6 +959,11 @@ "identifier": ["UserPoolId","GroupName"], "path": "./examples/resources/awscc_cognito_user_pool_group/import.sh" }, + { + "resource": "awscc_cognito_user_pool_identity_provider", + "identifier": ["UserPoolId","ProviderName"], + "path": "./examples/resources/awscc_cognito_user_pool_identity_provider/import.sh" + }, { "resource": "awscc_cognito_user_pool_resource_server", "identifier": ["UserPoolId","Identifier"], @@ -4099,6 +4114,11 @@ "identifier": ["SubscriptionName"], "path": "./examples/resources/awscc_redshift_event_subscription/import.sh" }, + { + "resource": "awscc_redshift_integration", + "identifier": ["IntegrationArn"], + "path": "./examples/resources/awscc_redshift_integration/import.sh" + }, { "resource": "awscc_redshift_scheduled_action", "identifier": ["ScheduledActionName"], @@ -4244,6 +4264,11 @@ "identifier": ["HostedZoneId","Name"], "path": "./examples/resources/awscc_route53_key_signing_key/import.sh" }, + { + "resource": "awscc_route53_record_set", + "identifier": ["Name","HostedZoneId","Type","SetIdentifier"], + "path": "./examples/resources/awscc_route53_record_set/import.sh" + }, { "resource": "awscc_route53profiles_profile", "identifier": ["Id"], @@ -4669,6 +4694,11 @@ "identifier": ["DomainId"], "path": "./examples/resources/awscc_sagemaker_domain/import.sh" }, + { + "resource": "awscc_sagemaker_endpoint", + "identifier": ["EndpointArn"], + "path": "./examples/resources/awscc_sagemaker_endpoint/import.sh" + }, { "resource": "awscc_sagemaker_feature_group", "identifier": ["FeatureGroupName"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index 87206f3da9..2fe29814e1 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -39,6 +39,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_appstream_directory_configs -cftype AWS::AppStream::DirectoryConfig -package appstream ../aws/appstream/directory_config_plural_data_source_gen.go ../aws/appstream/directory_config_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appstream_image_builders -cftype AWS::AppStream::ImageBuilder -package appstream ../aws/appstream/image_builder_plural_data_source_gen.go ../aws/appstream/image_builder_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_appsync_domain_names -cftype AWS::AppSync::DomainName -package appsync ../aws/appsync/domain_name_plural_data_source_gen.go ../aws/appsync/domain_name_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_appsync_graph_ql_apis -cftype AWS::AppSync::GraphQLApi -package appsync ../aws/appsync/graph_ql_api_plural_data_source_gen.go ../aws/appsync/graph_ql_api_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_apptest_test_cases -cftype AWS::AppTest::TestCase -package apptest ../aws/apptest/test_case_plural_data_source_gen.go ../aws/apptest/test_case_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_applicationautoscaling_scalable_targets -cftype AWS::ApplicationAutoScaling::ScalableTarget -package applicationautoscaling ../aws/applicationautoscaling/scalable_target_plural_data_source_gen.go ../aws/applicationautoscaling/scalable_target_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_applicationinsights_applications -cftype AWS::ApplicationInsights::Application -package applicationinsights ../aws/applicationinsights/application_plural_data_source_gen.go ../aws/applicationinsights/application_plural_data_source_gen_test.go @@ -61,6 +62,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_backup_selections -cftype AWS::Backup::BackupSelection -package backup ../aws/backup/backup_selection_plural_data_source_gen.go ../aws/backup/backup_selection_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_backup_vaults -cftype AWS::Backup::BackupVault -package backup ../aws/backup/backup_vault_plural_data_source_gen.go ../aws/backup/backup_vault_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_frameworks -cftype AWS::Backup::Framework -package backup ../aws/backup/framework_plural_data_source_gen.go ../aws/backup/framework_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_logically_air_gapped_backup_vaults -cftype AWS::Backup::LogicallyAirGappedBackupVault -package backup ../aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen.go ../aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_report_plans -cftype AWS::Backup::ReportPlan -package backup ../aws/backup/report_plan_plural_data_source_gen.go ../aws/backup/report_plan_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_restore_testing_plans -cftype AWS::Backup::RestoreTestingPlan -package backup ../aws/backup/restore_testing_plan_plural_data_source_gen.go ../aws/backup/restore_testing_plan_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_backup_restore_testing_selections -cftype AWS::Backup::RestoreTestingSelection -package backup ../aws/backup/restore_testing_selection_plural_data_source_gen.go ../aws/backup/restore_testing_selection_plural_data_source_gen_test.go @@ -623,6 +625,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_endpoint_accesses -cftype AWS::Redshift::EndpointAccess -package redshift ../aws/redshift/endpoint_access_plural_data_source_gen.go ../aws/redshift/endpoint_access_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_endpoint_authorizations -cftype AWS::Redshift::EndpointAuthorization -package redshift ../aws/redshift/endpoint_authorization_plural_data_source_gen.go ../aws/redshift/endpoint_authorization_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_event_subscriptions -cftype AWS::Redshift::EventSubscription -package redshift ../aws/redshift/event_subscription_plural_data_source_gen.go ../aws/redshift/event_subscription_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_integrations -cftype AWS::Redshift::Integration -package redshift ../aws/redshift/integration_plural_data_source_gen.go ../aws/redshift/integration_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshift_scheduled_actions -cftype AWS::Redshift::ScheduledAction -package redshift ../aws/redshift/scheduled_action_plural_data_source_gen.go ../aws/redshift/scheduled_action_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshiftserverless_namespaces -cftype AWS::RedshiftServerless::Namespace -package redshiftserverless ../aws/redshiftserverless/namespace_plural_data_source_gen.go ../aws/redshiftserverless/namespace_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_redshiftserverless_workgroups -cftype AWS::RedshiftServerless::Workgroup -package redshiftserverless ../aws/redshiftserverless/workgroup_plural_data_source_gen.go ../aws/redshiftserverless/workgroup_plural_data_source_gen_test.go @@ -717,6 +720,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_data_quality_job_definitions -cftype AWS::SageMaker::DataQualityJobDefinition -package sagemaker ../aws/sagemaker/data_quality_job_definition_plural_data_source_gen.go ../aws/sagemaker/data_quality_job_definition_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_clusters -cftype AWS::SageMaker::Cluster -package sagemaker ../aws/sagemaker/cluster_plural_data_source_gen.go ../aws/sagemaker/cluster_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_domains -cftype AWS::SageMaker::Domain -package sagemaker ../aws/sagemaker/domain_plural_data_source_gen.go ../aws/sagemaker/domain_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_endpoints -cftype AWS::SageMaker::Endpoint -package sagemaker ../aws/sagemaker/endpoint_plural_data_source_gen.go ../aws/sagemaker/endpoint_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_feature_groups -cftype AWS::SageMaker::FeatureGroup -package sagemaker ../aws/sagemaker/feature_group_plural_data_source_gen.go ../aws/sagemaker/feature_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_images -cftype AWS::SageMaker::Image -package sagemaker ../aws/sagemaker/image_plural_data_source_gen.go ../aws/sagemaker/image_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_sagemaker_inference_components -cftype AWS::SageMaker::InferenceComponent -package sagemaker ../aws/sagemaker/inference_component_plural_data_source_gen.go ../aws/sagemaker/inference_component_plural_data_source_gen_test.go diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 41284d43ef..7366d33802 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -72,6 +72,7 @@ //go:generate go run generators/resource/main.go -resource awscc_appsync_domain_name -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainName.json -package appsync -- ../aws/appsync/domain_name_resource_gen.go ../aws/appsync/domain_name_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_domain_name_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainNameApiAssociation.json -package appsync -- ../aws/appsync/domain_name_api_association_resource_gen.go ../aws/appsync/domain_name_api_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_function_configuration -cfschema ../service/cloudformation/schemas/AWS_AppSync_FunctionConfiguration.json -package appsync -- ../aws/appsync/function_configuration_resource_gen.go ../aws/appsync/function_configuration_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_appsync_graph_ql_api -cfschema ../service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json -package appsync -- ../aws/appsync/graph_ql_api_resource_gen.go ../aws/appsync/graph_ql_api_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_resolver -cfschema ../service/cloudformation/schemas/AWS_AppSync_Resolver.json -package appsync -- ../aws/appsync/resolver_resource_gen.go ../aws/appsync/resolver_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_appsync_source_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_SourceApiAssociation.json -package appsync -- ../aws/appsync/source_api_association_resource_gen.go ../aws/appsync/source_api_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_apptest_test_case -cfschema ../service/cloudformation/schemas/AWS_AppTest_TestCase.json -package apptest -- ../aws/apptest/test_case_resource_gen.go ../aws/apptest/test_case_resource_gen_test.go @@ -99,6 +100,7 @@ //go:generate go run generators/resource/main.go -resource awscc_backup_backup_selection -cfschema ../service/cloudformation/schemas/AWS_Backup_BackupSelection.json -package backup -- ../aws/backup/backup_selection_resource_gen.go ../aws/backup/backup_selection_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_backup_backup_vault -cfschema ../service/cloudformation/schemas/AWS_Backup_BackupVault.json -package backup -- ../aws/backup/backup_vault_resource_gen.go ../aws/backup/backup_vault_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_backup_framework -cfschema ../service/cloudformation/schemas/AWS_Backup_Framework.json -package backup -- ../aws/backup/framework_resource_gen.go ../aws/backup/framework_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_backup_logically_air_gapped_backup_vault -cfschema ../service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json -package backup -- ../aws/backup/logically_air_gapped_backup_vault_resource_gen.go ../aws/backup/logically_air_gapped_backup_vault_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_backup_report_plan -cfschema ../service/cloudformation/schemas/AWS_Backup_ReportPlan.json -package backup -- ../aws/backup/report_plan_resource_gen.go ../aws/backup/report_plan_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_backup_restore_testing_plan -cfschema ../service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json -package backup -- ../aws/backup/restore_testing_plan_resource_gen.go ../aws/backup/restore_testing_plan_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_backup_restore_testing_selection -cfschema ../service/cloudformation/schemas/AWS_Backup_RestoreTestingSelection.json -package backup -- ../aws/backup/restore_testing_selection_resource_gen.go ../aws/backup/restore_testing_selection_resource_gen_test.go @@ -192,6 +194,7 @@ //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_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 //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_resource_server -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json -package cognito -- ../aws/cognito/user_pool_resource_server_resource_gen.go ../aws/cognito/user_pool_resource_server_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_risk_configuration_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolRiskConfigurationAttachment.json -package cognito -- ../aws/cognito/user_pool_risk_configuration_attachment_resource_gen.go ../aws/cognito/user_pool_risk_configuration_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_ui_customization_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolUICustomizationAttachment.json -package cognito -- ../aws/cognito/user_pool_ui_customization_attachment_resource_gen.go ../aws/cognito/user_pool_ui_customization_attachment_resource_gen_test.go @@ -822,6 +825,7 @@ //go:generate go run generators/resource/main.go -resource awscc_redshift_endpoint_access -cfschema ../service/cloudformation/schemas/AWS_Redshift_EndpointAccess.json -package redshift -- ../aws/redshift/endpoint_access_resource_gen.go ../aws/redshift/endpoint_access_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_redshift_endpoint_authorization -cfschema ../service/cloudformation/schemas/AWS_Redshift_EndpointAuthorization.json -package redshift -- ../aws/redshift/endpoint_authorization_resource_gen.go ../aws/redshift/endpoint_authorization_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_redshift_event_subscription -cfschema ../service/cloudformation/schemas/AWS_Redshift_EventSubscription.json -package redshift -- ../aws/redshift/event_subscription_resource_gen.go ../aws/redshift/event_subscription_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_redshift_integration -cfschema ../service/cloudformation/schemas/AWS_Redshift_Integration.json -package redshift -- ../aws/redshift/integration_resource_gen.go ../aws/redshift/integration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_redshift_scheduled_action -cfschema ../service/cloudformation/schemas/AWS_Redshift_ScheduledAction.json -package redshift -- ../aws/redshift/scheduled_action_resource_gen.go ../aws/redshift/scheduled_action_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_redshiftserverless_namespace -cfschema ../service/cloudformation/schemas/AWS_RedshiftServerless_Namespace.json -package redshiftserverless -- ../aws/redshiftserverless/namespace_resource_gen.go ../aws/redshiftserverless/namespace_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_redshiftserverless_workgroup -cfschema ../service/cloudformation/schemas/AWS_RedshiftServerless_Workgroup.json -package redshiftserverless -- ../aws/redshiftserverless/workgroup_resource_gen.go ../aws/redshiftserverless/workgroup_resource_gen_test.go @@ -851,6 +855,7 @@ //go:generate go run generators/resource/main.go -resource awscc_route53_health_check -cfschema ../service/cloudformation/schemas/AWS_Route53_HealthCheck.json -package route53 -- ../aws/route53/health_check_resource_gen.go ../aws/route53/health_check_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_route53_hosted_zone -cfschema ../service/cloudformation/schemas/AWS_Route53_HostedZone.json -package route53 -- ../aws/route53/hosted_zone_resource_gen.go ../aws/route53/hosted_zone_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_route53_key_signing_key -cfschema ../service/cloudformation/schemas/AWS_Route53_KeySigningKey.json -package route53 -- ../aws/route53/key_signing_key_resource_gen.go ../aws/route53/key_signing_key_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_route53_record_set -cfschema ../service/cloudformation/schemas/AWS_Route53_RecordSet.json -package route53 -- ../aws/route53/record_set_resource_gen.go ../aws/route53/record_set_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_route53profiles_profile -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_Profile.json -package route53profiles -- ../aws/route53profiles/profile_resource_gen.go ../aws/route53profiles/profile_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_route53profiles_profile_association -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json -package route53profiles -- ../aws/route53profiles/profile_association_resource_gen.go ../aws/route53profiles/profile_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_route53profiles_profile_resource_association -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json -package route53profiles -- ../aws/route53profiles/profile_resource_association_resource_gen.go ../aws/route53profiles/profile_resource_association_resource_gen_test.go @@ -936,6 +941,7 @@ //go:generate go run generators/resource/main.go -resource awscc_sagemaker_device -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Device.json -package sagemaker -- ../aws/sagemaker/device_resource_gen.go ../aws/sagemaker/device_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_device_fleet -cfschema ../service/cloudformation/schemas/AWS_SageMaker_DeviceFleet.json -package sagemaker -- ../aws/sagemaker/device_fleet_resource_gen.go ../aws/sagemaker/device_fleet_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_domain -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Domain.json -package sagemaker -- ../aws/sagemaker/domain_resource_gen.go ../aws/sagemaker/domain_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_sagemaker_endpoint -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Endpoint.json -package sagemaker -- ../aws/sagemaker/endpoint_resource_gen.go ../aws/sagemaker/endpoint_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_feature_group -cfschema ../service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json -package sagemaker -- ../aws/sagemaker/feature_group_resource_gen.go ../aws/sagemaker/feature_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_image -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Image.json -package sagemaker -- ../aws/sagemaker/image_resource_gen.go ../aws/sagemaker/image_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_image_version -cfschema ../service/cloudformation/schemas/AWS_SageMaker_ImageVersion.json -package sagemaker -- ../aws/sagemaker/image_version_resource_gen.go ../aws/sagemaker/image_version_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 7f78eff8d3..8b0e484fff 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -72,6 +72,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_domain_name -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainName.json -package appsync ../aws/appsync/domain_name_singular_data_source_gen.go ../aws/appsync/domain_name_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_domain_name_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_DomainNameApiAssociation.json -package appsync ../aws/appsync/domain_name_api_association_singular_data_source_gen.go ../aws/appsync/domain_name_api_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_function_configuration -cfschema ../service/cloudformation/schemas/AWS_AppSync_FunctionConfiguration.json -package appsync ../aws/appsync/function_configuration_singular_data_source_gen.go ../aws/appsync/function_configuration_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_graph_ql_api -cfschema ../service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json -package appsync ../aws/appsync/graph_ql_api_singular_data_source_gen.go ../aws/appsync/graph_ql_api_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_resolver -cfschema ../service/cloudformation/schemas/AWS_AppSync_Resolver.json -package appsync ../aws/appsync/resolver_singular_data_source_gen.go ../aws/appsync/resolver_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_appsync_source_api_association -cfschema ../service/cloudformation/schemas/AWS_AppSync_SourceApiAssociation.json -package appsync ../aws/appsync/source_api_association_singular_data_source_gen.go ../aws/appsync/source_api_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_apptest_test_case -cfschema ../service/cloudformation/schemas/AWS_AppTest_TestCase.json -package apptest ../aws/apptest/test_case_singular_data_source_gen.go ../aws/apptest/test_case_singular_data_source_gen_test.go @@ -99,6 +100,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_backup_selection -cfschema ../service/cloudformation/schemas/AWS_Backup_BackupSelection.json -package backup ../aws/backup/backup_selection_singular_data_source_gen.go ../aws/backup/backup_selection_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_backup_vault -cfschema ../service/cloudformation/schemas/AWS_Backup_BackupVault.json -package backup ../aws/backup/backup_vault_singular_data_source_gen.go ../aws/backup/backup_vault_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_framework -cfschema ../service/cloudformation/schemas/AWS_Backup_Framework.json -package backup ../aws/backup/framework_singular_data_source_gen.go ../aws/backup/framework_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_logically_air_gapped_backup_vault -cfschema ../service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json -package backup ../aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen.go ../aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_report_plan -cfschema ../service/cloudformation/schemas/AWS_Backup_ReportPlan.json -package backup ../aws/backup/report_plan_singular_data_source_gen.go ../aws/backup/report_plan_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_restore_testing_plan -cfschema ../service/cloudformation/schemas/AWS_Backup_RestoreTestingPlan.json -package backup ../aws/backup/restore_testing_plan_singular_data_source_gen.go ../aws/backup/restore_testing_plan_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_backup_restore_testing_selection -cfschema ../service/cloudformation/schemas/AWS_Backup_RestoreTestingSelection.json -package backup ../aws/backup/restore_testing_selection_singular_data_source_gen.go ../aws/backup/restore_testing_selection_singular_data_source_gen_test.go @@ -192,6 +194,7 @@ //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_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 //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_resource_server -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolResourceServer.json -package cognito ../aws/cognito/user_pool_resource_server_singular_data_source_gen.go ../aws/cognito/user_pool_resource_server_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_risk_configuration_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolRiskConfigurationAttachment.json -package cognito ../aws/cognito/user_pool_risk_configuration_attachment_singular_data_source_gen.go ../aws/cognito/user_pool_risk_configuration_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_ui_customization_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolUICustomizationAttachment.json -package cognito ../aws/cognito/user_pool_ui_customization_attachment_singular_data_source_gen.go ../aws/cognito/user_pool_ui_customization_attachment_singular_data_source_gen_test.go @@ -822,6 +825,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshift_endpoint_access -cfschema ../service/cloudformation/schemas/AWS_Redshift_EndpointAccess.json -package redshift ../aws/redshift/endpoint_access_singular_data_source_gen.go ../aws/redshift/endpoint_access_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshift_endpoint_authorization -cfschema ../service/cloudformation/schemas/AWS_Redshift_EndpointAuthorization.json -package redshift ../aws/redshift/endpoint_authorization_singular_data_source_gen.go ../aws/redshift/endpoint_authorization_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshift_event_subscription -cfschema ../service/cloudformation/schemas/AWS_Redshift_EventSubscription.json -package redshift ../aws/redshift/event_subscription_singular_data_source_gen.go ../aws/redshift/event_subscription_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_redshift_integration -cfschema ../service/cloudformation/schemas/AWS_Redshift_Integration.json -package redshift ../aws/redshift/integration_singular_data_source_gen.go ../aws/redshift/integration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshift_scheduled_action -cfschema ../service/cloudformation/schemas/AWS_Redshift_ScheduledAction.json -package redshift ../aws/redshift/scheduled_action_singular_data_source_gen.go ../aws/redshift/scheduled_action_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshiftserverless_namespace -cfschema ../service/cloudformation/schemas/AWS_RedshiftServerless_Namespace.json -package redshiftserverless ../aws/redshiftserverless/namespace_singular_data_source_gen.go ../aws/redshiftserverless/namespace_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_redshiftserverless_workgroup -cfschema ../service/cloudformation/schemas/AWS_RedshiftServerless_Workgroup.json -package redshiftserverless ../aws/redshiftserverless/workgroup_singular_data_source_gen.go ../aws/redshiftserverless/workgroup_singular_data_source_gen_test.go @@ -851,6 +855,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_health_check -cfschema ../service/cloudformation/schemas/AWS_Route53_HealthCheck.json -package route53 ../aws/route53/health_check_singular_data_source_gen.go ../aws/route53/health_check_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_hosted_zone -cfschema ../service/cloudformation/schemas/AWS_Route53_HostedZone.json -package route53 ../aws/route53/hosted_zone_singular_data_source_gen.go ../aws/route53/hosted_zone_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_key_signing_key -cfschema ../service/cloudformation/schemas/AWS_Route53_KeySigningKey.json -package route53 ../aws/route53/key_signing_key_singular_data_source_gen.go ../aws/route53/key_signing_key_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_route53_record_set -cfschema ../service/cloudformation/schemas/AWS_Route53_RecordSet.json -package route53 ../aws/route53/record_set_singular_data_source_gen.go ../aws/route53/record_set_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53profiles_profile -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_Profile.json -package route53profiles ../aws/route53profiles/profile_singular_data_source_gen.go ../aws/route53profiles/profile_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53profiles_profile_association -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_ProfileAssociation.json -package route53profiles ../aws/route53profiles/profile_association_singular_data_source_gen.go ../aws/route53profiles/profile_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_route53profiles_profile_resource_association -cfschema ../service/cloudformation/schemas/AWS_Route53Profiles_ProfileResourceAssociation.json -package route53profiles ../aws/route53profiles/profile_resource_association_singular_data_source_gen.go ../aws/route53profiles/profile_resource_association_singular_data_source_gen_test.go @@ -936,6 +941,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_device -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Device.json -package sagemaker ../aws/sagemaker/device_singular_data_source_gen.go ../aws/sagemaker/device_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_device_fleet -cfschema ../service/cloudformation/schemas/AWS_SageMaker_DeviceFleet.json -package sagemaker ../aws/sagemaker/device_fleet_singular_data_source_gen.go ../aws/sagemaker/device_fleet_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_domain -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Domain.json -package sagemaker ../aws/sagemaker/domain_singular_data_source_gen.go ../aws/sagemaker/domain_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_endpoint -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Endpoint.json -package sagemaker ../aws/sagemaker/endpoint_singular_data_source_gen.go ../aws/sagemaker/endpoint_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_feature_group -cfschema ../service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json -package sagemaker ../aws/sagemaker/feature_group_singular_data_source_gen.go ../aws/sagemaker/feature_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_image -cfschema ../service/cloudformation/schemas/AWS_SageMaker_Image.json -package sagemaker ../aws/sagemaker/image_singular_data_source_gen.go ../aws/sagemaker/image_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_image_version -cfschema ../service/cloudformation/schemas/AWS_SageMaker_ImageVersion.json -package sagemaker ../aws/sagemaker/image_version_singular_data_source_gen.go ../aws/sagemaker/image_version_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json b/internal/service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json new file mode 100644 index 0000000000..d60e972dc7 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_AppSync_GraphQLApi.json @@ -0,0 +1,343 @@ +{ + "typeName": "AWS::AppSync::GraphQLApi", + "description": "Resource Type definition for AWS::AppSync::GraphQLApi", + "additionalProperties": false, + "properties": { + "AdditionalAuthenticationProviders": { + "type": "array", + "description": "A list of additional authentication providers for the GraphqlApi API.", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/AdditionalAuthenticationProvider" + } + }, + "ApiId": { + "description": "Unique AWS AppSync GraphQL API identifier.", + "type": "string" + }, + "ApiType": { + "description": "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the API key", + "type": "string" + }, + "AuthenticationType": { + "description": "Security configuration for your GraphQL API", + "type": "string" + }, + "EnhancedMetricsConfig": { + "description": "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent.", + "$ref": "#/definitions/EnhancedMetricsConfig" + }, + "EnvironmentVariables": { + "description": "A map containing the list of resources with their properties and environment variables.", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "GraphQLDns": { + "description": "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + "type": "string" + }, + "GraphQLEndpointArn": { + "description": "The GraphQL endpoint ARN.", + "type": "string" + }, + "GraphQLUrl": { + "description": "The Endpoint URL of your GraphQL API.", + "type": "string" + }, + "IntrospectionConfig": { + "description": "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + "type": "string" + }, + "LambdaAuthorizerConfig": { + "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + "$ref": "#/definitions/LambdaAuthorizerConfig" + }, + "LogConfig": { + "description": "The Amazon CloudWatch Logs configuration.", + "$ref": "#/definitions/LogConfig" + }, + "MergedApiExecutionRoleArn": { + "description": "The AWS Identity and Access Management service role ARN for a merged API. ", + "type": "string" + }, + "Name": { + "description": "The API name", + "type": "string" + }, + "OpenIDConnectConfig": { + "description": "The OpenID Connect configuration.", + "$ref": "#/definitions/OpenIDConnectConfig" + }, + "OwnerContact": { + "description": "The owner contact information for an API resource.", + "type": "string" + }, + "QueryDepthLimit": { + "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + "type": "integer" + }, + "RealtimeDns": { + "description": "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + "type": "string" + }, + "RealtimeUrl": { + "description": "The GraphQL API real-time endpoint URL.", + "type": "string" + }, + "ResolverCountLimit": { + "description": "The maximum number of resolvers that can be invoked in a single request.", + "type": "integer" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "UserPoolConfig": { + "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n", + "$ref": "#/definitions/UserPoolConfig" + }, + "Visibility": { + "description": "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + "type": "string" + }, + "XrayEnabled": { + "description": "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + "type": "boolean" + } + }, + "definitions": { + "OpenIDConnectConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "ClientId": { + "description": "The client identifier of the Relying party at the OpenID identity provider.", + "type": "string" + }, + "AuthTTL": { + "description": "The number of milliseconds that a token is valid after being authenticated.", + "type": "number" + }, + "Issuer": { + "description": "The issuer for the OIDC configuration. ", + "type": "string" + }, + "IatTTL": { + "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + "type": "number" + } + } + }, + "EnhancedMetricsConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "OperationLevelMetricsConfig": { + "description": "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + "type": "string" + }, + "ResolverLevelMetricsBehavior": { + "description": "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + "type": "string" + }, + "DataSourceLevelMetricsBehavior": { + "description": "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + "type": "string" + } + }, + "required": [ + "OperationLevelMetricsConfig", + "ResolverLevelMetricsBehavior", + "DataSourceLevelMetricsBehavior" + ] + }, + "CognitoUserPoolConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "AppIdClientRegex": { + "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + "type": "string" + }, + "UserPoolId": { + "description": "The user pool ID", + "type": "string" + }, + "AwsRegion": { + "description": "The AWS Region in which the user pool was created.", + "type": "string" + } + } + }, + "LambdaAuthorizerConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "IdentityValidationExpression": { + "description": "A regular expression for validation of tokens before the Lambda function is called.", + "type": "string" + }, + "AuthorizerUri": { + "description": "The ARN of the Lambda function to be called for authorization.", + "type": "string" + }, + "AuthorizerResultTtlInSeconds": { + "description": "The number of seconds a response should be cached for.", + "type": "integer" + } + } + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Value": { + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + }, + "UserPoolConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "AppIdClientRegex": { + "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + "type": "string" + }, + "UserPoolId": { + "description": "The user pool ID.", + "type": "string" + }, + "AwsRegion": { + "description": "The AWS Region in which the user pool was created.", + "type": "string" + }, + "DefaultAction": { + "description": "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + "type": "string" + } + } + }, + "AdditionalAuthenticationProvider": { + "type": "object", + "additionalProperties": false, + "properties": { + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/LambdaAuthorizerConfig" + }, + "OpenIDConnectConfig": { + "$ref": "#/definitions/OpenIDConnectConfig" + }, + "UserPoolConfig": { + "$ref": "#/definitions/CognitoUserPoolConfig" + }, + "AuthenticationType": { + "description": "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + "type": "string" + } + }, + "required": [ + "AuthenticationType" + ] + }, + "LogConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "ExcludeVerboseContent": { + "description": "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + "type": "boolean" + }, + "FieldLogLevel": { + "description": "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + "type": "string" + }, + "CloudWatchLogsRoleArn": { + "description": "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + "type": "string" + } + } + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource", + "appsync:ListTagsForResource" + ] + }, + "required": [ + "Name", + "AuthenticationType" + ], + "primaryIdentifier": [ + "/properties/ApiId" + ], + "readOnlyProperties": [ + "/properties/ApiId", + "/properties/Arn", + "/properties/GraphQLEndpointArn", + "/properties/GraphQLDns", + "/properties/GraphQLUrl", + "/properties/RealtimeDns", + "/properties/RealtimeUrl" + ], + "handlers": { + "create": { + "permissions": [ + "appsync:CreateGraphqlApi", + "appsync:TagResource" + ] + }, + "read": { + "permissions": [ + "appsync:GetGraphqlApi", + "appsync:GetGraphqlApiEnvironmentVariables", + "appsync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appsync:GetGraphqlApi", + "appsync:UpdateGraphqlApi", + "appsync:TagResource", + "appsync:UntagResource" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteGraphqlApi" + ] + }, + "list": { + "permissions": [ + "appsync:ListGraphqlApis" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json b/internal/service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json new file mode 100644 index 0000000000..f23cbced9a --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Backup_LogicallyAirGappedBackupVault.json @@ -0,0 +1,149 @@ +{ + "typeName": "AWS::Backup::LogicallyAirGappedBackupVault", + "description": "Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "NotificationObjectType": { + "type": "object", + "additionalProperties": false, + "properties": { + "BackupVaultEvents": { + "type": "array", + "insertionOrder": false, + "uniqueItems": false, + "items": { + "type": "string" + } + }, + "SNSTopicArn": { + "type": "string" + } + }, + "required": [ + "SNSTopicArn", + "BackupVaultEvents" + ] + }, + "BackupVaultNamePattern": { + "type": "string", + "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$" + } + }, + "properties": { + "AccessPolicy": { + "type": [ + "object", + "string" + ] + }, + "BackupVaultName": { + "$ref": "#/definitions/BackupVaultNamePattern" + }, + "MinRetentionDays": { + "type": "integer" + }, + "MaxRetentionDays": { + "type": "integer" + }, + "BackupVaultTags": { + "type": "object", + "additionalProperties": false, + "patternProperties": { + "": { + "type": "string" + } + } + }, + "Notifications": { + "$ref": "#/definitions/NotificationObjectType" + }, + "EncryptionKeyArn": { + "type": "string" + }, + "BackupVaultArn": { + "type": "string" + }, + "VaultState": { + "type": "string" + }, + "VaultType": { + "type": "string" + } + }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/BackupVaultTags", + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ] + }, + "required": [ + "BackupVaultName", + "MinRetentionDays", + "MaxRetentionDays" + ], + "createOnlyProperties": [ + "/properties/BackupVaultName", + "/properties/MinRetentionDays", + "/properties/MaxRetentionDays" + ], + "readOnlyProperties": [ + "/properties/BackupVaultArn", + "/properties/EncryptionKeyArn" + ], + "primaryIdentifier": [ + "/properties/BackupVaultName" + ], + "handlers": { + "create": { + "permissions": [ + "backup:TagResource", + "backup:CreateLogicallyAirGappedBackupVault", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup-storage:Mount", + "backup-storage:MountCapsule", + "backup:DescribeBackupVault" + ] + }, + "read": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:GetBackupVaultNotifications", + "backup:GetBackupVaultAccessPolicy", + "backup:ListTags" + ] + }, + "update": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:DeleteBackupVaultAccessPolicy", + "backup:DeleteBackupVaultNotifications", + "backup:DeleteBackupVaultLockConfiguration", + "backup:GetBackupVaultAccessPolicy", + "backup:ListTags", + "backup:TagResource", + "backup:UntagResource", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup:PutBackupVaultLockConfiguration" + ] + }, + "delete": { + "permissions": [ + "backup:DeleteBackupVault" + ] + }, + "list": { + "permissions": [ + "backup:ListBackupVaults" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json b/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json new file mode 100644 index 0000000000..f43be19736 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json @@ -0,0 +1,105 @@ +{ + "typeName": "AWS::Cognito::UserPoolIdentityProvider", + "description": "Resource Type definition for AWS::Cognito::UserPoolIdentityProvider", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "properties": { + "UserPoolId": { + "type": "string" + }, + "ProviderName": { + "type": "string" + }, + "ProviderType": { + "type": "string" + }, + "ProviderDetails": { + "type": "object", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + }, + "IdpIdentifiers": { + "type": "array", + "items": { + "type": "string" + } + }, + "AttributeMapping": { + "type": "object", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "UserPoolId", + "ProviderName", + "ProviderType", + "ProviderDetails" + ], + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ProviderName", + "/properties/ProviderType" + ], + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ProviderName" + ], + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeIdentityProvider" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListIdentityProviders" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json b/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json new file mode 100644 index 0000000000..222fc486dd --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Redshift_Integration.json @@ -0,0 +1,182 @@ +{ + "typeName": "AWS::Redshift::Integration", + "description": "Integration from a source AWS service to a Redshift cluster", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "properties": { + "IntegrationArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the integration." + }, + "IntegrationName": { + "description": "The name of the integration.", + "type": "string", + "minLength": 1, + "maxLength": 64 + }, + "SourceArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable" + }, + "TargetArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf" + }, + "Tags": { + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + } + }, + "CreateTime": { + "type": "string", + "description": "The time (UTC) when the integration was created." + }, + "KMSKeyId": { + "type": "string", + "description": "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/Arn" + } + }, + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/KeyId" + } + } + ] + }, + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + } + }, + "required": [ + "SourceArn", + "TargetArn" + ], + "definitions": { + "Tags": { + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 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" + ] + }, + "EncryptionContextMap": { + "type": "object", + "patternProperties": { + "": { + "type": "string", + "maxLength": 131072, + "minLength": 0 + } + }, + "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + "additionalProperties": false + } + }, + "propertyTransform": { + "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])" + }, + "createOnlyProperties": [ + "/properties/SourceArn", + "/properties/TargetArn", + "/properties/KMSKeyId", + "/properties/AdditionalEncryptionContext" + ], + "readOnlyProperties": [ + "/properties/IntegrationArn", + "/properties/CreateTime" + ], + "primaryIdentifier": [ + "/properties/IntegrationArn" + ], + "handlers": { + "create": { + "permissions": [ + "redshift:CreateIntegration", + "redshift:DescribeIntegrations", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeClusters", + "kms:CreateGrant", + "kms:DescribeKey", + "redshift:CreateInboundIntegration" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeIntegrations", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeIntegrations", + "redshift:ModifyIntegration", + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeClusters", + "redshift:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "redshift:DeleteTags", + "redshift:DeleteIntegration", + "redshift:DescribeIntegrations" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeIntegrations" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeTags" + ] + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json b/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json new file mode 100644 index 0000000000..e4bc847730 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Route53_RecordSet.json @@ -0,0 +1,379 @@ +{ + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53::RecordSet", + "description": "Resource Type definition for AWS::Route53::RecordSet.", + "createOnlyProperties": [ + "/properties/HostedZoneName", + "/properties/HostedZoneId" + ], + "primaryIdentifier": [ + "/properties/Name", + "/properties/HostedZoneId", + "/properties/Type", + "/properties/SetIdentifier" + ], + "required": [ + "Type", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recordset", + "propertyTransform": { + "/properties/Name": "$lowercase($replace(Name, /(.*)\\.$/, \"$1\"))", + "/properties/AliasTarget/DNSName": "$join([DNSName, \".\"])" + }, + "oneOf": [ + { + "required": [ + "HostedZoneId" + ] + }, + { + "required": [ + "HostedZoneName" + ] + } + ], + "handlers": { + "read": { + "permissions": [ + "route53:ListHostedZones", + "route53:ListResourceRecordSets", + "route53:GetHostedZone" + ] + }, + "create": { + "permissions": [ + "route53:ListHostedZones", + "route53:GetChange", + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets", + "route53:GetHostedZone" + ] + }, + "update": { + "permissions": [ + "route53:ListHostedZones", + "route53:GetChange", + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets", + "route53:GetHostedZone" + ] + }, + "list": { + "permissions": [ + "route53:ListHostedZones", + "route53:ListResourceRecordSets", + "route53:GetHostedZone" + ], + "handlerSchema": { + "oneOf": [ + { + "required": [ + "HostedZoneId" + ] + }, + { + "required": [ + "HostedZoneName" + ] + } + ], + "properties": { + "HostedZoneName": { + "$ref": "resource-schema.json#/properties/HostedZoneName" + }, + "HostedZoneId": { + "$ref": "resource-schema.json#/properties/HostedZoneId" + } + } + } + }, + "delete": { + "permissions": [ + "route53:ListHostedZones", + "route53:GetChange", + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets", + "route53:GetHostedZone" + ] + } + }, + "writeOnlyProperties": [ + "/properties/Comment", + "/properties/HostedZoneName" + ], + "additionalProperties": false, + "definitions": { + "HealthCheckId": { + "type": "string", + "maxLength": 64 + }, + "Comment": { + "type": "string", + "maxLength": 256 + }, + "AliasTarget": { + "additionalProperties": false, + "type": "object", + "properties": { + "HostedZoneId": { + "description": "The value used depends on where you want to route traffic.", + "$ref": "#/definitions/HostedZoneId" + }, + "DNSName": { + "description": "The value that you specify depends on where you want to route queries.", + "type": "string", + "maxLength": 1024 + }, + "EvaluateTargetHealth": { + "default": false, + "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", + "type": "boolean" + } + }, + "required": [ + "HostedZoneId", + "DNSName" + ] + }, + "HostedZoneName": { + "type": "string", + "maxLength": 256 + }, + "ResourceRecords": { + "uniqueItems": true, + "insertionOrder": true, + "type": "array", + "items": { + "type": "string", + "maxLength": 4000 + } + }, + "HostedZoneId": { + "type": "string", + "maxLength": 44 + }, + "SetIdentifier": { + "minLength": 0, + "type": "string", + "maxLength": 128 + }, + "Coordinates": { + "additionalProperties": false, + "type": "object", + "properties": { + "Latitude": { + "pattern": "[-+]?[0-9]{1,2}(\\.[0-9]{0,2})?", + "description": "Specifies a coordinate of the north\u2013south position of a geographic point on the surface of the Earth.", + "type": "string" + }, + "Longitude": { + "pattern": "[-+]?[0-9]{1,3}(\\.[0-9]{0,2})?", + "description": "Specifies a coordinate of the east\u2013west position of a geographic point on the surface of the Earth.", + "type": "string" + } + }, + "required": [ + "Longitude", + "Latitude" + ] + }, + "TTL": { + "type": "string" + }, + "Weight": { + "type": "integer" + }, + "Name": { + "type": "string", + "maxLength": 1024 + }, + "Type": { + "type": "string" + }, + "Failover": { + "type": "string", + "enum": [ + "PRIMARY", + "SECONDARY" + ] + }, + "CidrRoutingConfig": { + "additionalProperties": false, + "type": "object", + "properties": { + "CollectionId": { + "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + "description": "The CIDR collection ID.", + "type": "string" + }, + "LocationName": { + "minLength": 1, + "pattern": "[0-9A-Za-z_\\-\\*]+", + "description": "The CIDR collection location name.", + "type": "string", + "maxLength": 16 + } + }, + "required": [ + "CollectionId", + "LocationName" + ] + }, + "GeoProximityLocation": { + "oneOf": [ + { + "required": [ + "AWSRegion" + ] + }, + { + "required": [ + "LocalZoneGroup" + ] + }, + { + "required": [ + "Coordinates" + ] + } + ], + "additionalProperties": false, + "type": "object", + "properties": { + "Bias": { + "description": "The bias increases or decreases the size of the geographic region from which Route 53 routes traffic to a resource.", + "maximum": 99, + "type": "integer", + "minimum": -99 + }, + "Coordinates": { + "description": "Contains the longitude and latitude for a geographic region.", + "$ref": "#/definitions/Coordinates" + }, + "AWSRegion": { + "minLength": 1, + "description": "The AWS Region the resource you are directing DNS traffic to, is in.", + "type": "string", + "maxLength": 64 + }, + "LocalZoneGroup": { + "minLength": 1, + "description": "Specifies an AWS Local Zone.", + "type": "string", + "maxLength": 64 + } + } + }, + "Region": { + "type": "string" + }, + "GeoLocation": { + "oneOf": [ + { + "required": [ + "ContinentCode" + ] + }, + { + "required": [ + "CountryCode" + ] + } + ], + "additionalProperties": false, + "type": "object", + "properties": { + "ContinentCode": { + "minLength": 2, + "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", + "type": "string", + "maxLength": 2 + }, + "CountryCode": { + "minLength": 1, + "description": "For geolocation resource record sets, the two-letter code for a country.", + "type": "string", + "maxLength": 2 + }, + "SubdivisionCode": { + "minLength": 1, + "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", + "type": "string", + "maxLength": 3 + } + } + }, + "MultiValueAnswer": { + "type": "boolean" + } + }, + "properties": { + "HealthCheckId": { + "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", + "$ref": "#/definitions/HealthCheckId" + }, + "AliasTarget": { + "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", + "$ref": "#/definitions/AliasTarget" + }, + "Comment": { + "description": "Optional: Any comments you want to include about a change batch request.", + "$ref": "#/definitions/Comment" + }, + "HostedZoneName": { + "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", + "$ref": "#/definitions/HostedZoneName" + }, + "ResourceRecords": { + "description": "One or more values that correspond with the value that you specified for the Type property.", + "$ref": "#/definitions/ResourceRecords" + }, + "HostedZoneId": { + "description": "The ID of the hosted zone that you want to create records in.", + "$ref": "#/definitions/HostedZoneId" + }, + "SetIdentifier": { + "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", + "$ref": "#/definitions/SetIdentifier" + }, + "TTL": { + "description": "The resource record cache time to live (TTL), in seconds.", + "$ref": "#/definitions/TTL" + }, + "Weight": { + "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", + "$ref": "#/definitions/Weight" + }, + "Name": { + "description": "The name of the record that you want to create, update, or delete.", + "$ref": "#/definitions/Name" + }, + "Type": { + "description": "The DNS record type.", + "$ref": "#/definitions/Type" + }, + "CidrRoutingConfig": { + "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", + "$ref": "#/definitions/CidrRoutingConfig" + }, + "Failover": { + "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", + "$ref": "#/definitions/Failover" + }, + "Region": { + "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", + "$ref": "#/definitions/Region" + }, + "GeoLocation": { + "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", + "$ref": "#/definitions/GeoLocation" + }, + "MultiValueAnswer": { + "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", + "$ref": "#/definitions/MultiValueAnswer" + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_Endpoint.json b/internal/service/cloudformation/schemas/AWS_SageMaker_Endpoint.json new file mode 100644 index 0000000000..90aa261fe2 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_Endpoint.json @@ -0,0 +1,279 @@ +{ + "typeName": "AWS::SageMaker::Endpoint", + "description": "Resource Type definition for AWS::SageMaker::Endpoint", + "additionalProperties": false, + "properties": { + "DeploymentConfig": { + "$ref": "#/definitions/DeploymentConfig", + "description": "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies." + }, + "EndpointArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the endpoint." + }, + "EndpointConfigName": { + "type": "string", + "description": "The name of the endpoint configuration for the SageMaker endpoint. This is a required property." + }, + "EndpointName": { + "type": "string", + "description": "The name of the SageMaker endpoint. This name must be unique within an AWS Region." + }, + "ExcludeRetainedVariantProperties": { + "type": "array", + "uniqueItems": false, + "items": { + "$ref": "#/definitions/VariantProperty" + }, + "description": "Specifies a list of variant properties that you want to exclude when updating an endpoint." + }, + "RetainAllVariantProperties": { + "type": "boolean", + "description": "When set to true, retains all variant properties for an endpoint when it is updated." + }, + "RetainDeploymentConfig": { + "type": "boolean", + "description": "When set to true, retains the deployment configuration during endpoint updates." + }, + "Tags": { + "type": "array", + "uniqueItems": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "description": "An array of key-value pairs to apply to this resource." + } + }, + "definitions": { + "Alarm": { + "type": "object", + "additionalProperties": false, + "properties": { + "AlarmName": { + "type": "string", + "description": "The name of the CloudWatch alarm." + } + }, + "required": [ + "AlarmName" + ] + }, + "AutoRollbackConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "Alarms": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/Alarm" + }, + "description": "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back." + } + }, + "required": [ + "Alarms" + ] + }, + "BlueGreenUpdatePolicy": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaximumExecutionTimeoutInSeconds": { + "type": "integer", + "description": "The maximum time allowed for the blue/green update, in seconds." + }, + "TerminationWaitInSeconds": { + "type": "integer", + "description": "The wait time before terminating the old endpoint during a blue/green deployment." + }, + "TrafficRoutingConfiguration": { + "$ref": "#/definitions/TrafficRoutingConfig", + "description": "The traffic routing configuration for the blue/green deployment." + } + }, + "required": [ + "TrafficRoutingConfiguration" + ] + }, + "CapacitySize": { + "type": "object", + "additionalProperties": false, + "properties": { + "Type": { + "type": "string", + "description": "Specifies whether the `Value` is an instance count or a capacity unit." + }, + "Value": { + "type": "integer", + "description": "The value representing either the number of instances or the number of capacity units." + } + }, + "required": [ + "Type", + "Value" + ] + }, + "DeploymentConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "AutoRollbackConfiguration": { + "$ref": "#/definitions/AutoRollbackConfig", + "description": "Configuration for automatic rollback if an error occurs during deployment." + }, + "BlueGreenUpdatePolicy": { + "$ref": "#/definitions/BlueGreenUpdatePolicy", + "description": "Configuration for blue-green update deployment policies." + }, + "RollingUpdatePolicy": { + "$ref": "#/definitions/RollingUpdatePolicy", + "description": "Configuration for rolling update deployment policies." + } + } + }, + "RollingUpdatePolicy": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaximumBatchSize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the maximum batch size for each rolling update." + }, + "MaximumExecutionTimeoutInSeconds": { + "type": "integer", + "description": "The maximum time allowed for the rolling update, in seconds." + }, + "RollbackMaximumBatchSize": { + "$ref": "#/definitions/CapacitySize", + "description": "The maximum batch size for rollback during an update failure." + }, + "WaitIntervalInSeconds": { + "type": "integer", + "description": "The time to wait between steps during the rolling update, in seconds." + } + }, + "required": [ + "MaximumBatchSize", + "WaitIntervalInSeconds" + ] + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string", + "description": "The key of the tag." + }, + "Value": { + "type": "string", + "description": "The value of the tag." + } + }, + "required": [ + "Value", + "Key" + ] + }, + "TrafficRoutingConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "CanarySize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the size of the canary traffic in a canary deployment." + }, + "LinearStepSize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the step size for linear traffic routing." + }, + "Type": { + "type": "string", + "description": "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear')." + }, + "WaitIntervalInSeconds": { + "type": "integer", + "description": "Specifies the wait interval between traffic shifts, in seconds." + } + }, + "required": [ + "Type" + ] + }, + "VariantProperty": { + "type": "object", + "additionalProperties": false, + "properties": { + "VariantPropertyType": { + "type": "string", + "description": "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig')." + } + } + } + }, + "required": [ + "EndpointConfigName" + ], + "createOnlyProperties": [ + "/properties/EndpointName" + ], + "primaryIdentifier": [ + "/properties/EndpointArn" + ], + "readOnlyProperties": [ + "/properties/EndpointArn", + "/properties/EndpointName" + ], + "writeOnlyProperties": [ + "/properties/ExcludeRetainedVariantProperties", + "/properties/RetainAllVariantProperties", + "/properties/RetainDeploymentConfig" + ], + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateEndpoint", + "sagemaker:DescribeEndpoint", + "sagemaker:AddTags" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeEndpoint", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateEndpoint", + "sagemaker:DescribeEndpoint", + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteEndpoint", + "sagemaker:DescribeEndpoint" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListEndpoints" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "sagemaker:ListTags" + ] + } +} From 1a06f630b33227b97aa5e59ab39d8960960fe067 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 22:37:08 -0400 Subject: [PATCH 3/6] 10/24/2024 CloudFormation schemas in us-east-1; Generate Terraform resource schemas. --- .../aws/apigateway/vpc_link_resource_gen.go | 12 +- .../apigatewayv2/domain_name_resource_gen.go | 6 +- .../aws/appsync/graph_ql_api_resource_gen.go | 1001 +++++++++++++++++ .../appsync/graph_ql_api_resource_gen_test.go | 25 + .../auto_scaling_group_resource_gen.go | 67 +- ...ly_air_gapped_backup_vault_resource_gen.go | 264 +++++ ...r_gapped_backup_vault_resource_gen_test.go | 25 + internal/aws/bedrock/agent_resource_gen.go | 8 +- ...ser_pool_identity_provider_resource_gen.go | 162 +++ ...ool_identity_provider_resource_gen_test.go | 25 + .../ec2/capacity_reservation_resource_gen.go | 58 +- internal/aws/ec2/volume_resource_gen.go | 2 +- internal/aws/ec2/vpc_endpoint_resource_gen.go | 4 +- .../aws/ec2/vpn_connection_resource_gen.go | 150 +-- .../aws/ecs/capacity_provider_resource_gen.go | 16 +- .../capacity_provider_resource_gen_test.go | 27 +- internal/aws/ecs/service_resource_gen.go | 4 +- .../global_replication_group_resource_gen.go | 16 + .../serverless_cache_resource_gen.go | 4 - .../imagebuilder/component_resource_gen.go | 4 +- ...frastructure_configuration_resource_gen.go | 89 ++ .../cis_scan_configuration_resource_gen.go | 4 +- .../ivs/encoder_configuration_resource_gen.go | 16 +- internal/aws/lambda/function_resource_gen.go | 8 +- internal/aws/location/api_key_resource_gen.go | 4 +- internal/aws/memorydb/cluster_resource_gen.go | 18 +- .../pcaconnectorad/connector_resource_gen.go | 10 - .../directory_registration_resource_gen.go | 6 - .../pcaconnectorad/template_resource_gen.go | 8 - .../aws/redshift/integration_resource_gen.go | 273 +++++ .../redshift/integration_resource_gen_test.go | 25 + .../environment_resource_gen.go | 12 +- .../environment_resource_gen_test.go | 27 +- .../aws/route53/record_set_resource_gen.go | 563 +++++++++ .../route53/record_set_resource_gen_test.go | 25 + internal/aws/s3/access_grant_resource_gen.go | 2 - .../s3/access_grants_location_resource_gen.go | 4 - internal/aws/s3/bucket_resource_gen.go | 10 +- internal/aws/sagemaker/domain_resource_gen.go | 50 + .../aws/sagemaker/endpoint_resource_gen.go | 731 ++++++++++++ .../sagemaker/endpoint_resource_gen_test.go | 25 + internal/aws/sns/topic_resource_gen.go | 9 - 42 files changed, 3616 insertions(+), 183 deletions(-) create mode 100644 internal/aws/appsync/graph_ql_api_resource_gen.go create mode 100644 internal/aws/appsync/graph_ql_api_resource_gen_test.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_resource_gen.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_resource_gen_test.go create mode 100644 internal/aws/cognito/user_pool_identity_provider_resource_gen.go create mode 100644 internal/aws/cognito/user_pool_identity_provider_resource_gen_test.go create mode 100644 internal/aws/redshift/integration_resource_gen.go create mode 100644 internal/aws/redshift/integration_resource_gen_test.go create mode 100644 internal/aws/route53/record_set_resource_gen.go create mode 100644 internal/aws/route53/record_set_resource_gen_test.go create mode 100644 internal/aws/sagemaker/endpoint_resource_gen.go create mode 100644 internal/aws/sagemaker/endpoint_resource_gen_test.go diff --git a/internal/aws/apigateway/vpc_link_resource_gen.go b/internal/aws/apigateway/vpc_link_resource_gen.go index 060ffedfa6..5041175b5e 100644 --- a/internal/aws/apigateway/vpc_link_resource_gen.go +++ b/internal/aws/apigateway/vpc_link_resource_gen.go @@ -33,11 +33,11 @@ func vpcLinkResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The description of the VPC link.", + // "description": "", // "type": "string" // } "description": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The description of the VPC link.", + Description: "", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -48,11 +48,11 @@ func vpcLinkResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The name used to label and identify the VPC link.", + // "description": "", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name used to label and identify the VPC link.", + Description: "", Required: true, }, /*END ATTRIBUTE*/ // Property: Tags @@ -119,7 +119,7 @@ func vpcLinkResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", + // "description": "", // "insertionOrder": false, // "items": { // "type": "string" @@ -129,7 +129,7 @@ func vpcLinkResource(ctx context.Context) (resource.Resource, error) { // } "target_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", + Description: "", Required: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ generic.Multiset(), diff --git a/internal/aws/apigatewayv2/domain_name_resource_gen.go b/internal/aws/apigatewayv2/domain_name_resource_gen.go index 5a492c8704..d1d8c410ed 100644 --- a/internal/aws/apigatewayv2/domain_name_resource_gen.go +++ b/internal/aws/apigatewayv2/domain_name_resource_gen.go @@ -32,11 +32,11 @@ func domainNameResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", + // "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", // "type": "string" // } "domain_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", + Description: "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", Required: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), @@ -49,7 +49,7 @@ func domainNameResource(ctx context.Context) (resource.Resource, error) { // "description": "The domain name configurations.", // "items": { // "additionalProperties": false, - // "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", + // "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", // "properties": { // "CertificateArn": { // "description": "An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.", diff --git a/internal/aws/appsync/graph_ql_api_resource_gen.go b/internal/aws/appsync/graph_ql_api_resource_gen.go new file mode 100644 index 0000000000..bba55a1068 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_resource_gen.go @@ -0,0 +1,1001 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_appsync_graph_ql_api", graphQLApiResource) +} + +// graphQLApiResource returns the Terraform awscc_appsync_graph_ql_api resource. +// This Terraform resource corresponds to the CloudFormation AWS::AppSync::GraphQLApi resource. +func graphQLApiResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AdditionalAuthenticationProviders + // CloudFormation resource type schema: + // + // { + // "description": "A list of additional authentication providers for the GraphqlApi API.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "AuthenticationType": { + // "description": "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + // "type": "string" + // }, + // "LambdaAuthorizerConfig": { + // "additionalProperties": false, + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "description": "The number of seconds a response should be cached for.", + // "type": "integer" + // }, + // "AuthorizerUri": { + // "description": "The ARN of the Lambda function to be called for authorization.", + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "description": "A regular expression for validation of tokens before the Lambda function is called.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "OpenIDConnectConfig": { + // "additionalProperties": false, + // "properties": { + // "AuthTTL": { + // "description": "The number of milliseconds that a token is valid after being authenticated.", + // "type": "number" + // }, + // "ClientId": { + // "description": "The client identifier of the Relying party at the OpenID identity provider.", + // "type": "string" + // }, + // "IatTTL": { + // "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + // "type": "number" + // }, + // "Issuer": { + // "description": "The issuer for the OIDC configuration. ", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "UserPoolConfig": { + // "additionalProperties": false, + // "properties": { + // "AppIdClientRegex": { + // "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + // "type": "string" + // }, + // "AwsRegion": { + // "description": "The AWS Region in which the user pool was created.", + // "type": "string" + // }, + // "UserPoolId": { + // "description": "The user pool ID", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "AuthenticationType" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "additional_authentication_providers": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthenticationType + "authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of seconds a response should be cached for.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Lambda function to be called for authorization.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validation of tokens before the Lambda function is called.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after being authenticated.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The client identifier of the Relying party at the OpenID identity provider.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The issuer for the OIDC configuration. ", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolConfig + "user_pool_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Region in which the user pool was created.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The user pool ID", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of additional authentication providers for the GraphqlApi API.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ApiId + // CloudFormation resource type schema: + // + // { + // "description": "Unique AWS AppSync GraphQL API identifier.", + // "type": "string" + // } + "api_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Unique AWS AppSync GraphQL API identifier.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ApiType + // CloudFormation resource type schema: + // + // { + // "description": "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + // "type": "string" + // } + "api_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the API key", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the API key", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AuthenticationType + // CloudFormation resource type schema: + // + // { + // "description": "Security configuration for your GraphQL API", + // "type": "string" + // } + "authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your GraphQL API", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: EnhancedMetricsConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent.", + // "properties": { + // "DataSourceLevelMetricsBehavior": { + // "description": "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + // "type": "string" + // }, + // "OperationLevelMetricsConfig": { + // "description": "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + // "type": "string" + // }, + // "ResolverLevelMetricsBehavior": { + // "description": "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + // "type": "string" + // } + // }, + // "required": [ + // "OperationLevelMetricsConfig", + // "ResolverLevelMetricsBehavior", + // "DataSourceLevelMetricsBehavior" + // ], + // "type": "object" + // } + "enhanced_metrics_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataSourceLevelMetricsBehavior + "data_source_level_metrics_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OperationLevelMetricsConfig + "operation_level_metrics_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResolverLevelMetricsBehavior + "resolver_level_metrics_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EnvironmentVariables + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A map containing the list of resources with their properties and environment variables.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "environment_variables": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A map containing the list of resources with their properties and environment variables.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GraphQLDns + // CloudFormation resource type schema: + // + // { + // "description": "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + // "type": "string" + // } + "graph_ql_dns": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GraphQLEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The GraphQL endpoint ARN.", + // "type": "string" + // } + "graph_ql_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The GraphQL endpoint ARN.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GraphQLUrl + // CloudFormation resource type schema: + // + // { + // "description": "The Endpoint URL of your GraphQL API.", + // "type": "string" + // } + "graph_ql_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Endpoint URL of your GraphQL API.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IntrospectionConfig + // CloudFormation resource type schema: + // + // { + // "description": "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + // "type": "string" + // } + "introspection_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "description": "The number of seconds a response should be cached for.", + // "type": "integer" + // }, + // "AuthorizerUri": { + // "description": "The ARN of the Lambda function to be called for authorization.", + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "description": "A regular expression for validation of tokens before the Lambda function is called.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of seconds a response should be cached for.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Lambda function to be called for authorization.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validation of tokens before the Lambda function is called.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LogConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The Amazon CloudWatch Logs configuration.", + // "properties": { + // "CloudWatchLogsRoleArn": { + // "description": "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + // "type": "string" + // }, + // "ExcludeVerboseContent": { + // "description": "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + // "type": "boolean" + // }, + // "FieldLogLevel": { + // "description": "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "log_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudWatchLogsRoleArn + "cloudwatch_logs_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ExcludeVerboseContent + "exclude_verbose_content": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FieldLogLevel + "field_log_level": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The Amazon CloudWatch Logs configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MergedApiExecutionRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "The AWS Identity and Access Management service role ARN for a merged API. ", + // "type": "string" + // } + "merged_api_execution_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Identity and Access Management service role ARN for a merged API. ", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The API name", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The API name", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The OpenID Connect configuration.", + // "properties": { + // "AuthTTL": { + // "description": "The number of milliseconds that a token is valid after being authenticated.", + // "type": "number" + // }, + // "ClientId": { + // "description": "The client identifier of the Relying party at the OpenID identity provider.", + // "type": "string" + // }, + // "IatTTL": { + // "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + // "type": "number" + // }, + // "Issuer": { + // "description": "The issuer for the OIDC configuration. ", + // "type": "string" + // } + // }, + // "type": "object" + // } + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after being authenticated.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The client identifier of the Relying party at the OpenID identity provider.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The issuer for the OIDC configuration. ", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The OpenID Connect configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OwnerContact + // CloudFormation resource type schema: + // + // { + // "description": "The owner contact information for an API resource.", + // "type": "string" + // } + "owner_contact": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The owner contact information for an API resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: QueryDepthLimit + // CloudFormation resource type schema: + // + // { + // "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + // "type": "integer" + // } + "query_depth_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RealtimeDns + // CloudFormation resource type schema: + // + // { + // "description": "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + // "type": "string" + // } + "realtime_dns": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RealtimeUrl + // CloudFormation resource type schema: + // + // { + // "description": "The GraphQL API real-time endpoint URL.", + // "type": "string" + // } + "realtime_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The GraphQL API real-time endpoint URL.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResolverCountLimit + // CloudFormation resource type schema: + // + // { + // "description": "The maximum number of resolvers that can be invoked in a single request.", + // "type": "integer" + // } + "resolver_count_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum number of resolvers that can be invoked in a single request.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n", + // "properties": { + // "AppIdClientRegex": { + // "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + // "type": "string" + // }, + // "AwsRegion": { + // "description": "The AWS Region in which the user pool was created.", + // "type": "string" + // }, + // "DefaultAction": { + // "description": "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + // "type": "string" + // }, + // "UserPoolId": { + // "description": "The user pool ID.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "user_pool_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Region in which the user pool was created.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DefaultAction + "default_action": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The user pool ID.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Visibility + // CloudFormation resource type schema: + // + // { + // "description": "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + // "type": "string" + // } + "visibility": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: XrayEnabled + // CloudFormation resource type schema: + // + // { + // "description": "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + // "type": "boolean" + // } + "xray_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::AppSync::GraphQLApi", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::GraphQLApi").WithTerraformTypeName("awscc_appsync_graph_ql_api") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "additional_authentication_providers": "AdditionalAuthenticationProviders", + "api_id": "ApiId", + "api_type": "ApiType", + "app_id_client_regex": "AppIdClientRegex", + "arn": "Arn", + "auth_ttl": "AuthTTL", + "authentication_type": "AuthenticationType", + "authorizer_result_ttl_in_seconds": "AuthorizerResultTtlInSeconds", + "authorizer_uri": "AuthorizerUri", + "aws_region": "AwsRegion", + "client_id": "ClientId", + "cloudwatch_logs_role_arn": "CloudWatchLogsRoleArn", + "data_source_level_metrics_behavior": "DataSourceLevelMetricsBehavior", + "default_action": "DefaultAction", + "enhanced_metrics_config": "EnhancedMetricsConfig", + "environment_variables": "EnvironmentVariables", + "exclude_verbose_content": "ExcludeVerboseContent", + "field_log_level": "FieldLogLevel", + "graph_ql_dns": "GraphQLDns", + "graph_ql_endpoint_arn": "GraphQLEndpointArn", + "graph_ql_url": "GraphQLUrl", + "iat_ttl": "IatTTL", + "identity_validation_expression": "IdentityValidationExpression", + "introspection_config": "IntrospectionConfig", + "issuer": "Issuer", + "key": "Key", + "lambda_authorizer_config": "LambdaAuthorizerConfig", + "log_config": "LogConfig", + "merged_api_execution_role_arn": "MergedApiExecutionRoleArn", + "name": "Name", + "open_id_connect_config": "OpenIDConnectConfig", + "operation_level_metrics_config": "OperationLevelMetricsConfig", + "owner_contact": "OwnerContact", + "query_depth_limit": "QueryDepthLimit", + "realtime_dns": "RealtimeDns", + "realtime_url": "RealtimeUrl", + "resolver_count_limit": "ResolverCountLimit", + "resolver_level_metrics_behavior": "ResolverLevelMetricsBehavior", + "tags": "Tags", + "user_pool_config": "UserPoolConfig", + "user_pool_id": "UserPoolId", + "value": "Value", + "visibility": "Visibility", + "xray_enabled": "XrayEnabled", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/graph_ql_api_resource_gen_test.go b/internal/aws/appsync/graph_ql_api_resource_gen_test.go new file mode 100644 index 0000000000..2dc73ae682 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncGraphQLApi_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::GraphQLApi", "awscc_appsync_graph_ql_api", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/autoscaling/auto_scaling_group_resource_gen.go b/internal/aws/autoscaling/auto_scaling_group_resource_gen.go index 799b122718..5f1679103f 100644 --- a/internal/aws/autoscaling/auto_scaling_group_resource_gen.go +++ b/internal/aws/autoscaling/auto_scaling_group_resource_gen.go @@ -187,11 +187,11 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + // "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", // "type": "string" // } "health_check_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + Description: "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -1901,6 +1901,66 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: TrafficSources + // CloudFormation resource type schema: + // + // { + // "description": "", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "Identifier": { + // "type": "string" + // }, + // "Type": { + // "type": "string" + // } + // }, + // "required": [ + // "Identifier", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "traffic_sources": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Identifier + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: VPCZoneIdentifier // CloudFormation resource type schema: // @@ -1969,6 +2029,7 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { "health_check_grace_period": "HealthCheckGracePeriod", "health_check_type": "HealthCheckType", "heartbeat_timeout": "HeartbeatTimeout", + "identifier": "Identifier", "instance_generations": "InstanceGenerations", "instance_id": "InstanceId", "instance_maintenance_policy": "InstanceMaintenancePolicy", @@ -2027,6 +2088,8 @@ func autoScalingGroupResource(ctx context.Context) (resource.Resource, error) { "termination_policies": "TerminationPolicies", "topic_arn": "TopicARN", "total_local_storage_gb": "TotalLocalStorageGB", + "traffic_sources": "TrafficSources", + "type": "Type", "v_cpu_count": "VCpuCount", "value": "Value", "version": "Version", diff --git a/internal/aws/backup/logically_air_gapped_backup_vault_resource_gen.go b/internal/aws/backup/logically_air_gapped_backup_vault_resource_gen.go new file mode 100644 index 0000000000..0481c998fa --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_resource_gen.go @@ -0,0 +1,264 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package backup + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_backup_logically_air_gapped_backup_vault", logicallyAirGappedBackupVaultResource) +} + +// logicallyAirGappedBackupVaultResource returns the Terraform awscc_backup_logically_air_gapped_backup_vault resource. +// This Terraform resource corresponds to the CloudFormation AWS::Backup::LogicallyAirGappedBackupVault resource. +func logicallyAirGappedBackupVaultResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccessPolicy + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "access_policy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BackupVaultArn + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "backup_vault_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BackupVaultName + // CloudFormation resource type schema: + // + // { + // "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$", + // "type": "string" + // } + "backup_vault_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9\\-\\_]{2,50}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BackupVaultTags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "backup_vault_tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EncryptionKeyArn + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "encryption_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MaxRetentionDays + // CloudFormation resource type schema: + // + // { + // "type": "integer" + // } + "max_retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MinRetentionDays + // CloudFormation resource type schema: + // + // { + // "type": "integer" + // } + "min_retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Notifications + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "BackupVaultEvents": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "SNSTopicArn": { + // "type": "string" + // } + // }, + // "required": [ + // "SNSTopicArn", + // "BackupVaultEvents" + // ], + // "type": "object" + // } + "notifications": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BackupVaultEvents + "backup_vault_events": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + 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: SNSTopicArn + "sns_topic_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VaultState + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vault_state": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VaultType + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vault_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Backup::LogicallyAirGappedBackupVault").WithTerraformTypeName("awscc_backup_logically_air_gapped_backup_vault") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "access_policy": "AccessPolicy", + "backup_vault_arn": "BackupVaultArn", + "backup_vault_events": "BackupVaultEvents", + "backup_vault_name": "BackupVaultName", + "backup_vault_tags": "BackupVaultTags", + "encryption_key_arn": "EncryptionKeyArn", + "max_retention_days": "MaxRetentionDays", + "min_retention_days": "MinRetentionDays", + "notifications": "Notifications", + "sns_topic_arn": "SNSTopicArn", + "vault_state": "VaultState", + "vault_type": "VaultType", + }) + + 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/backup/logically_air_gapped_backup_vault_resource_gen_test.go b/internal/aws/backup/logically_air_gapped_backup_vault_resource_gen_test.go new file mode 100644 index 0000000000..021025d758 --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_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 backup_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSBackupLogicallyAirGappedBackupVault_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Backup::LogicallyAirGappedBackupVault", "awscc_backup_logically_air_gapped_backup_vault", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/bedrock/agent_resource_gen.go b/internal/aws/bedrock/agent_resource_gen.go index a24a388262..50276b2940 100644 --- a/internal/aws/bedrock/agent_resource_gen.go +++ b/internal/aws/bedrock/agent_resource_gen.go @@ -194,7 +194,8 @@ func agentResource(ctx context.Context) (resource.Resource, error) { // "ParentActionGroupSignature": { // "description": "Action Group Signature for a BuiltIn Action", // "enum": [ - // "AMAZON.UserInput" + // "AMAZON.UserInput", + // "AMAZON.CodeInterpreter" // ], // "type": "string" // }, @@ -463,6 +464,7 @@ func agentResource(ctx context.Context) (resource.Resource, error) { Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "AMAZON.UserInput", + "AMAZON.CodeInterpreter", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -701,7 +703,7 @@ func agentResource(ctx context.Context) (resource.Resource, error) { // "description": "ARN or name of a Bedrock model.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", // "type": "string" // } "foundation_model": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -710,7 +712,7 @@ func agentResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(1, 2048), - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), diff --git a/internal/aws/cognito/user_pool_identity_provider_resource_gen.go b/internal/aws/cognito/user_pool_identity_provider_resource_gen.go new file mode 100644 index 0000000000..9a0d4f9c51 --- /dev/null +++ b/internal/aws/cognito/user_pool_identity_provider_resource_gen.go @@ -0,0 +1,162 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package cognito + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_cognito_user_pool_identity_provider", userPoolIdentityProviderResource) +} + +// userPoolIdentityProviderResource returns the Terraform awscc_cognito_user_pool_identity_provider resource. +// This Terraform resource corresponds to the CloudFormation AWS::Cognito::UserPoolIdentityProvider resource. +func userPoolIdentityProviderResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AttributeMapping + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "attribute_mapping": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IdpIdentifiers + // CloudFormation resource type schema: + // + // { + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + "idp_identifiers": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ProviderDetails + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "provider_details": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Required: true, + }, /*END ATTRIBUTE*/ + // Property: ProviderName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "provider_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ProviderType + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "provider_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*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::UserPoolIdentityProvider", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::UserPoolIdentityProvider").WithTerraformTypeName("awscc_cognito_user_pool_identity_provider") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "attribute_mapping": "AttributeMapping", + "idp_identifiers": "IdpIdentifiers", + "provider_details": "ProviderDetails", + "provider_name": "ProviderName", + "provider_type": "ProviderType", + "user_pool_id": "UserPoolId", + }) + + 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/user_pool_identity_provider_resource_gen_test.go b/internal/aws/cognito/user_pool_identity_provider_resource_gen_test.go new file mode 100644 index 0000000000..b5aba2fc28 --- /dev/null +++ b/internal/aws/cognito/user_pool_identity_provider_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 TestAccAWSCognitoUserPoolIdentityProvider_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::UserPoolIdentityProvider", "awscc_cognito_user_pool_identity_provider", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/capacity_reservation_resource_gen.go b/internal/aws/ec2/capacity_reservation_resource_gen.go index e442782317..b03ae9dd60 100644 --- a/internal/aws/ec2/capacity_reservation_resource_gen.go +++ b/internal/aws/ec2/capacity_reservation_resource_gen.go @@ -313,6 +313,20 @@ func capacityReservationResource(ctx context.Context) (resource.Resource, error) int64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: UnusedReservationBillingOwnerId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "unused_reservation_billing_owner_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // UnusedReservationBillingOwnerId is a write-only property. + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ // Corresponds to CloudFormation primaryIdentifier. @@ -335,28 +349,32 @@ func capacityReservationResource(ctx context.Context) (resource.Resource, error) opts = opts.WithCloudFormationTypeName("AWS::EC2::CapacityReservation").WithTerraformTypeName("awscc_ec2_capacity_reservation") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "availability_zone": "AvailabilityZone", - "available_instance_count": "AvailableInstanceCount", - "capacity_reservation_id": "Id", - "ebs_optimized": "EbsOptimized", - "end_date": "EndDate", - "end_date_type": "EndDateType", - "ephemeral_storage": "EphemeralStorage", - "instance_count": "InstanceCount", - "instance_match_criteria": "InstanceMatchCriteria", - "instance_platform": "InstancePlatform", - "instance_type": "InstanceType", - "key": "Key", - "out_post_arn": "OutPostArn", - "placement_group_arn": "PlacementGroupArn", - "resource_type": "ResourceType", - "tag_specifications": "TagSpecifications", - "tags": "Tags", - "tenancy": "Tenancy", - "total_instance_count": "TotalInstanceCount", - "value": "Value", + "availability_zone": "AvailabilityZone", + "available_instance_count": "AvailableInstanceCount", + "capacity_reservation_id": "Id", + "ebs_optimized": "EbsOptimized", + "end_date": "EndDate", + "end_date_type": "EndDateType", + "ephemeral_storage": "EphemeralStorage", + "instance_count": "InstanceCount", + "instance_match_criteria": "InstanceMatchCriteria", + "instance_platform": "InstancePlatform", + "instance_type": "InstanceType", + "key": "Key", + "out_post_arn": "OutPostArn", + "placement_group_arn": "PlacementGroupArn", + "resource_type": "ResourceType", + "tag_specifications": "TagSpecifications", + "tags": "Tags", + "tenancy": "Tenancy", + "total_instance_count": "TotalInstanceCount", + "unused_reservation_billing_owner_id": "UnusedReservationBillingOwnerId", + "value": "Value", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/UnusedReservationBillingOwnerId", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/ec2/volume_resource_gen.go b/internal/aws/ec2/volume_resource_gen.go index 4d9edd5fc0..f8de8c57aa 100644 --- a/internal/aws/ec2/volume_resource_gen.go +++ b/internal/aws/ec2/volume_resource_gen.go @@ -308,7 +308,7 @@ func volumeResource(ctx context.Context) (resource.Resource, error) { "volume_type": "VolumeType", }) - opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + opts = opts.WithCreateTimeoutInMinutes(725).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(2160) diff --git a/internal/aws/ec2/vpc_endpoint_resource_gen.go b/internal/aws/ec2/vpc_endpoint_resource_gen.go index 5c4f559f19..209955d1dc 100644 --- a/internal/aws/ec2/vpc_endpoint_resource_gen.go +++ b/internal/aws/ec2/vpc_endpoint_resource_gen.go @@ -104,11 +104,11 @@ func vPCEndpointResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint.", + // "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", // "type": "string" // } "policy_document": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint.", + Description: "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/ec2/vpn_connection_resource_gen.go b/internal/aws/ec2/vpn_connection_resource_gen.go index 442944a336..57af529688 100644 --- a/internal/aws/ec2/vpn_connection_resource_gen.go +++ b/internal/aws/ec2/vpn_connection_resource_gen.go @@ -326,7 +326,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "description": "The tunnel options for a single VPN tunnel.", // "properties": { // "DPDTimeoutAction": { - // "description": "", + // "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", // "enum": [ // "clear", // "none", @@ -335,22 +335,23 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "DPDTimeoutSeconds": { - // "description": "", + // "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", // "minimum": 30, // "type": "integer" // }, // "EnableTunnelLifecycleControl": { - // "description": "", + // "description": "Turn on or off tunnel endpoint lifecycle control feature.", // "type": "boolean" // }, // "IKEVersions": { - // "description": "", + // "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "The IKE version that is permitted for the VPN tunnel.", // "properties": { // "Value": { + // "description": "The IKE version.", // "enum": [ // "ikev1", // "ikev2" @@ -365,19 +366,22 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // }, // "LogOptions": { // "additionalProperties": false, - // "description": "", + // "description": "Options for logging VPN tunnel activity.", // "properties": { // "CloudwatchLogOptions": { // "additionalProperties": false, - // "description": "", + // "description": "Options for sending VPN tunnel logs to CloudWatch.", // "properties": { // "LogEnabled": { + // "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", // "type": "boolean" // }, // "LogGroupArn": { + // "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", // "type": "string" // }, // "LogOutputFormat": { + // "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", // "enum": [ // "json", // "text" @@ -391,13 +395,14 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "type": "object" // }, // "Phase1DHGroupNumbers": { - // "description": "", + // "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The Diffie-Hellmann group number.", // "enum": [ // 2, // 14, @@ -421,13 +426,14 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase1EncryptionAlgorithms": { - // "description": "", + // "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The value for the encryption algorithm.", // "enum": [ // "AES128", // "AES256", @@ -443,13 +449,14 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase1IntegrityAlgorithms": { - // "description": "", + // "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The value for the integrity algorithm.", // "enum": [ // "SHA1", // "SHA2-256", @@ -465,19 +472,20 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase1LifetimeSeconds": { - // "description": "", + // "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", // "maximum": 28800, // "minimum": 900, // "type": "integer" // }, // "Phase2DHGroupNumbers": { - // "description": "", + // "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The Diffie-Hellmann group number.", // "enum": [ // 2, // 14, @@ -501,13 +509,14 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase2EncryptionAlgorithms": { - // "description": "", + // "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The encryption algorithm.", // "enum": [ // "AES128", // "AES256", @@ -523,13 +532,14 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase2IntegrityAlgorithms": { - // "description": "", + // "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The integrity algorithm.", // "enum": [ // "SHA1", // "SHA2-256", @@ -545,7 +555,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "uniqueItems": false // }, // "Phase2LifetimeSeconds": { - // "description": "", + // "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", // "maximum": 3600, // "minimum": 900, // "type": "integer" @@ -555,24 +565,24 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "RekeyFuzzPercentage": { - // "description": "", + // "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", // "maximum": 100, // "minimum": 0, // "type": "integer" // }, // "RekeyMarginTimeSeconds": { - // "description": "", + // "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", // "minimum": 60, // "type": "integer" // }, // "ReplayWindowSize": { - // "description": "", + // "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", // "maximum": 2048, // "minimum": 64, // "type": "integer" // }, // "StartupAction": { - // "description": "", + // "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", // "enum": [ // "add", // "start" @@ -584,7 +594,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "TunnelInsideIpv6Cidr": { - // "description": "", + // "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", // "type": "string" // } // }, @@ -598,7 +608,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: DPDTimeoutAction "dpd_timeout_action": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -614,7 +624,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: DPDTimeoutSeconds "dpd_timeout_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -626,7 +636,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: EnableTunnelLifecycleControl "enable_tunnel_lifecycle_control": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "Turn on or off tunnel endpoint lifecycle control feature.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ @@ -639,8 +649,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The IKE version.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "ikev1", @@ -653,7 +664,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -669,24 +680,27 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: LogEnabled "log_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: LogGroupArn "log_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: LogOutputFormat "log_output_format": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "json", @@ -698,7 +712,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "Options for sending VPN tunnel logs to CloudWatch.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -706,7 +720,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "Options for logging VPN tunnel activity.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -719,8 +733,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The Diffie-Hellmann group number.", + Optional: true, + Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ int64validator.OneOf( 2, @@ -743,7 +758,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -757,8 +772,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The value for the encryption algorithm.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "AES128", @@ -773,7 +789,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -787,8 +803,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The value for the integrity algorithm.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "SHA1", @@ -803,7 +820,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -813,7 +830,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: Phase1LifetimeSeconds "phase_1_lifetime_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -829,8 +846,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The Diffie-Hellmann group number.", + Optional: true, + Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ int64validator.OneOf( 2, @@ -853,7 +871,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -867,8 +885,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The encryption algorithm.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "AES128", @@ -883,7 +902,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -897,8 +916,9 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The integrity algorithm.", + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "SHA1", @@ -913,7 +933,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -923,7 +943,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: Phase2LifetimeSeconds "phase_2_lifetime_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -944,7 +964,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: RekeyFuzzPercentage "rekey_fuzz_percentage": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -956,7 +976,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: RekeyMarginTimeSeconds "rekey_margin_time_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -968,7 +988,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: ReplayWindowSize "replay_window_size": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ @@ -980,7 +1000,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: StartupAction "startup_action": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ @@ -1004,7 +1024,7 @@ func vPNConnectionResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: TunnelInsideIpv6Cidr "tunnel_inside_ipv_6_cidr": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/ecs/capacity_provider_resource_gen.go b/internal/aws/ecs/capacity_provider_resource_gen.go index b3814361fd..53128ee356 100644 --- a/internal/aws/ecs/capacity_provider_resource_gen.go +++ b/internal/aws/ecs/capacity_provider_resource_gen.go @@ -19,6 +19,7 @@ import ( "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() { @@ -88,9 +89,14 @@ func capacityProviderResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: AutoScalingGroupArn "auto_scaling_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Required: true, + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ManagedDraining @@ -179,7 +185,11 @@ func capacityProviderResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: diff --git a/internal/aws/ecs/capacity_provider_resource_gen_test.go b/internal/aws/ecs/capacity_provider_resource_gen_test.go index c9cdb7215d..038cff2ece 100644 --- a/internal/aws/ecs/capacity_provider_resource_gen_test.go +++ b/internal/aws/ecs/capacity_provider_resource_gen_test.go @@ -6,7 +6,6 @@ package ecs_test import ( - "regexp" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -18,8 +17,30 @@ func TestAccAWSECSCapacityProvider_basic(t *testing.T) { td.ResourceTest(t, []resource.TestStep{ { - Config: td.EmptyConfig(), - ExpectError: regexp.MustCompile("Missing required argument"), + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSECSCapacityProvider_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::ECS::CapacityProvider", "awscc_ecs_capacity_provider", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, }, }) } diff --git a/internal/aws/ecs/service_resource_gen.go b/internal/aws/ecs/service_resource_gen.go index 63b708445a..a107c41b99 100644 --- a/internal/aws/ecs/service_resource_gen.go +++ b/internal/aws/ecs/service_resource_gen.go @@ -864,7 +864,7 @@ func serviceResource(ctx context.Context) (resource.Resource, error) { // }, // "Options": { // "additionalProperties": false, - // "description": "The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + // "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", // "patternProperties": { // "": { // "type": "string" @@ -1031,7 +1031,7 @@ func serviceResource(ctx context.Context) (resource.Resource, error) { "options": // Pattern: "" schema.MapAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + Description: "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", Optional: true, Computed: true, PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/elasticache/global_replication_group_resource_gen.go b/internal/aws/elasticache/global_replication_group_resource_gen.go index 37ed3f7af4..dc7212f91e 100644 --- a/internal/aws/elasticache/global_replication_group_resource_gen.go +++ b/internal/aws/elasticache/global_replication_group_resource_gen.go @@ -78,6 +78,21 @@ func globalReplicationGroupResource(ctx context.Context) (resource.Resource, err stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine of the Global Datastore.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine of the Global Datastore.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: EngineVersion // CloudFormation resource type schema: // @@ -384,6 +399,7 @@ func globalReplicationGroupResource(ctx context.Context) (resource.Resource, err "automatic_failover_enabled": "AutomaticFailoverEnabled", "cache_node_type": "CacheNodeType", "cache_parameter_group_name": "CacheParameterGroupName", + "engine": "Engine", "engine_version": "EngineVersion", "global_node_group_count": "GlobalNodeGroupCount", "global_replication_group_description": "GlobalReplicationGroupDescription", diff --git a/internal/aws/elasticache/serverless_cache_resource_gen.go b/internal/aws/elasticache/serverless_cache_resource_gen.go index dc460ce2eb..5a27aa653c 100644 --- a/internal/aws/elasticache/serverless_cache_resource_gen.go +++ b/internal/aws/elasticache/serverless_cache_resource_gen.go @@ -277,9 +277,6 @@ func serverlessCacheResource(ctx context.Context) (resource.Resource, error) { "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The engine name of the Serverless Cache.", Required: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), - }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: FinalSnapshotName // CloudFormation resource type schema: @@ -340,7 +337,6 @@ func serverlessCacheResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ReaderEndpoint diff --git a/internal/aws/imagebuilder/component_resource_gen.go b/internal/aws/imagebuilder/component_resource_gen.go index f9c3b156c5..efc0956db9 100644 --- a/internal/aws/imagebuilder/component_resource_gen.go +++ b/internal/aws/imagebuilder/component_resource_gen.go @@ -149,7 +149,8 @@ func componentResource(ctx context.Context) (resource.Resource, error) { // "description": "The platform of the component.", // "enum": [ // "Windows", - // "Linux" + // "Linux", + // "macOS" // ], // "type": "string" // } @@ -160,6 +161,7 @@ func componentResource(ctx context.Context) (resource.Resource, error) { stringvalidator.OneOf( "Windows", "Linux", + "macOS", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/imagebuilder/infrastructure_configuration_resource_gen.go b/internal/aws/imagebuilder/infrastructure_configuration_resource_gen.go index e8d8f12fab..1841c1238d 100644 --- a/internal/aws/imagebuilder/infrastructure_configuration_resource_gen.go +++ b/internal/aws/imagebuilder/infrastructure_configuration_resource_gen.go @@ -241,6 +241,90 @@ func infrastructureConfigurationResource(ctx context.Context) (resource.Resource stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Placement + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The placement option settings for the infrastructure configuration.", + // "properties": { + // "AvailabilityZone": { + // "description": "AvailabilityZone", + // "type": "string" + // }, + // "HostId": { + // "description": "HostId", + // "type": "string" + // }, + // "HostResourceGroupArn": { + // "description": "HostResourceGroupArn", + // "type": "string" + // }, + // "Tenancy": { + // "description": "Tenancy", + // "enum": [ + // "default", + // "dedicated", + // "host" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "placement": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityZone + "availability_zone": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AvailabilityZone", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HostId + "host_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "HostId", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HostResourceGroupArn + "host_resource_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "HostResourceGroupArn", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tenancy + "tenancy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tenancy", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "default", + "dedicated", + "host", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The placement option settings for the infrastructure configuration.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ResourceTags // CloudFormation resource type schema: // @@ -376,7 +460,10 @@ func infrastructureConfigurationResource(ctx context.Context) (resource.Resource opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "arn": "Arn", + "availability_zone": "AvailabilityZone", "description": "Description", + "host_id": "HostId", + "host_resource_group_arn": "HostResourceGroupArn", "http_put_response_hop_limit": "HttpPutResponseHopLimit", "http_tokens": "HttpTokens", "instance_metadata_options": "InstanceMetadataOptions", @@ -385,6 +472,7 @@ func infrastructureConfigurationResource(ctx context.Context) (resource.Resource "key_pair": "KeyPair", "logging": "Logging", "name": "Name", + "placement": "Placement", "resource_tags": "ResourceTags", "s3_bucket_name": "S3BucketName", "s3_key_prefix": "S3KeyPrefix", @@ -393,6 +481,7 @@ func infrastructureConfigurationResource(ctx context.Context) (resource.Resource "sns_topic_arn": "SnsTopicArn", "subnet_id": "SubnetId", "tags": "Tags", + "tenancy": "Tenancy", "terminate_instance_on_failure": "TerminateInstanceOnFailure", }) diff --git a/internal/aws/inspectorv2/cis_scan_configuration_resource_gen.go b/internal/aws/inspectorv2/cis_scan_configuration_resource_gen.go index b2c7050b8e..28a60fa6a9 100644 --- a/internal/aws/inspectorv2/cis_scan_configuration_resource_gen.go +++ b/internal/aws/inspectorv2/cis_scan_configuration_resource_gen.go @@ -431,7 +431,7 @@ func cisScanConfigurationResource(ctx context.Context) (resource.Resource, error // "properties": { // "AccountIds": { // "items": { - // "pattern": "^\\d{12}|ALL_MEMBERS|SELF$", + // "pattern": "^\\d{12}|ALL_ACCOUNTS|SELF$", // "type": "string" // }, // "maxItems": 10000, @@ -468,7 +468,7 @@ func cisScanConfigurationResource(ctx context.Context) (resource.Resource, error listvalidator.SizeBetween(1, 10000), listvalidator.UniqueValues(), listvalidator.ValueStringsAre( - stringvalidator.RegexMatches(regexp.MustCompile("^\\d{12}|ALL_MEMBERS|SELF$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^\\d{12}|ALL_ACCOUNTS|SELF$"), ""), ), }, /*END VALIDATORS*/ }, /*END ATTRIBUTE*/ diff --git a/internal/aws/ivs/encoder_configuration_resource_gen.go b/internal/aws/ivs/encoder_configuration_resource_gen.go index 4c877d1974..392a36caec 100644 --- a/internal/aws/ivs/encoder_configuration_resource_gen.go +++ b/internal/aws/ivs/encoder_configuration_resource_gen.go @@ -174,16 +174,16 @@ func encoderConfigurationResource(ctx context.Context) (resource.Resource, error // }, // "Height": { // "default": 720, - // "description": "Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + // "description": "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", // "maximum": 1920, - // "minimum": 1, + // "minimum": 2, // "type": "integer" // }, // "Width": { // "default": 1280, - // "description": "Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + // "description": "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", // "maximum": 1920, - // "minimum": 1, + // "minimum": 2, // "type": "integer" // } // }, @@ -221,12 +221,12 @@ func encoderConfigurationResource(ctx context.Context) (resource.Resource, error }, /*END ATTRIBUTE*/ // Property: Height "height": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + Description: "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", Optional: true, Computed: true, Default: int64default.StaticInt64(720), Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.Between(1, 1920), + int64validator.Between(2, 1920), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), @@ -235,12 +235,12 @@ func encoderConfigurationResource(ctx context.Context) (resource.Resource, error }, /*END ATTRIBUTE*/ // Property: Width "width": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + Description: "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", Optional: true, Computed: true, Default: int64default.StaticInt64(1280), Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.Between(1, 1920), + int64validator.Between(2, 1920), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), diff --git a/internal/aws/lambda/function_resource_gen.go b/internal/aws/lambda/function_resource_gen.go index d86ee89c64..217caad1fb 100644 --- a/internal/aws/lambda/function_resource_gen.go +++ b/internal/aws/lambda/function_resource_gen.go @@ -212,7 +212,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { // // { // "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", - // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", + // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", // "type": "string" // } "code_signing_config_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -220,7 +220,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ - stringvalidator.RegexMatches(regexp.MustCompile("arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}"), ""), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -377,7 +377,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { // "Arn": { // "description": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", // "maxLength": 200, - // "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", + // "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", // "type": "string" // }, // "LocalMountPath": { @@ -406,7 +406,7 @@ func functionResource(ctx context.Context) (resource.Resource, error) { Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthAtMost(200), - stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$"), ""), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/location/api_key_resource_gen.go b/internal/aws/location/api_key_resource_gen.go index 98f55d04de..02f8d1e830 100644 --- a/internal/aws/location/api_key_resource_gen.go +++ b/internal/aws/location/api_key_resource_gen.go @@ -186,7 +186,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { // "items": { // "maxLength": 200, // "minLength": 5, - // "pattern": "^geo:\\w*\\*?$", + // "pattern": "^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$", // "type": "string" // }, // "maxItems": 24, @@ -232,7 +232,7 @@ func aPIKeyResource(ctx context.Context) (resource.Resource, error) { listvalidator.SizeBetween(1, 24), listvalidator.ValueStringsAre( stringvalidator.LengthBetween(5, 200), - stringvalidator.RegexMatches(regexp.MustCompile("^geo:\\w*\\*?$"), ""), + stringvalidator.RegexMatches(regexp.MustCompile("^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$"), ""), ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/memorydb/cluster_resource_gen.go b/internal/aws/memorydb/cluster_resource_gen.go index 51b512fd41..f194eaf1f4 100644 --- a/internal/aws/memorydb/cluster_resource_gen.go +++ b/internal/aws/memorydb/cluster_resource_gen.go @@ -182,6 +182,21 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine type used by the cluster.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine type used by the cluster.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: EngineVersion // CloudFormation resource type schema: // @@ -605,6 +620,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "cluster_name": "ClusterName", "data_tiering": "DataTiering", "description": "Description", + "engine": "Engine", "engine_version": "EngineVersion", "final_snapshot_name": "FinalSnapshotName", "key": "Key", @@ -637,7 +653,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) - opts = opts.WithUpdateTimeoutInMinutes(0) + opts = opts.WithUpdateTimeoutInMinutes(2160) v, err := generic.NewResource(ctx, opts...) diff --git a/internal/aws/pcaconnectorad/connector_resource_gen.go b/internal/aws/pcaconnectorad/connector_resource_gen.go index f67a5d401d..7253ab9409 100644 --- a/internal/aws/pcaconnectorad/connector_resource_gen.go +++ b/internal/aws/pcaconnectorad/connector_resource_gen.go @@ -49,7 +49,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // CertificateAuthorityArn is a write-only property. }, /*END ATTRIBUTE*/ // Property: ConnectorArn // CloudFormation resource type schema: @@ -81,7 +80,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // DirectoryId is a write-only property. }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: @@ -103,7 +101,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ mapplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ // Property: VpcInformation // CloudFormation resource type schema: @@ -149,7 +146,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ objectplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // VpcInformation is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -181,12 +177,6 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { "vpc_information": "VpcInformation", }) - opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/CertificateAuthorityArn", - "/properties/DirectoryId", - "/properties/Tags", - "/properties/VpcInformation", - }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/pcaconnectorad/directory_registration_resource_gen.go b/internal/aws/pcaconnectorad/directory_registration_resource_gen.go index 4ac6285aff..513cd56587 100644 --- a/internal/aws/pcaconnectorad/directory_registration_resource_gen.go +++ b/internal/aws/pcaconnectorad/directory_registration_resource_gen.go @@ -44,7 +44,6 @@ func directoryRegistrationResource(ctx context.Context) (resource.Resource, erro PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // DirectoryId is a write-only property. }, /*END ATTRIBUTE*/ // Property: DirectoryRegistrationArn // CloudFormation resource type schema: @@ -81,7 +80,6 @@ func directoryRegistrationResource(ctx context.Context) (resource.Resource, erro PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ mapplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -110,10 +108,6 @@ func directoryRegistrationResource(ctx context.Context) (resource.Resource, erro "tags": "Tags", }) - opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/DirectoryId", - "/properties/Tags", - }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/pcaconnectorad/template_resource_gen.go b/internal/aws/pcaconnectorad/template_resource_gen.go index 9230f6f51f..d804757f3b 100644 --- a/internal/aws/pcaconnectorad/template_resource_gen.go +++ b/internal/aws/pcaconnectorad/template_resource_gen.go @@ -54,7 +54,6 @@ func templateResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // ConnectorArn is a write-only property. }, /*END ATTRIBUTE*/ // Property: Definition // CloudFormation resource type schema: @@ -3296,7 +3295,6 @@ func templateResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Required: true, - // Definition is a write-only property. }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: @@ -3315,7 +3313,6 @@ func templateResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ - // Name is a write-only property. }, /*END ATTRIBUTE*/ // Property: ReenrollAllCertificateHolders // CloudFormation resource type schema: @@ -3351,7 +3348,6 @@ func templateResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ mapplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ // Property: TemplateArn // CloudFormation resource type schema: @@ -3459,11 +3455,7 @@ func templateResource(ctx context.Context) (resource.Resource, error) { }) opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/ConnectorArn", - "/properties/Definition", - "/properties/Name", "/properties/ReenrollAllCertificateHolders", - "/properties/Tags", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/redshift/integration_resource_gen.go b/internal/aws/redshift/integration_resource_gen.go new file mode 100644 index 0000000000..d4a6410fa0 --- /dev/null +++ b/internal/aws/redshift/integration_resource_gen.go @@ -0,0 +1,273 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package redshift + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "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/mapplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_redshift_integration", integrationResource) +} + +// integrationResource returns the Terraform awscc_redshift_integration resource. +// This Terraform resource corresponds to the CloudFormation AWS::Redshift::Integration resource. +func integrationResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AdditionalEncryptionContext + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + // "patternProperties": { + // "": { + // "maxLength": 131072, + // "minLength": 0, + // "type": "string" + // } + // }, + // "type": "object" + // } + "additional_encryption_context": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + mapplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CreateTime + // CloudFormation resource type schema: + // + // { + // "description": "The time (UTC) when the integration was created.", + // "type": "string" + // } + "create_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The time (UTC) when the integration was created.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IntegrationArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the integration.", + // "type": "string" + // } + "integration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the integration.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: IntegrationName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the integration.", + // "maxLength": 64, + // "minLength": 1, + // "type": "string" + // } + "integration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the integration.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 64), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: KMSKeyId + // CloudFormation resource type schema: + // + // { + // "anyOf": [ + // {}, + // {} + // ], + // "description": "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + // "type": "string" + // } + "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SourceArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + // "type": "string" + // } + "source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*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" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + }, /*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, + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeAtMost(50), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TargetArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + // "type": "string" + // } + "target_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + 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: "Integration from a source AWS service to a Redshift cluster", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Redshift::Integration").WithTerraformTypeName("awscc_redshift_integration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "additional_encryption_context": "AdditionalEncryptionContext", + "create_time": "CreateTime", + "integration_arn": "IntegrationArn", + "integration_name": "IntegrationName", + "key": "Key", + "kms_key_id": "KMSKeyId", + "source_arn": "SourceArn", + "tags": "Tags", + "target_arn": "TargetArn", + "value": "Value", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/redshift/integration_resource_gen_test.go b/internal/aws/redshift/integration_resource_gen_test.go new file mode 100644 index 0000000000..27d28fc879 --- /dev/null +++ b/internal/aws/redshift/integration_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 redshift_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSRedshiftIntegration_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Redshift::Integration", "awscc_redshift_integration", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/refactorspaces/environment_resource_gen.go b/internal/aws/refactorspaces/environment_resource_gen.go index 3d56d5cc37..5863964e83 100644 --- a/internal/aws/refactorspaces/environment_resource_gen.go +++ b/internal/aws/refactorspaces/environment_resource_gen.go @@ -91,12 +91,14 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthBetween(3, 63), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ // Name is a write-only property. }, /*END ATTRIBUTE*/ @@ -111,7 +113,8 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // } "network_fabric_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "TRANSIT_GATEWAY", @@ -119,7 +122,8 @@ func environmentResource(ctx context.Context) (resource.Resource, error) { ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.RequiresReplace(), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ // NetworkFabricType is a write-only property. }, /*END ATTRIBUTE*/ diff --git a/internal/aws/refactorspaces/environment_resource_gen_test.go b/internal/aws/refactorspaces/environment_resource_gen_test.go index 269b8bc836..3dc80343f1 100644 --- a/internal/aws/refactorspaces/environment_resource_gen_test.go +++ b/internal/aws/refactorspaces/environment_resource_gen_test.go @@ -6,7 +6,6 @@ package refactorspaces_test import ( - "regexp" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -18,8 +17,30 @@ func TestAccAWSRefactorSpacesEnvironment_basic(t *testing.T) { td.ResourceTest(t, []resource.TestStep{ { - Config: td.EmptyConfig(), - ExpectError: regexp.MustCompile("Missing required argument"), + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSRefactorSpacesEnvironment_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::RefactorSpaces::Environment", "awscc_refactorspaces_environment", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, }, }) } diff --git a/internal/aws/route53/record_set_resource_gen.go b/internal/aws/route53/record_set_resource_gen.go new file mode 100644 index 0000000000..6dc983478b --- /dev/null +++ b/internal/aws/route53/record_set_resource_gen.go @@ -0,0 +1,563 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package route53 + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_route53_record_set", recordSetResource) +} + +// recordSetResource returns the Terraform awscc_route53_record_set resource. +// This Terraform resource corresponds to the CloudFormation AWS::Route53::RecordSet resource. +func recordSetResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AliasTarget + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", + // "properties": { + // "DNSName": { + // "description": "The value that you specify depends on where you want to route queries.", + // "maxLength": 1024, + // "type": "string" + // }, + // "EvaluateTargetHealth": { + // "default": false, + // "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", + // "type": "boolean" + // }, + // "HostedZoneId": { + // "description": "The value used depends on where you want to route traffic.", + // "maxLength": 44, + // "type": "string" + // } + // }, + // "required": [ + // "HostedZoneId", + // "DNSName" + // ], + // "type": "object" + // } + "alias_target": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DNSName + "dns_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value that you specify depends on where you want to route queries.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(1024), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EvaluateTargetHealth + "evaluate_target_health": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HostedZoneId + "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value used depends on where you want to route traffic.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(44), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CidrRoutingConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", + // "properties": { + // "CollectionId": { + // "description": "The CIDR collection ID.", + // "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + // "type": "string" + // }, + // "LocationName": { + // "description": "The CIDR collection location name.", + // "maxLength": 16, + // "minLength": 1, + // "pattern": "[0-9A-Za-z_\\-\\*]+", + // "type": "string" + // } + // }, + // "required": [ + // "CollectionId", + // "LocationName" + // ], + // "type": "object" + // } + "cidr_routing_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CollectionId + "collection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The CIDR collection ID.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocationName + "location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The CIDR collection location name.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 16), + stringvalidator.RegexMatches(regexp.MustCompile("[0-9A-Za-z_\\-\\*]+"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Comment + // CloudFormation resource type schema: + // + // { + // "description": "Optional: Any comments you want to include about a change batch request.", + // "maxLength": 256, + // "type": "string" + // } + "comment": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Optional: Any comments you want to include about a change batch request.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(256), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // Comment is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Failover + // CloudFormation resource type schema: + // + // { + // "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", + // "enum": [ + // "PRIMARY", + // "SECONDARY" + // ], + // "type": "string" + // } + "failover": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "PRIMARY", + "SECONDARY", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GeoLocation + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", + // "oneOf": [ + // { + // "required": [ + // "ContinentCode" + // ] + // }, + // { + // "required": [ + // "CountryCode" + // ] + // } + // ], + // "properties": { + // "ContinentCode": { + // "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", + // "maxLength": 2, + // "minLength": 2, + // "type": "string" + // }, + // "CountryCode": { + // "description": "For geolocation resource record sets, the two-letter code for a country.", + // "maxLength": 2, + // "minLength": 1, + // "type": "string" + // }, + // "SubdivisionCode": { + // "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", + // "maxLength": 3, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "geo_location": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ContinentCode + "continent_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(2, 2), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CountryCode + "country_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, the two-letter code for a country.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SubdivisionCode + "subdivision_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, the two-letter code for a state of the United States.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 3), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HealthCheckId + // CloudFormation resource type schema: + // + // { + // "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", + // "maxLength": 64, + // "type": "string" + // } + "health_check_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(64), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HostedZoneId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the hosted zone that you want to create records in.", + // "maxLength": 44, + // "type": "string" + // } + "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the hosted zone that you want to create records in.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(44), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HostedZoneName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", + // "maxLength": 256, + // "type": "string" + // } + "hosted_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(256), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // HostedZoneName is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: MultiValueAnswer + // CloudFormation resource type schema: + // + // { + // "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", + // "type": "boolean" + // } + "multi_value_answer": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the record that you want to create, update, or delete.", + // "maxLength": 1024, + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the record that you want to create, update, or delete.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(1024), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Region + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", + // "type": "string" + // } + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon EC2 Region where you created the resource that this resource record set refers to.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceRecords + // CloudFormation resource type schema: + // + // { + // "description": "One or more values that correspond with the value that you specified for the Type property.", + // "insertionOrder": true, + // "items": { + // "maxLength": 4000, + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // } + "resource_records": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "One or more values that correspond with the value that you specified for the Type property.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + listvalidator.ValueStringsAre( + stringvalidator.LengthAtMost(4000), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SetIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", + // "maxLength": 128, + // "minLength": 0, + // "type": "string" + // } + "set_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 128), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TTL + // CloudFormation resource type schema: + // + // { + // "description": "The resource record cache time to live (TTL), in seconds.", + // "type": "string" + // } + "ttl": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The resource record cache time to live (TTL), in seconds.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + // CloudFormation resource type schema: + // + // { + // "description": "The DNS record type.", + // "type": "string" + // } + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The DNS record type.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Weight + // CloudFormation resource type schema: + // + // { + // "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", + // "type": "integer" + // } + "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Route53::RecordSet.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Route53::RecordSet").WithTerraformTypeName("awscc_route53_record_set") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "alias_target": "AliasTarget", + "cidr_routing_config": "CidrRoutingConfig", + "collection_id": "CollectionId", + "comment": "Comment", + "continent_code": "ContinentCode", + "country_code": "CountryCode", + "dns_name": "DNSName", + "evaluate_target_health": "EvaluateTargetHealth", + "failover": "Failover", + "geo_location": "GeoLocation", + "health_check_id": "HealthCheckId", + "hosted_zone_id": "HostedZoneId", + "hosted_zone_name": "HostedZoneName", + "location_name": "LocationName", + "multi_value_answer": "MultiValueAnswer", + "name": "Name", + "region": "Region", + "resource_records": "ResourceRecords", + "set_identifier": "SetIdentifier", + "subdivision_code": "SubdivisionCode", + "ttl": "TTL", + "type": "Type", + "weight": "Weight", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Comment", + "/properties/HostedZoneName", + }) + 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/route53/record_set_resource_gen_test.go b/internal/aws/route53/record_set_resource_gen_test.go new file mode 100644 index 0000000000..0c7a5247ff --- /dev/null +++ b/internal/aws/route53/record_set_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 route53_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSRoute53RecordSet_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Route53::RecordSet", "awscc_route53_record_set", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/s3/access_grant_resource_gen.go b/internal/aws/s3/access_grant_resource_gen.go index 14d2c8c4fb..79e14f3fb5 100644 --- a/internal/aws/s3/access_grant_resource_gen.go +++ b/internal/aws/s3/access_grant_resource_gen.go @@ -297,7 +297,6 @@ func accessGrantResource(ctx context.Context) (resource.Resource, error) { setplanmodifier.UseStateForUnknown(), setplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -339,7 +338,6 @@ func accessGrantResource(ctx context.Context) (resource.Resource, error) { }) opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/Tags", "/properties/S3PrefixType", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/s3/access_grants_location_resource_gen.go b/internal/aws/s3/access_grants_location_resource_gen.go index fb83e94889..c59546e6af 100644 --- a/internal/aws/s3/access_grants_location_resource_gen.go +++ b/internal/aws/s3/access_grants_location_resource_gen.go @@ -151,7 +151,6 @@ func accessGrantsLocationResource(ctx context.Context) (resource.Resource, error setplanmodifier.UseStateForUnknown(), setplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ - // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -184,9 +183,6 @@ func accessGrantsLocationResource(ctx context.Context) (resource.Resource, error "value": "Value", }) - opts = opts.WithWriteOnlyPropertyPaths([]string{ - "/properties/Tags", - }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/s3/bucket_resource_gen.go b/internal/aws/s3/bucket_resource_gen.go index 7eeb50b0b7..cfb0fada97 100644 --- a/internal/aws/s3/bucket_resource_gen.go +++ b/internal/aws/s3/bucket_resource_gen.go @@ -431,7 +431,7 @@ func bucketResource(ctx context.Context) (resource.Resource, error) { // "insertionOrder": true, // "items": { // "additionalProperties": false, - // "description": "Specifies the default server-side encryption configuration.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", + // "description": "Specifies the default server-side encryption configuration.\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.\n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.", // "properties": { // "BucketKeyEnabled": { // "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the ``BucketKeyEnabled`` element to ``true`` causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.\n For more information, see [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the *Amazon S3 User Guide*.", @@ -442,11 +442,11 @@ func bucketResource(ctx context.Context) (resource.Resource, error) { // "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied.", // "properties": { // "KMSMasterKeyID": { - // "description": "AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + // "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", // "type": "string" // }, // "SSEAlgorithm": { - // "description": "Server-side encryption algorithm to use for the default encryption.", + // "description": "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", // "enum": [ // "aws:kms", // "AES256", @@ -492,7 +492,7 @@ func bucketResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: KMSMasterKeyID "kms_master_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + Description: "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -501,7 +501,7 @@ func bucketResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: SSEAlgorithm "sse_algorithm": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Server-side encryption algorithm to use for the default encryption.", + Description: "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", Optional: true, Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ diff --git a/internal/aws/sagemaker/domain_resource_gen.go b/internal/aws/sagemaker/domain_resource_gen.go index 04fcd21e65..75cb6cec92 100644 --- a/internal/aws/sagemaker/domain_resource_gen.go +++ b/internal/aws/sagemaker/domain_resource_gen.go @@ -4163,6 +4163,14 @@ func domainResource(ctx context.Context) (resource.Resource, error) { // }, // "type": "object" // }, + // "ExecutionRoleIdentityConfig": { + // "description": "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + // "enum": [ + // "USER_PROFILE_NAME", + // "DISABLED" + // ], + // "type": "string" + // }, // "RStudioServerProDomainSettings": { // "additionalProperties": false, // "description": "A collection of settings that update the current configuration for the RStudioServerPro Domain-level app.", @@ -4345,6 +4353,21 @@ func domainResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ExecutionRoleIdentityConfig + "execution_role_identity_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "USER_PROFILE_NAME", + "DISABLED", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: RStudioServerProDomainSettings "r_studio_server_pro_domain_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -4660,6 +4683,31 @@ func domainResource(ctx context.Context) (resource.Resource, error) { generic.Multiset(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: TagPropagation + // CloudFormation resource type schema: + // + // { + // "description": "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + "tag_propagation": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ENABLED", + "DISABLED", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -4816,6 +4864,7 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "efs_file_system_config": "EFSFileSystemConfig", "enable_docker_access": "EnableDockerAccess", "execution_role": "ExecutionRole", + "execution_role_identity_config": "ExecutionRoleIdentityConfig", "file_system_id": "FileSystemId", "file_system_path": "FileSystemPath", "gid": "Gid", @@ -4859,6 +4908,7 @@ func domainResource(ctx context.Context) (resource.Resource, error) { "studio_web_portal": "StudioWebPortal", "studio_web_portal_settings": "StudioWebPortalSettings", "subnet_ids": "SubnetIds", + "tag_propagation": "TagPropagation", "tags": "Tags", "uid": "Uid", "url": "Url", diff --git a/internal/aws/sagemaker/endpoint_resource_gen.go b/internal/aws/sagemaker/endpoint_resource_gen.go new file mode 100644 index 0000000000..39d0e461df --- /dev/null +++ b/internal/aws/sagemaker/endpoint_resource_gen.go @@ -0,0 +1,731 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package sagemaker + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_sagemaker_endpoint", endpointResource) +} + +// endpointResource returns the Terraform awscc_sagemaker_endpoint resource. +// This Terraform resource corresponds to the CloudFormation AWS::SageMaker::Endpoint resource. +func endpointResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DeploymentConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies.", + // "properties": { + // "AutoRollbackConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for automatic rollback if an error occurs during deployment.", + // "properties": { + // "Alarms": { + // "description": "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "AlarmName": { + // "description": "The name of the CloudWatch alarm.", + // "type": "string" + // } + // }, + // "required": [ + // "AlarmName" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + // }, + // "required": [ + // "Alarms" + // ], + // "type": "object" + // }, + // "BlueGreenUpdatePolicy": { + // "additionalProperties": false, + // "description": "Configuration for blue-green update deployment policies.", + // "properties": { + // "MaximumExecutionTimeoutInSeconds": { + // "description": "The maximum time allowed for the blue/green update, in seconds.", + // "type": "integer" + // }, + // "TerminationWaitInSeconds": { + // "description": "The wait time before terminating the old endpoint during a blue/green deployment.", + // "type": "integer" + // }, + // "TrafficRoutingConfiguration": { + // "additionalProperties": false, + // "description": "The traffic routing configuration for the blue/green deployment.", + // "properties": { + // "CanarySize": { + // "additionalProperties": false, + // "description": "Specifies the size of the canary traffic in a canary deployment.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "LinearStepSize": { + // "additionalProperties": false, + // "description": "Specifies the step size for linear traffic routing.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", + // "type": "string" + // }, + // "WaitIntervalInSeconds": { + // "description": "Specifies the wait interval between traffic shifts, in seconds.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "TrafficRoutingConfiguration" + // ], + // "type": "object" + // }, + // "RollingUpdatePolicy": { + // "additionalProperties": false, + // "description": "Configuration for rolling update deployment policies.", + // "properties": { + // "MaximumBatchSize": { + // "additionalProperties": false, + // "description": "Specifies the maximum batch size for each rolling update.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "MaximumExecutionTimeoutInSeconds": { + // "description": "The maximum time allowed for the rolling update, in seconds.", + // "type": "integer" + // }, + // "RollbackMaximumBatchSize": { + // "additionalProperties": false, + // "description": "The maximum batch size for rollback during an update failure.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "WaitIntervalInSeconds": { + // "description": "The time to wait between steps during the rolling update, in seconds.", + // "type": "integer" + // } + // }, + // "required": [ + // "MaximumBatchSize", + // "WaitIntervalInSeconds" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "deployment_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutoRollbackConfiguration + "auto_rollback_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Alarms + "alarms": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AlarmName + "alarm_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the CloudWatch alarm.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for automatic rollback if an error occurs during deployment.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BlueGreenUpdatePolicy + "blue_green_update_policy": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaximumExecutionTimeoutInSeconds + "maximum_execution_timeout_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum time allowed for the blue/green update, in seconds.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TerminationWaitInSeconds + "termination_wait_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The wait time before terminating the old endpoint during a blue/green deployment.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TrafficRoutingConfiguration + "traffic_routing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CanarySize + "canary_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + 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: "Specifies the size of the canary traffic in a canary deployment.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LinearStepSize + "linear_step_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + 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: "Specifies the step size for linear traffic routing.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: WaitIntervalInSeconds + "wait_interval_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Specifies the wait interval between traffic shifts, in seconds.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The traffic routing configuration for the blue/green deployment.", + 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*/ + Description: "Configuration for blue-green update deployment policies.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RollingUpdatePolicy + "rolling_update_policy": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaximumBatchSize + "maximum_batch_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + 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: "Specifies the maximum batch size for each rolling update.", + 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*/ + // Property: MaximumExecutionTimeoutInSeconds + "maximum_execution_timeout_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum time allowed for the rolling update, in seconds.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RollbackMaximumBatchSize + "rollback_maximum_batch_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + 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: "The maximum batch size for rollback during an update failure.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: WaitIntervalInSeconds + "wait_interval_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The time to wait between steps during the rolling update, in seconds.", + 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: "Configuration for rolling update deployment policies.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the endpoint.", + // "type": "string" + // } + "endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the endpoint.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EndpointConfigName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", + // "type": "string" + // } + "endpoint_config_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: EndpointName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", + // "type": "string" + // } + "endpoint_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ExcludeRetainedVariantProperties + // CloudFormation resource type schema: + // + // { + // "description": "Specifies a list of variant properties that you want to exclude when updating an endpoint.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "VariantPropertyType": { + // "description": "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "exclude_retained_variant_properties": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: VariantPropertyType + "variant_property_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Specifies a list of variant properties that you want to exclude when updating an endpoint.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // ExcludeRetainedVariantProperties is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: RetainAllVariantProperties + // CloudFormation resource type schema: + // + // { + // "description": "When set to true, retains all variant properties for an endpoint when it is updated.", + // "type": "boolean" + // } + "retain_all_variant_properties": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When set to true, retains all variant properties for an endpoint when it is updated.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // RetainAllVariantProperties is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: RetainDeploymentConfig + // CloudFormation resource type schema: + // + // { + // "description": "When set to true, retains the deployment configuration during endpoint updates.", + // "type": "boolean" + // } + "retain_deployment_config": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When set to true, retains the deployment configuration during endpoint updates.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // RetainDeploymentConfig is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "description": "The key of the tag.", + // "type": "string" + // }, + // "Value": { + // "description": "The value of the tag.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "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 of the tag.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value of the tag.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::SageMaker::Endpoint", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SageMaker::Endpoint").WithTerraformTypeName("awscc_sagemaker_endpoint") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "alarm_name": "AlarmName", + "alarms": "Alarms", + "auto_rollback_configuration": "AutoRollbackConfiguration", + "blue_green_update_policy": "BlueGreenUpdatePolicy", + "canary_size": "CanarySize", + "deployment_config": "DeploymentConfig", + "endpoint_arn": "EndpointArn", + "endpoint_config_name": "EndpointConfigName", + "endpoint_name": "EndpointName", + "exclude_retained_variant_properties": "ExcludeRetainedVariantProperties", + "key": "Key", + "linear_step_size": "LinearStepSize", + "maximum_batch_size": "MaximumBatchSize", + "maximum_execution_timeout_in_seconds": "MaximumExecutionTimeoutInSeconds", + "retain_all_variant_properties": "RetainAllVariantProperties", + "retain_deployment_config": "RetainDeploymentConfig", + "rollback_maximum_batch_size": "RollbackMaximumBatchSize", + "rolling_update_policy": "RollingUpdatePolicy", + "tags": "Tags", + "termination_wait_in_seconds": "TerminationWaitInSeconds", + "traffic_routing_configuration": "TrafficRoutingConfiguration", + "type": "Type", + "value": "Value", + "variant_property_type": "VariantPropertyType", + "wait_interval_in_seconds": "WaitIntervalInSeconds", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ExcludeRetainedVariantProperties", + "/properties/RetainAllVariantProperties", + "/properties/RetainDeploymentConfig", + }) + 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/sagemaker/endpoint_resource_gen_test.go b/internal/aws/sagemaker/endpoint_resource_gen_test.go new file mode 100644 index 0000000000..1f1e2fff45 --- /dev/null +++ b/internal/aws/sagemaker/endpoint_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 sagemaker_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSageMakerEndpoint_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SageMaker::Endpoint", "awscc_sagemaker_endpoint", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/sns/topic_resource_gen.go b/internal/aws/sns/topic_resource_gen.go index 7261e8e00e..7ed7584f14 100644 --- a/internal/aws/sns/topic_resource_gen.go +++ b/internal/aws/sns/topic_resource_gen.go @@ -213,11 +213,6 @@ func topicResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "anyOf": [ - // {}, - // {}, - // {} - // ], // "description": "The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*.\n This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html).", // "type": "string" // } @@ -255,10 +250,6 @@ func topicResource(ctx context.Context) (resource.Resource, error) { // "description": "``Subscription`` is an embedded property that describes the subscription endpoints of an SNS topic.\n For full control over subscription behavior (for example, delivery policy, filtering, raw message delivery, and cross-region subscriptions), use the [AWS::SNS::Subscription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html) resource.", // "properties": { // "Endpoint": { - // "anyOf": [ - // {}, - // {} - // ], // "description": "The endpoint that receives notifications from the SNS topic. The endpoint value depends on the protocol that you specify. For more information, see the ``Endpoint`` parameter of the ``Subscribe`` action in the *API Reference*.", // "type": "string" // }, From 4814816041372d91e9f7c481c7d8de7ec18d1642 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 22:56:52 -0400 Subject: [PATCH 4/6] 10/24/2024 CloudFormation schemas in us-east-1; Generate Terraform data source schemas. --- .../vpc_link_singular_data_source_gen.go | 12 +- .../domain_name_singular_data_source_gen.go | 6 +- .../graph_ql_api_plural_data_source_gen.go | 54 ++ ...raph_ql_api_plural_data_source_gen_test.go | 27 + .../graph_ql_api_singular_data_source_gen.go | 740 ++++++++++++++++++ ...ph_ql_api_singular_data_source_gen_test.go | 36 + ..._scaling_group_singular_data_source_gen.go | 49 +- ...ped_backup_vault_plural_data_source_gen.go | 54 ++ ...ackup_vault_plural_data_source_gen_test.go | 27 + ...d_backup_vault_singular_data_source_gen.go | 192 +++++ ...kup_vault_singular_data_source_gen_test.go | 36 + .../bedrock/agent_singular_data_source_gen.go | 5 +- ...ntity_provider_singular_data_source_gen.go | 132 ++++ ..._provider_singular_data_source_gen_test.go | 36 + ...ty_reservation_singular_data_source_gen.go | 50 +- .../vpc_endpoint_singular_data_source_gen.go | 4 +- ...vpn_connection_singular_data_source_gen.go | 130 +-- ..._provider_singular_data_source_gen_test.go | 8 +- .../ecs/service_singular_data_source_gen.go | 4 +- ...lication_group_singular_data_source_gen.go | 12 + .../component_singular_data_source_gen.go | 3 +- ..._configuration_singular_data_source_gen.go | 62 ++ ..._configuration_singular_data_source_gen.go | 2 +- ..._configuration_singular_data_source_gen.go | 12 +- .../function_singular_data_source_gen.go | 4 +- .../api_key_singular_data_source_gen.go | 2 +- .../cluster_singular_data_source_gen.go | 12 + .../integration_plural_data_source_gen.go | 54 ++ ...integration_plural_data_source_gen_test.go | 27 + .../integration_singular_data_source_gen.go | 205 +++++ ...tegration_singular_data_source_gen_test.go | 36 + ...vironment_singular_data_source_gen_test.go | 8 +- .../record_set_singular_data_source_gen.go | 389 +++++++++ ...ecord_set_singular_data_source_gen_test.go | 36 + .../aws/s3/bucket_singular_data_source_gen.go | 10 +- .../domain_singular_data_source_gen.go | 30 + .../endpoint_plural_data_source_gen.go | 54 ++ .../endpoint_plural_data_source_gen_test.go | 27 + .../endpoint_singular_data_source_gen.go | 521 ++++++++++++ .../endpoint_singular_data_source_gen_test.go | 36 + .../aws/sns/topic_singular_data_source_gen.go | 9 - 41 files changed, 3032 insertions(+), 121 deletions(-) create mode 100644 internal/aws/appsync/graph_ql_api_plural_data_source_gen.go create mode 100644 internal/aws/appsync/graph_ql_api_plural_data_source_gen_test.go create mode 100644 internal/aws/appsync/graph_ql_api_singular_data_source_gen.go create mode 100644 internal/aws/appsync/graph_ql_api_singular_data_source_gen_test.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen_test.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen.go create mode 100644 internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen_test.go create mode 100644 internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen.go create mode 100644 internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen_test.go create mode 100644 internal/aws/redshift/integration_plural_data_source_gen.go create mode 100644 internal/aws/redshift/integration_plural_data_source_gen_test.go create mode 100644 internal/aws/redshift/integration_singular_data_source_gen.go create mode 100644 internal/aws/redshift/integration_singular_data_source_gen_test.go create mode 100644 internal/aws/route53/record_set_singular_data_source_gen.go create mode 100644 internal/aws/route53/record_set_singular_data_source_gen_test.go create mode 100644 internal/aws/sagemaker/endpoint_plural_data_source_gen.go create mode 100644 internal/aws/sagemaker/endpoint_plural_data_source_gen_test.go create mode 100644 internal/aws/sagemaker/endpoint_singular_data_source_gen.go create mode 100644 internal/aws/sagemaker/endpoint_singular_data_source_gen_test.go diff --git a/internal/aws/apigateway/vpc_link_singular_data_source_gen.go b/internal/aws/apigateway/vpc_link_singular_data_source_gen.go index 862d240edc..06cddf27ba 100644 --- a/internal/aws/apigateway/vpc_link_singular_data_source_gen.go +++ b/internal/aws/apigateway/vpc_link_singular_data_source_gen.go @@ -27,22 +27,22 @@ func vpcLinkDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The description of the VPC link.", + // "description": "", // "type": "string" // } "description": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The description of the VPC link.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // // { - // "description": "The name used to label and identify the VPC link.", + // "description": "", // "type": "string" // } "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name used to label and identify the VPC link.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags @@ -91,7 +91,7 @@ func vpcLinkDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", + // "description": "", // "insertionOrder": false, // "items": { // "type": "string" @@ -101,7 +101,7 @@ func vpcLinkDataSource(ctx context.Context) (datasource.DataSource, error) { // } "target_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: VpcLinkId diff --git a/internal/aws/apigatewayv2/domain_name_singular_data_source_gen.go b/internal/aws/apigatewayv2/domain_name_singular_data_source_gen.go index bc421d5558..2866154092 100644 --- a/internal/aws/apigatewayv2/domain_name_singular_data_source_gen.go +++ b/internal/aws/apigatewayv2/domain_name_singular_data_source_gen.go @@ -27,11 +27,11 @@ func domainNameDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", + // "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", // "type": "string" // } "domain_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", + Description: "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", Computed: true, }, /*END ATTRIBUTE*/ // Property: DomainNameConfigurations @@ -41,7 +41,7 @@ func domainNameDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "The domain name configurations.", // "items": { // "additionalProperties": false, - // "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", + // "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", // "properties": { // "CertificateArn": { // "description": "An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.", diff --git a/internal/aws/appsync/graph_ql_api_plural_data_source_gen.go b/internal/aws/appsync/graph_ql_api_plural_data_source_gen.go new file mode 100644 index 0000000000..66898c6cc1 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appsync_graph_ql_apis", graphQLApisDataSource) +} + +// graphQLApisDataSource returns the Terraform awscc_appsync_graph_ql_apis data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppSync::GraphQLApi resource. +func graphQLApisDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::AppSync::GraphQLApi", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::GraphQLApi").WithTerraformTypeName("awscc_appsync_graph_ql_apis") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/graph_ql_api_plural_data_source_gen_test.go b/internal/aws/appsync/graph_ql_api_plural_data_source_gen_test.go new file mode 100644 index 0000000000..23f7631a68 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncGraphQLApisDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::GraphQLApi", "awscc_appsync_graph_ql_apis", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/appsync/graph_ql_api_singular_data_source_gen.go b/internal/aws/appsync/graph_ql_api_singular_data_source_gen.go new file mode 100644 index 0000000000..b8784ce405 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_singular_data_source_gen.go @@ -0,0 +1,740 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appsync + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_appsync_graph_ql_api", graphQLApiDataSource) +} + +// graphQLApiDataSource returns the Terraform awscc_appsync_graph_ql_api data source. +// This Terraform data source corresponds to the CloudFormation AWS::AppSync::GraphQLApi resource. +func graphQLApiDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AdditionalAuthenticationProviders + // CloudFormation resource type schema: + // + // { + // "description": "A list of additional authentication providers for the GraphqlApi API.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "AuthenticationType": { + // "description": "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + // "type": "string" + // }, + // "LambdaAuthorizerConfig": { + // "additionalProperties": false, + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "description": "The number of seconds a response should be cached for.", + // "type": "integer" + // }, + // "AuthorizerUri": { + // "description": "The ARN of the Lambda function to be called for authorization.", + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "description": "A regular expression for validation of tokens before the Lambda function is called.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "OpenIDConnectConfig": { + // "additionalProperties": false, + // "properties": { + // "AuthTTL": { + // "description": "The number of milliseconds that a token is valid after being authenticated.", + // "type": "number" + // }, + // "ClientId": { + // "description": "The client identifier of the Relying party at the OpenID identity provider.", + // "type": "string" + // }, + // "IatTTL": { + // "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + // "type": "number" + // }, + // "Issuer": { + // "description": "The issuer for the OIDC configuration. ", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "UserPoolConfig": { + // "additionalProperties": false, + // "properties": { + // "AppIdClientRegex": { + // "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + // "type": "string" + // }, + // "AwsRegion": { + // "description": "The AWS Region in which the user pool was created.", + // "type": "string" + // }, + // "UserPoolId": { + // "description": "The user pool ID", + // "type": "string" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "AuthenticationType" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "additional_authentication_providers": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthenticationType + "authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of seconds a response should be cached for.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Lambda function to be called for authorization.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validation of tokens before the Lambda function is called.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after being authenticated.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The client identifier of the Relying party at the OpenID identity provider.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The issuer for the OIDC configuration. ", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolConfig + "user_pool_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Region in which the user pool was created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The user pool ID", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "A list of additional authentication providers for the GraphqlApi API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ApiId + // CloudFormation resource type schema: + // + // { + // "description": "Unique AWS AppSync GraphQL API identifier.", + // "type": "string" + // } + "api_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Unique AWS AppSync GraphQL API identifier.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ApiType + // CloudFormation resource type schema: + // + // { + // "description": "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + // "type": "string" + // } + "api_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the API key", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the API key", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AuthenticationType + // CloudFormation resource type schema: + // + // { + // "description": "Security configuration for your GraphQL API", + // "type": "string" + // } + "authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Security configuration for your GraphQL API", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EnhancedMetricsConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent.", + // "properties": { + // "DataSourceLevelMetricsBehavior": { + // "description": "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + // "type": "string" + // }, + // "OperationLevelMetricsConfig": { + // "description": "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + // "type": "string" + // }, + // "ResolverLevelMetricsBehavior": { + // "description": "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + // "type": "string" + // } + // }, + // "required": [ + // "OperationLevelMetricsConfig", + // "ResolverLevelMetricsBehavior", + // "DataSourceLevelMetricsBehavior" + // ], + // "type": "object" + // } + "enhanced_metrics_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DataSourceLevelMetricsBehavior + "data_source_level_metrics_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OperationLevelMetricsConfig + "operation_level_metrics_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResolverLevelMetricsBehavior + "resolver_level_metrics_behavior": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EnvironmentVariables + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A map containing the list of resources with their properties and environment variables.", + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "environment_variables": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A map containing the list of resources with their properties and environment variables.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GraphQLDns + // CloudFormation resource type schema: + // + // { + // "description": "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + // "type": "string" + // } + "graph_ql_dns": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GraphQLEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The GraphQL endpoint ARN.", + // "type": "string" + // } + "graph_ql_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The GraphQL endpoint ARN.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GraphQLUrl + // CloudFormation resource type schema: + // + // { + // "description": "The Endpoint URL of your GraphQL API.", + // "type": "string" + // } + "graph_ql_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Endpoint URL of your GraphQL API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IntrospectionConfig + // CloudFormation resource type schema: + // + // { + // "description": "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + // "type": "string" + // } + "introspection_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LambdaAuthorizerConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + // "properties": { + // "AuthorizerResultTtlInSeconds": { + // "description": "The number of seconds a response should be cached for.", + // "type": "integer" + // }, + // "AuthorizerUri": { + // "description": "The ARN of the Lambda function to be called for authorization.", + // "type": "string" + // }, + // "IdentityValidationExpression": { + // "description": "A regular expression for validation of tokens before the Lambda function is called.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "lambda_authorizer_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthorizerResultTtlInSeconds + "authorizer_result_ttl_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of seconds a response should be cached for.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AuthorizerUri + "authorizer_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ARN of the Lambda function to be called for authorization.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdentityValidationExpression + "identity_validation_expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validation of tokens before the Lambda function is called.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LogConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The Amazon CloudWatch Logs configuration.", + // "properties": { + // "CloudWatchLogsRoleArn": { + // "description": "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + // "type": "string" + // }, + // "ExcludeVerboseContent": { + // "description": "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + // "type": "boolean" + // }, + // "FieldLogLevel": { + // "description": "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "log_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CloudWatchLogsRoleArn + "cloudwatch_logs_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ExcludeVerboseContent + "exclude_verbose_content": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FieldLogLevel + "field_log_level": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The Amazon CloudWatch Logs configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MergedApiExecutionRoleArn + // CloudFormation resource type schema: + // + // { + // "description": "The AWS Identity and Access Management service role ARN for a merged API. ", + // "type": "string" + // } + "merged_api_execution_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Identity and Access Management service role ARN for a merged API. ", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The API name", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The API name", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OpenIDConnectConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The OpenID Connect configuration.", + // "properties": { + // "AuthTTL": { + // "description": "The number of milliseconds that a token is valid after being authenticated.", + // "type": "number" + // }, + // "ClientId": { + // "description": "The client identifier of the Relying party at the OpenID identity provider.", + // "type": "string" + // }, + // "IatTTL": { + // "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + // "type": "number" + // }, + // "Issuer": { + // "description": "The issuer for the OIDC configuration. ", + // "type": "string" + // } + // }, + // "type": "object" + // } + "open_id_connect_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AuthTTL + "auth_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after being authenticated.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClientId + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The client identifier of the Relying party at the OpenID identity provider.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IatTTL + "iat_ttl": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Issuer + "issuer": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The issuer for the OIDC configuration. ", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The OpenID Connect configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OwnerContact + // CloudFormation resource type schema: + // + // { + // "description": "The owner contact information for an API resource.", + // "type": "string" + // } + "owner_contact": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The owner contact information for an API resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: QueryDepthLimit + // CloudFormation resource type schema: + // + // { + // "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + // "type": "integer" + // } + "query_depth_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RealtimeDns + // CloudFormation resource type schema: + // + // { + // "description": "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + // "type": "string" + // } + "realtime_dns": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RealtimeUrl + // CloudFormation resource type schema: + // + // { + // "description": "The GraphQL API real-time endpoint URL.", + // "type": "string" + // } + "realtime_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The GraphQL API real-time endpoint URL.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResolverCountLimit + // CloudFormation resource type schema: + // + // { + // "description": "The maximum number of resolvers that can be invoked in a single request.", + // "type": "integer" + // } + "resolver_count_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum number of resolvers that can be invoked in a single request.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n", + // "properties": { + // "AppIdClientRegex": { + // "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + // "type": "string" + // }, + // "AwsRegion": { + // "description": "The AWS Region in which the user pool was created.", + // "type": "string" + // }, + // "DefaultAction": { + // "description": "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + // "type": "string" + // }, + // "UserPoolId": { + // "description": "The user pool ID.", + // "type": "string" + // } + // }, + // "type": "object" + // } + "user_pool_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AppIdClientRegex + "app_id_client_regex": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AwsRegion + "aws_region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The AWS Region in which the user pool was created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DefaultAction + "default_action": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The user pool ID.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Visibility + // CloudFormation resource type schema: + // + // { + // "description": "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + // "type": "string" + // } + "visibility": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: XrayEnabled + // CloudFormation resource type schema: + // + // { + // "description": "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + // "type": "boolean" + // } + "xray_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::AppSync::GraphQLApi", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::AppSync::GraphQLApi").WithTerraformTypeName("awscc_appsync_graph_ql_api") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "additional_authentication_providers": "AdditionalAuthenticationProviders", + "api_id": "ApiId", + "api_type": "ApiType", + "app_id_client_regex": "AppIdClientRegex", + "arn": "Arn", + "auth_ttl": "AuthTTL", + "authentication_type": "AuthenticationType", + "authorizer_result_ttl_in_seconds": "AuthorizerResultTtlInSeconds", + "authorizer_uri": "AuthorizerUri", + "aws_region": "AwsRegion", + "client_id": "ClientId", + "cloudwatch_logs_role_arn": "CloudWatchLogsRoleArn", + "data_source_level_metrics_behavior": "DataSourceLevelMetricsBehavior", + "default_action": "DefaultAction", + "enhanced_metrics_config": "EnhancedMetricsConfig", + "environment_variables": "EnvironmentVariables", + "exclude_verbose_content": "ExcludeVerboseContent", + "field_log_level": "FieldLogLevel", + "graph_ql_dns": "GraphQLDns", + "graph_ql_endpoint_arn": "GraphQLEndpointArn", + "graph_ql_url": "GraphQLUrl", + "iat_ttl": "IatTTL", + "identity_validation_expression": "IdentityValidationExpression", + "introspection_config": "IntrospectionConfig", + "issuer": "Issuer", + "key": "Key", + "lambda_authorizer_config": "LambdaAuthorizerConfig", + "log_config": "LogConfig", + "merged_api_execution_role_arn": "MergedApiExecutionRoleArn", + "name": "Name", + "open_id_connect_config": "OpenIDConnectConfig", + "operation_level_metrics_config": "OperationLevelMetricsConfig", + "owner_contact": "OwnerContact", + "query_depth_limit": "QueryDepthLimit", + "realtime_dns": "RealtimeDns", + "realtime_url": "RealtimeUrl", + "resolver_count_limit": "ResolverCountLimit", + "resolver_level_metrics_behavior": "ResolverLevelMetricsBehavior", + "tags": "Tags", + "user_pool_config": "UserPoolConfig", + "user_pool_id": "UserPoolId", + "value": "Value", + "visibility": "Visibility", + "xray_enabled": "XrayEnabled", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/appsync/graph_ql_api_singular_data_source_gen_test.go b/internal/aws/appsync/graph_ql_api_singular_data_source_gen_test.go new file mode 100644 index 0000000000..f630eda1e0 --- /dev/null +++ b/internal/aws/appsync/graph_ql_api_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package appsync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSAppSyncGraphQLApiDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::GraphQLApi", "awscc_appsync_graph_ql_api", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSAppSyncGraphQLApiDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::AppSync::GraphQLApi", "awscc_appsync_graph_ql_api", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go b/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go index bfebe60e7e..1ed62e141f 100644 --- a/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go +++ b/internal/aws/autoscaling/auto_scaling_group_singular_data_source_gen.go @@ -133,11 +133,11 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err // CloudFormation resource type schema: // // { - // "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + // "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", // "type": "string" // } "health_check_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + Description: "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", Computed: true, }, /*END ATTRIBUTE*/ // Property: InstanceId @@ -1379,6 +1379,48 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err Description: "A policy or a list of policies that are used to select the instance to terminate. These policies are executed in the order that you list them. For more information, see [Configure termination policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Valid values: ``Default`` | ``AllocationStrategy`` | ``ClosestToNextInstanceHour`` | ``NewestInstance`` | ``OldestInstance`` | ``OldestLaunchConfiguration`` | ``OldestLaunchTemplate`` | ``arn:aws:lambda:region:account-id:function:my-function:my-alias``", Computed: true, }, /*END ATTRIBUTE*/ + // Property: TrafficSources + // CloudFormation resource type schema: + // + // { + // "description": "", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "Identifier": { + // "type": "string" + // }, + // "Type": { + // "type": "string" + // } + // }, + // "required": [ + // "Identifier", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "traffic_sources": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Identifier + "identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: VPCZoneIdentifier // CloudFormation resource type schema: // @@ -1437,6 +1479,7 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err "health_check_grace_period": "HealthCheckGracePeriod", "health_check_type": "HealthCheckType", "heartbeat_timeout": "HeartbeatTimeout", + "identifier": "Identifier", "instance_generations": "InstanceGenerations", "instance_id": "InstanceId", "instance_maintenance_policy": "InstanceMaintenancePolicy", @@ -1495,6 +1538,8 @@ func autoScalingGroupDataSource(ctx context.Context) (datasource.DataSource, err "termination_policies": "TerminationPolicies", "topic_arn": "TopicARN", "total_local_storage_gb": "TotalLocalStorageGB", + "traffic_sources": "TrafficSources", + "type": "Type", "v_cpu_count": "VCpuCount", "value": "Value", "version": "Version", diff --git a/internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen.go b/internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen.go new file mode 100644 index 0000000000..c9fab6f623 --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_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 backup + +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_backup_logically_air_gapped_backup_vaults", logicallyAirGappedBackupVaultsDataSource) +} + +// logicallyAirGappedBackupVaultsDataSource returns the Terraform awscc_backup_logically_air_gapped_backup_vaults data source. +// This Terraform data source corresponds to the CloudFormation AWS::Backup::LogicallyAirGappedBackupVault resource. +func logicallyAirGappedBackupVaultsDataSource(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::Backup::LogicallyAirGappedBackupVault", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Backup::LogicallyAirGappedBackupVault").WithTerraformTypeName("awscc_backup_logically_air_gapped_backup_vaults") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen_test.go b/internal/aws/backup/logically_air_gapped_backup_vault_plural_data_source_gen_test.go new file mode 100644 index 0000000000..9d646c3e31 --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_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 backup_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSBackupLogicallyAirGappedBackupVaultsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Backup::LogicallyAirGappedBackupVault", "awscc_backup_logically_air_gapped_backup_vaults", "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/backup/logically_air_gapped_backup_vault_singular_data_source_gen.go b/internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen.go new file mode 100644 index 0000000000..8d2934f0df --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen.go @@ -0,0 +1,192 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package backup + +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_backup_logically_air_gapped_backup_vault", logicallyAirGappedBackupVaultDataSource) +} + +// logicallyAirGappedBackupVaultDataSource returns the Terraform awscc_backup_logically_air_gapped_backup_vault data source. +// This Terraform data source corresponds to the CloudFormation AWS::Backup::LogicallyAirGappedBackupVault resource. +func logicallyAirGappedBackupVaultDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccessPolicy + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "access_policy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BackupVaultArn + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "backup_vault_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BackupVaultName + // CloudFormation resource type schema: + // + // { + // "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$", + // "type": "string" + // } + "backup_vault_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BackupVaultTags + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "backup_vault_tags": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EncryptionKeyArn + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "encryption_key_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaxRetentionDays + // CloudFormation resource type schema: + // + // { + // "type": "integer" + // } + "max_retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinRetentionDays + // CloudFormation resource type schema: + // + // { + // "type": "integer" + // } + "min_retention_days": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Notifications + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "BackupVaultEvents": { + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "SNSTopicArn": { + // "type": "string" + // } + // }, + // "required": [ + // "SNSTopicArn", + // "BackupVaultEvents" + // ], + // "type": "object" + // } + "notifications": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BackupVaultEvents + "backup_vault_events": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SNSTopicArn + "sns_topic_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VaultState + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vault_state": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VaultType + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vault_type": 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::Backup::LogicallyAirGappedBackupVault", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Backup::LogicallyAirGappedBackupVault").WithTerraformTypeName("awscc_backup_logically_air_gapped_backup_vault") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "access_policy": "AccessPolicy", + "backup_vault_arn": "BackupVaultArn", + "backup_vault_events": "BackupVaultEvents", + "backup_vault_name": "BackupVaultName", + "backup_vault_tags": "BackupVaultTags", + "encryption_key_arn": "EncryptionKeyArn", + "max_retention_days": "MaxRetentionDays", + "min_retention_days": "MinRetentionDays", + "notifications": "Notifications", + "sns_topic_arn": "SNSTopicArn", + "vault_state": "VaultState", + "vault_type": "VaultType", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen_test.go b/internal/aws/backup/logically_air_gapped_backup_vault_singular_data_source_gen_test.go new file mode 100644 index 0000000000..613fb2fe27 --- /dev/null +++ b/internal/aws/backup/logically_air_gapped_backup_vault_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 backup_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSBackupLogicallyAirGappedBackupVaultDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Backup::LogicallyAirGappedBackupVault", "awscc_backup_logically_air_gapped_backup_vault", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSBackupLogicallyAirGappedBackupVaultDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Backup::LogicallyAirGappedBackupVault", "awscc_backup_logically_air_gapped_backup_vault", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/bedrock/agent_singular_data_source_gen.go b/internal/aws/bedrock/agent_singular_data_source_gen.go index 65b17ab1a4..025840a821 100644 --- a/internal/aws/bedrock/agent_singular_data_source_gen.go +++ b/internal/aws/bedrock/agent_singular_data_source_gen.go @@ -180,7 +180,8 @@ func agentDataSource(ctx context.Context) (datasource.DataSource, error) { // "ParentActionGroupSignature": { // "description": "Action Group Signature for a BuiltIn Action", // "enum": [ - // "AMAZON.UserInput" + // "AMAZON.UserInput", + // "AMAZON.CodeInterpreter" // ], // "type": "string" // }, @@ -489,7 +490,7 @@ func agentDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "ARN or name of a Bedrock model.", // "maxLength": 2048, // "minLength": 1, - // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", // "type": "string" // } "foundation_model": schema.StringAttribute{ /*START ATTRIBUTE*/ diff --git a/internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen.go b/internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen.go new file mode 100644 index 0000000000..c830f23178 --- /dev/null +++ b/internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen.go @@ -0,0 +1,132 @@ +// 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/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_cognito_user_pool_identity_provider", userPoolIdentityProviderDataSource) +} + +// userPoolIdentityProviderDataSource returns the Terraform awscc_cognito_user_pool_identity_provider data source. +// This Terraform data source corresponds to the CloudFormation AWS::Cognito::UserPoolIdentityProvider resource. +func userPoolIdentityProviderDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AttributeMapping + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "attribute_mapping": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IdpIdentifiers + // CloudFormation resource type schema: + // + // { + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + "idp_identifiers": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ProviderDetails + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "patternProperties": { + // "": { + // "type": "string" + // } + // }, + // "type": "object" + // } + "provider_details": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ProviderName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "provider_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ProviderType + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "provider_type": schema.StringAttribute{ /*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::UserPoolIdentityProvider", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::UserPoolIdentityProvider").WithTerraformTypeName("awscc_cognito_user_pool_identity_provider") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "attribute_mapping": "AttributeMapping", + "idp_identifiers": "IdpIdentifiers", + "provider_details": "ProviderDetails", + "provider_name": "ProviderName", + "provider_type": "ProviderType", + "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/user_pool_identity_provider_singular_data_source_gen_test.go b/internal/aws/cognito/user_pool_identity_provider_singular_data_source_gen_test.go new file mode 100644 index 0000000000..2f514810af --- /dev/null +++ b/internal/aws/cognito/user_pool_identity_provider_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 TestAccAWSCognitoUserPoolIdentityProviderDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::UserPoolIdentityProvider", "awscc_cognito_user_pool_identity_provider", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSCognitoUserPoolIdentityProviderDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::UserPoolIdentityProvider", "awscc_cognito_user_pool_identity_provider", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/capacity_reservation_singular_data_source_gen.go b/internal/aws/ec2/capacity_reservation_singular_data_source_gen.go index 238018c167..e32ebd1abb 100644 --- a/internal/aws/ec2/capacity_reservation_singular_data_source_gen.go +++ b/internal/aws/ec2/capacity_reservation_singular_data_source_gen.go @@ -222,6 +222,15 @@ func capacityReservationDataSource(ctx context.Context) (datasource.DataSource, "total_instance_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: UnusedReservationBillingOwnerId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "unused_reservation_billing_owner_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ attributes["id"] = schema.StringAttribute{ @@ -239,26 +248,27 @@ func capacityReservationDataSource(ctx context.Context) (datasource.DataSource, opts = opts.WithCloudFormationTypeName("AWS::EC2::CapacityReservation").WithTerraformTypeName("awscc_ec2_capacity_reservation") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "availability_zone": "AvailabilityZone", - "available_instance_count": "AvailableInstanceCount", - "capacity_reservation_id": "Id", - "ebs_optimized": "EbsOptimized", - "end_date": "EndDate", - "end_date_type": "EndDateType", - "ephemeral_storage": "EphemeralStorage", - "instance_count": "InstanceCount", - "instance_match_criteria": "InstanceMatchCriteria", - "instance_platform": "InstancePlatform", - "instance_type": "InstanceType", - "key": "Key", - "out_post_arn": "OutPostArn", - "placement_group_arn": "PlacementGroupArn", - "resource_type": "ResourceType", - "tag_specifications": "TagSpecifications", - "tags": "Tags", - "tenancy": "Tenancy", - "total_instance_count": "TotalInstanceCount", - "value": "Value", + "availability_zone": "AvailabilityZone", + "available_instance_count": "AvailableInstanceCount", + "capacity_reservation_id": "Id", + "ebs_optimized": "EbsOptimized", + "end_date": "EndDate", + "end_date_type": "EndDateType", + "ephemeral_storage": "EphemeralStorage", + "instance_count": "InstanceCount", + "instance_match_criteria": "InstanceMatchCriteria", + "instance_platform": "InstancePlatform", + "instance_type": "InstanceType", + "key": "Key", + "out_post_arn": "OutPostArn", + "placement_group_arn": "PlacementGroupArn", + "resource_type": "ResourceType", + "tag_specifications": "TagSpecifications", + "tags": "Tags", + "tenancy": "Tenancy", + "total_instance_count": "TotalInstanceCount", + "unused_reservation_billing_owner_id": "UnusedReservationBillingOwnerId", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go b/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go index cfd239e47a..ffa1d8fd3e 100644 --- a/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go +++ b/internal/aws/ec2/vpc_endpoint_singular_data_source_gen.go @@ -83,11 +83,11 @@ func vPCEndpointDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint.", + // "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", // "type": "string" // } "policy_document": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint.", + Description: "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", Computed: true, }, /*END ATTRIBUTE*/ // Property: PrivateDnsEnabled diff --git a/internal/aws/ec2/vpn_connection_singular_data_source_gen.go b/internal/aws/ec2/vpn_connection_singular_data_source_gen.go index 4e973cbbd1..909c3bfb1c 100644 --- a/internal/aws/ec2/vpn_connection_singular_data_source_gen.go +++ b/internal/aws/ec2/vpn_connection_singular_data_source_gen.go @@ -233,7 +233,7 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "description": "The tunnel options for a single VPN tunnel.", // "properties": { // "DPDTimeoutAction": { - // "description": "", + // "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", // "enum": [ // "clear", // "none", @@ -242,22 +242,23 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "string" // }, // "DPDTimeoutSeconds": { - // "description": "", + // "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", // "minimum": 30, // "type": "integer" // }, // "EnableTunnelLifecycleControl": { - // "description": "", + // "description": "Turn on or off tunnel endpoint lifecycle control feature.", // "type": "boolean" // }, // "IKEVersions": { - // "description": "", + // "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "The IKE version that is permitted for the VPN tunnel.", // "properties": { // "Value": { + // "description": "The IKE version.", // "enum": [ // "ikev1", // "ikev2" @@ -272,19 +273,22 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // }, // "LogOptions": { // "additionalProperties": false, - // "description": "", + // "description": "Options for logging VPN tunnel activity.", // "properties": { // "CloudwatchLogOptions": { // "additionalProperties": false, - // "description": "", + // "description": "Options for sending VPN tunnel logs to CloudWatch.", // "properties": { // "LogEnabled": { + // "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", // "type": "boolean" // }, // "LogGroupArn": { + // "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", // "type": "string" // }, // "LogOutputFormat": { + // "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", // "enum": [ // "json", // "text" @@ -298,13 +302,14 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "object" // }, // "Phase1DHGroupNumbers": { - // "description": "", + // "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The Diffie-Hellmann group number.", // "enum": [ // 2, // 14, @@ -328,13 +333,14 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase1EncryptionAlgorithms": { - // "description": "", + // "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The value for the encryption algorithm.", // "enum": [ // "AES128", // "AES256", @@ -350,13 +356,14 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase1IntegrityAlgorithms": { - // "description": "", + // "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", // "properties": { // "Value": { + // "description": "The value for the integrity algorithm.", // "enum": [ // "SHA1", // "SHA2-256", @@ -372,19 +379,20 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase1LifetimeSeconds": { - // "description": "", + // "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", // "maximum": 28800, // "minimum": 900, // "type": "integer" // }, // "Phase2DHGroupNumbers": { - // "description": "", + // "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The Diffie-Hellmann group number.", // "enum": [ // 2, // 14, @@ -408,13 +416,14 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase2EncryptionAlgorithms": { - // "description": "", + // "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The encryption algorithm.", // "enum": [ // "AES128", // "AES256", @@ -430,13 +439,14 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase2IntegrityAlgorithms": { - // "description": "", + // "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", // "insertionOrder": false, // "items": { // "additionalProperties": false, - // "description": "", + // "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", // "properties": { // "Value": { + // "description": "The integrity algorithm.", // "enum": [ // "SHA1", // "SHA2-256", @@ -452,7 +462,7 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "uniqueItems": false // }, // "Phase2LifetimeSeconds": { - // "description": "", + // "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", // "maximum": 3600, // "minimum": 900, // "type": "integer" @@ -462,24 +472,24 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "string" // }, // "RekeyFuzzPercentage": { - // "description": "", + // "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", // "maximum": 100, // "minimum": 0, // "type": "integer" // }, // "RekeyMarginTimeSeconds": { - // "description": "", + // "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", // "minimum": 60, // "type": "integer" // }, // "ReplayWindowSize": { - // "description": "", + // "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", // "maximum": 2048, // "minimum": 64, // "type": "integer" // }, // "StartupAction": { - // "description": "", + // "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", // "enum": [ // "add", // "start" @@ -491,7 +501,7 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "string" // }, // "TunnelInsideIpv6Cidr": { - // "description": "", + // "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", // "type": "string" // } // }, @@ -505,17 +515,17 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: DPDTimeoutAction "dpd_timeout_action": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", Computed: true, }, /*END ATTRIBUTE*/ // Property: DPDTimeoutSeconds "dpd_timeout_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", Computed: true, }, /*END ATTRIBUTE*/ // Property: EnableTunnelLifecycleControl "enable_tunnel_lifecycle_control": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "Turn on or off tunnel endpoint lifecycle control feature.", Computed: true, }, /*END ATTRIBUTE*/ // Property: IKEVersions @@ -524,11 +534,12 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The IKE version.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", Computed: true, }, /*END ATTRIBUTE*/ // Property: LogOptions @@ -539,22 +550,25 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: LogEnabled "log_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", + Computed: true, }, /*END ATTRIBUTE*/ // Property: LogGroupArn "log_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: LogOutputFormat "log_output_format": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "Options for sending VPN tunnel logs to CloudWatch.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "", + Description: "Options for logging VPN tunnel activity.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase1DHGroupNumbers @@ -563,11 +577,12 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The Diffie-Hellmann group number.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase1EncryptionAlgorithms @@ -576,11 +591,12 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The value for the encryption algorithm.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase1IntegrityAlgorithms @@ -589,16 +605,17 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The value for the integrity algorithm.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase1LifetimeSeconds "phase_1_lifetime_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase2DHGroupNumbers @@ -607,11 +624,12 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The Diffie-Hellmann group number.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase2EncryptionAlgorithms @@ -620,11 +638,12 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The encryption algorithm.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase2IntegrityAlgorithms @@ -633,16 +652,17 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The integrity algorithm.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "", + Description: "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", Computed: true, }, /*END ATTRIBUTE*/ // Property: Phase2LifetimeSeconds "phase_2_lifetime_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", Computed: true, }, /*END ATTRIBUTE*/ // Property: PreSharedKey @@ -652,22 +672,22 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ // Property: RekeyFuzzPercentage "rekey_fuzz_percentage": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", Computed: true, }, /*END ATTRIBUTE*/ // Property: RekeyMarginTimeSeconds "rekey_margin_time_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", Computed: true, }, /*END ATTRIBUTE*/ // Property: ReplayWindowSize "replay_window_size": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", Computed: true, }, /*END ATTRIBUTE*/ // Property: StartupAction "startup_action": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", Computed: true, }, /*END ATTRIBUTE*/ // Property: TunnelInsideCidr @@ -677,7 +697,7 @@ func vPNConnectionDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ // Property: TunnelInsideIpv6Cidr "tunnel_inside_ipv_6_cidr": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ diff --git a/internal/aws/ecs/capacity_provider_singular_data_source_gen_test.go b/internal/aws/ecs/capacity_provider_singular_data_source_gen_test.go index d32efbf12d..37d1bb68f5 100644 --- a/internal/aws/ecs/capacity_provider_singular_data_source_gen_test.go +++ b/internal/aws/ecs/capacity_provider_singular_data_source_gen_test.go @@ -6,6 +6,7 @@ package ecs_test import ( + "fmt" "regexp" "testing" @@ -18,8 +19,11 @@ func TestAccAWSECSCapacityProviderDataSource_basic(t *testing.T) { td.DataSourceTest(t, []resource.TestStep{ { - Config: td.EmptyDataSourceConfig(), - ExpectError: regexp.MustCompile("Missing required argument"), + Config: td.DataSourceWithEmptyResourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"), + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"), + ), }, }) } diff --git a/internal/aws/ecs/service_singular_data_source_gen.go b/internal/aws/ecs/service_singular_data_source_gen.go index f644cd2a3f..507faaee22 100644 --- a/internal/aws/ecs/service_singular_data_source_gen.go +++ b/internal/aws/ecs/service_singular_data_source_gen.go @@ -611,7 +611,7 @@ func serviceDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "Options": { // "additionalProperties": false, - // "description": "The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + // "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", // "patternProperties": { // "": { // "type": "string" @@ -767,7 +767,7 @@ func serviceDataSource(ctx context.Context) (datasource.DataSource, error) { "options": // Pattern: "" schema.MapAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + Description: "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", Computed: true, }, /*END ATTRIBUTE*/ // Property: SecretOptions diff --git a/internal/aws/elasticache/global_replication_group_singular_data_source_gen.go b/internal/aws/elasticache/global_replication_group_singular_data_source_gen.go index cd24eb9669..5cca02e580 100644 --- a/internal/aws/elasticache/global_replication_group_singular_data_source_gen.go +++ b/internal/aws/elasticache/global_replication_group_singular_data_source_gen.go @@ -56,6 +56,17 @@ func globalReplicationGroupDataSource(ctx context.Context) (datasource.DataSourc Description: "Cache parameter group name to use for the new engine version. This parameter cannot be modified independently.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine of the Global Datastore.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine of the Global Datastore.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: EngineVersion // CloudFormation resource type schema: // @@ -279,6 +290,7 @@ func globalReplicationGroupDataSource(ctx context.Context) (datasource.DataSourc "automatic_failover_enabled": "AutomaticFailoverEnabled", "cache_node_type": "CacheNodeType", "cache_parameter_group_name": "CacheParameterGroupName", + "engine": "Engine", "engine_version": "EngineVersion", "global_node_group_count": "GlobalNodeGroupCount", "global_replication_group_description": "GlobalReplicationGroupDescription", diff --git a/internal/aws/imagebuilder/component_singular_data_source_gen.go b/internal/aws/imagebuilder/component_singular_data_source_gen.go index 9643112061..bb91ca5a2c 100644 --- a/internal/aws/imagebuilder/component_singular_data_source_gen.go +++ b/internal/aws/imagebuilder/component_singular_data_source_gen.go @@ -109,7 +109,8 @@ func componentDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "The platform of the component.", // "enum": [ // "Windows", - // "Linux" + // "Linux", + // "macOS" // ], // "type": "string" // } diff --git a/internal/aws/imagebuilder/infrastructure_configuration_singular_data_source_gen.go b/internal/aws/imagebuilder/infrastructure_configuration_singular_data_source_gen.go index 29a4a0c9f1..65bcd32c31 100644 --- a/internal/aws/imagebuilder/infrastructure_configuration_singular_data_source_gen.go +++ b/internal/aws/imagebuilder/infrastructure_configuration_singular_data_source_gen.go @@ -180,6 +180,63 @@ func infrastructureConfigurationDataSource(ctx context.Context) (datasource.Data Description: "The name of the infrastructure configuration.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Placement + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The placement option settings for the infrastructure configuration.", + // "properties": { + // "AvailabilityZone": { + // "description": "AvailabilityZone", + // "type": "string" + // }, + // "HostId": { + // "description": "HostId", + // "type": "string" + // }, + // "HostResourceGroupArn": { + // "description": "HostResourceGroupArn", + // "type": "string" + // }, + // "Tenancy": { + // "description": "Tenancy", + // "enum": [ + // "default", + // "dedicated", + // "host" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // } + "placement": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityZone + "availability_zone": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "AvailabilityZone", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HostId + "host_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "HostId", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HostResourceGroupArn + "host_resource_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "HostResourceGroupArn", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tenancy + "tenancy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tenancy", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The placement option settings for the infrastructure configuration.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ResourceTags // CloudFormation resource type schema: // @@ -285,7 +342,10 @@ func infrastructureConfigurationDataSource(ctx context.Context) (datasource.Data opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "arn": "Arn", + "availability_zone": "AvailabilityZone", "description": "Description", + "host_id": "HostId", + "host_resource_group_arn": "HostResourceGroupArn", "http_put_response_hop_limit": "HttpPutResponseHopLimit", "http_tokens": "HttpTokens", "instance_metadata_options": "InstanceMetadataOptions", @@ -294,6 +354,7 @@ func infrastructureConfigurationDataSource(ctx context.Context) (datasource.Data "key_pair": "KeyPair", "logging": "Logging", "name": "Name", + "placement": "Placement", "resource_tags": "ResourceTags", "s3_bucket_name": "S3BucketName", "s3_key_prefix": "S3KeyPrefix", @@ -302,6 +363,7 @@ func infrastructureConfigurationDataSource(ctx context.Context) (datasource.Data "sns_topic_arn": "SnsTopicArn", "subnet_id": "SubnetId", "tags": "Tags", + "tenancy": "Tenancy", "terminate_instance_on_failure": "TerminateInstanceOnFailure", }) diff --git a/internal/aws/inspectorv2/cis_scan_configuration_singular_data_source_gen.go b/internal/aws/inspectorv2/cis_scan_configuration_singular_data_source_gen.go index 8b9a11beaf..7649b468fe 100644 --- a/internal/aws/inspectorv2/cis_scan_configuration_singular_data_source_gen.go +++ b/internal/aws/inspectorv2/cis_scan_configuration_singular_data_source_gen.go @@ -287,7 +287,7 @@ func cisScanConfigurationDataSource(ctx context.Context) (datasource.DataSource, // "properties": { // "AccountIds": { // "items": { - // "pattern": "^\\d{12}|ALL_MEMBERS|SELF$", + // "pattern": "^\\d{12}|ALL_ACCOUNTS|SELF$", // "type": "string" // }, // "maxItems": 10000, diff --git a/internal/aws/ivs/encoder_configuration_singular_data_source_gen.go b/internal/aws/ivs/encoder_configuration_singular_data_source_gen.go index f1024af65a..59ff660780 100644 --- a/internal/aws/ivs/encoder_configuration_singular_data_source_gen.go +++ b/internal/aws/ivs/encoder_configuration_singular_data_source_gen.go @@ -124,16 +124,16 @@ func encoderConfigurationDataSource(ctx context.Context) (datasource.DataSource, // }, // "Height": { // "default": 720, - // "description": "Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + // "description": "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", // "maximum": 1920, - // "minimum": 1, + // "minimum": 2, // "type": "integer" // }, // "Width": { // "default": 1280, - // "description": "Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + // "description": "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", // "maximum": 1920, - // "minimum": 1, + // "minimum": 2, // "type": "integer" // } // }, @@ -153,12 +153,12 @@ func encoderConfigurationDataSource(ctx context.Context) (datasource.DataSource, }, /*END ATTRIBUTE*/ // Property: Height "height": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + Description: "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Width "width": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + Description: "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ diff --git a/internal/aws/lambda/function_singular_data_source_gen.go b/internal/aws/lambda/function_singular_data_source_gen.go index 091e97940d..9e184fd76f 100644 --- a/internal/aws/lambda/function_singular_data_source_gen.go +++ b/internal/aws/lambda/function_singular_data_source_gen.go @@ -139,7 +139,7 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { // // { // "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", - // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", + // "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", // "type": "string" // } "code_signing_config_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ @@ -259,7 +259,7 @@ func functionDataSource(ctx context.Context) (datasource.DataSource, error) { // "Arn": { // "description": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", // "maxLength": 200, - // "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", + // "pattern": "^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", // "type": "string" // }, // "LocalMountPath": { diff --git a/internal/aws/location/api_key_singular_data_source_gen.go b/internal/aws/location/api_key_singular_data_source_gen.go index 58d869d5aa..addbcb5614 100644 --- a/internal/aws/location/api_key_singular_data_source_gen.go +++ b/internal/aws/location/api_key_singular_data_source_gen.go @@ -130,7 +130,7 @@ func aPIKeyDataSource(ctx context.Context) (datasource.DataSource, error) { // "items": { // "maxLength": 200, // "minLength": 5, - // "pattern": "^geo:\\w*\\*?$", + // "pattern": "^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$", // "type": "string" // }, // "maxItems": 24, diff --git a/internal/aws/memorydb/cluster_singular_data_source_gen.go b/internal/aws/memorydb/cluster_singular_data_source_gen.go index 2d4edaa923..f480944f34 100644 --- a/internal/aws/memorydb/cluster_singular_data_source_gen.go +++ b/internal/aws/memorydb/cluster_singular_data_source_gen.go @@ -129,6 +129,17 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "An optional description of the cluster.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Engine + // CloudFormation resource type schema: + // + // { + // "description": "The engine type used by the cluster.", + // "type": "string" + // } + "engine": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The engine type used by the cluster.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: EngineVersion // CloudFormation resource type schema: // @@ -439,6 +450,7 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "cluster_name": "ClusterName", "data_tiering": "DataTiering", "description": "Description", + "engine": "Engine", "engine_version": "EngineVersion", "final_snapshot_name": "FinalSnapshotName", "key": "Key", diff --git a/internal/aws/redshift/integration_plural_data_source_gen.go b/internal/aws/redshift/integration_plural_data_source_gen.go new file mode 100644 index 0000000000..bf330df2e2 --- /dev/null +++ b/internal/aws/redshift/integration_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 redshift + +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_redshift_integrations", integrationsDataSource) +} + +// integrationsDataSource returns the Terraform awscc_redshift_integrations data source. +// This Terraform data source corresponds to the CloudFormation AWS::Redshift::Integration resource. +func integrationsDataSource(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::Redshift::Integration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Redshift::Integration").WithTerraformTypeName("awscc_redshift_integrations") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/redshift/integration_plural_data_source_gen_test.go b/internal/aws/redshift/integration_plural_data_source_gen_test.go new file mode 100644 index 0000000000..4702886785 --- /dev/null +++ b/internal/aws/redshift/integration_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 redshift_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSRedshiftIntegrationsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Redshift::Integration", "awscc_redshift_integrations", "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/redshift/integration_singular_data_source_gen.go b/internal/aws/redshift/integration_singular_data_source_gen.go new file mode 100644 index 0000000000..581cab5644 --- /dev/null +++ b/internal/aws/redshift/integration_singular_data_source_gen.go @@ -0,0 +1,205 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package redshift + +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_redshift_integration", integrationDataSource) +} + +// integrationDataSource returns the Terraform awscc_redshift_integration data source. +// This Terraform data source corresponds to the CloudFormation AWS::Redshift::Integration resource. +func integrationDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AdditionalEncryptionContext + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + // "patternProperties": { + // "": { + // "maxLength": 131072, + // "minLength": 0, + // "type": "string" + // } + // }, + // "type": "object" + // } + "additional_encryption_context": // Pattern: "" + schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "An optional set of non-secret key?value pairs that contains additional contextual information about the data.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CreateTime + // CloudFormation resource type schema: + // + // { + // "description": "The time (UTC) when the integration was created.", + // "type": "string" + // } + "create_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The time (UTC) when the integration was created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IntegrationArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the integration.", + // "type": "string" + // } + "integration_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the integration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IntegrationName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the integration.", + // "maxLength": 64, + // "minLength": 1, + // "type": "string" + // } + "integration_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the integration.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: KMSKeyId + // CloudFormation resource type schema: + // + // { + // "anyOf": [ + // {}, + // {} + // ], + // "description": "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + // "type": "string" + // } + "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + // "type": "string" + // } + "source_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable", + 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" + // ], + // "type": "object" + // }, + // "maxItems": 50, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TargetArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + // "type": "string" + // } + "target_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf", + 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::Redshift::Integration", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Redshift::Integration").WithTerraformTypeName("awscc_redshift_integration") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "additional_encryption_context": "AdditionalEncryptionContext", + "create_time": "CreateTime", + "integration_arn": "IntegrationArn", + "integration_name": "IntegrationName", + "key": "Key", + "kms_key_id": "KMSKeyId", + "source_arn": "SourceArn", + "tags": "Tags", + "target_arn": "TargetArn", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/redshift/integration_singular_data_source_gen_test.go b/internal/aws/redshift/integration_singular_data_source_gen_test.go new file mode 100644 index 0000000000..8ea96cd668 --- /dev/null +++ b/internal/aws/redshift/integration_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 redshift_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSRedshiftIntegrationDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Redshift::Integration", "awscc_redshift_integration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSRedshiftIntegrationDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Redshift::Integration", "awscc_redshift_integration", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/refactorspaces/environment_singular_data_source_gen_test.go b/internal/aws/refactorspaces/environment_singular_data_source_gen_test.go index 780078c287..c69f965a8a 100644 --- a/internal/aws/refactorspaces/environment_singular_data_source_gen_test.go +++ b/internal/aws/refactorspaces/environment_singular_data_source_gen_test.go @@ -6,6 +6,7 @@ package refactorspaces_test import ( + "fmt" "regexp" "testing" @@ -18,8 +19,11 @@ func TestAccAWSRefactorSpacesEnvironmentDataSource_basic(t *testing.T) { td.DataSourceTest(t, []resource.TestStep{ { - Config: td.EmptyDataSourceConfig(), - ExpectError: regexp.MustCompile("Missing required argument"), + Config: td.DataSourceWithEmptyResourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"), + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"), + ), }, }) } diff --git a/internal/aws/route53/record_set_singular_data_source_gen.go b/internal/aws/route53/record_set_singular_data_source_gen.go new file mode 100644 index 0000000000..37ea71b85f --- /dev/null +++ b/internal/aws/route53/record_set_singular_data_source_gen.go @@ -0,0 +1,389 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package route53 + +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_route53_record_set", recordSetDataSource) +} + +// recordSetDataSource returns the Terraform awscc_route53_record_set data source. +// This Terraform data source corresponds to the CloudFormation AWS::Route53::RecordSet resource. +func recordSetDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AliasTarget + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", + // "properties": { + // "DNSName": { + // "description": "The value that you specify depends on where you want to route queries.", + // "maxLength": 1024, + // "type": "string" + // }, + // "EvaluateTargetHealth": { + // "default": false, + // "description": "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", + // "type": "boolean" + // }, + // "HostedZoneId": { + // "description": "The value used depends on where you want to route traffic.", + // "maxLength": 44, + // "type": "string" + // } + // }, + // "required": [ + // "HostedZoneId", + // "DNSName" + // ], + // "type": "object" + // } + "alias_target": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DNSName + "dns_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value that you specify depends on where you want to route queries.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EvaluateTargetHealth + "evaluate_target_health": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HostedZoneId + "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value used depends on where you want to route traffic.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CidrRoutingConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", + // "properties": { + // "CollectionId": { + // "description": "The CIDR collection ID.", + // "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + // "type": "string" + // }, + // "LocationName": { + // "description": "The CIDR collection location name.", + // "maxLength": 16, + // "minLength": 1, + // "pattern": "[0-9A-Za-z_\\-\\*]+", + // "type": "string" + // } + // }, + // "required": [ + // "CollectionId", + // "LocationName" + // ], + // "type": "object" + // } + "cidr_routing_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CollectionId + "collection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The CIDR collection ID.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocationName + "location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The CIDR collection location name.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Comment + // CloudFormation resource type schema: + // + // { + // "description": "Optional: Any comments you want to include about a change batch request.", + // "maxLength": 256, + // "type": "string" + // } + "comment": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Optional: Any comments you want to include about a change batch request.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Failover + // CloudFormation resource type schema: + // + // { + // "description": "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", + // "enum": [ + // "PRIMARY", + // "SECONDARY" + // ], + // "type": "string" + // } + "failover": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GeoLocation + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", + // "oneOf": [ + // { + // "required": [ + // "ContinentCode" + // ] + // }, + // { + // "required": [ + // "CountryCode" + // ] + // } + // ], + // "properties": { + // "ContinentCode": { + // "description": "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", + // "maxLength": 2, + // "minLength": 2, + // "type": "string" + // }, + // "CountryCode": { + // "description": "For geolocation resource record sets, the two-letter code for a country.", + // "maxLength": 2, + // "minLength": 1, + // "type": "string" + // }, + // "SubdivisionCode": { + // "description": "For geolocation resource record sets, the two-letter code for a state of the United States.", + // "maxLength": 3, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "geo_location": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ContinentCode + "continent_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, a two-letter abbreviation that identifies a continent.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CountryCode + "country_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, the two-letter code for a country.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubdivisionCode + "subdivision_code": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "For geolocation resource record sets, the two-letter code for a state of the United States.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HealthCheckId + // CloudFormation resource type schema: + // + // { + // "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", + // "maxLength": 64, + // "type": "string" + // } + "health_check_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HostedZoneId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the hosted zone that you want to create records in.", + // "maxLength": 44, + // "type": "string" + // } + "hosted_zone_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the hosted zone that you want to create records in.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HostedZoneName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", + // "maxLength": 256, + // "type": "string" + // } + "hosted_zone_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MultiValueAnswer + // CloudFormation resource type schema: + // + // { + // "description": "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", + // "type": "boolean" + // } + "multi_value_answer": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name of the record that you want to create, update, or delete.", + // "maxLength": 1024, + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the record that you want to create, update, or delete.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Region + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon EC2 Region where you created the resource that this resource record set refers to.", + // "type": "string" + // } + "region": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon EC2 Region where you created the resource that this resource record set refers to.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceRecords + // CloudFormation resource type schema: + // + // { + // "description": "One or more values that correspond with the value that you specified for the Type property.", + // "insertionOrder": true, + // "items": { + // "maxLength": 4000, + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // } + "resource_records": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "One or more values that correspond with the value that you specified for the Type property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SetIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", + // "maxLength": 128, + // "minLength": 0, + // "type": "string" + // } + "set_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An identifier that differentiates among multiple resource record sets that have the same combination of name and type.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TTL + // CloudFormation resource type schema: + // + // { + // "description": "The resource record cache time to live (TTL), in seconds.", + // "type": "string" + // } + "ttl": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The resource record cache time to live (TTL), in seconds.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + // CloudFormation resource type schema: + // + // { + // "description": "The DNS record type.", + // "type": "string" + // } + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The DNS record type.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Weight + // CloudFormation resource type schema: + // + // { + // "description": "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", + // "type": "integer" + // } + "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::Route53::RecordSet", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Route53::RecordSet").WithTerraformTypeName("awscc_route53_record_set") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "alias_target": "AliasTarget", + "cidr_routing_config": "CidrRoutingConfig", + "collection_id": "CollectionId", + "comment": "Comment", + "continent_code": "ContinentCode", + "country_code": "CountryCode", + "dns_name": "DNSName", + "evaluate_target_health": "EvaluateTargetHealth", + "failover": "Failover", + "geo_location": "GeoLocation", + "health_check_id": "HealthCheckId", + "hosted_zone_id": "HostedZoneId", + "hosted_zone_name": "HostedZoneName", + "location_name": "LocationName", + "multi_value_answer": "MultiValueAnswer", + "name": "Name", + "region": "Region", + "resource_records": "ResourceRecords", + "set_identifier": "SetIdentifier", + "subdivision_code": "SubdivisionCode", + "ttl": "TTL", + "type": "Type", + "weight": "Weight", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/route53/record_set_singular_data_source_gen_test.go b/internal/aws/route53/record_set_singular_data_source_gen_test.go new file mode 100644 index 0000000000..c9e963b53a --- /dev/null +++ b/internal/aws/route53/record_set_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 route53_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSRoute53RecordSetDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Route53::RecordSet", "awscc_route53_record_set", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSRoute53RecordSetDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Route53::RecordSet", "awscc_route53_record_set", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/s3/bucket_singular_data_source_gen.go b/internal/aws/s3/bucket_singular_data_source_gen.go index 146005ce90..16f143ce74 100644 --- a/internal/aws/s3/bucket_singular_data_source_gen.go +++ b/internal/aws/s3/bucket_singular_data_source_gen.go @@ -290,7 +290,7 @@ func bucketDataSource(ctx context.Context) (datasource.DataSource, error) { // "insertionOrder": true, // "items": { // "additionalProperties": false, - // "description": "Specifies the default server-side encryption configuration.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", + // "description": "Specifies the default server-side encryption configuration.\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.\n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.", // "properties": { // "BucketKeyEnabled": { // "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the ``BucketKeyEnabled`` element to ``true`` causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.\n For more information, see [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the *Amazon S3 User Guide*.", @@ -301,11 +301,11 @@ func bucketDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied.", // "properties": { // "KMSMasterKeyID": { - // "description": "AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + // "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", // "type": "string" // }, // "SSEAlgorithm": { - // "description": "Server-side encryption algorithm to use for the default encryption.", + // "description": "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", // "enum": [ // "aws:kms", // "AES256", @@ -347,12 +347,12 @@ func bucketDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: KMSMasterKeyID "kms_master_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + Description: "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SSEAlgorithm "sse_algorithm": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Server-side encryption algorithm to use for the default encryption.", + Description: "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ diff --git a/internal/aws/sagemaker/domain_singular_data_source_gen.go b/internal/aws/sagemaker/domain_singular_data_source_gen.go index 32eb559c34..a82885519f 100644 --- a/internal/aws/sagemaker/domain_singular_data_source_gen.go +++ b/internal/aws/sagemaker/domain_singular_data_source_gen.go @@ -2560,6 +2560,14 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "type": "object" // }, + // "ExecutionRoleIdentityConfig": { + // "description": "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + // "enum": [ + // "USER_PROFILE_NAME", + // "DISABLED" + // ], + // "type": "string" + // }, // "RStudioServerProDomainSettings": { // "additionalProperties": false, // "description": "A collection of settings that update the current configuration for the RStudioServerPro Domain-level app.", @@ -2716,6 +2724,11 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "A collection of settings that are required to start docker-proxy server.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ExecutionRoleIdentityConfig + "execution_role_identity_config": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: RStudioServerProDomainSettings "r_studio_server_pro_domain_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -2857,6 +2870,21 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The VPC subnets that Studio uses for communication.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: TagPropagation + // CloudFormation resource type schema: + // + // { + // "description": "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + "tag_propagation": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -2972,6 +3000,7 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "efs_file_system_config": "EFSFileSystemConfig", "enable_docker_access": "EnableDockerAccess", "execution_role": "ExecutionRole", + "execution_role_identity_config": "ExecutionRoleIdentityConfig", "file_system_id": "FileSystemId", "file_system_path": "FileSystemPath", "gid": "Gid", @@ -3015,6 +3044,7 @@ func domainDataSource(ctx context.Context) (datasource.DataSource, error) { "studio_web_portal": "StudioWebPortal", "studio_web_portal_settings": "StudioWebPortalSettings", "subnet_ids": "SubnetIds", + "tag_propagation": "TagPropagation", "tags": "Tags", "uid": "Uid", "url": "Url", diff --git a/internal/aws/sagemaker/endpoint_plural_data_source_gen.go b/internal/aws/sagemaker/endpoint_plural_data_source_gen.go new file mode 100644 index 0000000000..23a8a73ff9 --- /dev/null +++ b/internal/aws/sagemaker/endpoint_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 sagemaker + +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_sagemaker_endpoints", endpointsDataSource) +} + +// endpointsDataSource returns the Terraform awscc_sagemaker_endpoints data source. +// This Terraform data source corresponds to the CloudFormation AWS::SageMaker::Endpoint resource. +func endpointsDataSource(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::SageMaker::Endpoint", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SageMaker::Endpoint").WithTerraformTypeName("awscc_sagemaker_endpoints") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/sagemaker/endpoint_plural_data_source_gen_test.go b/internal/aws/sagemaker/endpoint_plural_data_source_gen_test.go new file mode 100644 index 0000000000..361ed61927 --- /dev/null +++ b/internal/aws/sagemaker/endpoint_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 sagemaker_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSageMakerEndpointsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SageMaker::Endpoint", "awscc_sagemaker_endpoints", "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/sagemaker/endpoint_singular_data_source_gen.go b/internal/aws/sagemaker/endpoint_singular_data_source_gen.go new file mode 100644 index 0000000000..d2ccd49ba6 --- /dev/null +++ b/internal/aws/sagemaker/endpoint_singular_data_source_gen.go @@ -0,0 +1,521 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package sagemaker + +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_sagemaker_endpoint", endpointDataSource) +} + +// endpointDataSource returns the Terraform awscc_sagemaker_endpoint data source. +// This Terraform data source corresponds to the CloudFormation AWS::SageMaker::Endpoint resource. +func endpointDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DeploymentConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies.", + // "properties": { + // "AutoRollbackConfiguration": { + // "additionalProperties": false, + // "description": "Configuration for automatic rollback if an error occurs during deployment.", + // "properties": { + // "Alarms": { + // "description": "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "AlarmName": { + // "description": "The name of the CloudWatch alarm.", + // "type": "string" + // } + // }, + // "required": [ + // "AlarmName" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + // }, + // "required": [ + // "Alarms" + // ], + // "type": "object" + // }, + // "BlueGreenUpdatePolicy": { + // "additionalProperties": false, + // "description": "Configuration for blue-green update deployment policies.", + // "properties": { + // "MaximumExecutionTimeoutInSeconds": { + // "description": "The maximum time allowed for the blue/green update, in seconds.", + // "type": "integer" + // }, + // "TerminationWaitInSeconds": { + // "description": "The wait time before terminating the old endpoint during a blue/green deployment.", + // "type": "integer" + // }, + // "TrafficRoutingConfiguration": { + // "additionalProperties": false, + // "description": "The traffic routing configuration for the blue/green deployment.", + // "properties": { + // "CanarySize": { + // "additionalProperties": false, + // "description": "Specifies the size of the canary traffic in a canary deployment.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "LinearStepSize": { + // "additionalProperties": false, + // "description": "Specifies the step size for linear traffic routing.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "Type": { + // "description": "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", + // "type": "string" + // }, + // "WaitIntervalInSeconds": { + // "description": "Specifies the wait interval between traffic shifts, in seconds.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "TrafficRoutingConfiguration" + // ], + // "type": "object" + // }, + // "RollingUpdatePolicy": { + // "additionalProperties": false, + // "description": "Configuration for rolling update deployment policies.", + // "properties": { + // "MaximumBatchSize": { + // "additionalProperties": false, + // "description": "Specifies the maximum batch size for each rolling update.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "MaximumExecutionTimeoutInSeconds": { + // "description": "The maximum time allowed for the rolling update, in seconds.", + // "type": "integer" + // }, + // "RollbackMaximumBatchSize": { + // "additionalProperties": false, + // "description": "The maximum batch size for rollback during an update failure.", + // "properties": { + // "Type": { + // "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + // "type": "string" + // }, + // "Value": { + // "description": "The value representing either the number of instances or the number of capacity units.", + // "type": "integer" + // } + // }, + // "required": [ + // "Type", + // "Value" + // ], + // "type": "object" + // }, + // "WaitIntervalInSeconds": { + // "description": "The time to wait between steps during the rolling update, in seconds.", + // "type": "integer" + // } + // }, + // "required": [ + // "MaximumBatchSize", + // "WaitIntervalInSeconds" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "deployment_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutoRollbackConfiguration + "auto_rollback_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Alarms + "alarms": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AlarmName + "alarm_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the CloudWatch alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for automatic rollback if an error occurs during deployment.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BlueGreenUpdatePolicy + "blue_green_update_policy": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaximumExecutionTimeoutInSeconds + "maximum_execution_timeout_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum time allowed for the blue/green update, in seconds.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TerminationWaitInSeconds + "termination_wait_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The wait time before terminating the old endpoint during a blue/green deployment.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TrafficRoutingConfiguration + "traffic_routing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CanarySize + "canary_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the size of the canary traffic in a canary deployment.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LinearStepSize + "linear_step_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the step size for linear traffic routing.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: WaitIntervalInSeconds + "wait_interval_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "Specifies the wait interval between traffic shifts, in seconds.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The traffic routing configuration for the blue/green deployment.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for blue-green update deployment policies.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RollingUpdatePolicy + "rolling_update_policy": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaximumBatchSize + "maximum_batch_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the maximum batch size for each rolling update.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaximumExecutionTimeoutInSeconds + "maximum_execution_timeout_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The maximum time allowed for the rolling update, in seconds.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RollbackMaximumBatchSize + "rollback_maximum_batch_size": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies whether the `Value` is an instance count or a capacity unit.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The value representing either the number of instances or the number of capacity units.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The maximum batch size for rollback during an update failure.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: WaitIntervalInSeconds + "wait_interval_in_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The time to wait between steps during the rolling update, in seconds.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for rolling update deployment policies.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the endpoint.", + // "type": "string" + // } + "endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the endpoint.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EndpointConfigName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", + // "type": "string" + // } + "endpoint_config_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EndpointName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", + // "type": "string" + // } + "endpoint_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ExcludeRetainedVariantProperties + // CloudFormation resource type schema: + // + // { + // "description": "Specifies a list of variant properties that you want to exclude when updating an endpoint.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "VariantPropertyType": { + // "description": "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "exclude_retained_variant_properties": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: VariantPropertyType + "variant_property_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Specifies a list of variant properties that you want to exclude when updating an endpoint.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RetainAllVariantProperties + // CloudFormation resource type schema: + // + // { + // "description": "When set to true, retains all variant properties for an endpoint when it is updated.", + // "type": "boolean" + // } + "retain_all_variant_properties": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When set to true, retains all variant properties for an endpoint when it is updated.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RetainDeploymentConfig + // CloudFormation resource type schema: + // + // { + // "description": "When set to true, retains the deployment configuration during endpoint updates.", + // "type": "boolean" + // } + "retain_deployment_config": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "When set to true, retains the deployment configuration during endpoint updates.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "description": "The key of the tag.", + // "type": "string" + // }, + // "Value": { + // "description": "The value of the tag.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "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 of the tag.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value of the tag.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::SageMaker::Endpoint", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SageMaker::Endpoint").WithTerraformTypeName("awscc_sagemaker_endpoint") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "alarm_name": "AlarmName", + "alarms": "Alarms", + "auto_rollback_configuration": "AutoRollbackConfiguration", + "blue_green_update_policy": "BlueGreenUpdatePolicy", + "canary_size": "CanarySize", + "deployment_config": "DeploymentConfig", + "endpoint_arn": "EndpointArn", + "endpoint_config_name": "EndpointConfigName", + "endpoint_name": "EndpointName", + "exclude_retained_variant_properties": "ExcludeRetainedVariantProperties", + "key": "Key", + "linear_step_size": "LinearStepSize", + "maximum_batch_size": "MaximumBatchSize", + "maximum_execution_timeout_in_seconds": "MaximumExecutionTimeoutInSeconds", + "retain_all_variant_properties": "RetainAllVariantProperties", + "retain_deployment_config": "RetainDeploymentConfig", + "rollback_maximum_batch_size": "RollbackMaximumBatchSize", + "rolling_update_policy": "RollingUpdatePolicy", + "tags": "Tags", + "termination_wait_in_seconds": "TerminationWaitInSeconds", + "traffic_routing_configuration": "TrafficRoutingConfiguration", + "type": "Type", + "value": "Value", + "variant_property_type": "VariantPropertyType", + "wait_interval_in_seconds": "WaitIntervalInSeconds", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/sagemaker/endpoint_singular_data_source_gen_test.go b/internal/aws/sagemaker/endpoint_singular_data_source_gen_test.go new file mode 100644 index 0000000000..128ba8e021 --- /dev/null +++ b/internal/aws/sagemaker/endpoint_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 sagemaker_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSageMakerEndpointDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SageMaker::Endpoint", "awscc_sagemaker_endpoint", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSSageMakerEndpointDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SageMaker::Endpoint", "awscc_sagemaker_endpoint", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/sns/topic_singular_data_source_gen.go b/internal/aws/sns/topic_singular_data_source_gen.go index 294cd91296..e2056b2680 100644 --- a/internal/aws/sns/topic_singular_data_source_gen.go +++ b/internal/aws/sns/topic_singular_data_source_gen.go @@ -154,11 +154,6 @@ func topicDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "anyOf": [ - // {}, - // {}, - // {} - // ], // "description": "The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*.\n This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html).", // "type": "string" // } @@ -188,10 +183,6 @@ func topicDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "``Subscription`` is an embedded property that describes the subscription endpoints of an SNS topic.\n For full control over subscription behavior (for example, delivery policy, filtering, raw message delivery, and cross-region subscriptions), use the [AWS::SNS::Subscription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html) resource.", // "properties": { // "Endpoint": { - // "anyOf": [ - // {}, - // {} - // ], // "description": "The endpoint that receives notifications from the SNS topic. The endpoint value depends on the protocol that you specify. For more information, see the ``Endpoint`` parameter of the ``Subscribe`` action in the *API Reference*.", // "type": "string" // }, From 3d52637d7e062aaaf636e74b55cf2466c9de6d5c Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 23:07:00 -0400 Subject: [PATCH 5/6] Run `make docs-all'. --- docs/data-sources/apigateway_vpc_link.md | 6 +- docs/data-sources/apigatewayv2_domain_name.md | 2 +- docs/data-sources/appsync_graph_ql_api.md | 150 ++++++++++++++++ docs/data-sources/appsync_graph_ql_apis.md | 21 +++ .../autoscaling_auto_scaling_group.md | 12 +- ...ackup_logically_air_gapped_backup_vault.md | 41 +++++ ...ckup_logically_air_gapped_backup_vaults.md | 21 +++ .../cognito_user_pool_identity_provider.md | 29 ++++ docs/data-sources/ec2_capacity_reservation.md | 1 + docs/data-sources/ec2_vpc_endpoint.md | 3 +- docs/data-sources/ec2_vpn_connection.md | 84 +++++---- docs/data-sources/ecs_service.md | 11 +- .../elasticache_global_replication_group.md | 1 + ...agebuilder_infrastructure_configuration.md | 13 ++ .../data-sources/ivs_encoder_configuration.md | 4 +- docs/data-sources/memorydb_cluster.md | 1 + docs/data-sources/redshift_integration.md | 39 +++++ docs/data-sources/redshift_integrations.md | 21 +++ docs/data-sources/route53_record_set.md | 67 ++++++++ docs/data-sources/s3_bucket.md | 16 +- docs/data-sources/sagemaker_domain.md | 2 + docs/data-sources/sagemaker_endpoint.md | 141 +++++++++++++++ docs/data-sources/sagemaker_endpoints.md | 21 +++ docs/resources/apigateway_vpc_link.md | 6 +- docs/resources/apigatewayv2_domain_name.md | 2 +- docs/resources/appsync_graph_ql_api.md | 161 ++++++++++++++++++ .../autoscaling_auto_scaling_group.md | 12 +- ...ackup_logically_air_gapped_backup_vault.md | 52 ++++++ .../cognito_user_pool_identity_provider.md | 40 +++++ docs/resources/ec2_capacity_reservation.md | 1 + docs/resources/ec2_vpc_endpoint.md | 3 +- docs/resources/ec2_vpn_connection.md | 84 +++++---- docs/resources/ecs_capacity_provider.md | 10 +- docs/resources/ecs_service.md | 11 +- .../elasticache_global_replication_group.md | 1 + ...agebuilder_infrastructure_configuration.md | 13 ++ docs/resources/ivs_encoder_configuration.md | 4 +- docs/resources/memorydb_cluster.md | 1 + docs/resources/redshift_integration.md | 50 ++++++ docs/resources/refactorspaces_environment.md | 7 +- docs/resources/route53_record_set.md | 78 +++++++++ docs/resources/s3_bucket.md | 16 +- docs/resources/sagemaker_domain.md | 2 + docs/resources/sagemaker_endpoint.md | 152 +++++++++++++++++ .../awscc_appsync_graph_ql_api/import.sh | 1 + .../import.sh | 1 + .../import.sh | 1 + .../awscc_redshift_integration/import.sh | 1 + .../awscc_route53_record_set/import.sh | 1 + .../awscc_sagemaker_endpoint/import.sh | 1 + 50 files changed, 1320 insertions(+), 99 deletions(-) create mode 100644 docs/data-sources/appsync_graph_ql_api.md create mode 100644 docs/data-sources/appsync_graph_ql_apis.md create mode 100644 docs/data-sources/backup_logically_air_gapped_backup_vault.md create mode 100644 docs/data-sources/backup_logically_air_gapped_backup_vaults.md create mode 100644 docs/data-sources/cognito_user_pool_identity_provider.md create mode 100644 docs/data-sources/redshift_integration.md create mode 100644 docs/data-sources/redshift_integrations.md create mode 100644 docs/data-sources/route53_record_set.md create mode 100644 docs/data-sources/sagemaker_endpoint.md create mode 100644 docs/data-sources/sagemaker_endpoints.md create mode 100644 docs/resources/appsync_graph_ql_api.md create mode 100644 docs/resources/backup_logically_air_gapped_backup_vault.md create mode 100644 docs/resources/cognito_user_pool_identity_provider.md create mode 100644 docs/resources/redshift_integration.md create mode 100644 docs/resources/route53_record_set.md create mode 100644 docs/resources/sagemaker_endpoint.md create mode 100644 examples/resources/awscc_appsync_graph_ql_api/import.sh create mode 100644 examples/resources/awscc_backup_logically_air_gapped_backup_vault/import.sh create mode 100644 examples/resources/awscc_cognito_user_pool_identity_provider/import.sh create mode 100644 examples/resources/awscc_redshift_integration/import.sh create mode 100644 examples/resources/awscc_route53_record_set/import.sh create mode 100644 examples/resources/awscc_sagemaker_endpoint/import.sh diff --git a/docs/data-sources/apigateway_vpc_link.md b/docs/data-sources/apigateway_vpc_link.md index ea8726cf1c..b5e1397ef1 100644 --- a/docs/data-sources/apigateway_vpc_link.md +++ b/docs/data-sources/apigateway_vpc_link.md @@ -21,10 +21,10 @@ Data Source schema for AWS::ApiGateway::VpcLink ### Read-Only -- `description` (String) The description of the VPC link. -- `name` (String) The name used to label and identify the VPC link. +- `description` (String) +- `name` (String) - `tags` (Attributes Set) An array of arbitrary tags (key-value pairs) to associate with the VPC link. (see [below for nested schema](#nestedatt--tags)) -- `target_arns` (List of String) The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner. +- `target_arns` (List of String) - `vpc_link_id` (String) diff --git a/docs/data-sources/apigatewayv2_domain_name.md b/docs/data-sources/apigatewayv2_domain_name.md index 1dafb41b9c..27085c017a 100644 --- a/docs/data-sources/apigatewayv2_domain_name.md +++ b/docs/data-sources/apigatewayv2_domain_name.md @@ -21,7 +21,7 @@ Data Source schema for AWS::ApiGatewayV2::DomainName ### Read-Only -- `domain_name` (String) The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported. +- `domain_name` (String) The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported. - `domain_name_configurations` (Attributes List) The domain name configurations. (see [below for nested schema](#nestedatt--domain_name_configurations)) - `mutual_tls_authentication` (Attributes) The mutual TLS authentication configuration for a custom domain name. (see [below for nested schema](#nestedatt--mutual_tls_authentication)) - `regional_domain_name` (String) diff --git a/docs/data-sources/appsync_graph_ql_api.md b/docs/data-sources/appsync_graph_ql_api.md new file mode 100644 index 0000000000..94831201d0 --- /dev/null +++ b/docs/data-sources/appsync_graph_ql_api.md @@ -0,0 +1,150 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_graph_ql_api Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::AppSync::GraphQLApi +--- + +# awscc_appsync_graph_ql_api (Data Source) + +Data Source schema for AWS::AppSync::GraphQLApi + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `additional_authentication_providers` (Attributes List) A list of additional authentication providers for the GraphqlApi API. (see [below for nested schema](#nestedatt--additional_authentication_providers)) +- `api_id` (String) Unique AWS AppSync GraphQL API identifier. +- `api_type` (String) The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED). +- `arn` (String) The Amazon Resource Name (ARN) of the API key +- `authentication_type` (String) Security configuration for your GraphQL API +- `enhanced_metrics_config` (Attributes) Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent. (see [below for nested schema](#nestedatt--enhanced_metrics_config)) +- `environment_variables` (Map of String) A map containing the list of resources with their properties and environment variables. +- `graph_ql_dns` (String) The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API. +- `graph_ql_endpoint_arn` (String) The GraphQL endpoint ARN. +- `graph_ql_url` (String) The Endpoint URL of your GraphQL API. +- `introspection_config` (String) Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. +- `lambda_authorizer_config` (Attributes) A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time. (see [below for nested schema](#nestedatt--lambda_authorizer_config)) +- `log_config` (Attributes) The Amazon CloudWatch Logs configuration. (see [below for nested schema](#nestedatt--log_config)) +- `merged_api_execution_role_arn` (String) The AWS Identity and Access Management service role ARN for a merged API. +- `name` (String) The API name +- `open_id_connect_config` (Attributes) The OpenID Connect configuration. (see [below for nested schema](#nestedatt--open_id_connect_config)) +- `owner_contact` (String) The owner contact information for an API resource. +- `query_depth_limit` (Number) The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. +- `realtime_dns` (String) The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API. +- `realtime_url` (String) The GraphQL API real-time endpoint URL. +- `resolver_count_limit` (Number) The maximum number of resolvers that can be invoked in a single request. +- `tags` (Attributes List) An arbitrary set of tags (key-value pairs) for this GraphQL API. (see [below for nested schema](#nestedatt--tags)) +- `user_pool_config` (Attributes) Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint. (see [below for nested schema](#nestedatt--user_pool_config)) +- `visibility` (String) Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided. +- `xray_enabled` (Boolean) A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi. + + +### Nested Schema for `additional_authentication_providers` + +Read-Only: + +- `authentication_type` (String) The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda. +- `lambda_authorizer_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--lambda_authorizer_config)) +- `open_id_connect_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--open_id_connect_config)) +- `user_pool_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--user_pool_config)) + + +### Nested Schema for `additional_authentication_providers.lambda_authorizer_config` + +Read-Only: + +- `authorizer_result_ttl_in_seconds` (Number) The number of seconds a response should be cached for. +- `authorizer_uri` (String) The ARN of the Lambda function to be called for authorization. +- `identity_validation_expression` (String) A regular expression for validation of tokens before the Lambda function is called. + + + +### Nested Schema for `additional_authentication_providers.open_id_connect_config` + +Read-Only: + +- `auth_ttl` (Number) The number of milliseconds that a token is valid after being authenticated. +- `client_id` (String) The client identifier of the Relying party at the OpenID identity provider. +- `iat_ttl` (Number) The number of milliseconds that a token is valid after it's issued to a user. +- `issuer` (String) The issuer for the OIDC configuration. + + + +### Nested Schema for `additional_authentication_providers.user_pool_config` + +Read-Only: + +- `app_id_client_regex` (String) A regular expression for validating the incoming Amazon Cognito user pool app client ID. +- `aws_region` (String) The AWS Region in which the user pool was created. +- `user_pool_id` (String) The user pool ID + + + + +### Nested Schema for `enhanced_metrics_config` + +Read-Only: + +- `data_source_level_metrics_behavior` (String) Controls how data source metrics will be emitted to CloudWatch. Data source metrics include: +- `operation_level_metrics_config` (String) Controls how operation metrics will be emitted to CloudWatch. Operation metrics include: +- `resolver_level_metrics_behavior` (String) Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include: + + + +### Nested Schema for `lambda_authorizer_config` + +Read-Only: + +- `authorizer_result_ttl_in_seconds` (Number) The number of seconds a response should be cached for. +- `authorizer_uri` (String) The ARN of the Lambda function to be called for authorization. +- `identity_validation_expression` (String) A regular expression for validation of tokens before the Lambda function is called. + + + +### Nested Schema for `log_config` + +Read-Only: + +- `cloudwatch_logs_role_arn` (String) The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account. +- `exclude_verbose_content` (Boolean) Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level. +- `field_log_level` (String) The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL. + + + +### Nested Schema for `open_id_connect_config` + +Read-Only: + +- `auth_ttl` (Number) The number of milliseconds that a token is valid after being authenticated. +- `client_id` (String) The client identifier of the Relying party at the OpenID identity provider. +- `iat_ttl` (Number) The number of milliseconds that a token is valid after it's issued to a user. +- `issuer` (String) The issuer for the OIDC configuration. + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) + + + +### Nested Schema for `user_pool_config` + +Read-Only: + +- `app_id_client_regex` (String) A regular expression for validating the incoming Amazon Cognito user pool app client ID. +- `aws_region` (String) The AWS Region in which the user pool was created. +- `default_action` (String) The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration. +- `user_pool_id` (String) The user pool ID. diff --git a/docs/data-sources/appsync_graph_ql_apis.md b/docs/data-sources/appsync_graph_ql_apis.md new file mode 100644 index 0000000000..d2038522b0 --- /dev/null +++ b/docs/data-sources/appsync_graph_ql_apis.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_graph_ql_apis Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::AppSync::GraphQLApi +--- + +# awscc_appsync_graph_ql_apis (Data Source) + +Plural Data Source schema for AWS::AppSync::GraphQLApi + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/autoscaling_auto_scaling_group.md b/docs/data-sources/autoscaling_auto_scaling_group.md index 1a10b52eb7..6be5ddca66 100644 --- a/docs/data-sources/autoscaling_auto_scaling_group.md +++ b/docs/data-sources/autoscaling_auto_scaling_group.md @@ -43,7 +43,7 @@ Data Source schema for AWS::AutoScaling::AutoScalingGroup - `health_check_grace_period` (Number) The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service and marking it unhealthy due to a failed health check. This is useful if your instances do not immediately pass their health checks after they enter the ``InService`` state. For more information, see [Set the health check grace period for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in the *Amazon EC2 Auto Scaling User Guide*. Default: ``0`` seconds - `health_check_type` (String) A comma-separated value string of one or more health check types. - The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*. + The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*. Only specify ``EC2`` if you must clear a value that was previously set. - `instance_id` (String) The ID of the instance used to base the launch configuration on. For more information, see [Create an Auto Scaling group using an EC2 instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html) in the *Amazon EC2 Auto Scaling User Guide*. If you specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``LaunchConfigurationName``, don't specify ``InstanceId``. @@ -74,6 +74,7 @@ Data Source schema for AWS::AutoScaling::AutoScalingGroup - `target_group_ar_ns` (List of String) The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with the Auto Scaling group. Instances are registered as targets with the target groups. The target groups receive incoming traffic and route requests to one or more registered targets. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the *Amazon EC2 Auto Scaling User Guide*. - `termination_policies` (List of String) A policy or a list of policies that are used to select the instance to terminate. These policies are executed in the order that you list them. For more information, see [Configure termination policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html) in the *Amazon EC2 Auto Scaling User Guide*. Valid values: ``Default`` | ``AllocationStrategy`` | ``ClosestToNextInstanceHour`` | ``NewestInstance`` | ``OldestInstance`` | ``OldestLaunchConfiguration`` | ``OldestLaunchTemplate`` | ``arn:aws:lambda:region:account-id:function:my-function:my-alias`` +- `traffic_sources` (Attributes Set) (see [below for nested schema](#nestedatt--traffic_sources)) - `vpc_zone_identifier` (List of String) A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created. If this resource specifies public subnets and is also in a VPC that is defined in the same stack template, you must use the [DependsOn attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the [VPC-gateway attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html). When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. You can optionally specify how CloudFormation handles these updates by using an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html). @@ -455,3 +456,12 @@ Read-Only: - `key` (String) The tag key. - `propagate_at_launch` (Boolean) Set to ``true`` if you want CloudFormation to copy the tag to EC2 instances that are launched as part of the Auto Scaling group. Set to ``false`` if you want the tag attached only to the Auto Scaling group and not copied to any instances launched as part of the Auto Scaling group. - `value` (String) The tag value. + + + +### Nested Schema for `traffic_sources` + +Read-Only: + +- `identifier` (String) +- `type` (String) diff --git a/docs/data-sources/backup_logically_air_gapped_backup_vault.md b/docs/data-sources/backup_logically_air_gapped_backup_vault.md new file mode 100644 index 0000000000..d1e1d16f64 --- /dev/null +++ b/docs/data-sources/backup_logically_air_gapped_backup_vault.md @@ -0,0 +1,41 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_backup_logically_air_gapped_backup_vault Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Backup::LogicallyAirGappedBackupVault +--- + +# awscc_backup_logically_air_gapped_backup_vault (Data Source) + +Data Source schema for AWS::Backup::LogicallyAirGappedBackupVault + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `access_policy` (String) +- `backup_vault_arn` (String) +- `backup_vault_name` (String) +- `backup_vault_tags` (Map of String) +- `encryption_key_arn` (String) +- `max_retention_days` (Number) +- `min_retention_days` (Number) +- `notifications` (Attributes) (see [below for nested schema](#nestedatt--notifications)) +- `vault_state` (String) +- `vault_type` (String) + + +### Nested Schema for `notifications` + +Read-Only: + +- `backup_vault_events` (List of String) +- `sns_topic_arn` (String) diff --git a/docs/data-sources/backup_logically_air_gapped_backup_vaults.md b/docs/data-sources/backup_logically_air_gapped_backup_vaults.md new file mode 100644 index 0000000000..388a814103 --- /dev/null +++ b/docs/data-sources/backup_logically_air_gapped_backup_vaults.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_backup_logically_air_gapped_backup_vaults Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Backup::LogicallyAirGappedBackupVault +--- + +# awscc_backup_logically_air_gapped_backup_vaults (Data Source) + +Plural Data Source schema for AWS::Backup::LogicallyAirGappedBackupVault + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/cognito_user_pool_identity_provider.md b/docs/data-sources/cognito_user_pool_identity_provider.md new file mode 100644 index 0000000000..e1d698a2e3 --- /dev/null +++ b/docs/data-sources/cognito_user_pool_identity_provider.md @@ -0,0 +1,29 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_user_pool_identity_provider Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Cognito::UserPoolIdentityProvider +--- + +# awscc_cognito_user_pool_identity_provider (Data Source) + +Data Source schema for AWS::Cognito::UserPoolIdentityProvider + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `attribute_mapping` (Map of String) +- `idp_identifiers` (List of String) +- `provider_details` (Map of String) +- `provider_name` (String) +- `provider_type` (String) +- `user_pool_id` (String) diff --git a/docs/data-sources/ec2_capacity_reservation.md b/docs/data-sources/ec2_capacity_reservation.md index 2053d55560..5e973c161e 100644 --- a/docs/data-sources/ec2_capacity_reservation.md +++ b/docs/data-sources/ec2_capacity_reservation.md @@ -37,6 +37,7 @@ Data Source schema for AWS::EC2::CapacityReservation - `tag_specifications` (Attributes List) (see [below for nested schema](#nestedatt--tag_specifications)) - `tenancy` (String) - `total_instance_count` (Number) +- `unused_reservation_billing_owner_id` (String) ### Nested Schema for `tag_specifications` diff --git a/docs/data-sources/ec2_vpc_endpoint.md b/docs/data-sources/ec2_vpc_endpoint.md index f81074d67c..94894b1e26 100644 --- a/docs/data-sources/ec2_vpc_endpoint.md +++ b/docs/data-sources/ec2_vpc_endpoint.md @@ -25,7 +25,8 @@ Data Source schema for AWS::EC2::VPCEndpoint - `dns_entries` (List of String) - `network_interface_ids` (List of String) - `policy_document` (String) An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints. - For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint. + For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section: + ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ "Version":"2012-10-17", "Statement": [{ "Effect":"Allow", "Principal":"*", "Action":["logs:Describe*","logs:Get*","logs:List*","logs:FilterLogEvents"], "Resource":"*" }] }'`` - `private_dns_enabled` (Boolean) Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service. To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``. This property is supported only for interface endpoints. diff --git a/docs/data-sources/ec2_vpn_connection.md b/docs/data-sources/ec2_vpn_connection.md index f3d20dfd90..989c4ad4b5 100644 --- a/docs/data-sources/ec2_vpn_connection.md +++ b/docs/data-sources/ec2_vpn_connection.md @@ -64,25 +64,48 @@ Read-Only: Read-Only: -- `dpd_timeout_action` (String) -- `dpd_timeout_seconds` (Number) -- `enable_tunnel_lifecycle_control` (Boolean) -- `ike_versions` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--ike_versions)) -- `log_options` (Attributes) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options)) -- `phase_1_dh_group_numbers` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_dh_group_numbers)) -- `phase_1_encryption_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_encryption_algorithms)) -- `phase_1_integrity_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_integrity_algorithms)) -- `phase_1_lifetime_seconds` (Number) -- `phase_2_dh_group_numbers` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_dh_group_numbers)) -- `phase_2_encryption_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_encryption_algorithms)) -- `phase_2_integrity_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_integrity_algorithms)) -- `phase_2_lifetime_seconds` (Number) +- `dpd_timeout_action` (String) The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session. + Valid Values: ``clear`` | ``none`` | ``restart`` + Default: ``clear`` +- `dpd_timeout_seconds` (Number) The number of seconds after which a DPD timeout occurs. + Constraints: A value greater than or equal to 30. + Default: ``30`` +- `enable_tunnel_lifecycle_control` (Boolean) Turn on or off tunnel endpoint lifecycle control feature. +- `ike_versions` (Attributes List) The IKE versions that are permitted for the VPN tunnel. + Valid values: ``ikev1`` | ``ikev2`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--ike_versions)) +- `log_options` (Attributes) Options for logging VPN tunnel activity. (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options)) +- `phase_1_dh_group_numbers` (Attributes List) One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_dh_group_numbers)) +- `phase_1_encryption_algorithms` (Attributes List) One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_encryption_algorithms)) +- `phase_1_integrity_algorithms` (Attributes List) One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_integrity_algorithms)) +- `phase_1_lifetime_seconds` (Number) The lifetime for phase 1 of the IKE negotiation, in seconds. + Constraints: A value between 900 and 28,800. + Default: ``28800`` +- `phase_2_dh_group_numbers` (Attributes List) One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_dh_group_numbers)) +- `phase_2_encryption_algorithms` (Attributes List) One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_encryption_algorithms)) +- `phase_2_integrity_algorithms` (Attributes List) One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_integrity_algorithms)) +- `phase_2_lifetime_seconds` (Number) The lifetime for phase 2 of the IKE negotiation, in seconds. + Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``. + Default: ``3600`` - `pre_shared_key` (String) The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway. Constraints: Allowed characters are alphanumeric characters, periods (.), and underscores (_). Must be between 8 and 64 characters in length and cannot start with zero (0). -- `rekey_fuzz_percentage` (Number) -- `rekey_margin_time_seconds` (Number) -- `replay_window_size` (Number) -- `startup_action` (String) +- `rekey_fuzz_percentage` (Number) The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected. + Constraints: A value between 0 and 100. + Default: ``100`` +- `rekey_margin_time_seconds` (Number) The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``. + Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``. + Default: ``270`` +- `replay_window_size` (Number) The number of packets in an IKE replay window. + Constraints: A value between 64 and 2048. + Default: ``1024`` +- `startup_action` (String) The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation. + Valid Values: ``add`` | ``start`` + Default: ``add`` - `tunnel_inside_cidr` (String) The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. Constraints: A size /30 CIDR block from the ``169.254.0.0/16`` range. The following CIDR blocks are reserved and cannot be used: + ``169.254.0.0/30`` @@ -92,14 +115,15 @@ Read-Only: + ``169.254.4.0/30`` + ``169.254.5.0/30`` + ``169.254.169.252/30`` -- `tunnel_inside_ipv_6_cidr` (String) +- `tunnel_inside_ipv_6_cidr` (String) The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway. + Constraints: A size /126 CIDR block from the local ``fd00::/8`` range. ### Nested Schema for `vpn_tunnel_options_specifications.ike_versions` Read-Only: -- `value` (String) +- `value` (String) The IKE version. @@ -107,16 +131,18 @@ Read-Only: Read-Only: -- `cloudwatch_log_options` (Attributes) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options--cloudwatch_log_options)) +- `cloudwatch_log_options` (Attributes) Options for sending VPN tunnel logs to CloudWatch. (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options--cloudwatch_log_options)) ### Nested Schema for `vpn_tunnel_options_specifications.log_options.cloudwatch_log_options` Read-Only: -- `log_enabled` (Boolean) -- `log_group_arn` (String) -- `log_output_format` (String) +- `log_enabled` (Boolean) Enable or disable VPN tunnel logging feature. Default value is ``False``. + Valid values: ``True`` | ``False`` +- `log_group_arn` (String) The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to. +- `log_output_format` (String) Set log format. Default format is ``json``. + Valid values: ``json`` | ``text`` @@ -125,7 +151,7 @@ Read-Only: Read-Only: -- `value` (Number) +- `value` (Number) The Diffie-Hellmann group number. @@ -133,7 +159,7 @@ Read-Only: Read-Only: -- `value` (String) +- `value` (String) The value for the encryption algorithm. @@ -141,7 +167,7 @@ Read-Only: Read-Only: -- `value` (String) +- `value` (String) The value for the integrity algorithm. @@ -149,7 +175,7 @@ Read-Only: Read-Only: -- `value` (Number) +- `value` (Number) The Diffie-Hellmann group number. @@ -157,7 +183,7 @@ Read-Only: Read-Only: -- `value` (String) +- `value` (String) The encryption algorithm. @@ -165,4 +191,4 @@ Read-Only: Read-Only: -- `value` (String) +- `value` (String) The integrity algorithm. diff --git a/docs/data-sources/ecs_service.md b/docs/data-sources/ecs_service.md index 613005d3b2..8b1b231393 100644 --- a/docs/data-sources/ecs_service.md +++ b/docs/data-sources/ecs_service.md @@ -231,7 +231,16 @@ Read-Only: For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*. For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html). If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software. -- `options` (Map of String) The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` +- `options` (Map of String) The configuration options to send to the log driver. + The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: + + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. + To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``. + When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. + Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``. + When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``. + When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``. + When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options. + This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` - `secret_options` (Attributes List) The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*. (see [below for nested schema](#nestedatt--service_connect_configuration--log_configuration--secret_options)) diff --git a/docs/data-sources/elasticache_global_replication_group.md b/docs/data-sources/elasticache_global_replication_group.md index 68e6d0e357..ff26c0c4fc 100644 --- a/docs/data-sources/elasticache_global_replication_group.md +++ b/docs/data-sources/elasticache_global_replication_group.md @@ -24,6 +24,7 @@ Data Source schema for AWS::ElastiCache::GlobalReplicationGroup - `automatic_failover_enabled` (Boolean) AutomaticFailoverEnabled - `cache_node_type` (String) The cache node type of the Global Datastore - `cache_parameter_group_name` (String) Cache parameter group name to use for the new engine version. This parameter cannot be modified independently. +- `engine` (String) The engine of the Global Datastore. - `engine_version` (String) The engine version of the Global Datastore. - `global_node_group_count` (Number) Indicates the number of node groups in the Global Datastore. - `global_replication_group_description` (String) The optional description of the Global Datastore diff --git a/docs/data-sources/imagebuilder_infrastructure_configuration.md b/docs/data-sources/imagebuilder_infrastructure_configuration.md index 30bea7e74b..4d91e9503f 100644 --- a/docs/data-sources/imagebuilder_infrastructure_configuration.md +++ b/docs/data-sources/imagebuilder_infrastructure_configuration.md @@ -29,6 +29,7 @@ Data Source schema for AWS::ImageBuilder::InfrastructureConfiguration - `key_pair` (String) The EC2 key pair of the infrastructure configuration.. - `logging` (Attributes) The logging configuration of the infrastructure configuration. (see [below for nested schema](#nestedatt--logging)) - `name` (String) The name of the infrastructure configuration. +- `placement` (Attributes) The placement option settings for the infrastructure configuration. (see [below for nested schema](#nestedatt--placement)) - `resource_tags` (Map of String) The tags attached to the resource created by Image Builder. - `security_group_ids` (List of String) The security group IDs of the infrastructure configuration. - `sns_topic_arn` (String) The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration. @@ -59,3 +60,15 @@ Read-Only: - `s3_bucket_name` (String) S3BucketName - `s3_key_prefix` (String) S3KeyPrefix + + + + +### Nested Schema for `placement` + +Read-Only: + +- `availability_zone` (String) AvailabilityZone +- `host_id` (String) HostId +- `host_resource_group_arn` (String) HostResourceGroupArn +- `tenancy` (String) Tenancy diff --git a/docs/data-sources/ivs_encoder_configuration.md b/docs/data-sources/ivs_encoder_configuration.md index 7480b47064..909815fb49 100644 --- a/docs/data-sources/ivs_encoder_configuration.md +++ b/docs/data-sources/ivs_encoder_configuration.md @@ -42,5 +42,5 @@ Read-Only: - `bitrate` (Number) Bitrate for generated output, in bps. Default: 2500000. - `framerate` (Number) Video frame rate, in fps. Default: 30. -- `height` (Number) Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720. -- `width` (Number) Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280. +- `height` (Number) Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720. +- `width` (Number) Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280. diff --git a/docs/data-sources/memorydb_cluster.md b/docs/data-sources/memorydb_cluster.md index 8b26df0d04..d2e54ea840 100644 --- a/docs/data-sources/memorydb_cluster.md +++ b/docs/data-sources/memorydb_cluster.md @@ -30,6 +30,7 @@ You cannot modify the value of AutoMinorVersionUpgrade after the cluster is crea - `cluster_name` (String) The name of the cluster. This value must be unique as it also serves as the cluster identifier. - `data_tiering` (String) Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes. - `description` (String) An optional description of the cluster. +- `engine` (String) The engine type used by the cluster. - `engine_version` (String) The Redis engine version used by the cluster. - `final_snapshot_name` (String) The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward. - `kms_key_id` (String) The ID of the KMS key used to encrypt the cluster. diff --git a/docs/data-sources/redshift_integration.md b/docs/data-sources/redshift_integration.md new file mode 100644 index 0000000000..58461ddceb --- /dev/null +++ b/docs/data-sources/redshift_integration.md @@ -0,0 +1,39 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_redshift_integration Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Redshift::Integration +--- + +# awscc_redshift_integration (Data Source) + +Data Source schema for AWS::Redshift::Integration + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `additional_encryption_context` (Map of String) An optional set of non-secret key?value pairs that contains additional contextual information about the data. +- `create_time` (String) The time (UTC) when the integration was created. +- `integration_arn` (String) The Amazon Resource Name (ARN) of the integration. +- `integration_name` (String) The name of the integration. +- `kms_key_id` (String) An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used. +- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf + + +### 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/redshift_integrations.md b/docs/data-sources/redshift_integrations.md new file mode 100644 index 0000000000..41be0cf3b9 --- /dev/null +++ b/docs/data-sources/redshift_integrations.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_redshift_integrations Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Redshift::Integration +--- + +# awscc_redshift_integrations (Data Source) + +Plural Data Source schema for AWS::Redshift::Integration + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/route53_record_set.md b/docs/data-sources/route53_record_set.md new file mode 100644 index 0000000000..e32d65ba73 --- /dev/null +++ b/docs/data-sources/route53_record_set.md @@ -0,0 +1,67 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_route53_record_set Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Route53::RecordSet +--- + +# awscc_route53_record_set (Data Source) + +Data Source schema for AWS::Route53::RecordSet + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `alias_target` (Attributes) Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. (see [below for nested schema](#nestedatt--alias_target)) +- `cidr_routing_config` (Attributes) The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. (see [below for nested schema](#nestedatt--cidr_routing_config)) +- `comment` (String) Optional: Any comments you want to include about a change batch request. +- `failover` (String) To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set. +- `geo_location` (Attributes) A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. (see [below for nested schema](#nestedatt--geo_location)) +- `health_check_id` (String) If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check. +- `hosted_zone_id` (String) The ID of the hosted zone that you want to create records in. +- `hosted_zone_name` (String) The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName. +- `multi_value_answer` (Boolean) To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. +- `name` (String) The name of the record that you want to create, update, or delete. +- `region` (String) The Amazon EC2 Region where you created the resource that this resource record set refers to. +- `resource_records` (List of String) One or more values that correspond with the value that you specified for the Type property. +- `set_identifier` (String) An identifier that differentiates among multiple resource record sets that have the same combination of name and type. +- `ttl` (String) The resource record cache time to live (TTL), in seconds. +- `type` (String) The DNS record type. +- `weight` (Number) Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total. + + +### Nested Schema for `alias_target` + +Read-Only: + +- `dns_name` (String) The value that you specify depends on where you want to route queries. +- `evaluate_target_health` (Boolean) When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone. +- `hosted_zone_id` (String) The value used depends on where you want to route traffic. + + + +### Nested Schema for `cidr_routing_config` + +Read-Only: + +- `collection_id` (String) The CIDR collection ID. +- `location_name` (String) The CIDR collection location name. + + + +### Nested Schema for `geo_location` + +Read-Only: + +- `continent_code` (String) For geolocation resource record sets, a two-letter abbreviation that identifies a continent. +- `country_code` (String) For geolocation resource record sets, the two-letter code for a country. +- `subdivision_code` (String) For geolocation resource record sets, the two-letter code for a state of the United States. diff --git a/docs/data-sources/s3_bucket.md b/docs/data-sources/s3_bucket.md index 17012cbbd1..1bae963bb5 100644 --- a/docs/data-sources/s3_bucket.md +++ b/docs/data-sources/s3_bucket.md @@ -137,16 +137,22 @@ Read-Only: Read-Only: -- `kms_master_key_id` (String) AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``. - You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key. +- `kms_master_key_id` (String) AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. + + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``. + + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``. + + You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key. + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` + Key Alias: ``alias/alias-name`` - If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. - If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy). - Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*. + If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy). + + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. + + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported. + + Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*. - `sse_algorithm` (String) Server-side encryption algorithm to use for the default encryption. + For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``. diff --git a/docs/data-sources/sagemaker_domain.md b/docs/data-sources/sagemaker_domain.md index 4d9d13fcf0..7396311163 100644 --- a/docs/data-sources/sagemaker_domain.md +++ b/docs/data-sources/sagemaker_domain.md @@ -36,6 +36,7 @@ Data Source schema for AWS::SageMaker::Domain - `single_sign_on_application_arn` (String) The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after October 1, 2023. - `single_sign_on_managed_application_instance_id` (String) The SSO managed application instance ID. - `subnet_ids` (List of String) The VPC subnets that Studio uses for communication. +- `tag_propagation` (String) Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources. - `tags` (Attributes List) A list of tags to apply to the user profile. (see [below for nested schema](#nestedatt--tags)) - `url` (String) The URL to the created domain. - `vpc_id` (String) The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication. @@ -500,6 +501,7 @@ Read-Only: Read-Only: - `docker_settings` (Attributes) A collection of settings that are required to start docker-proxy server. (see [below for nested schema](#nestedatt--domain_settings--docker_settings)) +- `execution_role_identity_config` (String) The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key. - `r_studio_server_pro_domain_settings` (Attributes) A collection of settings that update the current configuration for the RStudioServerPro Domain-level app. (see [below for nested schema](#nestedatt--domain_settings--r_studio_server_pro_domain_settings)) - `security_group_ids` (List of String) The security groups for the Amazon Virtual Private Cloud that the Domain uses for communication between Domain-level apps and user apps. diff --git a/docs/data-sources/sagemaker_endpoint.md b/docs/data-sources/sagemaker_endpoint.md new file mode 100644 index 0000000000..45b29c457e --- /dev/null +++ b/docs/data-sources/sagemaker_endpoint.md @@ -0,0 +1,141 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_sagemaker_endpoint Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::SageMaker::Endpoint +--- + +# awscc_sagemaker_endpoint (Data Source) + +Data Source schema for AWS::SageMaker::Endpoint + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `deployment_config` (Attributes) Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies. (see [below for nested schema](#nestedatt--deployment_config)) +- `endpoint_arn` (String) The Amazon Resource Name (ARN) of the endpoint. +- `endpoint_config_name` (String) The name of the endpoint configuration for the SageMaker endpoint. This is a required property. +- `endpoint_name` (String) The name of the SageMaker endpoint. This name must be unique within an AWS Region. +- `exclude_retained_variant_properties` (Attributes List) Specifies a list of variant properties that you want to exclude when updating an endpoint. (see [below for nested schema](#nestedatt--exclude_retained_variant_properties)) +- `retain_all_variant_properties` (Boolean) When set to true, retains all variant properties for an endpoint when it is updated. +- `retain_deployment_config` (Boolean) When set to true, retains the deployment configuration during endpoint updates. +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `deployment_config` + +Read-Only: + +- `auto_rollback_configuration` (Attributes) Configuration for automatic rollback if an error occurs during deployment. (see [below for nested schema](#nestedatt--deployment_config--auto_rollback_configuration)) +- `blue_green_update_policy` (Attributes) Configuration for blue-green update deployment policies. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy)) +- `rolling_update_policy` (Attributes) Configuration for rolling update deployment policies. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy)) + + +### Nested Schema for `deployment_config.auto_rollback_configuration` + +Read-Only: + +- `alarms` (Attributes List) List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back. (see [below for nested schema](#nestedatt--deployment_config--auto_rollback_configuration--alarms)) + + +### Nested Schema for `deployment_config.auto_rollback_configuration.alarms` + +Read-Only: + +- `alarm_name` (String) The name of the CloudWatch alarm. + + + + +### Nested Schema for `deployment_config.blue_green_update_policy` + +Read-Only: + +- `maximum_execution_timeout_in_seconds` (Number) The maximum time allowed for the blue/green update, in seconds. +- `termination_wait_in_seconds` (Number) The wait time before terminating the old endpoint during a blue/green deployment. +- `traffic_routing_configuration` (Attributes) The traffic routing configuration for the blue/green deployment. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration)) + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration` + +Read-Only: + +- `canary_size` (Attributes) Specifies the size of the canary traffic in a canary deployment. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration--canary_size)) +- `linear_step_size` (Attributes) Specifies the step size for linear traffic routing. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration--linear_step_size)) +- `type` (String) Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear'). +- `wait_interval_in_seconds` (Number) Specifies the wait interval between traffic shifts, in seconds. + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration.canary_size` + +Read-Only: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration.linear_step_size` + +Read-Only: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + + + +### Nested Schema for `deployment_config.rolling_update_policy` + +Read-Only: + +- `maximum_batch_size` (Attributes) Specifies the maximum batch size for each rolling update. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy--maximum_batch_size)) +- `maximum_execution_timeout_in_seconds` (Number) The maximum time allowed for the rolling update, in seconds. +- `rollback_maximum_batch_size` (Attributes) The maximum batch size for rollback during an update failure. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy--rollback_maximum_batch_size)) +- `wait_interval_in_seconds` (Number) The time to wait between steps during the rolling update, in seconds. + + +### Nested Schema for `deployment_config.rolling_update_policy.maximum_batch_size` + +Read-Only: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + +### Nested Schema for `deployment_config.rolling_update_policy.rollback_maximum_batch_size` + +Read-Only: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + + + +### Nested Schema for `exclude_retained_variant_properties` + +Read-Only: + +- `variant_property_type` (String) The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig'). + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key of the tag. +- `value` (String) The value of the tag. diff --git a/docs/data-sources/sagemaker_endpoints.md b/docs/data-sources/sagemaker_endpoints.md new file mode 100644 index 0000000000..5b31141c52 --- /dev/null +++ b/docs/data-sources/sagemaker_endpoints.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_sagemaker_endpoints Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::SageMaker::Endpoint +--- + +# awscc_sagemaker_endpoints (Data Source) + +Plural Data Source schema for AWS::SageMaker::Endpoint + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/resources/apigateway_vpc_link.md b/docs/resources/apigateway_vpc_link.md index 9f93777d22..bb9abdb351 100644 --- a/docs/resources/apigateway_vpc_link.md +++ b/docs/resources/apigateway_vpc_link.md @@ -37,12 +37,12 @@ resource "awscc_elasticloadbalancingv2_load_balancer" "example" { ### Required -- `name` (String) The name used to label and identify the VPC link. -- `target_arns` (List of String) The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner. +- `name` (String) +- `target_arns` (List of String) ### Optional -- `description` (String) The description of the VPC link. +- `description` (String) - `tags` (Attributes Set) An array of arbitrary tags (key-value pairs) to associate with the VPC link. (see [below for nested schema](#nestedatt--tags)) ### Read-Only diff --git a/docs/resources/apigatewayv2_domain_name.md b/docs/resources/apigatewayv2_domain_name.md index e101a839dc..b05a6bfbe5 100644 --- a/docs/resources/apigatewayv2_domain_name.md +++ b/docs/resources/apigatewayv2_domain_name.md @@ -31,7 +31,7 @@ resource "awscc_apigatewayv2_domain_name" "example" { ### Required -- `domain_name` (String) The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported. +- `domain_name` (String) The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported. ### Optional diff --git a/docs/resources/appsync_graph_ql_api.md b/docs/resources/appsync_graph_ql_api.md new file mode 100644 index 0000000000..0a365f2d2e --- /dev/null +++ b/docs/resources/appsync_graph_ql_api.md @@ -0,0 +1,161 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_appsync_graph_ql_api Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::AppSync::GraphQLApi +--- + +# awscc_appsync_graph_ql_api (Resource) + +Resource Type definition for AWS::AppSync::GraphQLApi + + + + +## Schema + +### Required + +- `authentication_type` (String) Security configuration for your GraphQL API +- `name` (String) The API name + +### Optional + +- `additional_authentication_providers` (Attributes List) A list of additional authentication providers for the GraphqlApi API. (see [below for nested schema](#nestedatt--additional_authentication_providers)) +- `api_type` (String) The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED). +- `enhanced_metrics_config` (Attributes) Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent. (see [below for nested schema](#nestedatt--enhanced_metrics_config)) +- `environment_variables` (Map of String) A map containing the list of resources with their properties and environment variables. +- `introspection_config` (String) Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. +- `lambda_authorizer_config` (Attributes) A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time. (see [below for nested schema](#nestedatt--lambda_authorizer_config)) +- `log_config` (Attributes) The Amazon CloudWatch Logs configuration. (see [below for nested schema](#nestedatt--log_config)) +- `merged_api_execution_role_arn` (String) The AWS Identity and Access Management service role ARN for a merged API. +- `open_id_connect_config` (Attributes) The OpenID Connect configuration. (see [below for nested schema](#nestedatt--open_id_connect_config)) +- `owner_contact` (String) The owner contact information for an API resource. +- `query_depth_limit` (Number) The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. +- `resolver_count_limit` (Number) The maximum number of resolvers that can be invoked in a single request. +- `tags` (Attributes List) An arbitrary set of tags (key-value pairs) for this GraphQL API. (see [below for nested schema](#nestedatt--tags)) +- `user_pool_config` (Attributes) Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint. (see [below for nested schema](#nestedatt--user_pool_config)) +- `visibility` (String) Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided. +- `xray_enabled` (Boolean) A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi. + +### Read-Only + +- `api_id` (String) Unique AWS AppSync GraphQL API identifier. +- `arn` (String) The Amazon Resource Name (ARN) of the API key +- `graph_ql_dns` (String) The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API. +- `graph_ql_endpoint_arn` (String) The GraphQL endpoint ARN. +- `graph_ql_url` (String) The Endpoint URL of your GraphQL API. +- `id` (String) Uniquely identifies the resource. +- `realtime_dns` (String) The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API. +- `realtime_url` (String) The GraphQL API real-time endpoint URL. + + +### Nested Schema for `additional_authentication_providers` + +Optional: + +- `authentication_type` (String) The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda. +- `lambda_authorizer_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--lambda_authorizer_config)) +- `open_id_connect_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--open_id_connect_config)) +- `user_pool_config` (Attributes) (see [below for nested schema](#nestedatt--additional_authentication_providers--user_pool_config)) + + +### Nested Schema for `additional_authentication_providers.lambda_authorizer_config` + +Optional: + +- `authorizer_result_ttl_in_seconds` (Number) The number of seconds a response should be cached for. +- `authorizer_uri` (String) The ARN of the Lambda function to be called for authorization. +- `identity_validation_expression` (String) A regular expression for validation of tokens before the Lambda function is called. + + + +### Nested Schema for `additional_authentication_providers.open_id_connect_config` + +Optional: + +- `auth_ttl` (Number) The number of milliseconds that a token is valid after being authenticated. +- `client_id` (String) The client identifier of the Relying party at the OpenID identity provider. +- `iat_ttl` (Number) The number of milliseconds that a token is valid after it's issued to a user. +- `issuer` (String) The issuer for the OIDC configuration. + + + +### Nested Schema for `additional_authentication_providers.user_pool_config` + +Optional: + +- `app_id_client_regex` (String) A regular expression for validating the incoming Amazon Cognito user pool app client ID. +- `aws_region` (String) The AWS Region in which the user pool was created. +- `user_pool_id` (String) The user pool ID + + + + +### Nested Schema for `enhanced_metrics_config` + +Optional: + +- `data_source_level_metrics_behavior` (String) Controls how data source metrics will be emitted to CloudWatch. Data source metrics include: +- `operation_level_metrics_config` (String) Controls how operation metrics will be emitted to CloudWatch. Operation metrics include: +- `resolver_level_metrics_behavior` (String) Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include: + + + +### Nested Schema for `lambda_authorizer_config` + +Optional: + +- `authorizer_result_ttl_in_seconds` (Number) The number of seconds a response should be cached for. +- `authorizer_uri` (String) The ARN of the Lambda function to be called for authorization. +- `identity_validation_expression` (String) A regular expression for validation of tokens before the Lambda function is called. + + + +### Nested Schema for `log_config` + +Optional: + +- `cloudwatch_logs_role_arn` (String) The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account. +- `exclude_verbose_content` (Boolean) Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level. +- `field_log_level` (String) The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL. + + + +### Nested Schema for `open_id_connect_config` + +Optional: + +- `auth_ttl` (Number) The number of milliseconds that a token is valid after being authenticated. +- `client_id` (String) The client identifier of the Relying party at the OpenID identity provider. +- `iat_ttl` (Number) The number of milliseconds that a token is valid after it's issued to a user. +- `issuer` (String) The issuer for the OIDC configuration. + + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) +- `value` (String) + + + +### Nested Schema for `user_pool_config` + +Optional: + +- `app_id_client_regex` (String) A regular expression for validating the incoming Amazon Cognito user pool app client ID. +- `aws_region` (String) The AWS Region in which the user pool was created. +- `default_action` (String) The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration. +- `user_pool_id` (String) The user pool ID. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_appsync_graph_ql_api.example "api_id" +``` diff --git a/docs/resources/autoscaling_auto_scaling_group.md b/docs/resources/autoscaling_auto_scaling_group.md index 5a731122ed..f266dffe23 100644 --- a/docs/resources/autoscaling_auto_scaling_group.md +++ b/docs/resources/autoscaling_auto_scaling_group.md @@ -177,7 +177,7 @@ data "aws_ami" "amazon_linux" { - `health_check_grace_period` (Number) The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service and marking it unhealthy due to a failed health check. This is useful if your instances do not immediately pass their health checks after they enter the ``InService`` state. For more information, see [Set the health check grace period for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in the *Amazon EC2 Auto Scaling User Guide*. Default: ``0`` seconds - `health_check_type` (String) A comma-separated value string of one or more health check types. - The valid values are ``EC2``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*. + The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*. Only specify ``EC2`` if you must clear a value that was previously set. - `instance_id` (String) The ID of the instance used to base the launch configuration on. For more information, see [Create an Auto Scaling group using an EC2 instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html) in the *Amazon EC2 Auto Scaling User Guide*. If you specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``LaunchConfigurationName``, don't specify ``InstanceId``. @@ -205,6 +205,7 @@ data "aws_ami" "amazon_linux" { - `target_group_ar_ns` (List of String) The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with the Auto Scaling group. Instances are registered as targets with the target groups. The target groups receive incoming traffic and route requests to one or more registered targets. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the *Amazon EC2 Auto Scaling User Guide*. - `termination_policies` (List of String) A policy or a list of policies that are used to select the instance to terminate. These policies are executed in the order that you list them. For more information, see [Configure termination policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html) in the *Amazon EC2 Auto Scaling User Guide*. Valid values: ``Default`` | ``AllocationStrategy`` | ``ClosestToNextInstanceHour`` | ``NewestInstance`` | ``OldestInstance`` | ``OldestLaunchConfiguration`` | ``OldestLaunchTemplate`` | ``arn:aws:lambda:region:account-id:function:my-function:my-alias`` +- `traffic_sources` (Attributes Set) (see [below for nested schema](#nestedatt--traffic_sources)) - `vpc_zone_identifier` (List of String) A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created. If this resource specifies public subnets and is also in a VPC that is defined in the same stack template, you must use the [DependsOn attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the [VPC-gateway attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html). When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. You can optionally specify how CloudFormation handles these updates by using an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html). @@ -591,6 +592,15 @@ Optional: - `propagate_at_launch` (Boolean) Set to ``true`` if you want CloudFormation to copy the tag to EC2 instances that are launched as part of the Auto Scaling group. Set to ``false`` if you want the tag attached only to the Auto Scaling group and not copied to any instances launched as part of the Auto Scaling group. - `value` (String) The tag value. + + +### Nested Schema for `traffic_sources` + +Optional: + +- `identifier` (String) +- `type` (String) + ## Import Import is supported using the following syntax: diff --git a/docs/resources/backup_logically_air_gapped_backup_vault.md b/docs/resources/backup_logically_air_gapped_backup_vault.md new file mode 100644 index 0000000000..b3582bae35 --- /dev/null +++ b/docs/resources/backup_logically_air_gapped_backup_vault.md @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_backup_logically_air_gapped_backup_vault Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault +--- + +# awscc_backup_logically_air_gapped_backup_vault (Resource) + +Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault + + + + +## Schema + +### Required + +- `backup_vault_name` (String) +- `max_retention_days` (Number) +- `min_retention_days` (Number) + +### Optional + +- `access_policy` (String) +- `backup_vault_tags` (Map of String) +- `notifications` (Attributes) (see [below for nested schema](#nestedatt--notifications)) +- `vault_state` (String) +- `vault_type` (String) + +### Read-Only + +- `backup_vault_arn` (String) +- `encryption_key_arn` (String) +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `notifications` + +Optional: + +- `backup_vault_events` (List of String) +- `sns_topic_arn` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_backup_logically_air_gapped_backup_vault.example "backup_vault_name" +``` diff --git a/docs/resources/cognito_user_pool_identity_provider.md b/docs/resources/cognito_user_pool_identity_provider.md new file mode 100644 index 0000000000..380b0c44b0 --- /dev/null +++ b/docs/resources/cognito_user_pool_identity_provider.md @@ -0,0 +1,40 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_user_pool_identity_provider Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Cognito::UserPoolIdentityProvider +--- + +# awscc_cognito_user_pool_identity_provider (Resource) + +Resource Type definition for AWS::Cognito::UserPoolIdentityProvider + + + + +## Schema + +### Required + +- `provider_details` (Map of String) +- `provider_name` (String) +- `provider_type` (String) +- `user_pool_id` (String) + +### Optional + +- `attribute_mapping` (Map of String) +- `idp_identifiers` (List of String) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_cognito_user_pool_identity_provider.example "user_pool_id|provider_name" +``` diff --git a/docs/resources/ec2_capacity_reservation.md b/docs/resources/ec2_capacity_reservation.md index bf1cbad76d..ebda798beb 100644 --- a/docs/resources/ec2_capacity_reservation.md +++ b/docs/resources/ec2_capacity_reservation.md @@ -54,6 +54,7 @@ resource "awscc_ec2_capacity_reservation" "example-capacity-reservation-end-date - `placement_group_arn` (String) - `tag_specifications` (Attributes List) (see [below for nested schema](#nestedatt--tag_specifications)) - `tenancy` (String) +- `unused_reservation_billing_owner_id` (String) ### Read-Only diff --git a/docs/resources/ec2_vpc_endpoint.md b/docs/resources/ec2_vpc_endpoint.md index 0f92be371e..fa5b728b26 100644 --- a/docs/resources/ec2_vpc_endpoint.md +++ b/docs/resources/ec2_vpc_endpoint.md @@ -129,7 +129,8 @@ resource "awscc_ec2_vpc_endpoint" "example" { ### Optional - `policy_document` (String) An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints. - For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. CFNlong converts YAML policies to JSON format before calling the API to create or modify the VPC endpoint. + For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section: + ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ "Version":"2012-10-17", "Statement": [{ "Effect":"Allow", "Principal":"*", "Action":["logs:Describe*","logs:Get*","logs:List*","logs:FilterLogEvents"], "Resource":"*" }] }'`` - `private_dns_enabled` (Boolean) Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service. To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``. This property is supported only for interface endpoints. diff --git a/docs/resources/ec2_vpn_connection.md b/docs/resources/ec2_vpn_connection.md index 61f57ef461..3c6f56447a 100644 --- a/docs/resources/ec2_vpn_connection.md +++ b/docs/resources/ec2_vpn_connection.md @@ -131,25 +131,48 @@ Optional: Optional: -- `dpd_timeout_action` (String) -- `dpd_timeout_seconds` (Number) -- `enable_tunnel_lifecycle_control` (Boolean) -- `ike_versions` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--ike_versions)) -- `log_options` (Attributes) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options)) -- `phase_1_dh_group_numbers` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_dh_group_numbers)) -- `phase_1_encryption_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_encryption_algorithms)) -- `phase_1_integrity_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_integrity_algorithms)) -- `phase_1_lifetime_seconds` (Number) -- `phase_2_dh_group_numbers` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_dh_group_numbers)) -- `phase_2_encryption_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_encryption_algorithms)) -- `phase_2_integrity_algorithms` (Attributes List) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_integrity_algorithms)) -- `phase_2_lifetime_seconds` (Number) +- `dpd_timeout_action` (String) The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session. + Valid Values: ``clear`` | ``none`` | ``restart`` + Default: ``clear`` +- `dpd_timeout_seconds` (Number) The number of seconds after which a DPD timeout occurs. + Constraints: A value greater than or equal to 30. + Default: ``30`` +- `enable_tunnel_lifecycle_control` (Boolean) Turn on or off tunnel endpoint lifecycle control feature. +- `ike_versions` (Attributes List) The IKE versions that are permitted for the VPN tunnel. + Valid values: ``ikev1`` | ``ikev2`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--ike_versions)) +- `log_options` (Attributes) Options for logging VPN tunnel activity. (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options)) +- `phase_1_dh_group_numbers` (Attributes List) One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_dh_group_numbers)) +- `phase_1_encryption_algorithms` (Attributes List) One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_encryption_algorithms)) +- `phase_1_integrity_algorithms` (Attributes List) One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations. + Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_1_integrity_algorithms)) +- `phase_1_lifetime_seconds` (Number) The lifetime for phase 1 of the IKE negotiation, in seconds. + Constraints: A value between 900 and 28,800. + Default: ``28800`` +- `phase_2_dh_group_numbers` (Attributes List) One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_dh_group_numbers)) +- `phase_2_encryption_algorithms` (Attributes List) One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_encryption_algorithms)) +- `phase_2_integrity_algorithms` (Attributes List) One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations. + Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512`` (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--phase_2_integrity_algorithms)) +- `phase_2_lifetime_seconds` (Number) The lifetime for phase 2 of the IKE negotiation, in seconds. + Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``. + Default: ``3600`` - `pre_shared_key` (String) The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway. Constraints: Allowed characters are alphanumeric characters, periods (.), and underscores (_). Must be between 8 and 64 characters in length and cannot start with zero (0). -- `rekey_fuzz_percentage` (Number) -- `rekey_margin_time_seconds` (Number) -- `replay_window_size` (Number) -- `startup_action` (String) +- `rekey_fuzz_percentage` (Number) The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected. + Constraints: A value between 0 and 100. + Default: ``100`` +- `rekey_margin_time_seconds` (Number) The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``. + Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``. + Default: ``270`` +- `replay_window_size` (Number) The number of packets in an IKE replay window. + Constraints: A value between 64 and 2048. + Default: ``1024`` +- `startup_action` (String) The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation. + Valid Values: ``add`` | ``start`` + Default: ``add`` - `tunnel_inside_cidr` (String) The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. Constraints: A size /30 CIDR block from the ``169.254.0.0/16`` range. The following CIDR blocks are reserved and cannot be used: + ``169.254.0.0/30`` @@ -159,14 +182,15 @@ Optional: + ``169.254.4.0/30`` + ``169.254.5.0/30`` + ``169.254.169.252/30`` -- `tunnel_inside_ipv_6_cidr` (String) +- `tunnel_inside_ipv_6_cidr` (String) The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway. + Constraints: A size /126 CIDR block from the local ``fd00::/8`` range. ### Nested Schema for `vpn_tunnel_options_specifications.ike_versions` Optional: -- `value` (String) +- `value` (String) The IKE version. @@ -174,16 +198,18 @@ Optional: Optional: -- `cloudwatch_log_options` (Attributes) (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options--cloudwatch_log_options)) +- `cloudwatch_log_options` (Attributes) Options for sending VPN tunnel logs to CloudWatch. (see [below for nested schema](#nestedatt--vpn_tunnel_options_specifications--log_options--cloudwatch_log_options)) ### Nested Schema for `vpn_tunnel_options_specifications.log_options.cloudwatch_log_options` Optional: -- `log_enabled` (Boolean) -- `log_group_arn` (String) -- `log_output_format` (String) +- `log_enabled` (Boolean) Enable or disable VPN tunnel logging feature. Default value is ``False``. + Valid values: ``True`` | ``False`` +- `log_group_arn` (String) The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to. +- `log_output_format` (String) Set log format. Default format is ``json``. + Valid values: ``json`` | ``text`` @@ -192,7 +218,7 @@ Optional: Optional: -- `value` (Number) +- `value` (Number) The Diffie-Hellmann group number. @@ -200,7 +226,7 @@ Optional: Optional: -- `value` (String) +- `value` (String) The value for the encryption algorithm. @@ -208,7 +234,7 @@ Optional: Optional: -- `value` (String) +- `value` (String) The value for the integrity algorithm. @@ -216,7 +242,7 @@ Optional: Optional: -- `value` (Number) +- `value` (Number) The Diffie-Hellmann group number. @@ -224,7 +250,7 @@ Optional: Optional: -- `value` (String) +- `value` (String) The encryption algorithm. @@ -232,7 +258,7 @@ Optional: Optional: -- `value` (String) +- `value` (String) The integrity algorithm. ## Import diff --git a/docs/resources/ecs_capacity_provider.md b/docs/resources/ecs_capacity_provider.md index 999e4e4ade..f8c9dd95c3 100644 --- a/docs/resources/ecs_capacity_provider.md +++ b/docs/resources/ecs_capacity_provider.md @@ -15,12 +15,9 @@ Resource Type definition for AWS::ECS::CapacityProvider. ## Schema -### Required - -- `auto_scaling_group_provider` (Attributes) (see [below for nested schema](#nestedatt--auto_scaling_group_provider)) - ### Optional +- `auto_scaling_group_provider` (Attributes) (see [below for nested schema](#nestedatt--auto_scaling_group_provider)) - `name` (String) - `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) @@ -31,12 +28,9 @@ Resource Type definition for AWS::ECS::CapacityProvider. ### Nested Schema for `auto_scaling_group_provider` -Required: - -- `auto_scaling_group_arn` (String) - Optional: +- `auto_scaling_group_arn` (String) - `managed_draining` (String) - `managed_scaling` (Attributes) The managed scaling settings for the Auto Scaling group capacity provider. (see [below for nested schema](#nestedatt--auto_scaling_group_provider--managed_scaling)) - `managed_termination_protection` (String) diff --git a/docs/resources/ecs_service.md b/docs/resources/ecs_service.md index ba0edb84ee..4b91247f16 100644 --- a/docs/resources/ecs_service.md +++ b/docs/resources/ecs_service.md @@ -283,7 +283,16 @@ Optional: For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*. For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html). If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software. -- `options` (Map of String) The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` +- `options` (Map of String) The configuration options to send to the log driver. + The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: + + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. + To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``. + When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. + Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``. + When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``. + When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``. + When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options. + This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` - `secret_options` (Attributes List) The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*. (see [below for nested schema](#nestedatt--service_connect_configuration--log_configuration--secret_options)) diff --git a/docs/resources/elasticache_global_replication_group.md b/docs/resources/elasticache_global_replication_group.md index b8a9aa796e..cd1ddccc7c 100644 --- a/docs/resources/elasticache_global_replication_group.md +++ b/docs/resources/elasticache_global_replication_group.md @@ -24,6 +24,7 @@ The AWS::ElastiCache::GlobalReplicationGroup resource creates an Amazon ElastiCa - `automatic_failover_enabled` (Boolean) AutomaticFailoverEnabled - `cache_node_type` (String) The cache node type of the Global Datastore - `cache_parameter_group_name` (String) Cache parameter group name to use for the new engine version. This parameter cannot be modified independently. +- `engine` (String) The engine of the Global Datastore. - `engine_version` (String) The engine version of the Global Datastore. - `global_node_group_count` (Number) Indicates the number of node groups in the Global Datastore. - `global_replication_group_description` (String) The optional description of the Global Datastore diff --git a/docs/resources/imagebuilder_infrastructure_configuration.md b/docs/resources/imagebuilder_infrastructure_configuration.md index e9f600448f..e5c7d8af37 100644 --- a/docs/resources/imagebuilder_infrastructure_configuration.md +++ b/docs/resources/imagebuilder_infrastructure_configuration.md @@ -27,6 +27,7 @@ Resource schema for AWS::ImageBuilder::InfrastructureConfiguration - `instance_types` (List of String) The instance types of the infrastructure configuration. - `key_pair` (String) The EC2 key pair of the infrastructure configuration.. - `logging` (Attributes) The logging configuration of the infrastructure configuration. (see [below for nested schema](#nestedatt--logging)) +- `placement` (Attributes) The placement option settings for the infrastructure configuration. (see [below for nested schema](#nestedatt--placement)) - `resource_tags` (Map of String) The tags attached to the resource created by Image Builder. - `security_group_ids` (List of String) The security group IDs of the infrastructure configuration. - `sns_topic_arn` (String) The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration. @@ -63,6 +64,18 @@ Optional: - `s3_bucket_name` (String) S3BucketName - `s3_key_prefix` (String) S3KeyPrefix + + + +### Nested Schema for `placement` + +Optional: + +- `availability_zone` (String) AvailabilityZone +- `host_id` (String) HostId +- `host_resource_group_arn` (String) HostResourceGroupArn +- `tenancy` (String) Tenancy + ## Import Import is supported using the following syntax: diff --git a/docs/resources/ivs_encoder_configuration.md b/docs/resources/ivs_encoder_configuration.md index 22aea243c7..7e187c6cd7 100644 --- a/docs/resources/ivs_encoder_configuration.md +++ b/docs/resources/ivs_encoder_configuration.md @@ -42,8 +42,8 @@ Optional: - `bitrate` (Number) Bitrate for generated output, in bps. Default: 2500000. - `framerate` (Number) Video frame rate, in fps. Default: 30. -- `height` (Number) Video-resolution height. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720. -- `width` (Number) Video-resolution width. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280. +- `height` (Number) Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720. +- `width` (Number) Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280. ## Import diff --git a/docs/resources/memorydb_cluster.md b/docs/resources/memorydb_cluster.md index 5de0ed9d4c..b326e89134 100644 --- a/docs/resources/memorydb_cluster.md +++ b/docs/resources/memorydb_cluster.md @@ -29,6 +29,7 @@ You cannot modify the value of AutoMinorVersionUpgrade after the cluster is crea - `cluster_endpoint` (Attributes) The cluster endpoint. (see [below for nested schema](#nestedatt--cluster_endpoint)) - `data_tiering` (String) Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes. - `description` (String) An optional description of the cluster. +- `engine` (String) The engine type used by the cluster. - `engine_version` (String) The Redis engine version used by the cluster. - `final_snapshot_name` (String) The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward. - `kms_key_id` (String) The ID of the KMS key used to encrypt the cluster. diff --git a/docs/resources/redshift_integration.md b/docs/resources/redshift_integration.md new file mode 100644 index 0000000000..712ead09c4 --- /dev/null +++ b/docs/resources/redshift_integration.md @@ -0,0 +1,50 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_redshift_integration Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Integration from a source AWS service to a Redshift cluster +--- + +# awscc_redshift_integration (Resource) + +Integration from a source AWS service to a Redshift cluster + + + + +## Schema + +### Required + +- `source_arn` (String) The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable +- `target_arn` (String) The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf + +### Optional + +- `additional_encryption_context` (Map of String) An optional set of non-secret key?value pairs that contains additional contextual information about the data. +- `integration_name` (String) The name of the integration. +- `kms_key_id` (String) An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used. +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `create_time` (String) The time (UTC) when the integration was created. +- `id` (String) Uniquely identifies the resource. +- `integration_arn` (String) The Amazon Resource Name (ARN) of the integration. + + +### 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_redshift_integration.example "integration_arn" +``` diff --git a/docs/resources/refactorspaces_environment.md b/docs/resources/refactorspaces_environment.md index 94ded0bd3e..18b9269e79 100644 --- a/docs/resources/refactorspaces_environment.md +++ b/docs/resources/refactorspaces_environment.md @@ -15,14 +15,11 @@ Definition of AWS::RefactorSpaces::Environment Resource Type ## Schema -### Required - -- `name` (String) -- `network_fabric_type` (String) - ### Optional - `description` (String) +- `name` (String) +- `network_fabric_type` (String) - `tags` (Attributes List) Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair. (see [below for nested schema](#nestedatt--tags)) ### Read-Only diff --git a/docs/resources/route53_record_set.md b/docs/resources/route53_record_set.md new file mode 100644 index 0000000000..77b54e1c16 --- /dev/null +++ b/docs/resources/route53_record_set.md @@ -0,0 +1,78 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_route53_record_set Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Route53::RecordSet. +--- + +# awscc_route53_record_set (Resource) + +Resource Type definition for AWS::Route53::RecordSet. + + + + +## Schema + +### Required + +- `name` (String) The name of the record that you want to create, update, or delete. +- `type` (String) The DNS record type. + +### Optional + +- `alias_target` (Attributes) Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. (see [below for nested schema](#nestedatt--alias_target)) +- `cidr_routing_config` (Attributes) The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. (see [below for nested schema](#nestedatt--cidr_routing_config)) +- `comment` (String) Optional: Any comments you want to include about a change batch request. +- `failover` (String) To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set. +- `geo_location` (Attributes) A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. (see [below for nested schema](#nestedatt--geo_location)) +- `health_check_id` (String) If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check. +- `hosted_zone_id` (String) The ID of the hosted zone that you want to create records in. +- `hosted_zone_name` (String) The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, www.example.com.) as part of the HostedZoneName. +- `multi_value_answer` (Boolean) To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. +- `region` (String) The Amazon EC2 Region where you created the resource that this resource record set refers to. +- `resource_records` (List of String) One or more values that correspond with the value that you specified for the Type property. +- `set_identifier` (String) An identifier that differentiates among multiple resource record sets that have the same combination of name and type. +- `ttl` (String) The resource record cache time to live (TTL), in seconds. +- `weight` (Number) Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total. + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `alias_target` + +Optional: + +- `dns_name` (String) The value that you specify depends on where you want to route queries. +- `evaluate_target_health` (Boolean) When EvaluateTargetHealth is true, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone. +- `hosted_zone_id` (String) The value used depends on where you want to route traffic. + + + +### Nested Schema for `cidr_routing_config` + +Optional: + +- `collection_id` (String) The CIDR collection ID. +- `location_name` (String) The CIDR collection location name. + + + +### Nested Schema for `geo_location` + +Optional: + +- `continent_code` (String) For geolocation resource record sets, a two-letter abbreviation that identifies a continent. +- `country_code` (String) For geolocation resource record sets, the two-letter code for a country. +- `subdivision_code` (String) For geolocation resource record sets, the two-letter code for a state of the United States. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_route53_record_set.example "name|hosted_zone_id|type|set_identifier" +``` diff --git a/docs/resources/s3_bucket.md b/docs/resources/s3_bucket.md index 35d9625ef7..c8b3351cb2 100644 --- a/docs/resources/s3_bucket.md +++ b/docs/resources/s3_bucket.md @@ -474,16 +474,22 @@ Optional: Optional: -- `kms_master_key_id` (String) AWS Key Management Service (KMS) customer AWS KMS key ID to use for the default encryption. This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``. - You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key. +- `kms_master_key_id` (String) AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. + + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``. + + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``. + + You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key. + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` + Key Alias: ``alias/alias-name`` - If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. - If you are using encryption with cross-account or AWS service operations you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy). - Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*. + If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy). + + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester?s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. + + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported. + + Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*. - `sse_algorithm` (String) Server-side encryption algorithm to use for the default encryption. + For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``. diff --git a/docs/resources/sagemaker_domain.md b/docs/resources/sagemaker_domain.md index 9ce9be8fb9..b45472dd28 100644 --- a/docs/resources/sagemaker_domain.md +++ b/docs/resources/sagemaker_domain.md @@ -140,6 +140,7 @@ resource "awscc_sagemaker_app_image_config" "example" { - `default_space_settings` (Attributes) The default space settings. (see [below for nested schema](#nestedatt--default_space_settings)) - `domain_settings` (Attributes) A collection of Domain settings. (see [below for nested schema](#nestedatt--domain_settings)) - `kms_key_id` (String) SageMaker uses AWS KMS to encrypt the EFS volume attached to the domain with an AWS managed customer master key (CMK) by default. +- `tag_propagation` (String) Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources. - `tags` (Attributes List) A list of tags to apply to the user profile. (see [below for nested schema](#nestedatt--tags)) ### Read-Only @@ -616,6 +617,7 @@ Optional: Optional: - `docker_settings` (Attributes) A collection of settings that are required to start docker-proxy server. (see [below for nested schema](#nestedatt--domain_settings--docker_settings)) +- `execution_role_identity_config` (String) The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key. - `r_studio_server_pro_domain_settings` (Attributes) A collection of settings that update the current configuration for the RStudioServerPro Domain-level app. (see [below for nested schema](#nestedatt--domain_settings--r_studio_server_pro_domain_settings)) - `security_group_ids` (List of String) The security groups for the Amazon Virtual Private Cloud that the Domain uses for communication between Domain-level apps and user apps. diff --git a/docs/resources/sagemaker_endpoint.md b/docs/resources/sagemaker_endpoint.md new file mode 100644 index 0000000000..bf1f82b486 --- /dev/null +++ b/docs/resources/sagemaker_endpoint.md @@ -0,0 +1,152 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_sagemaker_endpoint Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::SageMaker::Endpoint +--- + +# awscc_sagemaker_endpoint (Resource) + +Resource Type definition for AWS::SageMaker::Endpoint + + + + +## Schema + +### Required + +- `endpoint_config_name` (String) The name of the endpoint configuration for the SageMaker endpoint. This is a required property. + +### Optional + +- `deployment_config` (Attributes) Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies. (see [below for nested schema](#nestedatt--deployment_config)) +- `exclude_retained_variant_properties` (Attributes List) Specifies a list of variant properties that you want to exclude when updating an endpoint. (see [below for nested schema](#nestedatt--exclude_retained_variant_properties)) +- `retain_all_variant_properties` (Boolean) When set to true, retains all variant properties for an endpoint when it is updated. +- `retain_deployment_config` (Boolean) When set to true, retains the deployment configuration during endpoint updates. +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `endpoint_arn` (String) The Amazon Resource Name (ARN) of the endpoint. +- `endpoint_name` (String) The name of the SageMaker endpoint. This name must be unique within an AWS Region. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `deployment_config` + +Optional: + +- `auto_rollback_configuration` (Attributes) Configuration for automatic rollback if an error occurs during deployment. (see [below for nested schema](#nestedatt--deployment_config--auto_rollback_configuration)) +- `blue_green_update_policy` (Attributes) Configuration for blue-green update deployment policies. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy)) +- `rolling_update_policy` (Attributes) Configuration for rolling update deployment policies. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy)) + + +### Nested Schema for `deployment_config.auto_rollback_configuration` + +Optional: + +- `alarms` (Attributes List) List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back. (see [below for nested schema](#nestedatt--deployment_config--auto_rollback_configuration--alarms)) + + +### Nested Schema for `deployment_config.auto_rollback_configuration.alarms` + +Optional: + +- `alarm_name` (String) The name of the CloudWatch alarm. + + + + +### Nested Schema for `deployment_config.blue_green_update_policy` + +Optional: + +- `maximum_execution_timeout_in_seconds` (Number) The maximum time allowed for the blue/green update, in seconds. +- `termination_wait_in_seconds` (Number) The wait time before terminating the old endpoint during a blue/green deployment. +- `traffic_routing_configuration` (Attributes) The traffic routing configuration for the blue/green deployment. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration)) + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration` + +Optional: + +- `canary_size` (Attributes) Specifies the size of the canary traffic in a canary deployment. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration--canary_size)) +- `linear_step_size` (Attributes) Specifies the step size for linear traffic routing. (see [below for nested schema](#nestedatt--deployment_config--blue_green_update_policy--traffic_routing_configuration--linear_step_size)) +- `type` (String) Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear'). +- `wait_interval_in_seconds` (Number) Specifies the wait interval between traffic shifts, in seconds. + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration.canary_size` + +Optional: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + +### Nested Schema for `deployment_config.blue_green_update_policy.traffic_routing_configuration.linear_step_size` + +Optional: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + + + +### Nested Schema for `deployment_config.rolling_update_policy` + +Optional: + +- `maximum_batch_size` (Attributes) Specifies the maximum batch size for each rolling update. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy--maximum_batch_size)) +- `maximum_execution_timeout_in_seconds` (Number) The maximum time allowed for the rolling update, in seconds. +- `rollback_maximum_batch_size` (Attributes) The maximum batch size for rollback during an update failure. (see [below for nested schema](#nestedatt--deployment_config--rolling_update_policy--rollback_maximum_batch_size)) +- `wait_interval_in_seconds` (Number) The time to wait between steps during the rolling update, in seconds. + + +### Nested Schema for `deployment_config.rolling_update_policy.maximum_batch_size` + +Optional: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + +### Nested Schema for `deployment_config.rolling_update_policy.rollback_maximum_batch_size` + +Optional: + +- `type` (String) Specifies whether the `Value` is an instance count or a capacity unit. +- `value` (Number) The value representing either the number of instances or the number of capacity units. + + + + + +### Nested Schema for `exclude_retained_variant_properties` + +Optional: + +- `variant_property_type` (String) The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig'). + + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key of the tag. +- `value` (String) The value of the tag. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_sagemaker_endpoint.example "endpoint_arn" +``` diff --git a/examples/resources/awscc_appsync_graph_ql_api/import.sh b/examples/resources/awscc_appsync_graph_ql_api/import.sh new file mode 100644 index 0000000000..d060c16455 --- /dev/null +++ b/examples/resources/awscc_appsync_graph_ql_api/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_appsync_graph_ql_api.example "api_id" \ No newline at end of file diff --git a/examples/resources/awscc_backup_logically_air_gapped_backup_vault/import.sh b/examples/resources/awscc_backup_logically_air_gapped_backup_vault/import.sh new file mode 100644 index 0000000000..3bc3224b0a --- /dev/null +++ b/examples/resources/awscc_backup_logically_air_gapped_backup_vault/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_backup_logically_air_gapped_backup_vault.example "backup_vault_name" \ No newline at end of file diff --git a/examples/resources/awscc_cognito_user_pool_identity_provider/import.sh b/examples/resources/awscc_cognito_user_pool_identity_provider/import.sh new file mode 100644 index 0000000000..fbb2fd8860 --- /dev/null +++ b/examples/resources/awscc_cognito_user_pool_identity_provider/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_cognito_user_pool_identity_provider.example "user_pool_id|provider_name" \ No newline at end of file diff --git a/examples/resources/awscc_redshift_integration/import.sh b/examples/resources/awscc_redshift_integration/import.sh new file mode 100644 index 0000000000..50864b8b26 --- /dev/null +++ b/examples/resources/awscc_redshift_integration/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_redshift_integration.example "integration_arn" \ No newline at end of file diff --git a/examples/resources/awscc_route53_record_set/import.sh b/examples/resources/awscc_route53_record_set/import.sh new file mode 100644 index 0000000000..c57a4dd04b --- /dev/null +++ b/examples/resources/awscc_route53_record_set/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_route53_record_set.example "name|hosted_zone_id|type|set_identifier" \ No newline at end of file diff --git a/examples/resources/awscc_sagemaker_endpoint/import.sh b/examples/resources/awscc_sagemaker_endpoint/import.sh new file mode 100644 index 0000000000..b1dab656de --- /dev/null +++ b/examples/resources/awscc_sagemaker_endpoint/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_sagemaker_endpoint.example "endpoint_arn" \ No newline at end of file From 90f31e1d23ef49850ef318c73170e8aa5bc8b9ac Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 24 Oct 2024 23:07:08 -0400 Subject: [PATCH 6/6] chore: changelog --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed1748830c..e313f35aab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,25 @@ FEATURES: +* **New Data Source:** `awscc_appsync_graph_ql_api` +* **New Data Source:** `awscc_appsync_graph_ql_apis` +* **New Data Source:** `awscc_backup_logically_air_gapped_backup_vault` +* **New Data Source:** `awscc_backup_logically_air_gapped_backup_vaults` +* **New Data Source:** `awscc_cognito_user_pool_identity_provider` * **New Data Source:** `awscc_controltower_landing_zone` * **New Data Source:** `awscc_controltower_landing_zones` +* **New Data Source:** `awscc_redshift_integration` +* **New Data Source:** `awscc_redshift_integrations` +* **New Data Source:** `awscc_route53_record_set` +* **New Data Source:** `awscc_sagemaker_endpoint` +* **New Data Source:** `awscc_sagemaker_endpoints` +* **New Resource:** `awscc_appsync_graph_ql_api` +* **New Resource:** `awscc_backup_logically_air_gapped_backup_vault` +* **New Resource:** `awscc_cognito_user_pool_identity_provider` * **New Resource:** `awscc_controltower_landing_zone` +* **New Resource:** `awscc_redshift_integration` +* **New Resource:** `awscc_route53_record_set` +* **New Resource:** `awscc_sagemaker_endpoint` ## 1.17.0 (October 17, 2024)