From 2a01b08a4c4dac9712a0560e579b614c7388ea0d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 12:53:40 -0400 Subject: [PATCH 1/6] 08/09/2023 CloudFormation schemas in us-east-1; Refresh existing schemas. --- .../AWS_AmplifyUIBuilder_Component.json | 13 +- .../schemas/AWS_AmplifyUIBuilder_Form.json | 13 +- .../schemas/AWS_AmplifyUIBuilder_Theme.json | 21 ++- .../schemas/AWS_ApiGateway_Authorizer.json | 6 +- .../schemas/AWS_ApiGateway_Method.json | 6 +- .../schemas/AWS_ApiGateway_Stage.json | 3 +- .../schemas/AWS_Athena_WorkGroup.json | 25 +++- .../AWS_AutoScaling_LaunchConfiguration.json | 3 +- .../AWS_AutoScaling_ScalingPolicy.json | 6 +- .../AWS_BillingConductor_BillingGroup.json | 6 +- ...AWS_CloudFormation_HookDefaultVersion.json | 10 +- .../AWS_CloudFormation_HookTypeConfig.json | 6 + .../AWS_CloudFormation_HookVersion.json | 9 +- .../AWS_CloudFormation_PublicTypeVersion.json | 3 + .../schemas/AWS_CloudFormation_Publisher.json | 3 + .../AWS_CloudFormation_ResourceVersion.json | 5 +- .../AWS_CloudFormation_TypeActivation.json | 12 +- .../schemas/AWS_CustomerProfiles_Domain.json | 21 ++- .../AWS_CustomerProfiles_ObjectType.json | 20 ++- .../schemas/AWS_EC2_CapacityReservation.json | 14 +- .../AWS_EC2_CapacityReservationFleet.json | 35 ++++- .../schemas/AWS_EC2_InternetGateway.json | 9 +- .../schemas/AWS_EC2_NetworkInterface.json | 55 ++++++- .../schemas/AWS_EC2_SpotFleet.json | 9 +- .../schemas/AWS_ECR_RegistryPolicy.json | 2 + .../schemas/AWS_ECR_Repository.json | 2 + .../schemas/AWS_EFS_AccessPoint.json | 7 + .../schemas/AWS_EFS_FileSystem.json | 7 + .../schemas/AWS_EFS_MountTarget.json | 3 + .../schemas/AWS_IAM_ManagedPolicy.json | 136 +++--------------- .../AWS_IVS_RecordingConfiguration.json | 90 ++++++++++-- .../schemas/AWS_IdentityStore_Group.json | 13 +- .../AWS_IdentityStore_GroupMembership.json | 17 ++- .../schemas/AWS_InternetMonitor_Monitor.json | 29 ++++ ..._IoTCoreDeviceAdvisor_SuiteDefinition.json | 26 +++- .../schemas/AWS_IoTFleetWise_Campaign.json | 9 +- .../AWS_IoTFleetWise_DecoderManifest.json | 7 +- .../schemas/AWS_IoTFleetWise_Fleet.json | 6 +- .../AWS_IoTFleetWise_ModelManifest.json | 6 +- .../AWS_IoTFleetWise_SignalCatalog.json | 6 +- .../schemas/AWS_IoTFleetWise_Vehicle.json | 6 +- .../cloudformation/schemas/AWS_KMS_Key.json | 14 +- .../schemas/AWS_Kendra_DataSource.json | 23 ++- .../schemas/AWS_Lambda_Permission.json | 3 + .../schemas/AWS_MSK_ServerlessCluster.json | 2 + .../schemas/AWS_Neptune_DBCluster.json | 29 ++-- .../schemas/AWS_NetworkFirewall_Firewall.json | 11 +- .../AWS_NetworkFirewall_FirewallPolicy.json | 9 +- ..._NetworkFirewall_LoggingConfiguration.json | 12 +- .../AWS_NetworkFirewall_RuleGroup.json | 12 +- .../schemas/AWS_Omics_AnnotationStore.json | 15 +- .../schemas/AWS_Omics_RunGroup.json | 10 +- .../schemas/AWS_Omics_VariantStore.json | 15 +- .../schemas/AWS_Omics_Workflow.json | 23 ++- .../AWS_OpenSearchServerless_Collection.json | 3 +- ...S_Proton_EnvironmentAccountConnection.json | 18 ++- .../AWS_Proton_EnvironmentTemplate.json | 15 +- .../schemas/AWS_Proton_ServiceTemplate.json | 15 +- .../schemas/AWS_RolesAnywhere_CRL.json | 4 +- .../schemas/AWS_RolesAnywhere_Profile.json | 1 + .../AWS_RolesAnywhere_TrustAnchor.json | 1 + .../schemas/AWS_Route53_DNSSEC.json | 2 + .../schemas/AWS_Route53_KeySigningKey.json | 1 + .../schemas/AWS_SSMContacts_Contact.json | 12 +- .../AWS_SSMContacts_ContactChannel.json | 9 +- .../schemas/AWS_SSMContacts_Plan.json | 12 +- .../schemas/AWS_SSMContacts_Rotation.json | 4 + .../schemas/AWS_SSO_Assignment.json | 25 +++- ...ceAccessControlAttributeConfiguration.json | 6 +- .../schemas/AWS_SSO_PermissionSet.json | 15 +- ...WS_SageMaker_DataQualityJobDefinition.json | 13 +- .../schemas/AWS_SageMaker_FeatureGroup.json | 12 +- .../AWS_SageMaker_ModelBiasJobDefinition.json | 15 +- ...aker_ModelExplainabilityJobDefinition.json | 15 +- ...S_SageMaker_ModelQualityJobDefinition.json | 13 +- .../AWS_SecurityHub_AutomationRule.json | 8 +- .../schemas/AWS_Transfer_Agreement.json | 11 ++ .../schemas/AWS_Transfer_Connector.json | 40 +++++- .../schemas/AWS_WAFv2_WebACL.json | 77 ++++++++++ 79 files changed, 931 insertions(+), 279 deletions(-) diff --git a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Component.json b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Component.json index b5fb18be5f..99a2f5ff75 100644 --- a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Component.json +++ b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Component.json @@ -507,7 +507,9 @@ "create": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:CreateComponent" + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:CreateComponent", + "amplifyuibuilder:TagResource" ] }, "read": { @@ -519,18 +521,23 @@ "update": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:UpdateComponent" + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:UpdateComponent", + "amplifyuibuilder:TagResource" ] }, "delete": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:DeleteComponent" + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:DeleteComponent", + "amplifyuibuilder:UntagResource" ] }, "list": { "permissions": [ "amplify:GetApp", + "amplifyuibuilder:GetComponent", "amplifyuibuilder:ListComponents" ], "handlerSchema": { diff --git a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Form.json b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Form.json index 43a877effb..7dfccc1716 100644 --- a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Form.json +++ b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Form.json @@ -486,7 +486,9 @@ "create": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:CreateForm" + "amplifyuibuilder:GetForm", + "amplifyuibuilder:CreateForm", + "amplifyuibuilder:TagResource" ] }, "read": { @@ -498,18 +500,23 @@ "update": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:UpdateForm" + "amplifyuibuilder:GetForm", + "amplifyuibuilder:UpdateForm", + "amplifyuibuilder:TagResource" ] }, "delete": { "permissions": [ "amplify:GetApp", - "amplifyuibuilder:DeleteForm" + "amplifyuibuilder:GetForm", + "amplifyuibuilder:DeleteForm", + "amplifyuibuilder:UntagResource" ] }, "list": { "permissions": [ "amplify:GetApp", + "amplifyuibuilder:GetForm", "amplifyuibuilder:ListForms" ], "handlerSchema": { diff --git a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Theme.json b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Theme.json index 2bd0a47b71..91ce77a6cc 100644 --- a/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Theme.json +++ b/internal/service/cloudformation/schemas/AWS_AmplifyUIBuilder_Theme.json @@ -94,32 +94,39 @@ "handlers": { "create": { "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetTheme", "amplifyuibuilder:CreateTheme", - "amplify:GetApp" + "amplifyuibuilder:TagResource" ] }, "read": { "permissions": [ - "amplifyuibuilder:GetTheme", - "amplify:GetApp" + "amplify:GetApp", + "amplifyuibuilder:GetTheme" ] }, "update": { "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetTheme", "amplifyuibuilder:UpdateTheme", - "amplify:GetApp" + "amplifyuibuilder:TagResource" ] }, "delete": { "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetTheme", "amplifyuibuilder:DeleteTheme", - "amplify:GetApp" + "amplifyuibuilder:UntagResource" ] }, "list": { "permissions": [ - "amplifyuibuilder:ListThemes", - "amplify:GetApp" + "amplify:GetApp", + "amplifyuibuilder:GetTheme", + "amplifyuibuilder:ListThemes" ], "handlerSchema": { "properties": { diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_Authorizer.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_Authorizer.json index baeec9b2c2..2674c51551 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_Authorizer.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_Authorizer.json @@ -77,7 +77,8 @@ "handlers": { "create": { "permissions": [ - "apigateway:POST" + "apigateway:POST", + "iam:PassRole" ] }, "read": { @@ -88,7 +89,8 @@ "update": { "permissions": [ "apigateway:GET", - "apigateway:PATCH" + "apigateway:PATCH", + "iam:PassRole" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_Method.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_Method.json index 659575400a..3e60459c00 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_Method.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_Method.json @@ -294,7 +294,8 @@ "create": { "permissions": [ "apigateway:PUT", - "apigateway:GET" + "apigateway:GET", + "iam:PassRole" ] }, "read": { @@ -306,7 +307,8 @@ "permissions": [ "apigateway:GET", "apigateway:DELETE", - "apigateway:PUT" + "apigateway:PUT", + "iam:PassRole" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_ApiGateway_Stage.json b/internal/service/cloudformation/schemas/AWS_ApiGateway_Stage.json index b14e24e719..dde03a23c2 100644 --- a/internal/service/cloudformation/schemas/AWS_ApiGateway_Stage.json +++ b/internal/service/cloudformation/schemas/AWS_ApiGateway_Stage.json @@ -220,7 +220,8 @@ "permissions": [ "apigateway:POST", "apigateway:PATCH", - "apigateway:GET" + "apigateway:GET", + "apigateway:PUT" ] }, "read": { diff --git a/internal/service/cloudformation/schemas/AWS_Athena_WorkGroup.json b/internal/service/cloudformation/schemas/AWS_Athena_WorkGroup.json index d9b21df22a..92192e9ad5 100644 --- a/internal/service/cloudformation/schemas/AWS_Athena_WorkGroup.json +++ b/internal/service/cloudformation/schemas/AWS_Athena_WorkGroup.json @@ -339,7 +339,17 @@ "create": { "permissions": [ "athena:CreateWorkGroup", - "athena:TagResource" + "athena:TagResource", + "iam:PassRole", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:AbortMultipartUpload", + "s3:PutObject", + "s3:ListMultipartUploadParts", + "kms:Decrypt", + "kms:GenerateDataKey" ] }, "read": { @@ -356,6 +366,7 @@ "delete": { "permissions": [ "athena:DeleteWorkGroup", + "athena:GetWorkGroup", "athena:UntagResource" ] }, @@ -363,7 +374,17 @@ "permissions": [ "athena:UpdateWorkGroup", "athena:TagResource", - "athena:UntagResource" + "athena:UntagResource", + "iam:PassRole", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:AbortMultipartUpload", + "s3:PutObject", + "s3:ListMultipartUploadParts", + "kms:Decrypt", + "kms:GenerateDataKey" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_LaunchConfiguration.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_LaunchConfiguration.json index 4ec49c4b36..9adfc4b848 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_LaunchConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_LaunchConfiguration.json @@ -217,7 +217,8 @@ "create": { "permissions": [ "autoscaling:CreateLaunchConfiguration", - "autoscaling:DescribeLaunchConfigurations" + "autoscaling:DescribeLaunchConfigurations", + "iam:PassRole" ] }, "read": { diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json index 0e60fdeec7..5f6226a0fa 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json @@ -410,7 +410,8 @@ "create": { "permissions": [ "autoscaling:DescribePolicies", - "autoscaling:PutScalingPolicy" + "autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" ] }, "read": { @@ -421,7 +422,8 @@ "update": { "permissions": [ "autoscaling:DescribePolicies", - "autoscaling:PutScalingPolicy" + "autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_BillingConductor_BillingGroup.json b/internal/service/cloudformation/schemas/AWS_BillingConductor_BillingGroup.json index 2fd7cdb4bb..d370b56988 100644 --- a/internal/service/cloudformation/schemas/AWS_BillingConductor_BillingGroup.json +++ b/internal/service/cloudformation/schemas/AWS_BillingConductor_BillingGroup.json @@ -37,6 +37,9 @@ "pattern": "[0-9]{12}" }, "minItems": 1 + }, + "AutoAssociate": { + "type": "boolean" } }, "required": [ @@ -188,7 +191,8 @@ "permissions": [ "billingconductor:DeleteBillingGroup", "billingconductor:ListBillingGroups", - "billingconductor:UntagResource" + "billingconductor:UntagResource", + "billingconductor:UpdateBillingGroup" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookDefaultVersion.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookDefaultVersion.json index a256c1e1d6..f46ab71905 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookDefaultVersion.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookDefaultVersion.json @@ -43,6 +43,12 @@ "primaryIdentifier": [ "/properties/Arn" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "handlers": { "create": { "permissions": [ @@ -60,9 +66,7 @@ ] }, "delete": { - "permissions": [ - "" - ] + "permissions": [] }, "list": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookTypeConfig.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookTypeConfig.json index 389ff95118..dc365d6901 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookTypeConfig.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookTypeConfig.json @@ -56,6 +56,12 @@ "primaryIdentifier": [ "/properties/ConfigurationArn" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookVersion.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookVersion.json index 68d42205d1..04affe4603 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_HookVersion.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_HookVersion.json @@ -95,6 +95,12 @@ "primaryIdentifier": [ "/properties/Arn" ], + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "handlers": { "create": { "permissions": [ @@ -130,7 +136,8 @@ } }, "permissions": [ - "cloudformation:ListTypes" + "cloudformation:ListTypes", + "cloudformation:ListTypeVersions" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json index 644220f3c5..5edb8d9b01 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_PublicTypeVersion.json @@ -69,6 +69,9 @@ "/properties/TypeVersionArn", "/properties/PublisherId" ], + "writeOnlyProperties": [ + "/properties/Arn" + ], "createOnlyProperties": [ "/properties/LogDeliveryBucket", "/properties/PublicVersionNumber", diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_Publisher.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_Publisher.json index 4814d249fe..885aba236c 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_Publisher.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_Publisher.json @@ -56,6 +56,9 @@ "/properties/AcceptTermsAndConditions", "/properties/ConnectionArn" ], + "writeOnlyProperties": [ + "/properties/ConnectionArn" + ], "primaryIdentifier": [ "/properties/PublisherId" ], diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_ResourceVersion.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_ResourceVersion.json index 46ba5d540b..89bb91a216 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_ResourceVersion.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_ResourceVersion.json @@ -110,7 +110,10 @@ "iam:PassRole", "s3:GetObject", "s3:ListBucket", - "kms:Decrypt" + "kms:Decrypt", + "cloudformation:ListTypeVersions", + "cloudformation:DeregisterType", + "cloudformation:DescribeType" ], "timeoutInMinutes": 2160 }, diff --git a/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json b/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json index 91625ff9fb..893980a3d2 100644 --- a/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json +++ b/internal/service/cloudformation/schemas/AWS_CloudFormation_TypeActivation.json @@ -108,13 +108,15 @@ "/properties/Arn" ], "createOnlyProperties": [ + "/properties/LoggingConfig" + ], + "writeOnlyProperties": [ "/properties/ExecutionRoleArn", - "/properties/LoggingConfig", - "/properties/TypeNameAlias", - "/properties/TypeName", "/properties/Type", - "/properties/PublisherId", - "/properties/PublicTypeArn" + "/properties/LoggingConfig", + "/properties/VersionBump", + "/properties/AutoUpdate", + "/properties/MajorVersion" ], "primaryIdentifier": [ "/properties/Arn" diff --git a/internal/service/cloudformation/schemas/AWS_CustomerProfiles_Domain.json b/internal/service/cloudformation/schemas/AWS_CustomerProfiles_Domain.json index 9fb0cfcb15..b7ed6f58c7 100644 --- a/internal/service/cloudformation/schemas/AWS_CustomerProfiles_Domain.json +++ b/internal/service/cloudformation/schemas/AWS_CustomerProfiles_Domain.json @@ -73,6 +73,13 @@ "required": [ "DomainName" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "readOnlyProperties": [ "/properties/LastUpdatedAt", "/properties/CreatedAt" @@ -86,7 +93,8 @@ "handlers": { "create": { "permissions": [ - "profile:CreateDomain" + "profile:CreateDomain", + "profile:TagResource" ] }, "read": { @@ -96,6 +104,7 @@ }, "update": { "permissions": [ + "profile:GetDomain", "profile:UpdateDomain", "profile:UntagResource", "profile:TagResource" @@ -107,6 +116,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, "permissions": [ "profile:ListDomains" ] diff --git a/internal/service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json b/internal/service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json index cb380c130e..a8275f40cc 100644 --- a/internal/service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json +++ b/internal/service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json @@ -202,6 +202,13 @@ "required": [ "DomainName" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "createOnlyProperties": [ "/properties/DomainName", "/properties/ObjectTypeName" @@ -218,7 +225,8 @@ "create": { "permissions": [ "profile:GetProfileObjectType", - "profile:PutProfileObjectType" + "profile:PutProfileObjectType", + "profile:TagResource" ] }, "read": { @@ -240,6 +248,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, "permissions": [ "profile:ListProfileObjectTypes" ] diff --git a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json index 482c113954..1dfe2997af 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservation.json @@ -122,13 +122,17 @@ "create": { "permissions": [ "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations" + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:CreateTags" ] }, "delete": { "permissions": [ + "ec2:CreateCapacityReservation", "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation" + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" ] }, "list": { @@ -144,7 +148,11 @@ "update": { "permissions": [ "ec2:ModifyCapacityReservation", - "ec2:DescribeCapacityReservations" + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:CreateTags", + "ec2:DeleteTags" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservationFleet.json b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservationFleet.json index 79950e06d3..0a0323f39c 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservationFleet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_CapacityReservationFleet.json @@ -136,29 +136,54 @@ "create": { "permissions": [ "ec2:CreateCapacityReservationFleet", - "ec2:DescribeCapacityReservationFleets" + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:CreateTags" ] }, "delete": { "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", "ec2:DescribeCapacityReservationFleets", - "ec2:CancelCapacityReservationFleets" + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" ] }, "list": { "permissions": [ - "ec2:DescribeCapacityReservationFleets" + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeCapacityReservations", + "ec2:DescribeInstances" ] }, "read": { "permissions": [ - "ec2:DescribeCapacityReservationFleets" + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeInstances", + "ec2:DescribeCapacityReservations" ] }, "update": { "permissions": [ + "ec2:CreateCapacityReservationFleet", "ec2:ModifyCapacityReservationFleet", - "ec2:DescribeCapacityReservationFleets" + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:ModifyCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:DeleteTags" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json b/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json index 62fd843a46..e83fa6f5ca 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_InternetGateway.json @@ -50,7 +50,8 @@ "create": { "permissions": [ "ec2:CreateInternetGateway", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeInternetGateways" ] }, "read": { @@ -60,13 +61,15 @@ }, "delete": { "permissions": [ - "ec2:DeleteInternetGateway" + "ec2:DeleteInternetGateway", + "ec2:DescribeInternetGateways" ] }, "update": { "permissions": [ "ec2:DeleteTags", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:DescribeInternetGateways" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json index 6e5b4becd0..16695922dc 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterface.json @@ -20,8 +20,7 @@ "SubnetId" ], "conditionalCreateOnlyProperties": [ - "/properties/PrivateIpAddresses", - "/properties/EnablePrimaryIpv6" + "/properties/PrivateIpAddresses" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/networkinterface", "handlers": { @@ -80,6 +79,18 @@ "Primary" ] }, + "Ipv4PrefixSpecification": { + "additionalProperties": false, + "type": "object", + "properties": { + "Ipv4Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv4Prefix" + ] + }, "InstanceIpv6Address": { "additionalProperties": false, "type": "object", @@ -92,6 +103,18 @@ "Ipv6Address" ] }, + "Ipv6PrefixSpecification": { + "additionalProperties": false, + "type": "object", + "properties": { + "Ipv6Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv6Prefix" + ] + }, "Tag": { "additionalProperties": false, "type": "object", @@ -131,13 +154,26 @@ "description": "The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses", "type": "integer" }, + "Ipv6PrefixCount": { + "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "type": "integer" + }, "PrimaryPrivateIpAddress": { "description": "Returns the primary private IP address of the network interface.", "type": "string" }, - "EnablePrimaryIpv6": { - "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - "type": "boolean" + "Ipv4Prefixes": { + "uniqueItems": false, + "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/Ipv4PrefixSpecification" + } + }, + "Ipv4PrefixCount": { + "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "type": "integer" }, "GroupSet": { "uniqueItems": false, @@ -157,6 +193,15 @@ "$ref": "#/definitions/InstanceIpv6Address" } }, + "Ipv6Prefixes": { + "uniqueItems": false, + "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/Ipv6PrefixSpecification" + } + }, "SubnetId": { "description": "The ID of the subnet to associate with the network interface.", "type": "string" diff --git a/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json b/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json index 7c5979f4e1..cad09816c8 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_SpotFleet.json @@ -929,14 +929,21 @@ "readOnlyProperties": [ "/properties/Id" ], + "writeOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" + ], "primaryIdentifier": [ "/properties/Id" ], "handlers": { "create": { "permissions": [ + "iam:PassRole", + "ec2:CreateTags", "ec2:RequestSpotFleet", - "ec2:DescribeSpotFleetRequests" + "ec2:DescribeSpotFleetRequests", + "ec2:RunInstances" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json b/internal/service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json index 4d3dcfb2c6..d9a6ee2fc7 100644 --- a/internal/service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_ECR_RegistryPolicy.json @@ -32,6 +32,7 @@ "handlers": { "create": { "permissions": [ + "ecr:GetRegistryPolicy", "ecr:PutRegistryPolicy" ] }, @@ -47,6 +48,7 @@ }, "update": { "permissions": [ + "ecr:GetRegistryPolicy", "ecr:PutRegistryPolicy" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_ECR_Repository.json b/internal/service/cloudformation/schemas/AWS_ECR_Repository.json index 6a9a1a20c6..6554e2b845 100644 --- a/internal/service/cloudformation/schemas/AWS_ECR_Repository.json +++ b/internal/service/cloudformation/schemas/AWS_ECR_Repository.json @@ -181,8 +181,10 @@ }, "update": { "permissions": [ + "ecr:DescribeRepositories", "ecr:PutLifecyclePolicy", "ecr:SetRepositoryPolicy", + "ecr:ListTagsForResource", "ecr:TagResource", "ecr:UntagResource", "ecr:DeleteLifecyclePolicy", diff --git a/internal/service/cloudformation/schemas/AWS_EFS_AccessPoint.json b/internal/service/cloudformation/schemas/AWS_EFS_AccessPoint.json index 2c3b9caebe..98ff2e3f7b 100644 --- a/internal/service/cloudformation/schemas/AWS_EFS_AccessPoint.json +++ b/internal/service/cloudformation/schemas/AWS_EFS_AccessPoint.json @@ -143,6 +143,13 @@ "/properties/AccessPointId", "/properties/Arn" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/AccessPointTags" + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_EFS_FileSystem.json b/internal/service/cloudformation/schemas/AWS_EFS_FileSystem.json index 6bd0906ab1..019573189a 100644 --- a/internal/service/cloudformation/schemas/AWS_EFS_FileSystem.json +++ b/internal/service/cloudformation/schemas/AWS_EFS_FileSystem.json @@ -114,6 +114,13 @@ "propertyTransform": { "/properties/KmsKeyId": "\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/[a-zA-Z0-9-]+\"" }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/FileSystemTags" + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json b/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json index b4169f7cb1..995fee3652 100644 --- a/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json +++ b/internal/service/cloudformation/schemas/AWS_EFS_MountTarget.json @@ -41,6 +41,9 @@ "readOnlyProperties": [ "/properties/Id" ], + "tagging": { + "taggable": false + }, "handlers": { "create": { "permissions": [ diff --git a/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json b/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json index a2000c2b2f..0669173667 100644 --- a/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_IAM_ManagedPolicy.json @@ -1,86 +1,43 @@ { "typeName": "AWS::IAM::ManagedPolicy", "description": "Resource Type definition for AWS::IAM::ManagedPolicy", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam", "additionalProperties": false, "properties": { + "ManagedPolicyName": { + "type": "string" + }, + "Path": { + "type": "string" + }, "Description": { - "type": "string", - "description": "A friendly description of the policy." + "type": "string" }, "Groups": { - "insertionOrder": false, "type": "array", - "description": "The name (friendly name, not ARN) of the group to attach the policy to.", "uniqueItems": true, "items": { "type": "string" } }, - "ManagedPolicyName": { - "type": "string", - "description": "The friendly name of the policy." - }, - "Path": { - "type": "string", - "description": "The path for the policy." - }, "PolicyDocument": { - "type": [ - "object", - "string" - ], - "description": "The JSON policy document that you want to use as the content for the new policy." + "type": "object" }, "Roles": { - "insertionOrder": false, "type": "array", - "description": "The name (friendly name, not ARN) of the role to attach the policy to.", - "uniqueItems": true, + "uniqueItems": false, "items": { "type": "string" } }, "Users": { - "insertionOrder": false, "type": "array", - "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.", - "uniqueItems": true, + "uniqueItems": false, "items": { "type": "string" } }, - "PolicyArn": { - "type": "string", - "description": "Amazon Resource Name (ARN) of the managed policy" - }, - "AttachmentCount": { - "type": "integer", - "description": "The number of entities (users, groups, and roles) that the policy is attached to." - }, - "CreateDate": { - "type": "string", - "description": "The date and time, in ISO 8601 date-time format, when the policy was created." - }, - "UpdateDate": { - "type": "string", - "description": "The date and time, in ISO 8601 date-time format, when the policy was last updated." - }, - "DefaultVersionId": { - "type": "string", - "description": "The identifier for the version of the policy that is set as the default version." - }, - "IsAttachable": { - "type": "boolean", - "description": "Specifies whether the policy can be attached to an IAM user, group, or role." - }, - "PermissionsBoundaryUsageCount": { - "type": "integer", - "description": "The number of entities (users and roles) for which the policy is used to set the permissions boundary." - }, - "PolicyId": { - "type": "string", - "description": "The stable and unique string identifying the policy." + "Id": { + "type": "string" } }, "required": [ @@ -91,71 +48,10 @@ "/properties/Description", "/properties/Path" ], - "readOnlyProperties": [ - "/properties/PolicyArn", - "/properties/AttachmentCount", - "/properties/CreateDate", - "/properties/DefaultVersionId", - "/properties/IsAttachable", - "/properties/PermissionsBoundaryUsageCount", - "/properties/PolicyId", - "/properties/UpdateDate" - ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, "primaryIdentifier": [ - "/properties/PolicyArn" + "/properties/Id" ], - "handlers": { - "create": { - "permissions": [ - "iam:CreatePolicy", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - }, - "read": { - "permissions": [ - "iam:GetPolicy", - "iam:ListEntitiesForPolicy", - "iam:GetPolicyVersion" - ] - }, - "update": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:CreatePolicyVersion", - "iam:DeletePolicyVersion", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:DeletePolicyVersion", - "iam:DeletePolicy", - "iam:ListEntitiesForPolicy" - ] - }, - "list": { - "permissions": [ - "iam:ListPolicies" - ] - } - } + "readOnlyProperties": [ + "/properties/Id" + ] } diff --git a/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json b/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json index 80aaf6a0f5..c5083b7981 100644 --- a/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IVS_RecordingConfiguration.json @@ -32,9 +32,7 @@ "$ref": "#/definitions/S3DestinationConfiguration" } }, - "required": [ - "S3" - ] + "required": [] }, "S3DestinationConfiguration": { "description": "Recording S3 Destination Configuration.", @@ -63,18 +61,78 @@ "enum": [ "INTERVAL", "DISABLED" - ] + ], + "default": "INTERVAL" }, "TargetIntervalSeconds": { - "description": "Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + "description": "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", "type": "integer", - "minimum": 5, - "maximum": 60 + "minimum": 1, + "maximum": 60, + "default": 60 + }, + "Resolution": { + "description": "Resolution indicates the desired resolution of recorded thumbnails.", + "type": "string", + "enum": [ + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION" + ] + }, + "Storage": { + "description": "Storage indicates the format in which thumbnails are recorded.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 0, + "maxItems": 2, + "items": { + "type": "string", + "enum": [ + "SEQUENTIAL", + "LATEST" + ] + } } }, - "required": [ - "RecordingMode" - ] + "required": [] + }, + "RenditionConfiguration": { + "description": "Rendition Configuration describes which renditions should be recorded for a stream.", + "type": "object", + "additionalProperties": false, + "properties": { + "RenditionSelection": { + "description": "Resolution Selection indicates which set of renditions are recorded for a stream.", + "type": "string", + "enum": [ + "ALL", + "NONE", + "CUSTOM" + ], + "default": "ALL" + }, + "Renditions": { + "description": "Renditions indicates which renditions are recorded for a stream.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 0, + "maxItems": 4, + "items": { + "type": "string", + "enum": [ + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION" + ] + } + } + }, + "required": [] } }, "properties": { @@ -82,7 +140,7 @@ "description": "Recording Configuration ARN is automatically generated on creation and assigned as the unique identifier.", "type": "string", "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", - "minLength": 1, + "minLength": 0, "maxLength": 128 }, "Name": { @@ -123,6 +181,9 @@ }, "ThumbnailConfiguration": { "$ref": "#/definitions/ThumbnailConfiguration" + }, + "RenditionConfiguration": { + "$ref": "#/definitions/RenditionConfiguration" } }, "additionalProperties": false, @@ -144,7 +205,12 @@ "/properties/RecordingReconnectWindowSeconds", "/properties/ThumbnailConfiguration", "/properties/ThumbnailConfiguration/RecordingMode", - "/properties/ThumbnailConfiguration/TargetIntervalSeconds" + "/properties/ThumbnailConfiguration/TargetIntervalSeconds", + "/properties/ThumbnailConfiguration/Storage", + "/properties/ThumbnailConfiguration/Resolution", + "/properties/RenditionConfiguration", + "/properties/RenditionConfiguration/RenditionSelection", + "/properties/RenditionConfiguration/Renditions" ], "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json b/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json index afc4ca0613..30ee9c204d 100644 --- a/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json +++ b/internal/service/cloudformation/schemas/AWS_IdentityStore_Group.json @@ -1,5 +1,6 @@ { "typeName": "AWS::IdentityStore::Group", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", "description": "Resource Type definition for AWS::IdentityStore::Group", "properties": { "Description": { @@ -78,7 +79,17 @@ "list": { "permissions": [ "identitystore:ListGroups" - ] + ], + "handlerSchema": { + "properties": { + "IdentityStoreId": { + "$ref": "resource-schema.json#/properties/IdentityStoreId" + } + }, + "required": [ + "IdentityStoreId" + ] + } } }, "additionalProperties": false diff --git a/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json b/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json index 4972cad5b2..80b6f8aa1f 100644 --- a/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json +++ b/internal/service/cloudformation/schemas/AWS_IdentityStore_GroupMembership.json @@ -1,5 +1,6 @@ { "typeName": "AWS::IdentityStore::GroupMembership", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", "description": "Resource Type Definition for AWS:IdentityStore::GroupMembership", "definitions": { "MemberId": { @@ -90,7 +91,21 @@ "list": { "permissions": [ "identitystore:ListGroupMemberships" - ] + ], + "handlerSchema": { + "properties": { + "IdentityStoreId": { + "$ref": "resource-schema.json#/properties/IdentityStoreId" + }, + "GroupId": { + "$ref": "resource-schema.json#/properties/GroupId" + } + }, + "required": [ + "IdentityStoreId", + "GroupId" + ] + } } }, "additionalProperties": false diff --git a/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json b/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json index be40aff655..e9ae6d2940 100644 --- a/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json +++ b/internal/service/cloudformation/schemas/AWS_InternetMonitor_Monitor.json @@ -81,6 +81,35 @@ "type": "number", "minimum": 0.0, "maximum": 100.0 + }, + "AvailabilityLocalHealthEventsConfig": { + "$ref": "#/definitions/LocalHealthEventsConfig" + }, + "PerformanceLocalHealthEventsConfig": { + "$ref": "#/definitions/LocalHealthEventsConfig" + } + }, + "additionalProperties": false + }, + "LocalHealthEventsConfig": { + "type": "object", + "properties": { + "Status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "HealthScoreThreshold": { + "type": "number", + "minimum": 0.0, + "maximum": 100.0 + }, + "MinTrafficImpact": { + "type": "number", + "minimum": 0.0, + "maximum": 100.0 } }, "additionalProperties": false diff --git a/internal/service/cloudformation/schemas/AWS_IoTCoreDeviceAdvisor_SuiteDefinition.json b/internal/service/cloudformation/schemas/AWS_IoTCoreDeviceAdvisor_SuiteDefinition.json index 6eb6f76919..d64988d60f 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTCoreDeviceAdvisor_SuiteDefinition.json +++ b/internal/service/cloudformation/schemas/AWS_IoTCoreDeviceAdvisor_SuiteDefinition.json @@ -143,25 +143,47 @@ "handlers": { "create": { "permissions": [ + "iot:DescribeCertificate", + "iot:DescribeThing", + "iot:GetPolicy", + "iot:ListAttachedPolicies", + "iot:ListCertificates", + "iot:ListPrincipalPolicies", + "iot:ListTagsForResource", + "iot:ListThingPrincipals", + "iot:ListThings", "iotdeviceadvisor:CreateSuiteDefinition", + "iotdeviceadvisor:TagResource", "iam:PassRole" ] }, "read": { "permissions": [ - "iotdeviceadvisor:GetSuiteDefinition" + "iotdeviceadvisor:GetSuiteDefinition", + "iotdeviceadvisor:TagResource" ] }, "update": { "permissions": [ + "iot:DescribeCertificate", + "iot:DescribeThing", + "iot:GetPolicy", + "iot:ListAttachedPolicies", + "iot:ListCertificates", + "iot:ListPrincipalPolicies", + "iot:ListTagsForResource", + "iot:ListThingPrincipals", + "iot:ListThings", "iotdeviceadvisor:UpdateSuiteDefinition", "iotdeviceadvisor:GetSuiteDefinition", "iotdeviceadvisor:UntagResource", - "iotdeviceadvisor:TagResource" + "iotdeviceadvisor:TagResource", + "iam:PassRole" ] }, "delete": { "permissions": [ + "iotdeviceadvisor:GetSuiteDefinition", "iotdeviceadvisor:DeleteSuiteDefinition" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json index d727b8c139..5d10333908 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Campaign.json @@ -420,11 +420,18 @@ "create": { "permissions": [ "iotfleetwise:CreateCampaign", - "iotfleetwise:GetCampaign" + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iam:PassRole", + "timestream:DescribeEndpoints", + "timestream:DescribeTable" ] }, "update": { "permissions": [ + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource", "iotfleetwise:UpdateCampaign", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json index 76af49b93b..7f0a4c6366 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_DecoderManifest.json @@ -442,7 +442,11 @@ "permissions": [ "iotfleetwise:CreateDecoderManifest", "iotfleetwise:GetDecoderManifest", - "iotfleetwise:UpdateDecoderManifest" + "iotfleetwise:UpdateDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" ] }, "read": { @@ -459,6 +463,7 @@ "iotfleetwise:GetDecoderManifest", "iotfleetwise:ListDecoderManifestSignals", "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" ] diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json index 046226c4c2..de67f5da91 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Fleet.json @@ -88,7 +88,10 @@ "create": { "permissions": [ "iotfleetwise:GetFleet", - "iotfleetwise:CreateFleet" + "iotfleetwise:CreateFleet", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:ListVehiclesInFleet", + "iotfleetwise:TagResource" ] }, "read": { @@ -101,6 +104,7 @@ "permissions": [ "iotfleetwise:GetFleet", "iotfleetwise:UpdateFleet", + "iotfleetwise:ListTagsForResource", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" ] diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json index fa6b5a0111..9d2007f98c 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_ModelManifest.json @@ -101,7 +101,10 @@ "permissions": [ "iotfleetwise:CreateModelManifest", "iotfleetwise:GetModelManifest", - "iotfleetwise:UpdateModelManifest" + "iotfleetwise:UpdateModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" ] }, "read": { @@ -116,6 +119,7 @@ "iotfleetwise:UpdateModelManifest", "iotfleetwise:GetModelManifest", "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" ] diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json index ca5707136d..c0f4c805a9 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_SignalCatalog.json @@ -332,7 +332,10 @@ "create": { "permissions": [ "iotfleetwise:GetSignalCatalog", - "iotfleetwise:CreateSignalCatalog" + "iotfleetwise:CreateSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" ] }, "read": { @@ -347,6 +350,7 @@ "iotfleetwise:GetSignalCatalog", "iotfleetwise:UpdateSignalCatalog", "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" ] diff --git a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json index 9ebe9e5fdb..d58625ce15 100644 --- a/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json +++ b/internal/service/cloudformation/schemas/AWS_IoTFleetWise_Vehicle.json @@ -113,7 +113,10 @@ "iotfleetwise:GetVehicle", "iotfleetwise:CreateVehicle", "iot:CreateThing", - "iot:DescribeThing" + "iot:DescribeThing", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:ListVehicles", + "iotfleetwise:TagResource" ] }, "read": { @@ -126,6 +129,7 @@ "permissions": [ "iotfleetwise:GetVehicle", "iotfleetwise:UpdateVehicle", + "iotfleetwise:ListTagsForResource", "iotfleetwise:TagResource", "iotfleetwise:UntagResource" ] diff --git a/internal/service/cloudformation/schemas/AWS_KMS_Key.json b/internal/service/cloudformation/schemas/AWS_KMS_Key.json index 9ae66b283a..11ba80c03f 100644 --- a/internal/service/cloudformation/schemas/AWS_KMS_Key.json +++ b/internal/service/cloudformation/schemas/AWS_KMS_Key.json @@ -47,7 +47,8 @@ "type": [ "object", "string" - ] + ], + "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn::iam:::root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}" }, "KeyUsage": { "description": "Determines the cryptographic operations for which you can use the AWS KMS key. The default value is ENCRYPT_DECRYPT. This property is required only for asymmetric AWS KMS keys. You can't change the KeyUsage value after the AWS KMS key is created.", @@ -113,12 +114,14 @@ }, "KeyId": { "type": "string" + }, + "BypassPolicyLockoutSafetyCheck": { + "description": "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.", + "type": "boolean", + "default": false } }, "additionalProperties": false, - "required": [ - "KeyPolicy" - ], "readOnlyProperties": [ "/properties/Arn", "/properties/KeyId" @@ -127,7 +130,8 @@ "/properties/KeyId" ], "writeOnlyProperties": [ - "/properties/PendingWindowInDays" + "/properties/PendingWindowInDays", + "/properties/BypassPolicyLockoutSafetyCheck" ], "tagging": { "taggable": true, diff --git a/internal/service/cloudformation/schemas/AWS_Kendra_DataSource.json b/internal/service/cloudformation/schemas/AWS_Kendra_DataSource.json index c82fbd8189..655439465d 100644 --- a/internal/service/cloudformation/schemas/AWS_Kendra_DataSource.json +++ b/internal/service/cloudformation/schemas/AWS_Kendra_DataSource.json @@ -1384,6 +1384,18 @@ "OrganizationId" ] }, + "TemplateConfiguration": { + "type": "object", + "properties": { + "Template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "Template" + ] + }, "DataSourceConfiguration": { "type": "object", "properties": { @@ -1416,6 +1428,9 @@ }, "WorkDocsConfiguration": { "$ref": "#/definitions/WorkDocsConfiguration" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/TemplateConfiguration" } }, "additionalProperties": false, @@ -1469,6 +1484,11 @@ "required": [ "WorkDocsConfiguration" ] + }, + { + "required": [ + "TemplateConfiguration" + ] } ] }, @@ -1492,7 +1512,8 @@ "CONFLUENCE", "GOOGLEDRIVE", "WEBCRAWLER", - "WORKDOCS" + "WORKDOCS", + "TEMPLATE" ] }, "Description": { diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json b/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json index 23a8bb63de..e3e0b5aca2 100644 --- a/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json +++ b/internal/service/cloudformation/schemas/AWS_Lambda_Permission.json @@ -93,6 +93,9 @@ "/properties/FunctionName", "/properties/Id" ], + "propertyTransform": { + "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal" + }, "readOnlyProperties": [ "/properties/Id" ], diff --git a/internal/service/cloudformation/schemas/AWS_MSK_ServerlessCluster.json b/internal/service/cloudformation/schemas/AWS_MSK_ServerlessCluster.json index bb0329253a..2865bcd21d 100644 --- a/internal/service/cloudformation/schemas/AWS_MSK_ServerlessCluster.json +++ b/internal/service/cloudformation/schemas/AWS_MSK_ServerlessCluster.json @@ -125,6 +125,7 @@ "permissions": [ "kafka:CreateClusterV2", "kafka:TagResource", + "kafka:DescribeClusterV2", "ec2:CreateVpcEndpoint", "ec2:CreateTags", "ec2:DescribeVpcAttribute", @@ -143,6 +144,7 @@ "delete": { "permissions": [ "kafka:DeleteCluster", + "kafka:DescribeClusterV2", "ec2:DeleteVpcEndpoints" ], "timeoutInMinutes": 75 diff --git a/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json b/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json index 510d3a3e83..50b0c85b93 100644 --- a/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json +++ b/internal/service/cloudformation/schemas/AWS_Neptune_DBCluster.json @@ -4,11 +4,11 @@ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", "properties": { "Endpoint": { - "description": "The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", "type": "string" }, "ReadEndpoint": { - "description": "The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", "type": "string" }, "ClusterResourceId": { @@ -58,6 +58,10 @@ "description": "The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.", "type": "string" }, + "DBPort": { + "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + "type": "integer" + }, "DBSubnetGroupName": { "description": "Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.", "type": "string" @@ -88,7 +92,7 @@ "type": "string" }, "Port": { - "description": "Specifies the port that the database engine is listening on.", + "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", "type": "string" }, "PreferredBackupWindow": { @@ -223,9 +227,9 @@ }, "readOnlyProperties": [ "/properties/Endpoint", - "/properties/ReadEndpoint", "/properties/ClusterResourceId", - "/properties/Port" + "/properties/Port", + "/properties/ReadEndpoint" ], "createOnlyProperties": [ "/properties/AvailabilityZones", @@ -269,14 +273,16 @@ "rds:ListTagsForResource", "rds:ModifyDBCluster", "rds:RestoreDBClusterFromSnapshot", - "rds:RestoreDBClusterToPointInTime" + "rds:RestoreDBClusterToPointInTime", + "kms:*" ], "timeoutInMinutes": 2160 }, "read": { "permissions": [ "rds:DescribeDBClusters", - "rds:ListTagsForResource" + "rds:ListTagsForResource", + "kms:*" ], "timeoutInMinutes": 2160 }, @@ -295,7 +301,8 @@ "rds:ModifyDBInstance", "rds:RemoveFromGlobalCluster", "rds:RemoveRoleFromDBCluster", - "rds:RemoveTagsFromResource" + "rds:RemoveTagsFromResource", + "kms:*" ], "timeoutInMinutes": 2160 }, @@ -306,14 +313,16 @@ "rds:DescribeDBClusters", "rds:DescribeGlobalClusters", "rds:ListTagsForResource", - "rds:RemoveFromGlobalCluster" + "rds:RemoveFromGlobalCluster", + "kms:*" ], "timeoutInMinutes": 2160 }, "list": { "permissions": [ "rds:DescribeDBClusters", - "rds:ListTagsForResource" + "rds:ListTagsForResource", + "kms:*" ], "timeoutInMinutes": 2160 } diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_Firewall.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_Firewall.json index 0deae5b665..cc033cbdcc 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_Firewall.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_Firewall.json @@ -117,6 +117,9 @@ } } }, + "tagging": { + "taggable": true + }, "required": [ "FirewallName", "FirewallPolicyArn", @@ -146,7 +149,10 @@ "network-firewall:CreateFirewall", "network-firewall:DescribeFirewallPolicy", "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource" + "network-firewall:TagResource", + "network-firewall:AssociateSubnets", + "network-firewall:AssociateFirewallPolicy", + "network-firewall:DescribeFirewall" ] }, "read": { @@ -178,7 +184,8 @@ "logs:GetLogDelivery", "logs:ListLogDeliveries", "network-firewall:DeleteFirewall", - "network-firewall:UntagResource" + "network-firewall:UntagResource", + "network-firewall:DescribeFirewall" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json index 3bb67f52a2..92b27facdd 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_FirewallPolicy.json @@ -307,6 +307,9 @@ } } }, + "tagging": { + "taggable": true + }, "required": [ "FirewallPolicyName", "FirewallPolicy" @@ -326,7 +329,8 @@ "permissions": [ "network-firewall:CreateFirewallPolicy", "network-firewall:DescribeFirewallPolicy", - "network-firewall:TagResource" + "network-firewall:TagResource", + "network-firewall:ListRuleGroups" ] }, "read": { @@ -340,7 +344,8 @@ "network-firewall:UpdateFirewallPolicy", "network-firewall:DescribeFirewallPolicy", "network-firewall:TagResource", - "network-firewall:UntagResource" + "network-firewall:UntagResource", + "network-firewall:ListRuleGroups" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_LoggingConfiguration.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_LoggingConfiguration.json index 675b392117..42a56e0d96 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_LoggingConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_LoggingConfiguration.json @@ -82,6 +82,9 @@ "$ref": "#/definitions/LoggingConfiguration" } }, + "tagging": { + "taggable": false + }, "required": [ "FirewallArn", "LoggingConfiguration" @@ -106,7 +109,8 @@ "logs:DescribeLogGroups", "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream", - "network-firewall:UpdateLoggingConfiguration" + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" ] }, "read": { @@ -130,7 +134,8 @@ "logs:DescribeLogGroups", "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream", - "network-firewall:UpdateLoggingConfiguration" + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" ] }, "delete": { @@ -138,7 +143,8 @@ "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:GetLogDelivery", - "network-firewall:UpdateLoggingConfiguration" + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_RuleGroup.json b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_RuleGroup.json index 667e15a332..3b738d7a0b 100644 --- a/internal/service/cloudformation/schemas/AWS_NetworkFirewall_RuleGroup.json +++ b/internal/service/cloudformation/schemas/AWS_NetworkFirewall_RuleGroup.json @@ -654,6 +654,9 @@ } } }, + "tagging": { + "taggable": true + }, "required": [ "Type", "Capacity", @@ -676,7 +679,10 @@ "permissions": [ "network-firewall:CreateRuleGroup", "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource" + "network-firewall:TagResource", + "network-firewall:ListRuleGroups", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" ] }, "read": { @@ -690,7 +696,9 @@ "network-firewall:UpdateRuleGroup", "network-firewall:DescribeRuleGroup", "network-firewall:TagResource", - "network-firewall:UntagResource" + "network-firewall:UntagResource", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" ] }, "delete": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json b/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json index 42ac7771a2..fbb575f1c7 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_AnnotationStore.json @@ -254,7 +254,13 @@ "create": { "permissions": [ "omics:CreateAnnotationStore", - "omics:TagResource" + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetAnnotationStore" ] }, "read": { @@ -266,12 +272,15 @@ "permissions": [ "omics:UpdateAnnotationStore", "omics:TagResource", - "omics:UntagResource" + "omics:UntagResource", + "omics:GetAnnotationStore", + "omics:ListTagsForResource" ] }, "delete": { "permissions": [ - "omics:DeleteAnnotationStore" + "omics:DeleteAnnotationStore", + "omics:ListAnnotationStores" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json b/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json index babc7fef93..b084d61a1f 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_RunGroup.json @@ -38,6 +38,11 @@ "maximum": 100000, "minimum": 1 }, + "MaxGpus": { + "type": "number", + "maximum": 100000, + "minimum": 1 + }, "MaxDuration": { "type": "number", "maximum": 100000, @@ -88,12 +93,15 @@ "permissions": [ "omics:UpdateRunGroup", "omics:TagResource", + "omics:GetRunGroup", + "omics:ListTagsForResource", "omics:UntagResource" ] }, "delete": { "permissions": [ - "omics:DeleteRunGroup" + "omics:DeleteRunGroup", + "omics:GetRunGroup" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json b/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json index 790cb33c20..1eb3450f54 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_VariantStore.json @@ -144,7 +144,13 @@ "create": { "permissions": [ "omics:CreateVariantStore", - "omics:TagResource" + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetVariantStore" ] }, "read": { @@ -156,12 +162,15 @@ "permissions": [ "omics:UpdateVariantStore", "omics:TagResource", - "omics:UntagResource" + "omics:UntagResource", + "omics:ListTagsForResource", + "omics:GetVariantStore" ] }, "delete": { "permissions": [ - "omics:DeleteVariantStore" + "omics:DeleteVariantStore", + "omics:ListVariantStores" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json b/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json index aa6f3715b0..2368515cdd 100644 --- a/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json +++ b/internal/service/cloudformation/schemas/AWS_Omics_Workflow.json @@ -21,7 +21,16 @@ "minLength": 1, "enum": [ "WDL", - "NEXTFLOW" + "NEXTFLOW", + "CWL" + ] + }, + "Accelerators": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "enum": [ + "GPU" ] }, "WorkflowParameter": { @@ -121,6 +130,9 @@ "Status": { "$ref": "#/definitions/WorkflowStatus" }, + "Accelerators": { + "$ref": "#/definitions/Accelerators" + }, "StorageCapacity": { "type": "number", "maximum": 100000, @@ -148,7 +160,8 @@ "/properties/Engine", "/properties/Main", "/properties/ParameterTemplate", - "/properties/StorageCapacity" + "/properties/StorageCapacity", + "/properties/Accelerators" ], "primaryIdentifier": [ "/properties/Id" @@ -163,6 +176,7 @@ "create": { "permissions": [ "omics:CreateWorkflow", + "omics:GetWorkflow", "omics:TagResource", "s3:PutObject", "s3:GetObject", @@ -184,13 +198,16 @@ "update": { "permissions": [ "omics:UpdateWorkflow", + "omics:GetWorkflow", "omics:TagResource", + "omics:ListTagsForResource", "omics:UntagResource" ] }, "delete": { "permissions": [ - "omics:DeleteWorkflow" + "omics:DeleteWorkflow", + "omics:GetWorkflow" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_OpenSearchServerless_Collection.json b/internal/service/cloudformation/schemas/AWS_OpenSearchServerless_Collection.json index 95196844d8..76d08d3f84 100644 --- a/internal/service/cloudformation/schemas/AWS_OpenSearchServerless_Collection.json +++ b/internal/service/cloudformation/schemas/AWS_OpenSearchServerless_Collection.json @@ -37,7 +37,8 @@ "description": "The possible types for the collection", "enum": [ "SEARCH", - "TIMESERIES" + "TIMESERIES", + "VECTORSEARCH" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json index 6b6c467212..8ec492c926 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentAccountConnection.json @@ -114,13 +114,18 @@ "create": { "permissions": [ "proton:CreateEnvironmentAccountConnection", - "proton:TagResource" + "proton:TagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" ] }, "read": { "permissions": [ "proton:GetEnvironmentAccountConnection", - "proton:ListTagsForResource" + "proton:ListTagsForResource", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" ] }, "update": { @@ -129,13 +134,18 @@ "proton:ListTagsForResource", "proton:TagResource", "proton:UntagResource", - "proton:UpdateEnvironmentAccountConnection" + "proton:UpdateEnvironmentAccountConnection", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" ] }, "delete": { "permissions": [ "proton:DeleteEnvironmentAccountConnection", - "proton:UntagResource" + "proton:UntagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json index 53ca48efba..827c976ffb 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_EnvironmentTemplate.json @@ -96,13 +96,16 @@ "create": { "permissions": [ "proton:CreateEnvironmentTemplate", - "proton:TagResource" + "proton:TagResource", + "proton:GetEnvironmentTemplate", + "kms:*" ] }, "read": { "permissions": [ "proton:GetEnvironmentTemplate", - "proton:ListTagsForResource" + "proton:ListTagsForResource", + "kms:*" ] }, "update": { @@ -111,12 +114,16 @@ "proton:ListTagsForResource", "proton:TagResource", "proton:UntagResource", - "proton:UpdateEnvironmentTemplate" + "proton:UpdateEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "kms:*" ] }, "delete": { "permissions": [ - "proton:DeleteEnvironmentTemplate" + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "kms:*" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json b/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json index 813ff8d5ce..b5dd95eabc 100644 --- a/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Proton_ServiceTemplate.json @@ -99,28 +99,35 @@ "create": { "permissions": [ "proton:CreateServiceTemplate", - "proton:TagResource" + "proton:TagResource", + "kms:*", + "proton:GetServiceTemplate" ] }, "read": { "permissions": [ "proton:GetServiceTemplate", - "proton:ListTagsForResource" + "proton:ListTagsForResource", + "kms:*" ] }, "update": { "permissions": [ + "proton:GetServiceTemplate", "proton:CreateServiceTemplate", "proton:ListTagsForResource", "proton:TagResource", "proton:UntagResource", - "proton:UpdateServiceTemplate" + "proton:UpdateServiceTemplate", + "kms:*" ] }, "delete": { "permissions": [ "proton:DeleteServiceTemplate", - "proton:UntagResource" + "proton:UntagResource", + "kms:*", + "proton:GetServiceTemplate" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_CRL.json b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_CRL.json index dfdd83dcb7..f5a7b605b5 100644 --- a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_CRL.json +++ b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_CRL.json @@ -71,12 +71,14 @@ "create": { "permissions": [ "rolesanywhere:ImportCrl", + "rolesanywhere:TagResource", "rolesanywhere:ListTagsForResource" ] }, "read": { "permissions": [ - "rolesanywhere:GetCrl" + "rolesanywhere:GetCrl", + "rolesanywhere:ListTagsForResource" ] }, "update": { diff --git a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_Profile.json b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_Profile.json index d20fea0efe..af2207b3f6 100644 --- a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_Profile.json +++ b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_Profile.json @@ -89,6 +89,7 @@ "iam:GetPolicy", "iam:PassRole", "rolesanywhere:CreateProfile", + "rolesanywhere:TagResource", "rolesanywhere:ListTagsForResource" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_TrustAnchor.json b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_TrustAnchor.json index cb55c212f4..667225bed5 100644 --- a/internal/service/cloudformation/schemas/AWS_RolesAnywhere_TrustAnchor.json +++ b/internal/service/cloudformation/schemas/AWS_RolesAnywhere_TrustAnchor.json @@ -123,6 +123,7 @@ "permissions": [ "iam:CreateServiceLinkedRole", "rolesanywhere:CreateTrustAnchor", + "rolesanywhere:TagResource", "rolesanywhere:ListTagsForResource" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_Route53_DNSSEC.json b/internal/service/cloudformation/schemas/AWS_Route53_DNSSEC.json index 65f9e0e6bf..879be46a02 100644 --- a/internal/service/cloudformation/schemas/AWS_Route53_DNSSEC.json +++ b/internal/service/cloudformation/schemas/AWS_Route53_DNSSEC.json @@ -22,6 +22,7 @@ "handlers": { "create": { "permissions": [ + "route53:GetDNSSEC", "route53:EnableHostedZoneDNSSEC", "kms:DescribeKey", "kms:GetPublicKey", @@ -36,6 +37,7 @@ }, "delete": { "permissions": [ + "route53:GetDNSSEC", "route53:DisableHostedZoneDNSSEC", "kms:DescribeKey", "kms:GetPublicKey", diff --git a/internal/service/cloudformation/schemas/AWS_Route53_KeySigningKey.json b/internal/service/cloudformation/schemas/AWS_Route53_KeySigningKey.json index 15b9c7695e..33449e1d63 100644 --- a/internal/service/cloudformation/schemas/AWS_Route53_KeySigningKey.json +++ b/internal/service/cloudformation/schemas/AWS_Route53_KeySigningKey.json @@ -61,6 +61,7 @@ }, "update": { "permissions": [ + "route53:GetDNSSEC", "route53:ActivateKeySigningKey", "route53:DeactivateKeySigningKey", "kms:DescribeKey", diff --git a/internal/service/cloudformation/schemas/AWS_SSMContacts_Contact.json b/internal/service/cloudformation/schemas/AWS_SSMContacts_Contact.json index df9a281303..85b504bf8f 100644 --- a/internal/service/cloudformation/schemas/AWS_SSMContacts_Contact.json +++ b/internal/service/cloudformation/schemas/AWS_SSMContacts_Contact.json @@ -165,7 +165,9 @@ "handlers": { "create": { "permissions": [ - "ssm-contacts:CreateContact" + "ssm-contacts:CreateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] }, "read": { @@ -175,12 +177,16 @@ }, "update": { "permissions": [ - "ssm-contacts:UpdateContact" + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] }, "delete": { "permissions": [ - "ssm-contacts:DeleteContact" + "ssm-contacts:DeleteContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_SSMContacts_ContactChannel.json b/internal/service/cloudformation/schemas/AWS_SSMContacts_ContactChannel.json index 633e8a259f..2f1eea4950 100644 --- a/internal/service/cloudformation/schemas/AWS_SSMContacts_ContactChannel.json +++ b/internal/service/cloudformation/schemas/AWS_SSMContacts_ContactChannel.json @@ -66,7 +66,8 @@ "handlers": { "create": { "permissions": [ - "ssm-contacts:CreateContactChannel" + "ssm-contacts:CreateContactChannel", + "ssm-contacts:GetContactChannel" ] }, "read": { @@ -76,12 +77,14 @@ }, "update": { "permissions": [ - "ssm-contacts:UpdateContactChannel" + "ssm-contacts:UpdateContactChannel", + "ssm-contacts:GetContactChannel" ] }, "delete": { "permissions": [ - "ssm-contacts:DeleteContactChannel" + "ssm-contacts:DeleteContactChannel", + "ssm-contacts:GetContactChannel" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_SSMContacts_Plan.json b/internal/service/cloudformation/schemas/AWS_SSMContacts_Plan.json index b107ea230b..3e5c968c0b 100644 --- a/internal/service/cloudformation/schemas/AWS_SSMContacts_Plan.json +++ b/internal/service/cloudformation/schemas/AWS_SSMContacts_Plan.json @@ -152,7 +152,9 @@ "handlers": { "create": { "permissions": [ - "ssm-contacts:UpdateContact" + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] }, "read": { @@ -162,12 +164,16 @@ }, "update": { "permissions": [ - "ssm-contacts:UpdateContact" + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] }, "delete": { "permissions": [ - "ssm-contacts:UpdateContact" + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_SSMContacts_Rotation.json b/internal/service/cloudformation/schemas/AWS_SSMContacts_Rotation.json index ef0c9a1cf0..72b8bf37e6 100644 --- a/internal/service/cloudformation/schemas/AWS_SSMContacts_Rotation.json +++ b/internal/service/cloudformation/schemas/AWS_SSMContacts_Rotation.json @@ -270,6 +270,7 @@ "create": { "permissions": [ "ssm-contacts:CreateRotation", + "ssm-contacts:GetRotation", "ssm-contacts:TagResource", "ssm-contacts:ListTagsForResource", "ssm-contacts:UntagResource" @@ -286,6 +287,7 @@ "update": { "permissions": [ "ssm-contacts:UpdateRotation", + "ssm-contacts:GetRotation", "ssm-contacts:TagResource", "ssm-contacts:ListTagsForResource", "ssm-contacts:UntagResource" @@ -294,6 +296,7 @@ "delete": { "permissions": [ "ssm-contacts:DeleteRotation", + "ssm-contacts:GetRotation", "ssm-contacts:ListTagsForResource", "ssm-contacts:UntagResource" ] @@ -301,6 +304,7 @@ "list": { "permissions": [ "ssm-contacts:ListRotations", + "ssm-contacts:GetRotation", "ssm-contacts:ListTagsForResource" ] } diff --git a/internal/service/cloudformation/schemas/AWS_SSO_Assignment.json b/internal/service/cloudformation/schemas/AWS_SSO_Assignment.json index 4eea34fbed..56ef4ca2cd 100644 --- a/internal/service/cloudformation/schemas/AWS_SSO_Assignment.json +++ b/internal/service/cloudformation/schemas/AWS_SSO_Assignment.json @@ -1,6 +1,10 @@ { "typeName": "AWS::SSO::Assignment", - "taggable": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false + }, "description": "Resource Type definition for SSO assignmet", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-assignment", "properties": { @@ -76,24 +80,35 @@ "permissions": [ "sso:CreateAccountAssignment", "sso:DescribeAccountAssignmentCreationStatus", - "sso:ListAccountAssignments" + "sso:ListAccountAssignments", + "iam:GetSAMLProvider", + "iam:CreateSAMLProvider", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:CreateRole", + "iam:ListRolePolicies" ] }, "read": { "permissions": [ - "sso:ListAccountAssignments" + "sso:ListAccountAssignments", + "iam:GetSAMLProvider", + "iam:ListRolePolicies" ] }, "delete": { "permissions": [ "sso:ListAccountAssignments", "sso:DeleteAccountAssignment", - "sso:DescribeAccountAssignmentDeletionStatus" + "sso:DescribeAccountAssignmentDeletionStatus", + "iam:GetSAMLProvider", + "iam:ListRolePolicies" ] }, "list": { "permissions": [ - "sso:ListAccountAssignments" + "sso:ListAccountAssignments", + "iam:ListRolePolicies" ] } } diff --git a/internal/service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json b/internal/service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json index 1f21e944c3..a86ab3ad52 100644 --- a/internal/service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json @@ -1,6 +1,10 @@ { "typeName": "AWS::SSO::InstanceAccessControlAttributeConfiguration", - "taggable": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false + }, "description": "Resource Type definition for SSO InstanceAccessControlAttributeConfiguration", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instanceaccesscontrolattributeconfiguration", "definitions": { diff --git a/internal/service/cloudformation/schemas/AWS_SSO_PermissionSet.json b/internal/service/cloudformation/schemas/AWS_SSO_PermissionSet.json index 065502297a..acd559b642 100644 --- a/internal/service/cloudformation/schemas/AWS_SSO_PermissionSet.json +++ b/internal/service/cloudformation/schemas/AWS_SSO_PermissionSet.json @@ -1,6 +1,5 @@ { "typeName": "AWS::SSO::PermissionSet", - "taggable": true, "description": "Resource Type definition for SSO PermissionSet", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-permissionset", "definitions": { @@ -152,6 +151,12 @@ "Name", "InstanceArn" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags" + }, "createOnlyProperties": [ "/properties/InstanceArn", "/properties/Name" @@ -171,9 +176,13 @@ "sso:AttachManagedPolicyToPermissionSet", "sso:AttachCustomerManagedPolicyReferenceToPermissionSet", "sso:PutPermissionsBoundaryToPermissionSet", + "sso:TagResource", + "sso:DescribePermissionSet", + "sso:ListTagsForResource", "sso:ListManagedPoliciesInPermissionSet", "sso:ListCustomerManagedPolicyReferencesInPermissionSet", - "sso:TagResource" + "sso:GetInlinePolicyForPermissionSet", + "sso:GetPermissionsBoundaryForPermissionSet" ] }, "read": { @@ -204,6 +213,8 @@ "sso:PutPermissionsBoundaryToPermissionSet", "sso:DeleteInlinePolicyFromPermissionSet", "sso:ProvisionPermissionSet", + "sso:DescribePermissionSet", + "sso:GetInlinePolicyForPermissionSet", "sso:DescribePermissionSetProvisioningStatus" ] }, diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json b/internal/service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json index 0833a1a2bc..2f1f3d660f 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json @@ -534,6 +534,7 @@ "permissions": [ "sagemaker:CreateDataQualityJobDefinition", "sagemaker:DescribeDataQualityJobDefinition", + "sagemaker:AddTags", "iam:PassRole" ] }, @@ -549,7 +550,8 @@ }, "list": { "permissions": [ - "sagemaker:ListDataQualityJobDefinitions" + "sagemaker:ListDataQualityJobDefinitions", + "sagemaker:ListTags" ] } }, @@ -567,6 +569,13 @@ "/properties/NetworkConfig", "/properties/RoleArn", "/properties/StoppingCondition", - "/properties/Tags" + "/properties/Tags", + "/properties/EndpointName" + ], + "writeOnlyProperties": [ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" ] } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json b/internal/service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json index c8e526e206..32ef3a229c 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_FeatureGroup.json @@ -79,6 +79,14 @@ "description": "Description about the FeatureGroup.", "maxLength": 128 }, + "CreationTime": { + "description": "A timestamp of FeatureGroup creation time.", + "type": "string" + }, + "FeatureGroupStatus": { + "description": "The status of the feature group.", + "type": "string" + }, "Tags": { "type": "array", "description": "An array of key-value pair to apply to this resource.", @@ -220,9 +228,7 @@ ], "readOnlyProperties": [ "/properties/CreationTime", - "/properties/FeatureGroupStatus", - "/properties/FailureReason", - "/properties/OfflineStoreStatus" + "/properties/FeatureGroupStatus" ], "handlers": { "create": { diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelBiasJobDefinition.json b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelBiasJobDefinition.json index 76ebe4927f..6b925bdfa8 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelBiasJobDefinition.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelBiasJobDefinition.json @@ -580,7 +580,8 @@ "permissions": [ "sagemaker:CreateModelBiasJobDefinition", "sagemaker:DescribeModelBiasJobDefinition", - "iam:PassRole" + "iam:PassRole", + "sagemaker:AddTags" ] }, "delete": { @@ -595,7 +596,8 @@ }, "list": { "permissions": [ - "sagemaker:ListModelBiasJobDefinitions" + "sagemaker:ListModelBiasJobDefinitions", + "sagemaker:ListTags" ] } }, @@ -613,6 +615,13 @@ "/properties/NetworkConfig", "/properties/RoleArn", "/properties/StoppingCondition", - "/properties/Tags" + "/properties/Tags", + "/properties/EndpointName" + ], + "writeOnlyProperties": [ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" ] } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelExplainabilityJobDefinition.json b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelExplainabilityJobDefinition.json index 8980652e3f..65273989c4 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelExplainabilityJobDefinition.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelExplainabilityJobDefinition.json @@ -534,7 +534,8 @@ "permissions": [ "sagemaker:CreateModelExplainabilityJobDefinition", "sagemaker:DescribeModelExplainabilityJobDefinition", - "iam:PassRole" + "iam:PassRole", + "sagemaker:AddTags" ] }, "delete": { @@ -549,7 +550,8 @@ }, "list": { "permissions": [ - "sagemaker:ListModelExplainabilityJobDefinitions" + "sagemaker:ListModelExplainabilityJobDefinitions", + "sagemaker:ListTags" ] } }, @@ -567,6 +569,13 @@ "/properties/NetworkConfig", "/properties/RoleArn", "/properties/StoppingCondition", - "/properties/Tags" + "/properties/Tags", + "/properties/EndpointName" + ], + "writeOnlyProperties": [ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" ] } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelQualityJobDefinition.json b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelQualityJobDefinition.json index be9e38db11..e6b5291d6a 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_ModelQualityJobDefinition.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_ModelQualityJobDefinition.json @@ -606,6 +606,7 @@ "permissions": [ "sagemaker:CreateModelQualityJobDefinition", "sagemaker:DescribeModelQualityJobDefinition", + "sagemaker:AddTags", "iam:PassRole" ] }, @@ -621,7 +622,8 @@ }, "list": { "permissions": [ - "sagemaker:ListModelQualityJobDefinitions" + "sagemaker:ListModelQualityJobDefinitions", + "sagemaker:ListTags" ] } }, @@ -639,6 +641,13 @@ "/properties/NetworkConfig", "/properties/RoleArn", "/properties/StoppingCondition", - "/properties/Tags" + "/properties/Tags", + "/properties/EndpointName" + ], + "writeOnlyProperties": [ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" ] } diff --git a/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json b/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json index fd3bc2219d..6cf36d019e 100644 --- a/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json +++ b/internal/service/cloudformation/schemas/AWS_SecurityHub_AutomationRule.json @@ -92,7 +92,9 @@ "Comparison": { "enum": [ "EQUALS", - "NOT_EQUALS" + "NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS" ], "type": "string" }, @@ -168,7 +170,9 @@ "EQUALS", "PREFIX", "NOT_EQUALS", - "PREFIX_NOT_EQUALS" + "PREFIX_NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS" ], "type": "string" }, diff --git a/internal/service/cloudformation/schemas/AWS_Transfer_Agreement.json b/internal/service/cloudformation/schemas/AWS_Transfer_Agreement.json index 84e8d1d9c8..d00a2a292e 100644 --- a/internal/service/cloudformation/schemas/AWS_Transfer_Agreement.json +++ b/internal/service/cloudformation/schemas/AWS_Transfer_Agreement.json @@ -1,6 +1,7 @@ { "typeName": "AWS::Transfer::Agreement", "description": "Resource Type definition for AWS::Transfer::Agreement", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", "definitions": { "Tag": { "description": "Creates a key-value pair for a specific resource.", @@ -154,6 +155,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "ServerId": { + "$ref": "resource-schema.json#/properties/ServerId" + } + }, + "required": [ + "ServerId" + ] + }, "permissions": [ "transfer:ListAgreements" ] diff --git a/internal/service/cloudformation/schemas/AWS_Transfer_Connector.json b/internal/service/cloudformation/schemas/AWS_Transfer_Connector.json index b71a57c998..412cef332e 100644 --- a/internal/service/cloudformation/schemas/AWS_Transfer_Connector.json +++ b/internal/service/cloudformation/schemas/AWS_Transfer_Connector.json @@ -24,6 +24,12 @@ "Value" ], "additionalProperties": false + }, + "SftpConnectorTrustedHostKey": { + "description": "The public host key for the external server to which you are connecting.", + "type": "string", + "minLength": 1, + "maxLength": 2048 } }, "properties": { @@ -107,12 +113,41 @@ "SYNC", "NONE" ] + }, + "BasicAuthSecretId": { + "type": "string", + "description": "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + "minLength": 0, + "maxLength": 2048 + } + }, + "additionalProperties": false + }, + "SftpConfig": { + "description": "Configuration for an SFTP connector.", + "type": "object", + "properties": { + "UserSecretId": { + "type": "string", + "description": "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + "minLength": 1, + "maxLength": 2048 + }, + "TrustedHostKeys": { + "description": "List of public host keys, for the external server to which you are connecting.", + "type": "array", + "maxItems": 10, + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SftpConnectorTrustedHostKey" + } } }, "additionalProperties": false }, "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + "description": "Specifies the unique Amazon Resource Name (ARN) for the connector.", "type": "string", "pattern": "arn:.*", "minLength": 20, @@ -133,7 +168,7 @@ "maxLength": 2048 }, "Tags": { - "description": "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + "description": "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", "type": "array", "maxItems": 50, "uniqueItems": true, @@ -151,7 +186,6 @@ "additionalProperties": false, "required": [ "AccessRole", - "As2Config", "Url" ], "readOnlyProperties": [ diff --git a/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json b/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json index 66cce3381b..677bed326d 100644 --- a/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json +++ b/internal/service/cloudformation/schemas/AWS_WAFv2_WebACL.json @@ -1328,6 +1328,9 @@ }, "AWSManagedRulesATPRuleSet": { "$ref": "#/definitions/AWSManagedRulesATPRuleSet" + }, + "AWSManagedRulesACFPRuleSet": { + "$ref": "#/definitions/AWSManagedRulesACFPRuleSet" } }, "additionalProperties": false @@ -1356,6 +1359,9 @@ "LoginPath": { "type": "string" }, + "EnableRegexInPath": { + "type": "boolean" + }, "RequestInspection": { "$ref": "#/definitions/RequestInspection" }, @@ -1368,6 +1374,33 @@ ], "additionalProperties": false }, + "AWSManagedRulesACFPRuleSet": { + "description": "Configures how to use the Account creation fraud prevention managed rule group in the web ACL", + "type": "object", + "properties": { + "CreationPath": { + "type": "string" + }, + "RegistrationPagePath": { + "type": "string" + }, + "RequestInspection": { + "$ref": "#/definitions/RequestInspectionACFP" + }, + "ResponseInspection": { + "$ref": "#/definitions/ResponseInspection" + }, + "EnableRegexInPath": { + "type": "boolean" + } + }, + "required": [ + "CreationPath", + "RegistrationPagePath", + "RequestInspection" + ], + "additionalProperties": false + }, "RequestInspection": { "description": "Configures the inspection of login requests", "type": "object", @@ -1393,6 +1426,44 @@ ], "additionalProperties": false }, + "RequestInspectionACFP": { + "description": "Configures the inspection of sign-up requests", + "type": "object", + "properties": { + "PayloadType": { + "type": "string", + "enum": [ + "JSON", + "FORM_ENCODED" + ] + }, + "UsernameField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PasswordField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "EmailField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PhoneNumberFields": { + "type": "array", + "items": { + "$ref": "#/definitions/PhoneNumberField" + } + }, + "AddressFields": { + "type": "array", + "items": { + "$ref": "#/definitions/AddressField" + } + } + }, + "required": [ + "PayloadType" + ], + "additionalProperties": false + }, "ResponseInspection": { "description": "Configures the inspection of login responses", "type": "object", @@ -1608,6 +1679,12 @@ "KB_64" ] }, + "PhoneNumberField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "AddressField": { + "$ref": "#/definitions/FieldIdentifier" + }, "FieldIdentifier": { "type": "object", "properties": { From ef417bc6225ed5bf85008d48563ac3ce09970cf6 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 14:03:28 -0400 Subject: [PATCH 2/6] 08/09/2023 CloudFormation schemas in us-east-1; New schemas. --- internal/provider/all_schemas.hcl | 64 +- .../available_schemas.2023-08-09.hcl | 3473 +++++++++++++++++ internal/provider/plural_data_sources.go | 10 + internal/provider/resources.go | 15 + internal/provider/singular_data_sources.go | 15 + .../schemas/AWS_CloudWatch_Alarm.json | 275 ++ .../schemas/AWS_Config_ConfigRule.json | 227 ++ .../AWS_Connect_TrafficDistributionGroup.json | 140 + .../schemas/AWS_DMS_ReplicationConfig.json | 176 + .../AWS_DataSync_LocationAzureBlob.json | 188 + .../AWS_EC2_NetworkInterfaceAttachment.json | 90 + .../cloudformation/schemas/AWS_EC2_Route.json | 122 + .../AWS_Lambda_LayerVersionPermission.json | 74 + .../schemas/AWS_MediaTailor_Channel.json | 238 ++ .../AWS_MediaTailor_ChannelPolicy.json | 58 + .../schemas/AWS_MediaTailor_LiveSource.json | 148 + .../schemas/AWS_MediaTailor_VodSource.json | 148 + .../schemas/AWS_SQS_QueueInlinePolicy.json | 60 + 18 files changed, 5518 insertions(+), 3 deletions(-) create mode 100644 internal/provider/generators/allschemas/available_schemas.2023-08-09.hcl create mode 100644 internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json create mode 100644 internal/service/cloudformation/schemas/AWS_Config_ConfigRule.json create mode 100644 internal/service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json create mode 100644 internal/service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json create mode 100644 internal/service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json create mode 100644 internal/service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json create mode 100644 internal/service/cloudformation/schemas/AWS_EC2_Route.json create mode 100644 internal/service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json create mode 100644 internal/service/cloudformation/schemas/AWS_MediaTailor_Channel.json create mode 100644 internal/service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json create mode 100644 internal/service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json create mode 100644 internal/service/cloudformation/schemas/AWS_MediaTailor_VodSource.json create mode 100644 internal/service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 52ad6456d5..e164c4c495 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -10,7 +10,7 @@ meta_schema { path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json" } -# 789 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 801 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -620,6 +620,10 @@ 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" } @@ -684,6 +688,10 @@ 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" } @@ -715,6 +723,11 @@ resource_schema "aws_connect_contact_flow_module" { suppress_plural_data_source_generation = true } +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" + suppress_plural_data_source_generation = true +} + resource_schema "aws_connect_evaluation_form" { cloudformation_type_name = "AWS::Connect::EvaluationForm" @@ -838,6 +851,10 @@ resource_schema "aws_customerprofiles_object_type" { suppress_plural_data_source_generation = true } +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + resource_schema "aws_databrew_dataset" { cloudformation_type_name = "AWS::DataBrew::Dataset" } @@ -874,6 +891,10 @@ 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" } @@ -1095,6 +1116,10 @@ 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" } @@ -1107,6 +1132,11 @@ 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" } @@ -2124,6 +2154,11 @@ resource_schema "aws_lambda_function" { cloudformation_type_name = "AWS::Lambda::Function" } +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" + suppress_plural_data_source_generation = true +} + resource_schema "aws_lambda_permission" { cloudformation_type_name = "AWS::Lambda::Permission" suppress_plural_data_source_generation = true @@ -2402,6 +2437,20 @@ resource_schema "aws_mediapackage_packaging_group" { cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" } +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" @@ -2411,6 +2460,11 @@ resource_schema "aws_mediatailor_playback_configuration" { suppress_plural_data_source_generation = true } +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" } @@ -2680,8 +2734,7 @@ resource_schema "aws_pinpoint_in_app_template" { } resource_schema "aws_pipes_pipe" { - cloudformation_type_name = "AWS::Pipes::Pipe" - suppress_plural_data_source_generation = true + cloudformation_type_name = "AWS::Pipes::Pipe" } resource_schema "aws_proton_environment_account_connection" { @@ -3208,6 +3261,11 @@ 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_sagemaker_app" { cloudformation_type_name = "AWS::SageMaker::App" } diff --git a/internal/provider/generators/allschemas/available_schemas.2023-08-09.hcl b/internal/provider/generators/allschemas/available_schemas.2023-08-09.hcl new file mode 100644 index 0000000000..dcaf6ca425 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2023-08-09.hcl @@ -0,0 +1,3473 @@ +# 801 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_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_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" + suppress_plural_data_source_generation = true +} + +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_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +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_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_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_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_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_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_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +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_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" + 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_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + 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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_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_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_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codedeploy_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + 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_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_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_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" + 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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_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_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_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" + suppress_plural_data_source_generation = true +} + +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_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_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_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_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +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_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_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_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_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" + suppress_plural_data_source_generation = true +} + +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_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +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_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_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_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + 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_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_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_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_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_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" + suppress_plural_data_source_generation = true +} + +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_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" + suppress_plural_data_source_generation = true +} + +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_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_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_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediatailor_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" + suppress_plural_data_source_generation = true +} + +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_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_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_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" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_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_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +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_sns_topic_policy" { + cloudformation_type_name = "AWS::SNS::TopicPolicy" + 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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_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" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +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_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +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" + suppress_plural_data_source_generation = true +} + +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_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_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" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" + suppress_plural_data_source_generation = true +} + +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_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +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/plural_data_sources.go b/internal/provider/plural_data_sources.go index 0bd5808c15..a5342c3731 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -71,6 +71,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudtrail_channels -cftype AWS::CloudTrail::Channel -package cloudtrail ../aws/cloudtrail/channel_plural_data_source_gen.go ../aws/cloudtrail/channel_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudtrail_event_data_stores -cftype AWS::CloudTrail::EventDataStore -package cloudtrail ../aws/cloudtrail/event_data_store_plural_data_source_gen.go ../aws/cloudtrail/event_data_store_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudtrail_trails -cftype AWS::CloudTrail::Trail -package cloudtrail ../aws/cloudtrail/trail_plural_data_source_gen.go ../aws/cloudtrail/trail_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudwatch_alarms -cftype AWS::CloudWatch::Alarm -package cloudwatch ../aws/cloudwatch/alarm_plural_data_source_gen.go ../aws/cloudwatch/alarm_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudwatch_composite_alarms -cftype AWS::CloudWatch::CompositeAlarm -package cloudwatch ../aws/cloudwatch/composite_alarm_plural_data_source_gen.go ../aws/cloudwatch/composite_alarm_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_cloudwatch_metric_streams -cftype AWS::CloudWatch::MetricStream -package cloudwatch ../aws/cloudwatch/metric_stream_plural_data_source_gen.go ../aws/cloudwatch/metric_stream_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_codeartifact_domains -cftype AWS::CodeArtifact::Domain -package codeartifact ../aws/codeartifact/domain_plural_data_source_gen.go ../aws/codeartifact/domain_plural_data_source_gen_test.go @@ -82,6 +83,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_comprehend_document_classifiers -cftype AWS::Comprehend::DocumentClassifier -package comprehend ../aws/comprehend/document_classifier_plural_data_source_gen.go ../aws/comprehend/document_classifier_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_comprehend_flywheels -cftype AWS::Comprehend::Flywheel -package comprehend ../aws/comprehend/flywheel_plural_data_source_gen.go ../aws/comprehend/flywheel_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_config_aggregation_authorizations -cftype AWS::Config::AggregationAuthorization -package config ../aws/config/aggregation_authorization_plural_data_source_gen.go ../aws/config/aggregation_authorization_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_config_config_rules -cftype AWS::Config::ConfigRule -package config ../aws/config/config_rule_plural_data_source_gen.go ../aws/config/config_rule_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_config_configuration_aggregators -cftype AWS::Config::ConfigurationAggregator -package config ../aws/config/configuration_aggregator_plural_data_source_gen.go ../aws/config/configuration_aggregator_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_config_conformance_packs -cftype AWS::Config::ConformancePack -package config ../aws/config/conformance_pack_plural_data_source_gen.go ../aws/config/conformance_pack_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_config_organization_conformance_packs -cftype AWS::Config::OrganizationConformancePack -package config ../aws/config/organization_conformance_pack_plural_data_source_gen.go ../aws/config/organization_conformance_pack_plural_data_source_gen_test.go @@ -90,6 +92,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_cur_report_definitions -cftype AWS::CUR::ReportDefinition -package cur ../aws/cur/report_definition_plural_data_source_gen.go ../aws/cur/report_definition_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_customerprofiles_calculated_attribute_definitions -cftype AWS::CustomerProfiles::CalculatedAttributeDefinition -package customerprofiles ../aws/customerprofiles/calculated_attribute_definition_plural_data_source_gen.go ../aws/customerprofiles/calculated_attribute_definition_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_customerprofiles_domains -cftype AWS::CustomerProfiles::Domain -package customerprofiles ../aws/customerprofiles/domain_plural_data_source_gen.go ../aws/customerprofiles/domain_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_dms_replication_configs -cftype AWS::DMS::ReplicationConfig -package dms ../aws/dms/replication_config_plural_data_source_gen.go ../aws/dms/replication_config_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_databrew_datasets -cftype AWS::DataBrew::Dataset -package databrew ../aws/databrew/dataset_plural_data_source_gen.go ../aws/databrew/dataset_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_databrew_jobs -cftype AWS::DataBrew::Job -package databrew ../aws/databrew/job_plural_data_source_gen.go ../aws/databrew/job_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_databrew_projects -cftype AWS::DataBrew::Project -package databrew ../aws/databrew/project_plural_data_source_gen.go ../aws/databrew/project_plural_data_source_gen_test.go @@ -98,6 +101,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_databrew_schedules -cftype AWS::DataBrew::Schedule -package databrew ../aws/databrew/schedule_plural_data_source_gen.go ../aws/databrew/schedule_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_datapipeline_pipelines -cftype AWS::DataPipeline::Pipeline -package datapipeline ../aws/datapipeline/pipeline_plural_data_source_gen.go ../aws/datapipeline/pipeline_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_datasync_agents -cftype AWS::DataSync::Agent -package datasync ../aws/datasync/agent_plural_data_source_gen.go ../aws/datasync/agent_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_datasync_location_azure_blobs -cftype AWS::DataSync::LocationAzureBlob -package datasync ../aws/datasync/location_azure_blob_plural_data_source_gen.go ../aws/datasync/location_azure_blob_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_datasync_location_efs_plural -cftype AWS::DataSync::LocationEFS -package datasync ../aws/datasync/location_efs_plural_data_source_gen.go ../aws/datasync/location_efs_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_datasync_location_fsx_lustres -cftype AWS::DataSync::LocationFSxLustre -package datasync ../aws/datasync/location_fsx_lustre_plural_data_source_gen.go ../aws/datasync/location_fsx_lustre_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_datasync_location_fsx_ontaps -cftype AWS::DataSync::LocationFSxONTAP -package datasync ../aws/datasync/location_fsx_ontap_plural_data_source_gen.go ../aws/datasync/location_fsx_ontap_plural_data_source_gen_test.go @@ -147,6 +151,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_network_insights_analyses -cftype AWS::EC2::NetworkInsightsAnalysis -package ec2 ../aws/ec2/network_insights_analysis_plural_data_source_gen.go ../aws/ec2/network_insights_analysis_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_network_insights_paths -cftype AWS::EC2::NetworkInsightsPath -package ec2 ../aws/ec2/network_insights_path_plural_data_source_gen.go ../aws/ec2/network_insights_path_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_network_interfaces -cftype AWS::EC2::NetworkInterface -package ec2 ../aws/ec2/network_interface_plural_data_source_gen.go ../aws/ec2/network_interface_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_network_interface_attachments -cftype AWS::EC2::NetworkInterfaceAttachment -package ec2 ../aws/ec2/network_interface_attachment_plural_data_source_gen.go ../aws/ec2/network_interface_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_network_performance_metric_subscriptions -cftype AWS::EC2::NetworkPerformanceMetricSubscription -package ec2 ../aws/ec2/network_performance_metric_subscription_plural_data_source_gen.go ../aws/ec2/network_performance_metric_subscription_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_placement_groups -cftype AWS::EC2::PlacementGroup -package ec2 ../aws/ec2/placement_group_plural_data_source_gen.go ../aws/ec2/placement_group_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_prefix_lists -cftype AWS::EC2::PrefixList -package ec2 ../aws/ec2/prefix_list_plural_data_source_gen.go ../aws/ec2/prefix_list_plural_data_source_gen_test.go @@ -352,6 +357,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_mediapackage_channels -cftype AWS::MediaPackage::Channel -package mediapackage ../aws/mediapackage/channel_plural_data_source_gen.go ../aws/mediapackage/channel_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_mediapackage_origin_endpoints -cftype AWS::MediaPackage::OriginEndpoint -package mediapackage ../aws/mediapackage/origin_endpoint_plural_data_source_gen.go ../aws/mediapackage/origin_endpoint_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_mediapackage_packaging_groups -cftype AWS::MediaPackage::PackagingGroup -package mediapackage ../aws/mediapackage/packaging_group_plural_data_source_gen.go ../aws/mediapackage/packaging_group_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_mediatailor_channels -cftype AWS::MediaTailor::Channel -package mediatailor ../aws/mediatailor/channel_plural_data_source_gen.go ../aws/mediatailor/channel_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_acls -cftype AWS::MemoryDB::ACL -package memorydb ../aws/memorydb/acl_plural_data_source_gen.go ../aws/memorydb/acl_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_clusters -cftype AWS::MemoryDB::Cluster -package memorydb ../aws/memorydb/cluster_plural_data_source_gen.go ../aws/memorydb/cluster_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_memorydb_parameter_groups -cftype AWS::MemoryDB::ParameterGroup -package memorydb ../aws/memorydb/parameter_group_plural_data_source_gen.go ../aws/memorydb/parameter_group_plural_data_source_gen_test.go @@ -390,6 +396,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_personalize_schemas -cftype AWS::Personalize::Schema -package personalize ../aws/personalize/schema_plural_data_source_gen.go ../aws/personalize/schema_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_personalize_solutions -cftype AWS::Personalize::Solution -package personalize ../aws/personalize/solution_plural_data_source_gen.go ../aws/personalize/solution_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_pinpoint_in_app_templates -cftype AWS::Pinpoint::InAppTemplate -package pinpoint ../aws/pinpoint/in_app_template_plural_data_source_gen.go ../aws/pinpoint/in_app_template_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_pipes_pipes -cftype AWS::Pipes::Pipe -package pipes ../aws/pipes/pipe_plural_data_source_gen.go ../aws/pipes/pipe_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_proton_environment_templates -cftype AWS::Proton::EnvironmentTemplate -package proton ../aws/proton/environment_template_plural_data_source_gen.go ../aws/proton/environment_template_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_proton_service_templates -cftype AWS::Proton::ServiceTemplate -package proton ../aws/proton/service_template_plural_data_source_gen.go ../aws/proton/service_template_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ram_permissions -cftype AWS::RAM::Permission -package ram ../aws/ram/permission_plural_data_source_gen.go ../aws/ram/permission_plural_data_source_gen_test.go @@ -550,6 +557,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/detective" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/devopsguru" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/directoryservice" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dms" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/docdbelastic" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dynamodb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ec2" @@ -612,6 +620,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/managedblockchain" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediaconnect" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediapackage" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediatailor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/memorydb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/msk" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mwaa" @@ -627,6 +636,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/panorama" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/personalize" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pinpoint" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/pipes" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/proton" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ram" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/rds" diff --git a/internal/provider/resources.go b/internal/provider/resources.go index 03e9e86f3c..3b5e3ba359 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -123,6 +123,7 @@ //go:generate go run generators/resource/main.go -resource awscc_cloudtrail_event_data_store -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_EventDataStore.json -package cloudtrail -- ../aws/cloudtrail/event_data_store_resource_gen.go ../aws/cloudtrail/event_data_store_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cloudtrail_resource_policy -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_ResourcePolicy.json -package cloudtrail -- ../aws/cloudtrail/resource_policy_resource_gen.go ../aws/cloudtrail/resource_policy_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cloudtrail_trail -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_Trail.json -package cloudtrail -- ../aws/cloudtrail/trail_resource_gen.go ../aws/cloudtrail/trail_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_cloudwatch_alarm -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_Alarm.json -package cloudwatch -- ../aws/cloudwatch/alarm_resource_gen.go ../aws/cloudwatch/alarm_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cloudwatch_composite_alarm -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json -package cloudwatch -- ../aws/cloudwatch/composite_alarm_resource_gen.go ../aws/cloudwatch/composite_alarm_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cloudwatch_metric_stream -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_MetricStream.json -package cloudwatch -- ../aws/cloudwatch/metric_stream_resource_gen.go ../aws/cloudwatch/metric_stream_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_codeartifact_domain -cfschema ../service/cloudformation/schemas/AWS_CodeArtifact_Domain.json -package codeartifact -- ../aws/codeartifact/domain_resource_gen.go ../aws/codeartifact/domain_resource_gen_test.go @@ -136,6 +137,7 @@ //go:generate go run generators/resource/main.go -resource awscc_comprehend_document_classifier -cfschema ../service/cloudformation/schemas/AWS_Comprehend_DocumentClassifier.json -package comprehend -- ../aws/comprehend/document_classifier_resource_gen.go ../aws/comprehend/document_classifier_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_comprehend_flywheel -cfschema ../service/cloudformation/schemas/AWS_Comprehend_Flywheel.json -package comprehend -- ../aws/comprehend/flywheel_resource_gen.go ../aws/comprehend/flywheel_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_aggregation_authorization -cfschema ../service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json -package config -- ../aws/config/aggregation_authorization_resource_gen.go ../aws/config/aggregation_authorization_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_config_config_rule -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigRule.json -package config -- ../aws/config/config_rule_resource_gen.go ../aws/config/config_rule_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_configuration_aggregator -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json -package config -- ../aws/config/configuration_aggregator_resource_gen.go ../aws/config/configuration_aggregator_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config -- ../aws/config/conformance_pack_resource_gen.go ../aws/config/conformance_pack_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config -- ../aws/config/organization_conformance_pack_resource_gen.go ../aws/config/organization_conformance_pack_resource_gen_test.go @@ -143,6 +145,7 @@ //go:generate go run generators/resource/main.go -resource awscc_connect_approved_origin -cfschema ../service/cloudformation/schemas/AWS_Connect_ApprovedOrigin.json -package connect -- ../aws/connect/approved_origin_resource_gen.go ../aws/connect/approved_origin_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_contact_flow -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlow.json -package connect -- ../aws/connect/contact_flow_resource_gen.go ../aws/connect/contact_flow_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_contact_flow_module -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlowModule.json -package connect -- ../aws/connect/contact_flow_module_resource_gen.go ../aws/connect/contact_flow_module_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_connect_traffic_distribution_group -cfschema ../service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json -package connect -- ../aws/connect/traffic_distribution_group_resource_gen.go ../aws/connect/traffic_distribution_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_hours_of_operation -cfschema ../service/cloudformation/schemas/AWS_Connect_HoursOfOperation.json -package connect -- ../aws/connect/hours_of_operation_resource_gen.go ../aws/connect/hours_of_operation_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_instance_storage_config -cfschema ../service/cloudformation/schemas/AWS_Connect_InstanceStorageConfig.json -package connect -- ../aws/connect/instance_storage_config_resource_gen.go ../aws/connect/instance_storage_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_connect_integration_association -cfschema ../service/cloudformation/schemas/AWS_Connect_IntegrationAssociation.json -package connect -- ../aws/connect/integration_association_resource_gen.go ../aws/connect/integration_association_resource_gen_test.go @@ -163,6 +166,7 @@ //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_event_stream -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_EventStream.json -package customerprofiles -- ../aws/customerprofiles/event_stream_resource_gen.go ../aws/customerprofiles/event_stream_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_integration -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_Integration.json -package customerprofiles -- ../aws/customerprofiles/integration_resource_gen.go ../aws/customerprofiles/integration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_customerprofiles_object_type -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json -package customerprofiles -- ../aws/customerprofiles/object_type_resource_gen.go ../aws/customerprofiles/object_type_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_dms_replication_config -cfschema ../service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json -package dms -- ../aws/dms/replication_config_resource_gen.go ../aws/dms/replication_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_databrew_dataset -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Dataset.json -package databrew -- ../aws/databrew/dataset_resource_gen.go ../aws/databrew/dataset_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_databrew_job -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Job.json -package databrew -- ../aws/databrew/job_resource_gen.go ../aws/databrew/job_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_databrew_project -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Project.json -package databrew -- ../aws/databrew/project_resource_gen.go ../aws/databrew/project_resource_gen_test.go @@ -170,6 +174,7 @@ //go:generate go run generators/resource/main.go -resource awscc_databrew_schedule -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Schedule.json -package databrew -- ../aws/databrew/schedule_resource_gen.go ../aws/databrew/schedule_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datapipeline_pipeline -cfschema ../service/cloudformation/schemas/AWS_DataPipeline_Pipeline.json -package datapipeline -- ../aws/datapipeline/pipeline_resource_gen.go ../aws/datapipeline/pipeline_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datasync_agent -cfschema ../service/cloudformation/schemas/AWS_DataSync_Agent.json -package datasync -- ../aws/datasync/agent_resource_gen.go ../aws/datasync/agent_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_datasync_location_azure_blob -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json -package datasync -- ../aws/datasync/location_azure_blob_resource_gen.go ../aws/datasync/location_azure_blob_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datasync_location_efs -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationEFS.json -package datasync -- ../aws/datasync/location_efs_resource_gen.go ../aws/datasync/location_efs_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datasync_location_fsx_lustre -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationFSxLustre.json -package datasync -- ../aws/datasync/location_fsx_lustre_resource_gen.go ../aws/datasync/location_fsx_lustre_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_datasync_location_fsx_ontap -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationFSxONTAP.json -package datasync -- ../aws/datasync/location_fsx_ontap_resource_gen.go ../aws/datasync/location_fsx_ontap_resource_gen_test.go @@ -224,9 +229,11 @@ //go:generate go run generators/resource/main.go -resource awscc_ec2_network_insights_analysis -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInsightsAnalysis.json -package ec2 -- ../aws/ec2/network_insights_analysis_resource_gen.go ../aws/ec2/network_insights_analysis_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_network_insights_path -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json -package ec2 -- ../aws/ec2/network_insights_path_resource_gen.go ../aws/ec2/network_insights_path_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_network_interface -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInterface.json -package ec2 -- ../aws/ec2/network_interface_resource_gen.go ../aws/ec2/network_interface_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_network_interface_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json -package ec2 -- ../aws/ec2/network_interface_attachment_resource_gen.go ../aws/ec2/network_interface_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_network_performance_metric_subscription -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkPerformanceMetricSubscription.json -package ec2 -- ../aws/ec2/network_performance_metric_subscription_resource_gen.go ../aws/ec2/network_performance_metric_subscription_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_placement_group -cfschema ../service/cloudformation/schemas/AWS_EC2_PlacementGroup.json -package ec2 -- ../aws/ec2/placement_group_resource_gen.go ../aws/ec2/placement_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_prefix_list -cfschema ../service/cloudformation/schemas/AWS_EC2_PrefixList.json -package ec2 -- ../aws/ec2/prefix_list_resource_gen.go ../aws/ec2/prefix_list_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_route -cfschema ../service/cloudformation/schemas/AWS_EC2_Route.json -package ec2 -- ../aws/ec2/route_resource_gen.go ../aws/ec2/route_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_route_table -cfschema ../service/cloudformation/schemas/AWS_EC2_RouteTable.json -package ec2 -- ../aws/ec2/route_table_resource_gen.go ../aws/ec2/route_table_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_spot_fleet -cfschema ../service/cloudformation/schemas/AWS_EC2_SpotFleet.json -package ec2 -- ../aws/ec2/spot_fleet_resource_gen.go ../aws/ec2/spot_fleet_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_subnet -cfschema ../service/cloudformation/schemas/AWS_EC2_Subnet.json -package ec2 -- ../aws/ec2/subnet_resource_gen.go ../aws/ec2/subnet_resource_gen_test.go @@ -430,6 +437,7 @@ //go:generate go run generators/resource/main.go -resource awscc_lambda_code_signing_config -cfschema ../service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json -package lambda -- ../aws/lambda/code_signing_config_resource_gen.go ../aws/lambda/code_signing_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lambda_event_source_mapping -cfschema ../service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json -package lambda -- ../aws/lambda/event_source_mapping_resource_gen.go ../aws/lambda/event_source_mapping_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lambda_function -cfschema ../service/cloudformation/schemas/AWS_Lambda_Function.json -package lambda -- ../aws/lambda/function_resource_gen.go ../aws/lambda/function_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_lambda_layer_version_permission -cfschema ../service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json -package lambda -- ../aws/lambda/layer_version_permission_resource_gen.go ../aws/lambda/layer_version_permission_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lambda_permission -cfschema ../service/cloudformation/schemas/AWS_Lambda_Permission.json -package lambda -- ../aws/lambda/permission_resource_gen.go ../aws/lambda/permission_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lambda_url -cfschema ../service/cloudformation/schemas/AWS_Lambda_Url.json -package lambda -- ../aws/lambda/url_resource_gen.go ../aws/lambda/url_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_lex_bot -cfschema ../service/cloudformation/schemas/AWS_Lex_Bot.json -package lex -- ../aws/lex/bot_resource_gen.go ../aws/lex/bot_resource_gen_test.go @@ -494,6 +502,10 @@ //go:generate go run generators/resource/main.go -resource awscc_mediapackage_origin_endpoint -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json -package mediapackage -- ../aws/mediapackage/origin_endpoint_resource_gen.go ../aws/mediapackage/origin_endpoint_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_mediapackage_packaging_configuration -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_PackagingConfiguration.json -package mediapackage -- ../aws/mediapackage/packaging_configuration_resource_gen.go ../aws/mediapackage/packaging_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_mediapackage_packaging_group -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_PackagingGroup.json -package mediapackage -- ../aws/mediapackage/packaging_group_resource_gen.go ../aws/mediapackage/packaging_group_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_mediatailor_channel -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_Channel.json -package mediatailor -- ../aws/mediatailor/channel_resource_gen.go ../aws/mediatailor/channel_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_mediatailor_channel_policy -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json -package mediatailor -- ../aws/mediatailor/channel_policy_resource_gen.go ../aws/mediatailor/channel_policy_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_mediatailor_live_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json -package mediatailor -- ../aws/mediatailor/live_source_resource_gen.go ../aws/mediatailor/live_source_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_mediatailor_vod_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_VodSource.json -package mediatailor -- ../aws/mediatailor/vod_source_resource_gen.go ../aws/mediatailor/vod_source_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_acl -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ACL.json -package memorydb -- ../aws/memorydb/acl_resource_gen.go ../aws/memorydb/acl_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_Cluster.json -package memorydb -- ../aws/memorydb/cluster_resource_gen.go ../aws/memorydb/cluster_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_memorydb_parameter_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ParameterGroup.json -package memorydb -- ../aws/memorydb/parameter_group_resource_gen.go ../aws/memorydb/parameter_group_resource_gen_test.go @@ -657,6 +669,7 @@ //go:generate go run generators/resource/main.go -resource awscc_sso_instance_access_control_attribute_configuration -cfschema ../service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json -package sso -- ../aws/sso/instance_access_control_attribute_configuration_resource_gen.go ../aws/sso/instance_access_control_attribute_configuration_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sso_permission_set -cfschema ../service/cloudformation/schemas/AWS_SSO_PermissionSet.json -package sso -- ../aws/sso/permission_set_resource_gen.go ../aws/sso/permission_set_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sqs_queue -cfschema ../service/cloudformation/schemas/AWS_SQS_Queue.json -package sqs -- ../aws/sqs/queue_resource_gen.go ../aws/sqs/queue_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_sqs_queue_inline_policy -cfschema ../service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json -package sqs -- ../aws/sqs/queue_inline_policy_resource_gen.go ../aws/sqs/queue_inline_policy_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_app -cfschema ../service/cloudformation/schemas/AWS_SageMaker_App.json -package sagemaker -- ../aws/sagemaker/app_resource_gen.go ../aws/sagemaker/app_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_app_image_config -cfschema ../service/cloudformation/schemas/AWS_SageMaker_AppImageConfig.json -package sagemaker -- ../aws/sagemaker/app_image_config_resource_gen.go ../aws/sagemaker/app_image_config_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_sagemaker_data_quality_job_definition -cfschema ../service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json -package sagemaker -- ../aws/sagemaker/data_quality_job_definition_resource_gen.go ../aws/sagemaker/data_quality_job_definition_resource_gen_test.go @@ -782,6 +795,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/detective" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/devopsguru" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/directoryservice" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dms" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/docdbelastic" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dynamodb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ec2" @@ -849,6 +863,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/managedblockchain" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediaconnect" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediapackage" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediatailor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/memorydb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/msk" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mwaa" diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 88c030d33a..6b78fe7580 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -123,6 +123,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudtrail_event_data_store -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_EventDataStore.json -package cloudtrail ../aws/cloudtrail/event_data_store_singular_data_source_gen.go ../aws/cloudtrail/event_data_store_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudtrail_resource_policy -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_ResourcePolicy.json -package cloudtrail ../aws/cloudtrail/resource_policy_singular_data_source_gen.go ../aws/cloudtrail/resource_policy_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudtrail_trail -cfschema ../service/cloudformation/schemas/AWS_CloudTrail_Trail.json -package cloudtrail ../aws/cloudtrail/trail_singular_data_source_gen.go ../aws/cloudtrail/trail_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudwatch_alarm -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_Alarm.json -package cloudwatch ../aws/cloudwatch/alarm_singular_data_source_gen.go ../aws/cloudwatch/alarm_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudwatch_composite_alarm -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_CompositeAlarm.json -package cloudwatch ../aws/cloudwatch/composite_alarm_singular_data_source_gen.go ../aws/cloudwatch/composite_alarm_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cloudwatch_metric_stream -cfschema ../service/cloudformation/schemas/AWS_CloudWatch_MetricStream.json -package cloudwatch ../aws/cloudwatch/metric_stream_singular_data_source_gen.go ../aws/cloudwatch/metric_stream_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_codeartifact_domain -cfschema ../service/cloudformation/schemas/AWS_CodeArtifact_Domain.json -package codeartifact ../aws/codeartifact/domain_singular_data_source_gen.go ../aws/codeartifact/domain_singular_data_source_gen_test.go @@ -136,6 +137,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_comprehend_document_classifier -cfschema ../service/cloudformation/schemas/AWS_Comprehend_DocumentClassifier.json -package comprehend ../aws/comprehend/document_classifier_singular_data_source_gen.go ../aws/comprehend/document_classifier_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_comprehend_flywheel -cfschema ../service/cloudformation/schemas/AWS_Comprehend_Flywheel.json -package comprehend ../aws/comprehend/flywheel_singular_data_source_gen.go ../aws/comprehend/flywheel_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_aggregation_authorization -cfschema ../service/cloudformation/schemas/AWS_Config_AggregationAuthorization.json -package config ../aws/config/aggregation_authorization_singular_data_source_gen.go ../aws/config/aggregation_authorization_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_config_config_rule -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigRule.json -package config ../aws/config/config_rule_singular_data_source_gen.go ../aws/config/config_rule_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_configuration_aggregator -cfschema ../service/cloudformation/schemas/AWS_Config_ConfigurationAggregator.json -package config ../aws/config/configuration_aggregator_singular_data_source_gen.go ../aws/config/configuration_aggregator_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_ConformancePack.json -package config ../aws/config/conformance_pack_singular_data_source_gen.go ../aws/config/conformance_pack_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_config_organization_conformance_pack -cfschema ../service/cloudformation/schemas/AWS_Config_OrganizationConformancePack.json -package config ../aws/config/organization_conformance_pack_singular_data_source_gen.go ../aws/config/organization_conformance_pack_singular_data_source_gen_test.go @@ -143,6 +145,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_approved_origin -cfschema ../service/cloudformation/schemas/AWS_Connect_ApprovedOrigin.json -package connect ../aws/connect/approved_origin_singular_data_source_gen.go ../aws/connect/approved_origin_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_contact_flow -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlow.json -package connect ../aws/connect/contact_flow_singular_data_source_gen.go ../aws/connect/contact_flow_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_contact_flow_module -cfschema ../service/cloudformation/schemas/AWS_Connect_ContactFlowModule.json -package connect ../aws/connect/contact_flow_module_singular_data_source_gen.go ../aws/connect/contact_flow_module_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_traffic_distribution_group -cfschema ../service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json -package connect ../aws/connect/traffic_distribution_group_singular_data_source_gen.go ../aws/connect/traffic_distribution_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_hours_of_operation -cfschema ../service/cloudformation/schemas/AWS_Connect_HoursOfOperation.json -package connect ../aws/connect/hours_of_operation_singular_data_source_gen.go ../aws/connect/hours_of_operation_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_instance_storage_config -cfschema ../service/cloudformation/schemas/AWS_Connect_InstanceStorageConfig.json -package connect ../aws/connect/instance_storage_config_singular_data_source_gen.go ../aws/connect/instance_storage_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_connect_integration_association -cfschema ../service/cloudformation/schemas/AWS_Connect_IntegrationAssociation.json -package connect ../aws/connect/integration_association_singular_data_source_gen.go ../aws/connect/integration_association_singular_data_source_gen_test.go @@ -163,6 +166,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_event_stream -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_EventStream.json -package customerprofiles ../aws/customerprofiles/event_stream_singular_data_source_gen.go ../aws/customerprofiles/event_stream_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_integration -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_Integration.json -package customerprofiles ../aws/customerprofiles/integration_singular_data_source_gen.go ../aws/customerprofiles/integration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_customerprofiles_object_type -cfschema ../service/cloudformation/schemas/AWS_CustomerProfiles_ObjectType.json -package customerprofiles ../aws/customerprofiles/object_type_singular_data_source_gen.go ../aws/customerprofiles/object_type_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_dms_replication_config -cfschema ../service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json -package dms ../aws/dms/replication_config_singular_data_source_gen.go ../aws/dms/replication_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_databrew_dataset -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Dataset.json -package databrew ../aws/databrew/dataset_singular_data_source_gen.go ../aws/databrew/dataset_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_databrew_job -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Job.json -package databrew ../aws/databrew/job_singular_data_source_gen.go ../aws/databrew/job_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_databrew_project -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Project.json -package databrew ../aws/databrew/project_singular_data_source_gen.go ../aws/databrew/project_singular_data_source_gen_test.go @@ -170,6 +174,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_databrew_schedule -cfschema ../service/cloudformation/schemas/AWS_DataBrew_Schedule.json -package databrew ../aws/databrew/schedule_singular_data_source_gen.go ../aws/databrew/schedule_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datapipeline_pipeline -cfschema ../service/cloudformation/schemas/AWS_DataPipeline_Pipeline.json -package datapipeline ../aws/datapipeline/pipeline_singular_data_source_gen.go ../aws/datapipeline/pipeline_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datasync_agent -cfschema ../service/cloudformation/schemas/AWS_DataSync_Agent.json -package datasync ../aws/datasync/agent_singular_data_source_gen.go ../aws/datasync/agent_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_datasync_location_azure_blob -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json -package datasync ../aws/datasync/location_azure_blob_singular_data_source_gen.go ../aws/datasync/location_azure_blob_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datasync_location_efs -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationEFS.json -package datasync ../aws/datasync/location_efs_singular_data_source_gen.go ../aws/datasync/location_efs_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datasync_location_fsx_lustre -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationFSxLustre.json -package datasync ../aws/datasync/location_fsx_lustre_singular_data_source_gen.go ../aws/datasync/location_fsx_lustre_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_datasync_location_fsx_ontap -cfschema ../service/cloudformation/schemas/AWS_DataSync_LocationFSxONTAP.json -package datasync ../aws/datasync/location_fsx_ontap_singular_data_source_gen.go ../aws/datasync/location_fsx_ontap_singular_data_source_gen_test.go @@ -224,9 +229,11 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_network_insights_analysis -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInsightsAnalysis.json -package ec2 ../aws/ec2/network_insights_analysis_singular_data_source_gen.go ../aws/ec2/network_insights_analysis_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_network_insights_path -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInsightsPath.json -package ec2 ../aws/ec2/network_insights_path_singular_data_source_gen.go ../aws/ec2/network_insights_path_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_network_interface -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInterface.json -package ec2 ../aws/ec2/network_interface_singular_data_source_gen.go ../aws/ec2/network_interface_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_network_interface_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json -package ec2 ../aws/ec2/network_interface_attachment_singular_data_source_gen.go ../aws/ec2/network_interface_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_network_performance_metric_subscription -cfschema ../service/cloudformation/schemas/AWS_EC2_NetworkPerformanceMetricSubscription.json -package ec2 ../aws/ec2/network_performance_metric_subscription_singular_data_source_gen.go ../aws/ec2/network_performance_metric_subscription_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_placement_group -cfschema ../service/cloudformation/schemas/AWS_EC2_PlacementGroup.json -package ec2 ../aws/ec2/placement_group_singular_data_source_gen.go ../aws/ec2/placement_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_prefix_list -cfschema ../service/cloudformation/schemas/AWS_EC2_PrefixList.json -package ec2 ../aws/ec2/prefix_list_singular_data_source_gen.go ../aws/ec2/prefix_list_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_route -cfschema ../service/cloudformation/schemas/AWS_EC2_Route.json -package ec2 ../aws/ec2/route_singular_data_source_gen.go ../aws/ec2/route_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_route_table -cfschema ../service/cloudformation/schemas/AWS_EC2_RouteTable.json -package ec2 ../aws/ec2/route_table_singular_data_source_gen.go ../aws/ec2/route_table_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_spot_fleet -cfschema ../service/cloudformation/schemas/AWS_EC2_SpotFleet.json -package ec2 ../aws/ec2/spot_fleet_singular_data_source_gen.go ../aws/ec2/spot_fleet_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_subnet -cfschema ../service/cloudformation/schemas/AWS_EC2_Subnet.json -package ec2 ../aws/ec2/subnet_singular_data_source_gen.go ../aws/ec2/subnet_singular_data_source_gen_test.go @@ -430,6 +437,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_code_signing_config -cfschema ../service/cloudformation/schemas/AWS_Lambda_CodeSigningConfig.json -package lambda ../aws/lambda/code_signing_config_singular_data_source_gen.go ../aws/lambda/code_signing_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_event_source_mapping -cfschema ../service/cloudformation/schemas/AWS_Lambda_EventSourceMapping.json -package lambda ../aws/lambda/event_source_mapping_singular_data_source_gen.go ../aws/lambda/event_source_mapping_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_function -cfschema ../service/cloudformation/schemas/AWS_Lambda_Function.json -package lambda ../aws/lambda/function_singular_data_source_gen.go ../aws/lambda/function_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_layer_version_permission -cfschema ../service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json -package lambda ../aws/lambda/layer_version_permission_singular_data_source_gen.go ../aws/lambda/layer_version_permission_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_permission -cfschema ../service/cloudformation/schemas/AWS_Lambda_Permission.json -package lambda ../aws/lambda/permission_singular_data_source_gen.go ../aws/lambda/permission_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lambda_url -cfschema ../service/cloudformation/schemas/AWS_Lambda_Url.json -package lambda ../aws/lambda/url_singular_data_source_gen.go ../aws/lambda/url_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_lex_bot -cfschema ../service/cloudformation/schemas/AWS_Lex_Bot.json -package lex ../aws/lex/bot_singular_data_source_gen.go ../aws/lex/bot_singular_data_source_gen_test.go @@ -494,6 +502,10 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_mediapackage_origin_endpoint -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_OriginEndpoint.json -package mediapackage ../aws/mediapackage/origin_endpoint_singular_data_source_gen.go ../aws/mediapackage/origin_endpoint_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_mediapackage_packaging_configuration -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_PackagingConfiguration.json -package mediapackage ../aws/mediapackage/packaging_configuration_singular_data_source_gen.go ../aws/mediapackage/packaging_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_mediapackage_packaging_group -cfschema ../service/cloudformation/schemas/AWS_MediaPackage_PackagingGroup.json -package mediapackage ../aws/mediapackage/packaging_group_singular_data_source_gen.go ../aws/mediapackage/packaging_group_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_mediatailor_channel -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_Channel.json -package mediatailor ../aws/mediatailor/channel_singular_data_source_gen.go ../aws/mediatailor/channel_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_mediatailor_channel_policy -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json -package mediatailor ../aws/mediatailor/channel_policy_singular_data_source_gen.go ../aws/mediatailor/channel_policy_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_mediatailor_live_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json -package mediatailor ../aws/mediatailor/live_source_singular_data_source_gen.go ../aws/mediatailor/live_source_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_mediatailor_vod_source -cfschema ../service/cloudformation/schemas/AWS_MediaTailor_VodSource.json -package mediatailor ../aws/mediatailor/vod_source_singular_data_source_gen.go ../aws/mediatailor/vod_source_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_acl -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ACL.json -package memorydb ../aws/memorydb/acl_singular_data_source_gen.go ../aws/memorydb/acl_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_cluster -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_Cluster.json -package memorydb ../aws/memorydb/cluster_singular_data_source_gen.go ../aws/memorydb/cluster_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_memorydb_parameter_group -cfschema ../service/cloudformation/schemas/AWS_MemoryDB_ParameterGroup.json -package memorydb ../aws/memorydb/parameter_group_singular_data_source_gen.go ../aws/memorydb/parameter_group_singular_data_source_gen_test.go @@ -657,6 +669,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_sso_instance_access_control_attribute_configuration -cfschema ../service/cloudformation/schemas/AWS_SSO_InstanceAccessControlAttributeConfiguration.json -package sso ../aws/sso/instance_access_control_attribute_configuration_singular_data_source_gen.go ../aws/sso/instance_access_control_attribute_configuration_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sso_permission_set -cfschema ../service/cloudformation/schemas/AWS_SSO_PermissionSet.json -package sso ../aws/sso/permission_set_singular_data_source_gen.go ../aws/sso/permission_set_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sqs_queue -cfschema ../service/cloudformation/schemas/AWS_SQS_Queue.json -package sqs ../aws/sqs/queue_singular_data_source_gen.go ../aws/sqs/queue_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_sqs_queue_inline_policy -cfschema ../service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json -package sqs ../aws/sqs/queue_inline_policy_singular_data_source_gen.go ../aws/sqs/queue_inline_policy_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_app -cfschema ../service/cloudformation/schemas/AWS_SageMaker_App.json -package sagemaker ../aws/sagemaker/app_singular_data_source_gen.go ../aws/sagemaker/app_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_app_image_config -cfschema ../service/cloudformation/schemas/AWS_SageMaker_AppImageConfig.json -package sagemaker ../aws/sagemaker/app_image_config_singular_data_source_gen.go ../aws/sagemaker/app_image_config_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_sagemaker_data_quality_job_definition -cfschema ../service/cloudformation/schemas/AWS_SageMaker_DataQualityJobDefinition.json -package sagemaker ../aws/sagemaker/data_quality_job_definition_singular_data_source_gen.go ../aws/sagemaker/data_quality_job_definition_singular_data_source_gen_test.go @@ -782,6 +795,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/detective" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/devopsguru" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/directoryservice" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dms" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/docdbelastic" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/dynamodb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/ec2" @@ -849,6 +863,7 @@ import ( _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/managedblockchain" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediaconnect" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediapackage" + _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mediatailor" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/memorydb" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/msk" _ "github.com/hashicorp/terraform-provider-awscc/internal/aws/mwaa" diff --git a/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json b/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json new file mode 100644 index 0000000000..2e05086b61 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_CloudWatch_Alarm.json @@ -0,0 +1,275 @@ +{ + "typeName": "AWS::CloudWatch::Alarm", + "description": "Resource Type definition for AWS::CloudWatch::Alarm", + "additionalProperties": false, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "properties": { + "ThresholdMetricId": { + "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + "type": "string" + }, + "EvaluateLowSampleCountPercentile": { + "description": "Used only for alarms based on percentiles.", + "type": "string" + }, + "ExtendedStatistic": { + "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.", + "type": "string" + }, + "ComparisonOperator": { + "description": "The arithmetic operation to use when comparing the specified statistic and threshold.", + "type": "string" + }, + "TreatMissingData": { + "description": "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing.", + "type": "string" + }, + "Dimensions": { + "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + } + }, + "Period": { + "description": "The period in seconds, over which the statistic is applied.", + "type": "integer" + }, + "EvaluationPeriods": { + "description": "The number of periods over which data is compared to the specified threshold.", + "type": "integer" + }, + "Unit": { + "description": "The unit of the metric associated with the alarm.", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric associated with the alarm.", + "type": "string" + }, + "OKActions": { + "description": "The actions to execute when this alarm transitions to the OK state from any other state.", + "type": "array", + "uniqueItems": false, + "items": { + "type": "string" + } + }, + "AlarmActions": { + "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state.", + "type": "array", + "uniqueItems": false, + "items": { + "type": "string" + } + }, + "MetricName": { + "description": "The name of the metric associated with the alarm.", + "type": "string" + }, + "ActionsEnabled": { + "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + "type": "boolean", + "default": true + }, + "Metrics": { + "description": "An array that enables you to create an alarm based on the result of a metric math expression.", + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/MetricDataQuery" + } + }, + "AlarmDescription": { + "description": "The description of the alarm.", + "type": "string" + }, + "AlarmName": { + "description": "The name of the alarm.", + "type": "string" + }, + "Statistic": { + "description": "The statistic for the metric associated with the alarm, other than percentile.", + "type": "string" + }, + "InsufficientDataActions": { + "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state.", + "type": "array", + "uniqueItems": false, + "items": { + "type": "string" + } + }, + "Arn": { + "description": "Amazon Resource Name is a unique name for each resource.", + "type": "string" + }, + "DatapointsToAlarm": { + "description": "The number of datapoints that must be breaching to trigger the alarm.", + "type": "integer" + }, + "Threshold": { + "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + "type": "number" + } + }, + "definitions": { + "MetricStat": { + "description": "This structure defines the metric to be returned, along with the statistics, period, and units.", + "type": "object", + "additionalProperties": false, + "properties": { + "Period": { + "description": "The granularity, in seconds, of the returned data points.", + "type": "integer" + }, + "Metric": { + "description": "The metric to return, including the metric name, namespace, and dimensions.", + "$ref": "#/definitions/Metric" + }, + "Stat": { + "description": "The statistic to return.", + "type": "string" + }, + "Unit": { + "description": "The unit to use for the returned data points.", + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ] + }, + "Metric": { + "description": "The Metric property type represents a specific metric.", + "type": "object", + "additionalProperties": false, + "properties": { + "MetricName": { + "description": "The name of the metric.", + "type": "string" + }, + "Dimensions": { + "description": "The dimensions for the metric.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + } + }, + "Namespace": { + "description": "The namespace of the metric.", + "type": "string" + } + } + }, + "Dimension": { + "description": "Dimensions are arbitrary name/value pairs that can be associated with a CloudWatch metric.", + "type": "object", + "additionalProperties": false, + "properties": { + "Value": { + "description": "The value for the dimension.", + "type": "string" + }, + "Name": { + "description": "The name of the dimension.", + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ] + }, + "MetricDataQuery": { + "description": "This property type specifies the metric data to return, and whether this call is just retrieving a batch set of data for one metric, or is performing a math expression on metric data.", + "type": "object", + "additionalProperties": false, + "properties": { + "Label": { + "description": "A human-readable label for this metric or expression.", + "type": "string" + }, + "MetricStat": { + "description": "The metric to be returned, along with statistics, period, and units.", + "$ref": "#/definitions/MetricStat" + }, + "Id": { + "description": "A short name used to tie this object to the results in the response.", + "type": "string" + }, + "ReturnData": { + "description": "This option indicates whether to return the timestamps and raw data values of this metric.", + "type": "boolean" + }, + "Expression": { + "description": "The math expression to be performed on the returned data.", + "type": "string" + }, + "Period": { + "description": "The period in seconds, over which the statistic is applied.", + "type": "integer" + }, + "AccountId": { + "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", + "type": "string" + } + }, + "required": [ + "Id" + ] + } + }, + "required": [ + "ComparisonOperator", + "EvaluationPeriods" + ], + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + } + }, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "taggable": false + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Config_ConfigRule.json b/internal/service/cloudformation/schemas/AWS_Config_ConfigRule.json new file mode 100644 index 0000000000..5a80a7f787 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Config_ConfigRule.json @@ -0,0 +1,227 @@ +{ + "typeName": "AWS::Config::ConfigRule", + "description": "Schema for AWS Config ConfigRule", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "definitions": { + "Scope": { + "type": "object", + "description": "Scope to constrain which resources can trigger the rule", + "additionalProperties": false, + "properties": { + "TagKey": { + "type": "string", + "description": "Tag key applied only to resources which we want to trigger the rule" + }, + "ComplianceResourceTypes": { + "type": "array", + "description": "Resource types of resources which we want to trigger the rule", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "TagValue": { + "type": "string", + "description": "Tag value applied only to resources which we want to trigger the rule" + }, + "ComplianceResourceId": { + "type": "string", + "description": "ID of the only one resource which we want to trigger the rule" + } + } + }, + "CustomPolicyDetails": { + "type": "object", + "description": "Custom policy details when rule is custom owned", + "additionalProperties": false, + "properties": { + "EnableDebugLogDelivery": { + "type": "boolean", + "description": "Logging toggle for custom policy rule" + }, + "PolicyText": { + "type": "string", + "description": "Policy definition containing logic for custom policy rule" + }, + "PolicyRuntime": { + "type": "string", + "description": "Runtime system for custom policy rule" + } + } + }, + "SourceDetail": { + "type": "object", + "description": "Source and message type that can trigger the rule", + "additionalProperties": false, + "properties": { + "EventSource": { + "type": "string", + "description": "Source of event that can trigger the rule" + }, + "MaximumExecutionFrequency": { + "type": "string", + "description": "Frequency at which the rule has to be evaluated" + }, + "MessageType": { + "type": "string", + "description": "Notification type that can trigger the rule" + } + }, + "required": [ + "EventSource", + "MessageType" + ] + }, + "Source": { + "type": "object", + "description": "Source of events for the config rule", + "additionalProperties": false, + "properties": { + "CustomPolicyDetails": { + "description": "Custom policy details when rule is custom owned", + "$ref": "#/definitions/CustomPolicyDetails" + }, + "SourceIdentifier": { + "type": "string", + "description": "Identifier for the source of events" + }, + "Owner": { + "type": "string", + "description": "Owner of the config rule" + }, + "SourceDetails": { + "type": "array", + "description": "List of message types that can trigger the rule", + "uniqueItems": true, + "items": { + "description": "Source and message type that can trigger the rule", + "$ref": "#/definitions/SourceDetail" + } + } + }, + "required": [ + "Owner" + ] + }, + "EvaluationModeConfiguration": { + "type": "object", + "description": "Evaluation mode for the AWS Config rule", + "additionalProperties": false, + "properties": { + "Mode": { + "type": "string", + "description": "Mode of evaluation of AWS Config rule" + } + } + } + }, + "properties": { + "ConfigRuleId": { + "type": "string", + "description": "ID of the config rule" + }, + "Description": { + "type": "string", + "description": "Description provided for the AWS Config rule" + }, + "Scope": { + "description": "Scope to constrain which resources can trigger the AWS Config rule", + "$ref": "#/definitions/Scope" + }, + "ConfigRuleName": { + "type": "string", + "description": "Name for the AWS Config rule" + }, + "Arn": { + "type": "string", + "description": "ARN generated for the AWS Config rule " + }, + "Compliance": { + "type": "object", + "description": "Compliance details of the Config rule", + "additionalProperties": false, + "properties": { + "Type": { + "type": "string", + "description": "Compliance type determined by the Config rule" + } + } + }, + "MaximumExecutionFrequency": { + "type": "string", + "description": "Maximum frequency at which the rule has to be evaluated" + }, + "Source": { + "description": "Source of events for the AWS Config rule", + "$ref": "#/definitions/Source" + }, + "InputParameters": { + "type": [ + "string", + "object" + ], + "description": "JSON string passed the Lambda function" + }, + "EvaluationModes": { + "type": "array", + "description": "List of EvaluationModeConfiguration objects", + "uniqueItems": false, + "items": { + "description": "Mode of evaluation of AWS Config rule", + "$ref": "#/definitions/EvaluationModeConfiguration" + } + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false, + "required": [ + "Source" + ], + "createOnlyProperties": [ + "/properties/ConfigRuleName" + ], + "primaryIdentifier": [ + "/properties/ConfigRuleName" + ], + "readOnlyProperties": [ + "/properties/ConfigRuleId", + "/properties/Compliance/Type", + "/properties/Arn" + ], + "writeOnlyProperties": [ + "/properties/Source/CustomPolicyDetails/PolicyText" + ], + "handlers": { + "create": { + "permissions": [ + "config:PutConfigRule", + "config:DescribeConfigRules" + ] + }, + "read": { + "permissions": [ + "config:DescribeConfigRules", + "config:DescribeComplianceByConfigRule" + ] + }, + "delete": { + "permissions": [ + "config:DeleteConfigRule", + "config:DescribeConfigRules" + ] + }, + "list": { + "permissions": [ + "config:DescribeConfigRules" + ] + }, + "update": { + "permissions": [ + "config:PutConfigRule", + "config:DescribeConfigRules" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json b/internal/service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json new file mode 100644 index 0000000000..85c86dc7f5 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Connect_TrafficDistributionGroup.json @@ -0,0 +1,140 @@ +{ + "typeName": "AWS::Connect::TrafficDistributionGroup", + "description": "Resource Type definition for AWS::Connect::TrafficDistributionGroup", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 1 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": 1, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance that has been replicated.", + "type": "string", + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "minLength": 1, + "maxLength": 250 + }, + "TrafficDistributionGroupArn": { + "description": "The identifier of the traffic distribution group.", + "type": "string", + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:traffic-distribution-group/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" + }, + "Description": { + "description": "A description for the traffic distribution group.", + "type": "string", + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "minLength": 1, + "maxLength": 250 + }, + "Name": { + "description": "The name for the traffic distribution group.", + "type": "string", + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "The status of the traffic distribution group.", + "type": "string", + "enum": [ + "CREATION_IN_PROGRESS", + "ACTIVE", + "CREATION_FAILED", + "PENDING_DELETION", + "DELETION_FAILED", + "UPDATE_IN_PROGRESS" + ] + }, + "Tags": { + "type": "array", + "maxItems": 50, + "uniqueItems": true, + "insertionOrder": false, + "description": "One or more tags.", + "items": { + "$ref": "#/definitions/Tag" + } + }, + "IsDefault": { + "description": "If this is the default traffic distribution group.", + "type": "boolean" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "additionalProperties": false, + "required": [ + "InstanceArn", + "Name" + ], + "readOnlyProperties": [ + "/properties/TrafficDistributionGroupArn", + "/properties/Status", + "/properties/IsDefault" + ], + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name" + ], + "primaryIdentifier": [ + "/properties/TrafficDistributionGroupArn" + ], + "handlers": { + "create": { + "permissions": [ + "connect:CreateTrafficDistributionGroup", + "connect:DescribeTrafficDistributionGroup", + "connect:TagResource" + ] + }, + "read": { + "permissions": [ + "connect:DescribeTrafficDistributionGroup" + ] + }, + "update": { + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteTrafficDistributionGroup", + "connect:DescribeTrafficDistributionGroup", + "connect:UntagResource" + ] + }, + "list": { + "permissions": [ + "connect:ListTrafficDistributionGroups" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json b/internal/service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json new file mode 100644 index 0000000000..e9826e9499 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_DMS_ReplicationConfig.json @@ -0,0 +1,176 @@ +{ + "typeName": "AWS::DMS::ReplicationConfig", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms", + "description": "A replication configuration that you later provide to configure and start a AWS DMS Serverless replication", + "definitions": { + "ComputeConfig": { + "description": "Configuration parameters for provisioning a AWS DMS Serverless replication", + "type": "object", + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "DnsNameServers": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MaxCapacityUnits": { + "type": "integer" + }, + "MinCapacityUnits": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ReplicationSubnetGroupId": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "MaxCapacityUnits" + ], + "additionalProperties": false + }, + "Tag": { + "type": "object", + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "

Tag key.

" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "description": "

Tag value.

" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "ReplicationConfigIdentifier": { + "description": "A unique identifier of replication configuration", + "type": "string" + }, + "ReplicationConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Replication Config", + "type": "string" + }, + "SourceEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + }, + "TargetEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + }, + "ReplicationType": { + "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", + "type": "string", + "enum": [ + "full-load", + "full-load-and-cdc", + "cdc" + ] + }, + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "ReplicationSettings": { + "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", + "type": "object" + }, + "SupplementalSettings": { + "description": "JSON settings for specifying supplemental data", + "type": "object" + }, + "ResourceIdentifier": { + "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + "type": "string" + }, + "TableMappings": { + "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + "type": "object" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

" + } + }, + "readOnlyProperties": [ + "/Properties/ReplicationConfigArn" + ], + "primaryIdentifier": [ + "/properties/ReplicationConfigArn" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "additionalProperties": false, + "handlers": { + "create": { + "permissions": [ + "dms:CreateReplicationConfig", + "dms:AddTagsToResource", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:ModifyReplicationConfig", + "dms:AddTagsToResource", + "dms:RemoveTagsToResource", + "dms:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:DeleteReplicationConfig", + "dms:ListTagsForResource" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json b/internal/service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json new file mode 100644 index 0000000000..e3c1e917bc --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_DataSync_LocationAzureBlob.json @@ -0,0 +1,188 @@ +{ + "typeName": "AWS::DataSync::LocationAzureBlob", + "description": "Resource schema for AWS::DataSync::LocationAzureBlob.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "definitions": { + "AzureBlobSasConfiguration": { + "additionalProperties": false, + "description": "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + "type": "object", + "properties": { + "AzureBlobSasToken": { + "description": "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + "type": "string", + "pattern": "(^.+$)", + "minLength": 1, + "maxLength": 255 + } + }, + "required": [ + "AzureBlobSasToken" + ] + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key for an AWS resource tag.", + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "maxLength": 256, + "minLength": 1 + }, + "Value": { + "type": "string", + "description": "The value for an AWS resource tag.", + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "maxLength": 256, + "minLength": 1 + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "properties": { + "AgentArns": { + "description": "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + "type": "array", + "items": { + "type": "string", + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "maxLength": 128 + }, + "minItems": 1, + "maxItems": 4, + "insertionOrder": false + }, + "AzureBlobAuthenticationType": { + "description": "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + "type": "string", + "enum": [ + "SAS" + ], + "default": "SAS" + }, + "AzureBlobSasConfiguration": { + "$ref": "#/definitions/AzureBlobSasConfiguration" + }, + "AzureBlobContainerUrl": { + "description": "The URL of the Azure Blob container that was described.", + "type": "string", + "pattern": "^https:\/\/[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}\/[a-z0-9](-?[a-z0-9]){2,62}$", + "maxLength": 325 + }, + "AzureBlobType": { + "description": "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + "type": "string", + "enum": [ + "BLOCK" + ], + "default": "BLOCK" + }, + "AzureAccessTier": { + "description": "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + "type": "string", + "enum": [ + "HOT", + "COOL", + "ARCHIVE" + ], + "default": "HOT" + }, + "Subdirectory": { + "description": "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + "type": "string", + "maxLength": 1024, + "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$" + }, + "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" + } + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + "type": "string", + "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": 128 + }, + "LocationUri": { + "description": "The URL of the Azure Blob Location that was described.", + "type": "string", + "pattern": "^(azure-blob)://[a-zA-Z0-9./\\-]+$", + "maxLength": 4356 + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "additionalProperties": false, + "required": [ + "AzureBlobAuthenticationType", + "AgentArns" + ], + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/AzureBlobSasConfiguration", + "/properties/AzureBlobContainerUrl" + ], + "createOnlyProperties": [ + "/properties/AzureBlobContainerUrl" + ], + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationAzureBlob", + "datasync:DescribeLocationAzureBlob", + "datasync:TagResource", + "datasync:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationAzureBlob", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationAzureBlob", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationAzureBlob" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json new file mode 100644 index 0000000000..b5971fb065 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_NetworkInterfaceAttachment.json @@ -0,0 +1,90 @@ +{ + "typeName": "AWS::EC2::NetworkInterfaceAttachment", + "description": "Resource Type definition for AWS::EC2::NetworkInterfaceAttachment", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "properties": { + "AttachmentId": { + "description": "The ID of the network interface attachment.", + "type": "string" + }, + "DeleteOnTermination": { + "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to true.", + "type": "boolean", + "default": true + }, + "DeviceIndex": { + "description": "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance to which you will attach the ENI.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the ENI that you want to attach.", + "type": "string" + } + }, + "additionalProperties": false, + "replacementStrategy": "delete_then_create", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "required": [ + "DeviceIndex", + "InstanceId", + "NetworkInterfaceId" + ], + "readOnlyProperties": [ + "/properties/AttachmentId" + ], + "createOnlyProperties": [ + "/properties/DeviceIndex", + "/properties/InstanceId", + "/properties/NetworkInterfaceId" + ], + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "additionalIdentifiers": [ + [ + "/properties/NetworkInterfaceId" + ] + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AttachNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:ModifyNetworkInterfaceAttribute" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:DescribeNetworkInterfaces", + "ec2:AttachNetworkInterface", + "ec2:DetachNetworkInterface" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachNetworkInterface", + "ec2:DescribeNetworkInterfaces" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_Route.json b/internal/service/cloudformation/schemas/AWS_EC2_Route.json new file mode 100644 index 0000000000..a5e2131c9f --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_Route.json @@ -0,0 +1,122 @@ +{ + "typeName": "AWS::EC2::Route", + "description": "Resource Type definition for AWS::EC2::Route", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "additionalProperties": false, + "properties": { + "CarrierGatewayId": { + "type": "string", + "description": "The ID of the carrier gateway." + }, + "CidrBlock": { + "type": "string", + "description": "The primary identifier of the resource generated by the service." + }, + "DestinationCidrBlock": { + "type": "string", + "description": "The IPv4 CIDR block used for the destination match." + }, + "DestinationIpv6CidrBlock": { + "type": "string", + "description": "The IPv6 CIDR block used for the destination match." + }, + "EgressOnlyInternetGatewayId": { + "type": "string", + "description": "The ID of the egress-only internet gateway." + }, + "GatewayId": { + "type": "string", + "description": "The ID of an internet gateway or virtual private gateway attached to your VPC." + }, + "InstanceId": { + "type": "string", + "description": "The ID of a NAT instance in your VPC." + }, + "LocalGatewayId": { + "type": "string", + "description": "The ID of the local gateway." + }, + "NatGatewayId": { + "type": "string", + "description": "The ID of a NAT gateway." + }, + "NetworkInterfaceId": { + "type": "string", + "description": "The ID of the network interface." + }, + "RouteTableId": { + "type": "string", + "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to." + }, + "TransitGatewayId": { + "type": "string", + "description": "The ID of a transit gateway." + }, + "VpcEndpointId": { + "type": "string", + "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only." + }, + "VpcPeeringConnectionId": { + "type": "string", + "description": "The ID of a VPC peering connection." + } + }, + "tagging": { + "taggable": false + }, + "required": [ + "RouteTableId" + ], + "readOnlyProperties": [ + "/properties/CidrBlock" + ], + "createOnlyProperties": [ + "/properties/RouteTableId", + "/properties/DestinationCidrBlock", + "/properties/DestinationIpv6CidrBlock" + ], + "primaryIdentifier": [ + "/properties/RouteTableId", + "/properties/CidrBlock" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRoute", + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:ReplaceRoute", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteRoute", + "ec2:DescribeRouteTables" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteTables" + ], + "handlerSchema": { + "properties": { + "RouteTableId": { + "$ref": "resource-schema.json#/properties/RouteTableId" + } + }, + "required": [ + "RouteTableId" + ] + } + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json b/internal/service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json new file mode 100644 index 0000000000..34df4305ca --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Lambda_LayerVersionPermission.json @@ -0,0 +1,74 @@ +{ + "typeName": "AWS::Lambda::LayerVersionPermission", + "description": "Schema for Lambda LayerVersionPermission", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda.git", + "additionalProperties": false, + "properties": { + "Id": { + "description": "ID generated by service", + "type": "string" + }, + "Action": { + "description": "The API action that grants access to the layer.", + "type": "string" + }, + "LayerVersionArn": { + "description": "The name or Amazon Resource Name (ARN) of the layer.", + "type": "string" + }, + "OrganizationId": { + "description": "With the principal set to *, grant permission to all accounts in the specified organization.", + "type": "string" + }, + "Principal": { + "description": "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + "type": "string" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "required": [ + "LayerVersionArn", + "Action", + "Principal" + ], + "createOnlyProperties": [ + "/properties/OrganizationId", + "/properties/Principal", + "/properties/Action", + "/properties/LayerVersionArn" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "readOnlyProperties": [ + "/properties/Id" + ], + "handlers": { + "create": { + "permissions": [ + "lambda:AddLayerVersionPermission" + ] + }, + "read": { + "permissions": [ + "lambda:GetLayerVersionPolicy" + ] + }, + "delete": { + "permissions": [ + "lambda:GetLayerVersionPolicy", + "lambda:RemoveLayerVersionPermission" + ] + }, + "list": { + "permissions": [ + "lambda:GetLayerVersionPolicy" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_MediaTailor_Channel.json b/internal/service/cloudformation/schemas/AWS_MediaTailor_Channel.json new file mode 100644 index 0000000000..8dfcfdd6ce --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_MediaTailor_Channel.json @@ -0,0 +1,238 @@ +{ + "typeName": "AWS::MediaTailor::Channel", + "description": "Definition of AWS::MediaTailor::Channel Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", + "definitions": { + "DashPlaylistSettings": { + "type": "object", + "description": "

Dash manifest configuration parameters.

", + "properties": { + "ManifestWindowSeconds": { + "type": "number", + "default": 0, + "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

" + }, + "MinBufferTimeSeconds": { + "type": "number", + "default": 0, + "description": "

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

" + }, + "MinUpdatePeriodSeconds": { + "type": "number", + "default": 0, + "description": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

" + }, + "SuggestedPresentationDelaySeconds": { + "type": "number", + "default": 0, + "description": "

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

" + } + }, + "additionalProperties": false + }, + "HlsPlaylistSettings": { + "type": "object", + "description": "

HLS playlist configuration parameters.

", + "properties": { + "ManifestWindowSeconds": { + "type": "number", + "default": 0, + "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

" + } + }, + "additionalProperties": false + }, + "LogConfigurationForChannel": { + "type": "object", + "description": "

The log configuration for the channel.

", + "properties": { + "LogTypes": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogType" + }, + "description": "

The log types.

" + } + }, + "additionalProperties": false + }, + "LogType": { + "type": "string", + "enum": [ + "AS_RUN" + ] + }, + "PlaybackMode": { + "type": "string", + "enum": [ + "LOOP", + "LINEAR" + ] + }, + "RequestOutputItem": { + "type": "object", + "description": "

The output configuration for this channel.

", + "properties": { + "DashPlaylistSettings": { + "$ref": "#/definitions/DashPlaylistSettings" + }, + "HlsPlaylistSettings": { + "$ref": "#/definitions/HlsPlaylistSettings" + }, + "ManifestName": { + "type": "string", + "description": "

The name of the manifest for the channel. The name appears in the PlaybackUrl.

" + }, + "SourceGroup": { + "type": "string", + "description": "

A string used to match which HttpPackageConfiguration is used for each VodSource.

" + } + }, + "required": [ + "ManifestName", + "SourceGroup" + ], + "additionalProperties": false + }, + "SlateSource": { + "type": "object", + "description": "

Slate VOD source configuration.

", + "properties": { + "SourceLocationName": { + "type": "string", + "description": "

The name of the source location where the slate VOD source is stored.

" + }, + "VodSourceName": { + "type": "string", + "description": "

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

" + } + }, + "additionalProperties": false + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + }, + "Tier": { + "type": "string", + "enum": [ + "BASIC", + "STANDARD" + ] + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "properties": { + "Arn": { + "type": "string", + "description": "

The ARN of the channel.

" + }, + "ChannelName": { + "type": "string" + }, + "FillerSlate": { + "$ref": "#/definitions/SlateSource" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfigurationForChannel" + }, + "Outputs": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RequestOutputItem" + }, + "description": "

The channel's output properties.

" + }, + "PlaybackMode": { + "$ref": "#/definitions/PlaybackMode" + }, + "Tags": { + "description": "The tags to assign to the channel.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Tier": { + "$ref": "#/definitions/Tier" + } + }, + "required": [ + "ChannelName", + "Outputs", + "PlaybackMode" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "writeOnlyProperties": [ + "/properties/Outputs" + ], + "createOnlyProperties": [ + "/properties/ChannelName", + "/properties/Tier" + ], + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateChannel", + "mediatailor:TagResource", + "mediatailor:ConfigureLogsForChannel", + "iam:CreateServiceLinkedRole", + "mediatailor:DescribeChannel" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeChannel" + ] + }, + "update": { + "permissions": [ + "mediatailor:UpdateChannel", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "iam:CreateServiceLinkedRole", + "mediatailor:ConfigureLogsForChannel", + "mediatailor:DescribeChannel" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannel", + "mediatailor:DescribeChannel" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListChannels" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json b/internal/service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json new file mode 100644 index 0000000000..d8d86c1920 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_MediaTailor_ChannelPolicy.json @@ -0,0 +1,58 @@ +{ + "typeName": "AWS::MediaTailor::ChannelPolicy", + "description": "Definition of AWS::MediaTailor::ChannelPolicy Resource Type", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "properties": { + "ChannelName": { + "type": "string" + }, + "Policy": { + "type": [ + "object", + "string" + ], + "description": "

The IAM policy for the channel. IAM policies are used to control access to your channel.

" + } + }, + "createOnlyProperties": [ + "/properties/ChannelName" + ], + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "required": [ + "ChannelName", + "Policy" + ], + "handlers": { + "create": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "read": { + "permissions": [ + "mediatailor:GetChannelPolicy" + ] + }, + "update": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json b/internal/service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json new file mode 100644 index 0000000000..549c1bc02d --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_MediaTailor_LiveSource.json @@ -0,0 +1,148 @@ +{ + "typeName": "AWS::MediaTailor::LiveSource", + "description": "Definition of AWS::MediaTailor::LiveSource Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "definitions": { + "HttpPackageConfiguration": { + "type": "object", + "description": "

The HTTP package configuration properties for the requested VOD source.

", + "properties": { + "Path": { + "type": "string", + "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

" + }, + "SourceGroup": { + "type": "string", + "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Path", + "SourceGroup", + "Type" + ], + "additionalProperties": false + }, + "Type": { + "type": "string", + "enum": [ + "DASH", + "HLS" + ] + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + } + }, + "properties": { + "Arn": { + "type": "string", + "description": "

The ARN of the live source.

" + }, + "HttpPackageConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "description": "

A list of HTTP package configuration parameters for this live source.

" + }, + "LiveSourceName": { + "type": "string" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the live source.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "required": [ + "HttpPackageConfigurations", + "LiveSourceName", + "SourceLocationName" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/LiveSourceName", + "/properties/SourceLocationName" + ], + "primaryIdentifier": [ + "/properties/LiveSourceName", + "/properties/SourceLocationName" + ], + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateLiveSource", + "mediatailor:DescribeLiveSource", + "mediatailor:TagResource" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeLiveSource" + ] + }, + "update": { + "permissions": [ + "mediatailor:UpdateLiveSource", + "mediatailor:DescribeLiveSource", + "mediatailor:TagResource", + "mediatailor:UntagResource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteLiveSource", + "mediatailor:DescribeLiveSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "SourceLocationName": { + "$ref": "resource-schema.json#/properties/SourceLocationName" + } + }, + "required": [ + "SourceLocationName" + ] + }, + "permissions": [ + "mediatailor:ListLiveSources" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_MediaTailor_VodSource.json b/internal/service/cloudformation/schemas/AWS_MediaTailor_VodSource.json new file mode 100644 index 0000000000..f1551b12bb --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_MediaTailor_VodSource.json @@ -0,0 +1,148 @@ +{ + "typeName": "AWS::MediaTailor::VodSource", + "description": "Definition of AWS::MediaTailor::VodSource Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "definitions": { + "HttpPackageConfiguration": { + "type": "object", + "description": "

The HTTP package configuration properties for the requested VOD source.

", + "properties": { + "Path": { + "type": "string", + "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

" + }, + "SourceGroup": { + "type": "string", + "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Path", + "SourceGroup", + "Type" + ], + "additionalProperties": false + }, + "Type": { + "type": "string", + "enum": [ + "DASH", + "HLS" + ] + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ] + } + }, + "properties": { + "Arn": { + "type": "string", + "description": "

The ARN of the VOD source.

" + }, + "HttpPackageConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "description": "

A list of HTTP package configuration parameters for this VOD source.

" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the VOD source.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "VodSourceName": { + "type": "string" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, + "required": [ + "HttpPackageConfigurations", + "SourceLocationName", + "VodSourceName" + ], + "readOnlyProperties": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/SourceLocationName", + "/properties/VodSourceName" + ], + "primaryIdentifier": [ + "/properties/SourceLocationName", + "/properties/VodSourceName" + ], + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateVodSource", + "mediatailor:DescribeVodSource", + "mediatailor:TagResource" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeVodSource" + ] + }, + "update": { + "permissions": [ + "mediatailor:DescribeVodSource", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "mediatailor:UpdateVodSource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteVodSource", + "mediatailor:DescribeVodSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "SourceLocationName": { + "$ref": "resource-schema.json#/properties/SourceLocationName" + } + }, + "required": [ + "SourceLocationName" + ] + }, + "permissions": [ + "mediatailor:ListVodSources" + ] + } + }, + "additionalProperties": false +} diff --git a/internal/service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json b/internal/service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json new file mode 100644 index 0000000000..6093c0943f --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_SQS_QueueInlinePolicy.json @@ -0,0 +1,60 @@ +{ + "typeName": "AWS::SQS::QueueInlinePolicy", + "description": "Schema for SQS QueueInlinePolicy", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", + "properties": { + "PolicyDocument": { + "description": "A policy document that contains permissions to add to the specified SQS queue", + "type": "object" + }, + "Queue": { + "description": "The URL of the SQS queue.", + "type": "string" + } + }, + "additionalProperties": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "required": [ + "PolicyDocument", + "Queue" + ], + "primaryIdentifier": [ + "/properties/Queue" + ], + "createOnlyProperties": [ + "/properties/Queue" + ], + "handlers": { + "create": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + }, + "read": { + "permissions": [ + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + }, + "delete": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes" + ] + }, + "update": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + } + } +} From 12a205f7db42a20bb9f8bfd72b89256029104e81 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 14:15:04 -0400 Subject: [PATCH 3/6] 08/09/2023 CloudFormation schemas in us-east-1; Generate Terraform resource schemas. --- .../billing_group_resource_gen.go | 13 + .../public_type_version_resource_gen.go | 4 + .../cloudformation/publisher_resource_gen.go | 4 + .../type_activation_resource_gen.go | 20 +- internal/aws/cloudwatch/alarm_resource_gen.go | 712 ++++++++++++++++++ .../aws/cloudwatch/alarm_resource_gen_test.go | 25 + .../aws/config/config_rule_resource_gen.go | 499 ++++++++++++ .../config/config_rule_resource_gen_test.go | 25 + ...traffic_distribution_group_resource_gen.go | 254 +++++++ ...ic_distribution_group_resource_gen_test.go | 25 + .../location_azure_blob_resource_gen.go | 381 ++++++++++ .../location_azure_blob_resource_gen_test.go | 25 + .../dms/replication_config_resource_gen.go | 430 +++++++++++ .../replication_config_resource_gen_test.go | 46 ++ ...twork_interface_attachment_resource_gen.go | 142 ++++ ..._interface_attachment_resource_gen_test.go | 25 + .../aws/ec2/network_interface_resource_gen.go | 128 +++- internal/aws/ec2/route_resource_gen.go | 287 +++++++ internal/aws/ec2/route_resource_gen_test.go | 25 + internal/aws/ec2/spot_fleet_resource_gen.go | 5 + .../aws/iam/managed_policy_resource_gen.go | 210 +----- .../internetmonitor/monitor_resource_gen.go | 188 ++++- .../recording_configuration_resource_gen.go | 188 ++++- .../aws/kendra/data_source_resource_gen.go | 37 +- internal/aws/kms/key_resource_gen.go | 56 +- internal/aws/kms/key_resource_gen_test.go | 27 +- .../layer_version_permission_resource_gen.go | 132 ++++ ...er_version_permission_resource_gen_test.go | 25 + .../channel_policy_resource_gen.go | 88 +++ .../channel_policy_resource_gen_test.go | 25 + .../aws/mediatailor/channel_resource_gen.go | 463 ++++++++++++ .../mediatailor/channel_resource_gen_test.go | 25 + .../mediatailor/live_source_resource_gen.go | 221 ++++++ .../live_source_resource_gen_test.go | 25 + .../mediatailor/vod_source_resource_gen.go | 221 ++++++ .../vod_source_resource_gen_test.go | 25 + .../aws/neptune/db_cluster_resource_gen.go | 28 +- internal/aws/omics/run_group_resource_gen.go | 19 + internal/aws/omics/workflow_resource_gen.go | 30 +- .../collection_resource_gen.go | 4 +- ...ata_quality_job_definition_resource_gen.go | 9 + .../sagemaker/feature_group_resource_gen.go | 30 + .../model_bias_job_definition_resource_gen.go | 9 + ...lainability_job_definition_resource_gen.go | 9 + ...del_quality_job_definition_resource_gen.go | 9 + .../sqs/queue_inline_policy_resource_gen.go | 91 +++ .../queue_inline_policy_resource_gen_test.go | 25 + .../aws/transfer/connector_resource_gen.go | 111 ++- 48 files changed, 5142 insertions(+), 263 deletions(-) create mode 100644 internal/aws/cloudwatch/alarm_resource_gen.go create mode 100644 internal/aws/cloudwatch/alarm_resource_gen_test.go create mode 100644 internal/aws/config/config_rule_resource_gen.go create mode 100644 internal/aws/config/config_rule_resource_gen_test.go create mode 100644 internal/aws/connect/traffic_distribution_group_resource_gen.go create mode 100644 internal/aws/connect/traffic_distribution_group_resource_gen_test.go create mode 100644 internal/aws/datasync/location_azure_blob_resource_gen.go create mode 100644 internal/aws/datasync/location_azure_blob_resource_gen_test.go create mode 100644 internal/aws/dms/replication_config_resource_gen.go create mode 100644 internal/aws/dms/replication_config_resource_gen_test.go create mode 100644 internal/aws/ec2/network_interface_attachment_resource_gen.go create mode 100644 internal/aws/ec2/network_interface_attachment_resource_gen_test.go create mode 100644 internal/aws/ec2/route_resource_gen.go create mode 100644 internal/aws/ec2/route_resource_gen_test.go create mode 100644 internal/aws/lambda/layer_version_permission_resource_gen.go create mode 100644 internal/aws/lambda/layer_version_permission_resource_gen_test.go create mode 100644 internal/aws/mediatailor/channel_policy_resource_gen.go create mode 100644 internal/aws/mediatailor/channel_policy_resource_gen_test.go create mode 100644 internal/aws/mediatailor/channel_resource_gen.go create mode 100644 internal/aws/mediatailor/channel_resource_gen_test.go create mode 100644 internal/aws/mediatailor/live_source_resource_gen.go create mode 100644 internal/aws/mediatailor/live_source_resource_gen_test.go create mode 100644 internal/aws/mediatailor/vod_source_resource_gen.go create mode 100644 internal/aws/mediatailor/vod_source_resource_gen_test.go create mode 100644 internal/aws/sqs/queue_inline_policy_resource_gen.go create mode 100644 internal/aws/sqs/queue_inline_policy_resource_gen_test.go diff --git a/internal/aws/billingconductor/billing_group_resource_gen.go b/internal/aws/billingconductor/billing_group_resource_gen.go index 47ee17a579..f183db6f6b 100644 --- a/internal/aws/billingconductor/billing_group_resource_gen.go +++ b/internal/aws/billingconductor/billing_group_resource_gen.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" @@ -36,6 +37,9 @@ func billingGroupResource(ctx context.Context) (resource.Resource, error) { // { // "additionalProperties": false, // "properties": { + // "AutoAssociate": { + // "type": "boolean" + // }, // "LinkedAccountIds": { // "insertionOrder": false, // "items": { @@ -54,6 +58,14 @@ func billingGroupResource(ctx context.Context) (resource.Resource, error) { // } "account_grouping": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutoAssociate + "auto_associate": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: LinkedAccountIds "linked_account_ids": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, @@ -311,6 +323,7 @@ func billingGroupResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "account_grouping": "AccountGrouping", "arn": "Arn", + "auto_associate": "AutoAssociate", "computation_preference": "ComputationPreference", "creation_time": "CreationTime", "description": "Description", diff --git a/internal/aws/cloudformation/public_type_version_resource_gen.go b/internal/aws/cloudformation/public_type_version_resource_gen.go index 1a69b0fb30..97e92c01f7 100644 --- a/internal/aws/cloudformation/public_type_version_resource_gen.go +++ b/internal/aws/cloudformation/public_type_version_resource_gen.go @@ -46,6 +46,7 @@ func publicTypeVersionResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Arn is a write-only property. }, /*END ATTRIBUTE*/ // Property: LogDeliveryBucket // CloudFormation resource type schema: @@ -214,6 +215,9 @@ func publicTypeVersionResource(ctx context.Context) (resource.Resource, error) { opts = opts.IsImmutableType(true) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Arn", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) v, err := generic.NewResource(ctx, opts...) diff --git a/internal/aws/cloudformation/publisher_resource_gen.go b/internal/aws/cloudformation/publisher_resource_gen.go index 4b6fe9fde5..e299051cff 100644 --- a/internal/aws/cloudformation/publisher_resource_gen.go +++ b/internal/aws/cloudformation/publisher_resource_gen.go @@ -61,6 +61,7 @@ func publisherResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // ConnectionArn is a write-only property. }, /*END ATTRIBUTE*/ // Property: IdentityProvider // CloudFormation resource type schema: @@ -164,6 +165,9 @@ func publisherResource(ctx context.Context) (resource.Resource, error) { opts = opts.IsImmutableType(true) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ConnectionArn", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) v, err := generic.NewResource(ctx, opts...) diff --git a/internal/aws/cloudformation/type_activation_resource_gen.go b/internal/aws/cloudformation/type_activation_resource_gen.go index 1f01fe9faf..8c62ee57bc 100644 --- a/internal/aws/cloudformation/type_activation_resource_gen.go +++ b/internal/aws/cloudformation/type_activation_resource_gen.go @@ -58,6 +58,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // AutoUpdate is a write-only property. }, /*END ATTRIBUTE*/ // Property: ExecutionRoleArn // CloudFormation resource type schema: @@ -72,8 +73,8 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // ExecutionRoleArn is a write-only property. }, /*END ATTRIBUTE*/ // Property: LoggingConfig // CloudFormation resource type schema: @@ -133,6 +134,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), objectplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // LoggingConfig is a write-only property. }, /*END ATTRIBUTE*/ // Property: MajorVersion // CloudFormation resource type schema: @@ -153,6 +155,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // MajorVersion is a write-only property. }, /*END ATTRIBUTE*/ // Property: PublicTypeArn // CloudFormation resource type schema: @@ -173,7 +176,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: PublisherId @@ -196,7 +198,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Type @@ -224,8 +225,8 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Type is a write-only property. }, /*END ATTRIBUTE*/ // Property: TypeName // CloudFormation resource type schema: @@ -244,7 +245,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: TypeNameAlias @@ -267,7 +267,6 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), - stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: VersionBump @@ -294,6 +293,7 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ + // VersionBump is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -332,6 +332,14 @@ func typeActivationResource(ctx context.Context) (resource.Resource, error) { "version_bump": "VersionBump", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ExecutionRoleArn", + "/properties/Type", + "/properties/LoggingConfig", + "/properties/VersionBump", + "/properties/AutoUpdate", + "/properties/MajorVersion", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/cloudwatch/alarm_resource_gen.go b/internal/aws/cloudwatch/alarm_resource_gen.go new file mode 100644 index 0000000000..fb16aa5372 --- /dev/null +++ b/internal/aws/cloudwatch/alarm_resource_gen.go @@ -0,0 +1,712 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package cloudwatch + +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/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" +) + +func init() { + registry.AddResourceFactory("awscc_cloudwatch_alarm", alarmResource) +} + +// alarmResource returns the Terraform awscc_cloudwatch_alarm resource. +// This Terraform resource corresponds to the CloudFormation AWS::CloudWatch::Alarm resource. +func alarmResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ActionsEnabled + // CloudFormation resource type schema: + // + // { + // "default": true, + // "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + // "type": "boolean" + // } + "actions_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + generic.BoolDefaultValue(true), + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AlarmActions + // CloudFormation resource type schema: + // + // { + // "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "alarm_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of actions to execute when this alarm transitions into an ALARM state from any other state.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AlarmDescription + // CloudFormation resource type schema: + // + // { + // "description": "The description of the alarm.", + // "type": "string" + // } + "alarm_description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AlarmName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the alarm.", + // "type": "string" + // } + "alarm_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Amazon Resource Name is a unique name for each resource.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Amazon Resource Name is a unique name for each resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ComparisonOperator + // CloudFormation resource type schema: + // + // { + // "description": "The arithmetic operation to use when comparing the specified statistic and threshold.", + // "type": "string" + // } + "comparison_operator": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The arithmetic operation to use when comparing the specified statistic and threshold.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: DatapointsToAlarm + // CloudFormation resource type schema: + // + // { + // "description": "The number of datapoints that must be breaching to trigger the alarm.", + // "type": "integer" + // } + "datapoints_to_alarm": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of datapoints that must be breaching to trigger the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Dimensions + // CloudFormation resource type schema: + // + // { + // "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Dimensions are arbitrary name/value pairs that can be associated with a CloudWatch metric.", + // "properties": { + // "Name": { + // "description": "The name of the dimension.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the dimension.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Name" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "dimensions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the dimension.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the dimension.", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EvaluateLowSampleCountPercentile + // CloudFormation resource type schema: + // + // { + // "description": "Used only for alarms based on percentiles.", + // "type": "string" + // } + "evaluate_low_sample_count_percentile": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Used only for alarms based on percentiles.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EvaluationPeriods + // CloudFormation resource type schema: + // + // { + // "description": "The number of periods over which data is compared to the specified threshold.", + // "type": "integer" + // } + "evaluation_periods": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of periods over which data is compared to the specified threshold.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: ExtendedStatistic + // CloudFormation resource type schema: + // + // { + // "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.", + // "type": "string" + // } + "extended_statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InsufficientDataActions + // CloudFormation resource type schema: + // + // { + // "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "insufficient_data_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MetricName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the metric associated with the alarm.", + // "type": "string" + // } + "metric_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the metric associated with the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Metrics + // CloudFormation resource type schema: + // + // { + // "description": "An array that enables you to create an alarm based on the result of a metric math expression.", + // "items": { + // "additionalProperties": false, + // "description": "This property type specifies the metric data to return, and whether this call is just retrieving a batch set of data for one metric, or is performing a math expression on metric data.", + // "properties": { + // "AccountId": { + // "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", + // "type": "string" + // }, + // "Expression": { + // "description": "The math expression to be performed on the returned data.", + // "type": "string" + // }, + // "Id": { + // "description": "A short name used to tie this object to the results in the response.", + // "type": "string" + // }, + // "Label": { + // "description": "A human-readable label for this metric or expression.", + // "type": "string" + // }, + // "MetricStat": { + // "additionalProperties": false, + // "description": "The metric to be returned, along with statistics, period, and units.", + // "properties": { + // "Metric": { + // "additionalProperties": false, + // "description": "The metric to return, including the metric name, namespace, and dimensions.", + // "properties": { + // "Dimensions": { + // "description": "The dimensions for the metric.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Dimensions are arbitrary name/value pairs that can be associated with a CloudWatch metric.", + // "properties": { + // "Name": { + // "description": "The name of the dimension.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the dimension.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Name" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "MetricName": { + // "description": "The name of the metric.", + // "type": "string" + // }, + // "Namespace": { + // "description": "The namespace of the metric.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "Period": { + // "description": "The granularity, in seconds, of the returned data points.", + // "type": "integer" + // }, + // "Stat": { + // "description": "The statistic to return.", + // "type": "string" + // }, + // "Unit": { + // "description": "The unit to use for the returned data points.", + // "type": "string" + // } + // }, + // "required": [ + // "Stat", + // "Period", + // "Metric" + // ], + // "type": "object" + // }, + // "Period": { + // "description": "The period in seconds, over which the statistic is applied.", + // "type": "integer" + // }, + // "ReturnData": { + // "description": "This option indicates whether to return the timestamps and raw data values of this metric.", + // "type": "boolean" + // } + // }, + // "required": [ + // "Id" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "metrics": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the account where the metrics are located, if this is a cross-account alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Expression + "expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The math expression to be performed on the returned data.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A short name used to tie this object to the results in the response.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Label + "label": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A human-readable label for this metric or expression.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MetricStat + "metric_stat": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Metric + "metric": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Dimensions + "dimensions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the dimension.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the dimension.", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The dimensions for the metric.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MetricName + "metric_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the metric.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Namespace + "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The namespace of the metric.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metric to return, including the metric name, namespace, and dimensions.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The granularity, in seconds, of the returned data points.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Stat + "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The statistic to return.", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Unit + "unit": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unit to use for the returned data points.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metric to be returned, along with statistics, period, and units.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The period in seconds, over which the statistic is applied.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReturnData + "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "This option indicates whether to return the timestamps and raw data values of this metric.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array that enables you to create an alarm based on the result of a metric math expression.", + 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: Namespace + // CloudFormation resource type schema: + // + // { + // "description": "The namespace of the metric associated with the alarm.", + // "type": "string" + // } + "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The namespace of the metric associated with the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OKActions + // CloudFormation resource type schema: + // + // { + // "description": "The actions to execute when this alarm transitions to the OK state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ok_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The actions to execute when this alarm transitions to the OK state from any other state.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Period + // CloudFormation resource type schema: + // + // { + // "description": "The period in seconds, over which the statistic is applied.", + // "type": "integer" + // } + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The period in seconds, over which the statistic is applied.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Statistic + // CloudFormation resource type schema: + // + // { + // "description": "The statistic for the metric associated with the alarm, other than percentile.", + // "type": "string" + // } + "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The statistic for the metric associated with the alarm, other than percentile.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Threshold + // CloudFormation resource type schema: + // + // { + // "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + // "type": "number" + // } + "threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ThresholdMetricId + // CloudFormation resource type schema: + // + // { + // "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + // "type": "string" + // } + "threshold_metric_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TreatMissingData + // CloudFormation resource type schema: + // + // { + // "description": "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing.", + // "type": "string" + // } + "treat_missing_data": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Unit + // CloudFormation resource type schema: + // + // { + // "description": "The unit of the metric associated with the alarm.", + // "type": "string" + // } + "unit": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unit of the metric associated with the alarm.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + 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::CloudWatch::Alarm", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::CloudWatch::Alarm").WithTerraformTypeName("awscc_cloudwatch_alarm") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "actions_enabled": "ActionsEnabled", + "alarm_actions": "AlarmActions", + "alarm_description": "AlarmDescription", + "alarm_name": "AlarmName", + "arn": "Arn", + "comparison_operator": "ComparisonOperator", + "datapoints_to_alarm": "DatapointsToAlarm", + "dimensions": "Dimensions", + "evaluate_low_sample_count_percentile": "EvaluateLowSampleCountPercentile", + "evaluation_periods": "EvaluationPeriods", + "expression": "Expression", + "extended_statistic": "ExtendedStatistic", + "id": "Id", + "insufficient_data_actions": "InsufficientDataActions", + "label": "Label", + "metric": "Metric", + "metric_name": "MetricName", + "metric_stat": "MetricStat", + "metrics": "Metrics", + "name": "Name", + "namespace": "Namespace", + "ok_actions": "OKActions", + "period": "Period", + "return_data": "ReturnData", + "stat": "Stat", + "statistic": "Statistic", + "threshold": "Threshold", + "threshold_metric_id": "ThresholdMetricId", + "treat_missing_data": "TreatMissingData", + "unit": "Unit", + "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/cloudwatch/alarm_resource_gen_test.go b/internal/aws/cloudwatch/alarm_resource_gen_test.go new file mode 100644 index 0000000000..a1143f12a2 --- /dev/null +++ b/internal/aws/cloudwatch/alarm_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 cloudwatch_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCloudWatchAlarm_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::CloudWatch::Alarm", "awscc_cloudwatch_alarm", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/config/config_rule_resource_gen.go b/internal/aws/config/config_rule_resource_gen.go new file mode 100644 index 0000000000..85acbc8deb --- /dev/null +++ b/internal/aws/config/config_rule_resource_gen.go @@ -0,0 +1,499 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package config + +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/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" +) + +func init() { + registry.AddResourceFactory("awscc_config_config_rule", configRuleResource) +} + +// configRuleResource returns the Terraform awscc_config_config_rule resource. +// This Terraform resource corresponds to the CloudFormation AWS::Config::ConfigRule resource. +func configRuleResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "ARN generated for the AWS Config rule ", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN generated for the AWS Config rule ", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Compliance + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Compliance details of the Config rule", + // "properties": { + // "Type": { + // "description": "Compliance type determined by the Config rule", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compliance": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Compliance type determined by the Config rule", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Compliance details of the Config rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ConfigRuleId + // CloudFormation resource type schema: + // + // { + // "description": "ID of the config rule", + // "type": "string" + // } + "config_rule_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID of the config rule", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ConfigRuleName + // CloudFormation resource type schema: + // + // { + // "description": "Name for the AWS Config rule", + // "type": "string" + // } + "config_rule_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Name for the AWS Config rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "Description provided for the AWS Config rule", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description provided for the AWS Config rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EvaluationModes + // CloudFormation resource type schema: + // + // { + // "description": "List of EvaluationModeConfiguration objects", + // "items": { + // "additionalProperties": false, + // "description": "Mode of evaluation of AWS Config rule", + // "properties": { + // "Mode": { + // "description": "Mode of evaluation of AWS Config rule", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "evaluation_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Mode + "mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Mode of evaluation of AWS Config rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of EvaluationModeConfiguration objects", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InputParameters + // CloudFormation resource type schema: + // + // { + // "description": "JSON string passed the Lambda function", + // "type": "string" + // } + "input_parameters": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "JSON string passed the Lambda function", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MaximumExecutionFrequency + // CloudFormation resource type schema: + // + // { + // "description": "Maximum frequency at which the rule has to be evaluated", + // "type": "string" + // } + "maximum_execution_frequency": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Maximum frequency at which the rule has to be evaluated", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Scope + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Scope to constrain which resources can trigger the AWS Config rule", + // "properties": { + // "ComplianceResourceId": { + // "description": "ID of the only one resource which we want to trigger the rule", + // "type": "string" + // }, + // "ComplianceResourceTypes": { + // "description": "Resource types of resources which we want to trigger the rule", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // }, + // "TagKey": { + // "description": "Tag key applied only to resources which we want to trigger the rule", + // "type": "string" + // }, + // "TagValue": { + // "description": "Tag value applied only to resources which we want to trigger the rule", + // "type": "string" + // } + // }, + // "type": "object" + // } + "scope": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComplianceResourceId + "compliance_resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID of the only one resource which we want to trigger the rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ComplianceResourceTypes + "compliance_resource_types": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Resource types of resources which we want to trigger the rule", + 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: TagKey + "tag_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tag key applied only to resources which we want to trigger the rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TagValue + "tag_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tag value applied only to resources which we want to trigger the rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Scope to constrain which resources can trigger the AWS Config rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Source of events for the AWS Config rule", + // "properties": { + // "CustomPolicyDetails": { + // "additionalProperties": false, + // "description": "Custom policy details when rule is custom owned", + // "properties": { + // "EnableDebugLogDelivery": { + // "description": "Logging toggle for custom policy rule", + // "type": "boolean" + // }, + // "PolicyRuntime": { + // "description": "Runtime system for custom policy rule", + // "type": "string" + // }, + // "PolicyText": { + // "description": "Policy definition containing logic for custom policy rule", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "Owner": { + // "description": "Owner of the config rule", + // "type": "string" + // }, + // "SourceDetails": { + // "description": "List of message types that can trigger the rule", + // "items": { + // "additionalProperties": false, + // "description": "Source and message type that can trigger the rule", + // "properties": { + // "EventSource": { + // "description": "Source of event that can trigger the rule", + // "type": "string" + // }, + // "MaximumExecutionFrequency": { + // "description": "Frequency at which the rule has to be evaluated", + // "type": "string" + // }, + // "MessageType": { + // "description": "Notification type that can trigger the rule", + // "type": "string" + // } + // }, + // "required": [ + // "EventSource", + // "MessageType" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // }, + // "SourceIdentifier": { + // "description": "Identifier for the source of events", + // "type": "string" + // } + // }, + // "required": [ + // "Owner" + // ], + // "type": "object" + // } + "source": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CustomPolicyDetails + "custom_policy_details": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EnableDebugLogDelivery + "enable_debug_log_delivery": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Logging toggle for custom policy rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PolicyRuntime + "policy_runtime": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Runtime system for custom policy rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PolicyText + "policy_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Policy definition containing logic for custom policy rule", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // PolicyText is a write-only property. + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Custom policy details when rule is custom owned", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Owner + "owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Owner of the config rule", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SourceDetails + "source_details": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EventSource + "event_source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Source of event that can trigger the rule", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: MaximumExecutionFrequency + "maximum_execution_frequency": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Frequency at which the rule has to be evaluated", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MessageType + "message_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Notification type that can trigger the rule", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of message types that can trigger the rule", + 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: SourceIdentifier + "source_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the source of events", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Source of events for the AWS Config rule", + Required: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Schema for AWS Config ConfigRule", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Config::ConfigRule").WithTerraformTypeName("awscc_config_config_rule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "compliance": "Compliance", + "compliance_resource_id": "ComplianceResourceId", + "compliance_resource_types": "ComplianceResourceTypes", + "config_rule_id": "ConfigRuleId", + "config_rule_name": "ConfigRuleName", + "custom_policy_details": "CustomPolicyDetails", + "description": "Description", + "enable_debug_log_delivery": "EnableDebugLogDelivery", + "evaluation_modes": "EvaluationModes", + "event_source": "EventSource", + "input_parameters": "InputParameters", + "maximum_execution_frequency": "MaximumExecutionFrequency", + "message_type": "MessageType", + "mode": "Mode", + "owner": "Owner", + "policy_runtime": "PolicyRuntime", + "policy_text": "PolicyText", + "scope": "Scope", + "source": "Source", + "source_details": "SourceDetails", + "source_identifier": "SourceIdentifier", + "tag_key": "TagKey", + "tag_value": "TagValue", + "type": "Type", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Source/CustomPolicyDetails/PolicyText", + }) + 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/config/config_rule_resource_gen_test.go b/internal/aws/config/config_rule_resource_gen_test.go new file mode 100644 index 0000000000..70e0551d56 --- /dev/null +++ b/internal/aws/config/config_rule_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 config_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConfigConfigRule_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Config::ConfigRule", "awscc_config_config_rule", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/connect/traffic_distribution_group_resource_gen.go b/internal/aws/connect/traffic_distribution_group_resource_gen.go new file mode 100644 index 0000000000..293e69d914 --- /dev/null +++ b/internal/aws/connect/traffic_distribution_group_resource_gen.go @@ -0,0 +1,254 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package connect + +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/boolplanmodifier" + "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" + "regexp" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_connect_traffic_distribution_group", trafficDistributionGroupResource) +} + +// trafficDistributionGroupResource returns the Terraform awscc_connect_traffic_distribution_group resource. +// This Terraform resource corresponds to the CloudFormation AWS::Connect::TrafficDistributionGroup resource. +func trafficDistributionGroupResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "A description for the traffic distribution group.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description for the traffic distribution group.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 250), + stringvalidator.RegexMatches(regexp.MustCompile("(^[\\S].*[\\S]$)|(^[\\S]$)"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance that has been replicated.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance that has been replicated.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 250), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: IsDefault + // CloudFormation resource type schema: + // + // { + // "description": "If this is the default traffic distribution group.", + // "type": "boolean" + // } + "is_default": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "If this is the default traffic distribution group.", + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name for the traffic distribution group.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name for the traffic distribution group.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + stringvalidator.RegexMatches(regexp.MustCompile("(^[\\S].*[\\S]$)|(^[\\S]$)"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The status of the traffic distribution group.", + // "enum": [ + // "CREATION_IN_PROGRESS", + // "ACTIVE", + // "CREATION_FAILED", + // "PENDING_DELETION", + // "DELETION_FAILED", + // "UPDATE_IN_PROGRESS" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the traffic distribution group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "One or more tags.", + // "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 1 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": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "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 -.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 1 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 -.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "One or more tags.", + 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: TrafficDistributionGroupArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the traffic distribution group.", + // "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:traffic-distribution-group/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + // "type": "string" + // } + "traffic_distribution_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the traffic distribution group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + 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::Connect::TrafficDistributionGroup", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::TrafficDistributionGroup").WithTerraformTypeName("awscc_connect_traffic_distribution_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "instance_arn": "InstanceArn", + "is_default": "IsDefault", + "key": "Key", + "name": "Name", + "status": "Status", + "tags": "Tags", + "traffic_distribution_group_arn": "TrafficDistributionGroupArn", + "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/connect/traffic_distribution_group_resource_gen_test.go b/internal/aws/connect/traffic_distribution_group_resource_gen_test.go new file mode 100644 index 0000000000..4e31104eff --- /dev/null +++ b/internal/aws/connect/traffic_distribution_group_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectTrafficDistributionGroup_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::TrafficDistributionGroup", "awscc_connect_traffic_distribution_group", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/datasync/location_azure_blob_resource_gen.go b/internal/aws/datasync/location_azure_blob_resource_gen.go new file mode 100644 index 0000000000..953e7394e4 --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_resource_gen.go @@ -0,0 +1,381 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package datasync + +import ( + "context" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "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/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + "regexp" +) + +func init() { + registry.AddResourceFactory("awscc_datasync_location_azure_blob", locationAzureBlobResource) +} + +// locationAzureBlobResource returns the Terraform awscc_datasync_location_azure_blob resource. +// This Terraform resource corresponds to the CloudFormation AWS::DataSync::LocationAzureBlob resource. +func locationAzureBlobResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AgentArns + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + // "insertionOrder": false, + // "items": { + // "maxLength": 128, + // "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + // "type": "string" + // }, + // "maxItems": 4, + // "minItems": 1, + // "type": "array" + // } + "agent_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + Required: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 4), + listvalidator.ValueStringsAre( + stringvalidator.LengthAtMost(128), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$"), ""), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AzureAccessTier + // CloudFormation resource type schema: + // + // { + // "default": "HOT", + // "description": "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + // "enum": [ + // "HOT", + // "COOL", + // "ARCHIVE" + // ], + // "type": "string" + // } + "azure_access_tier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "HOT", + "COOL", + "ARCHIVE", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("HOT"), + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AzureBlobAuthenticationType + // CloudFormation resource type schema: + // + // { + // "default": "SAS", + // "description": "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + // "enum": [ + // "SAS" + // ], + // "type": "string" + // } + "azure_blob_authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "SAS", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("SAS"), + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: AzureBlobContainerUrl + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the Azure Blob container that was described.", + // "maxLength": 325, + // "pattern": "^https://[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}/[a-z0-9](-?[a-z0-9]){2,62}$", + // "type": "string" + // } + "azure_blob_container_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the Azure Blob container that was described.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(325), + stringvalidator.RegexMatches(regexp.MustCompile("^https://[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}/[a-z0-9](-?[a-z0-9]){2,62}$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + // AzureBlobContainerUrl is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: AzureBlobSasConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + // "properties": { + // "AzureBlobSasToken": { + // "description": "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + // "maxLength": 255, + // "minLength": 1, + // "pattern": "(^.+$)", + // "type": "string" + // } + // }, + // "required": [ + // "AzureBlobSasToken" + // ], + // "type": "object" + // } + "azure_blob_sas_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AzureBlobSasToken + "azure_blob_sas_token": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 255), + stringvalidator.RegexMatches(regexp.MustCompile("(^.+$)"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // AzureBlobSasConfiguration is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: AzureBlobType + // CloudFormation resource type schema: + // + // { + // "default": "BLOCK", + // "description": "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + // "enum": [ + // "BLOCK" + // ], + // "type": "string" + // } + "azure_blob_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "BLOCK", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("BLOCK"), + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocationArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + // "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}$", + // "type": "string" + // } + "location_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocationUri + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the Azure Blob Location that was described.", + // "maxLength": 4356, + // "pattern": "^(azure-blob)://[a-zA-Z0-9./\\-]+$", + // "type": "string" + // } + "location_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the Azure Blob Location that was described.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Subdirectory + // CloudFormation resource type schema: + // + // { + // "description": "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + // "maxLength": 1024, + // "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + // "type": "string" + // } + "subdirectory": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(1024), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // Subdirectory 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.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key for an AWS resource tag.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + // "type": "string" + // }, + // "Value": { + // "description": "The value for an AWS resource tag.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "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 for an AWS resource tag.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9\\s+=._:/-]+$"), ""), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for an AWS resource tag.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9\\s+=._:@/-]+$"), ""), + }, /*END VALIDATORS*/ + }, /*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*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource schema for AWS::DataSync::LocationAzureBlob.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DataSync::LocationAzureBlob").WithTerraformTypeName("awscc_datasync_location_azure_blob") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "agent_arns": "AgentArns", + "azure_access_tier": "AzureAccessTier", + "azure_blob_authentication_type": "AzureBlobAuthenticationType", + "azure_blob_container_url": "AzureBlobContainerUrl", + "azure_blob_sas_configuration": "AzureBlobSasConfiguration", + "azure_blob_sas_token": "AzureBlobSasToken", + "azure_blob_type": "AzureBlobType", + "key": "Key", + "location_arn": "LocationArn", + "location_uri": "LocationUri", + "subdirectory": "Subdirectory", + "tags": "Tags", + "value": "Value", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Subdirectory", + "/properties/AzureBlobSasConfiguration", + "/properties/AzureBlobContainerUrl", + }) + 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/datasync/location_azure_blob_resource_gen_test.go b/internal/aws/datasync/location_azure_blob_resource_gen_test.go new file mode 100644 index 0000000000..72fb4b178e --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_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 datasync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDataSyncLocationAzureBlob_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataSync::LocationAzureBlob", "awscc_datasync_location_azure_blob", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/dms/replication_config_resource_gen.go b/internal/aws/dms/replication_config_resource_gen.go new file mode 100644 index 0000000000..4deb937ec0 --- /dev/null +++ b/internal/aws/dms/replication_config_resource_gen.go @@ -0,0 +1,430 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/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" +) + +func init() { + registry.AddResourceFactory("awscc_dms_replication_config", replicationConfigResource) +} + +// replicationConfigResource returns the Terraform awscc_dms_replication_config resource. +// This Terraform resource corresponds to the CloudFormation AWS::DMS::ReplicationConfig resource. +func replicationConfigResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration parameters for provisioning a AWS DMS Serverless replication", + // "properties": { + // "AvailabilityZone": { + // "type": "string" + // }, + // "DnsNameServers": { + // "type": "string" + // }, + // "KmsKeyId": { + // "type": "string" + // }, + // "MaxCapacityUnits": { + // "type": "integer" + // }, + // "MinCapacityUnits": { + // "type": "integer" + // }, + // "MultiAZ": { + // "type": "boolean" + // }, + // "PreferredMaintenanceWindow": { + // "type": "string" + // }, + // "ReplicationSubnetGroupId": { + // "type": "string" + // }, + // "VpcSecurityGroupIds": { + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "MaxCapacityUnits" + // ], + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityZone + "availability_zone": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DnsNameServers + "dns_name_servers": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: KmsKeyId + "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MaxCapacityUnits + "max_capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + // Property: MinCapacityUnits + "min_capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MultiAZ + "multi_az": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: PreferredMaintenanceWindow + "preferred_maintenance_window": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicationSubnetGroupId + "replication_subnet_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VpcSecurityGroupIds + "vpc_security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration parameters for provisioning a AWS DMS Serverless replication", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicationConfigArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Replication Config", + // "type": "string" + // } + "replication_config_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Replication Config", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicationConfigIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "A unique identifier of replication configuration", + // "type": "string" + // } + "replication_config_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique identifier of replication configuration", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicationSettings + // CloudFormation resource type schema: + // + // { + // "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", + // "type": "object" + // } + "replication_settings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON settings for Servereless replications that are provisioned using this replication configuration", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReplicationType + // CloudFormation resource type schema: + // + // { + // "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", + // "enum": [ + // "full-load", + // "full-load-and-cdc", + // "cdc" + // ], + // "type": "string" + // } + "replication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of AWS DMS Serverless replication to provision using this replication configuration", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "full-load", + "full-load-and-cdc", + "cdc", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + // "type": "string" + // } + "resource_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SourceEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + // "type": "string" + // } + "source_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SupplementalSettings + // CloudFormation resource type schema: + // + // { + // "description": "JSON settings for specifying supplemental data", + // "type": "object" + // } + "supplemental_settings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON settings for specifying supplemental data", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TableMappings + // CloudFormation resource type schema: + // + // { + // "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + // "type": "object" + // } + "table_mappings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Map{ /*START PLAN MODIFIERS*/ + mapplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eContains a map of the key-value pairs for the resource tag or tags assigned to the dataset.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.\u003c/p\u003e", + // "properties": { + // "Key": { + // "description": "\u003cp\u003eTag key.\u003c/p\u003e", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "\u003cp\u003eTag value.\u003c/p\u003e", + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 200, + // "minItems": 1, + // "type": "array" + // } + "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: "

Tag key.

", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

Tag value.

", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 256), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 200), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TargetEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + // "type": "string" + // } + "target_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "A replication configuration that you later provide to configure and start a AWS DMS Serverless replication", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::ReplicationConfig").WithTerraformTypeName("awscc_dms_replication_config") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "availability_zone": "AvailabilityZone", + "compute_config": "ComputeConfig", + "dns_name_servers": "DnsNameServers", + "key": "Key", + "kms_key_id": "KmsKeyId", + "max_capacity_units": "MaxCapacityUnits", + "min_capacity_units": "MinCapacityUnits", + "multi_az": "MultiAZ", + "preferred_maintenance_window": "PreferredMaintenanceWindow", + "replication_config_arn": "ReplicationConfigArn", + "replication_config_identifier": "ReplicationConfigIdentifier", + "replication_settings": "ReplicationSettings", + "replication_subnet_group_id": "ReplicationSubnetGroupId", + "replication_type": "ReplicationType", + "resource_identifier": "ResourceIdentifier", + "source_endpoint_arn": "SourceEndpointArn", + "supplemental_settings": "SupplementalSettings", + "table_mappings": "TableMappings", + "tags": "Tags", + "target_endpoint_arn": "TargetEndpointArn", + "value": "Value", + "vpc_security_group_ids": "VpcSecurityGroupIds", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/replication_config_resource_gen_test.go b/internal/aws/dms/replication_config_resource_gen_test.go new file mode 100644 index 0000000000..0067df5026 --- /dev/null +++ b/internal/aws/dms/replication_config_resource_gen_test.go @@ -0,0 +1,46 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package dms_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSReplicationConfig_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::ReplicationConfig", "awscc_dms_replication_config", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + ), + }, + { + ResourceName: td.ResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }) +} + +func TestAccAWSDMSReplicationConfig_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::ReplicationConfig", "awscc_dms_replication_config", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, + }, + }) +} diff --git a/internal/aws/ec2/network_interface_attachment_resource_gen.go b/internal/aws/ec2/network_interface_attachment_resource_gen.go new file mode 100644 index 0000000000..00fd643f1a --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_resource_gen.go @@ -0,0 +1,142 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/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/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_ec2_network_interface_attachment", networkInterfaceAttachmentResource) +} + +// networkInterfaceAttachmentResource returns the Terraform awscc_ec2_network_interface_attachment resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::NetworkInterfaceAttachment resource. +func networkInterfaceAttachmentResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AttachmentId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the network interface attachment.", + // "type": "string" + // } + "attachment_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the network interface attachment.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DeleteOnTermination + // CloudFormation resource type schema: + // + // { + // "default": true, + // "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to true.", + // "type": "boolean" + // } + "delete_on_termination": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether to delete the network interface when the instance terminates. By default, this value is set to true.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + generic.BoolDefaultValue(true), + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DeviceIndex + // CloudFormation resource type schema: + // + // { + // "description": "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.", + // "type": "string" + // } + "device_index": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InstanceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the instance to which you will attach the ENI.", + // "type": "string" + // } + "instance_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the instance to which you will attach the ENI.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NetworkInterfaceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the ENI that you want to attach.", + // "type": "string" + // } + "network_interface_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the ENI that you want to attach.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::NetworkInterfaceAttachment", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::NetworkInterfaceAttachment").WithTerraformTypeName("awscc_ec2_network_interface_attachment") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "attachment_id": "AttachmentId", + "delete_on_termination": "DeleteOnTermination", + "device_index": "DeviceIndex", + "instance_id": "InstanceId", + "network_interface_id": "NetworkInterfaceId", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/network_interface_attachment_resource_gen_test.go b/internal/aws/ec2/network_interface_attachment_resource_gen_test.go new file mode 100644 index 0000000000..39074e1881 --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2NetworkInterfaceAttachment_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::NetworkInterfaceAttachment", "awscc_ec2_network_interface_attachment", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/network_interface_resource_gen.go b/internal/aws/ec2/network_interface_resource_gen.go index 3d3c5527a3..9db027e041 100644 --- a/internal/aws/ec2/network_interface_resource_gen.go +++ b/internal/aws/ec2/network_interface_resource_gen.go @@ -44,21 +44,6 @@ func networkInterfaceResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ - // Property: EnablePrimaryIpv6 - // CloudFormation resource type schema: - // - // { - // "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - // "type": "boolean" - // } - "enable_primary_ipv_6": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - Optional: true, - Computed: true, - PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ - boolplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: GroupSet // CloudFormation resource type schema: // @@ -111,6 +96,59 @@ func networkInterfaceResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Ipv4PrefixCount + // CloudFormation resource type schema: + // + // { + // "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + // "type": "integer" + // } + "ipv_4_prefix_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Ipv4Prefixes + // CloudFormation resource type schema: + // + // { + // "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Ipv4Prefix": { + // "type": "string" + // } + // }, + // "required": [ + // "Ipv4Prefix" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ipv_4_prefixes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Ipv4Prefix + "ipv_4_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Ipv6AddressCount // CloudFormation resource type schema: // @@ -163,6 +201,59 @@ func networkInterfaceResource(ctx context.Context) (resource.Resource, error) { setplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Ipv6PrefixCount + // CloudFormation resource type schema: + // + // { + // "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + // "type": "integer" + // } + "ipv_6_prefix_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Ipv6Prefixes + // CloudFormation resource type schema: + // + // { + // "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Ipv6Prefix": { + // "type": "string" + // } + // }, + // "required": [ + // "Ipv6Prefix" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ipv_6_prefixes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Ipv6Prefix + "ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: PrimaryPrivateIpAddress // CloudFormation resource type schema: // @@ -365,13 +456,18 @@ func networkInterfaceResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithSyntheticIDAttribute(false) opts = opts.WithAttributeNameMap(map[string]string{ "description": "Description", - "enable_primary_ipv_6": "EnablePrimaryIpv6", "group_set": "GroupSet", "id": "Id", "interface_type": "InterfaceType", + "ipv_4_prefix": "Ipv4Prefix", + "ipv_4_prefix_count": "Ipv4PrefixCount", + "ipv_4_prefixes": "Ipv4Prefixes", "ipv_6_address": "Ipv6Address", "ipv_6_address_count": "Ipv6AddressCount", "ipv_6_addresses": "Ipv6Addresses", + "ipv_6_prefix": "Ipv6Prefix", + "ipv_6_prefix_count": "Ipv6PrefixCount", + "ipv_6_prefixes": "Ipv6Prefixes", "key": "Key", "primary": "Primary", "primary_private_ip_address": "PrimaryPrivateIpAddress", diff --git a/internal/aws/ec2/route_resource_gen.go b/internal/aws/ec2/route_resource_gen.go new file mode 100644 index 0000000000..f2dc20403c --- /dev/null +++ b/internal/aws/ec2/route_resource_gen.go @@ -0,0 +1,287 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_ec2_route", routeResource) +} + +// routeResource returns the Terraform awscc_ec2_route resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::Route resource. +func routeResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CarrierGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the carrier gateway.", + // "type": "string" + // } + "carrier_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the carrier gateway.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: CidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The primary identifier of the resource generated by the service.", + // "type": "string" + // } + "cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The primary identifier of the resource generated by the service.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DestinationCidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The IPv4 CIDR block used for the destination match.", + // "type": "string" + // } + "destination_cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IPv4 CIDR block used for the destination match.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: DestinationIpv6CidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The IPv6 CIDR block used for the destination match.", + // "type": "string" + // } + "destination_ipv_6_cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IPv6 CIDR block used for the destination match.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: EgressOnlyInternetGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the egress-only internet gateway.", + // "type": "string" + // } + "egress_only_internet_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the egress-only internet gateway.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: GatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of an internet gateway or virtual private gateway attached to your VPC.", + // "type": "string" + // } + "gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of an internet gateway or virtual private gateway attached to your VPC.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InstanceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a NAT instance in your VPC.", + // "type": "string" + // } + "instance_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a NAT instance in your VPC.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LocalGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the local gateway.", + // "type": "string" + // } + "local_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the local gateway.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NatGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a NAT gateway.", + // "type": "string" + // } + "nat_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a NAT gateway.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NetworkInterfaceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the network interface.", + // "type": "string" + // } + "network_interface_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the network interface.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RouteTableId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.", + // "type": "string" + // } + "route_table_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: TransitGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a transit gateway.", + // "type": "string" + // } + "transit_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a transit gateway.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VpcEndpointId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + // "type": "string" + // } + "vpc_endpoint_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VpcPeeringConnectionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a VPC peering connection.", + // "type": "string" + // } + "vpc_peering_connection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a VPC peering connection.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::Route", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::Route").WithTerraformTypeName("awscc_ec2_route") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "carrier_gateway_id": "CarrierGatewayId", + "cidr_block": "CidrBlock", + "destination_cidr_block": "DestinationCidrBlock", + "destination_ipv_6_cidr_block": "DestinationIpv6CidrBlock", + "egress_only_internet_gateway_id": "EgressOnlyInternetGatewayId", + "gateway_id": "GatewayId", + "instance_id": "InstanceId", + "local_gateway_id": "LocalGatewayId", + "nat_gateway_id": "NatGatewayId", + "network_interface_id": "NetworkInterfaceId", + "route_table_id": "RouteTableId", + "transit_gateway_id": "TransitGatewayId", + "vpc_endpoint_id": "VpcEndpointId", + "vpc_peering_connection_id": "VpcPeeringConnectionId", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/route_resource_gen_test.go b/internal/aws/ec2/route_resource_gen_test.go new file mode 100644 index 0000000000..1edbc68417 --- /dev/null +++ b/internal/aws/ec2/route_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2Route_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::Route", "awscc_ec2_route", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/spot_fleet_resource_gen.go b/internal/aws/ec2/spot_fleet_resource_gen.go index 79d1f1039b..eba00b8ac0 100644 --- a/internal/aws/ec2/spot_fleet_resource_gen.go +++ b/internal/aws/ec2/spot_fleet_resource_gen.go @@ -3036,6 +3036,7 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // TagSpecifications is a write-only property. }, /*END ATTRIBUTE*/ // Property: TargetCapacity "target_capacity": schema.Int64Attribute{ /*START ATTRIBUTE*/ @@ -3229,6 +3230,10 @@ func spotFleetResource(ctx context.Context) (resource.Resource, error) { "weighted_capacity": "WeightedCapacity", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/iam/managed_policy_resource_gen.go b/internal/aws/iam/managed_policy_resource_gen.go index 7277adadf5..26d4124a6a 100644 --- a/internal/aws/iam/managed_policy_resource_gen.go +++ b/internal/aws/iam/managed_policy_resource_gen.go @@ -8,13 +8,13 @@ package iam 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/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" @@ -28,59 +28,15 @@ func init() { // This Terraform resource corresponds to the CloudFormation AWS::IAM::ManagedPolicy resource. func managedPolicyResource(ctx context.Context) (resource.Resource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ - // Property: AttachmentCount - // CloudFormation resource type schema: - // - // { - // "description": "The number of entities (users, groups, and roles) that the policy is attached to.", - // "type": "integer" - // } - "attachment_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "The number of entities (users, groups, and roles) that the policy is attached to.", - Computed: true, - PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ - int64planmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ - // Property: CreateDate - // CloudFormation resource type schema: - // - // { - // "description": "The date and time, in ISO 8601 date-time format, when the policy was created.", - // "type": "string" - // } - "create_date": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The date and time, in ISO 8601 date-time format, when the policy was created.", - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ - // Property: DefaultVersionId - // CloudFormation resource type schema: - // - // { - // "description": "The identifier for the version of the policy that is set as the default version.", - // "type": "string" - // } - "default_version_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The identifier for the version of the policy that is set as the default version.", - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // // { - // "description": "A friendly description of the policy.", // "type": "string" // } "description": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A friendly description of the policy.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), @@ -90,48 +46,44 @@ func managedPolicyResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the group to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", // "uniqueItems": true // } - "groups": schema.SetAttribute{ /*START ATTRIBUTE*/ + "groups": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the group to attach the policy to.", Optional: true, Computed: true, - PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ - setplanmodifier.UseStateForUnknown(), + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.UniqueValues(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ - // Property: IsAttachable + // Property: Id // CloudFormation resource type schema: // // { - // "description": "Specifies whether the policy can be attached to an IAM user, group, or role.", - // "type": "boolean" + // "type": "string" // } - "is_attachable": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether the policy can be attached to an IAM user, group, or role.", - Computed: true, - PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ - boolplanmodifier.UseStateForUnknown(), + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ManagedPolicyName // CloudFormation resource type schema: // // { - // "description": "The friendly name of the policy.", // "type": "string" // } "managed_policy_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The friendly name of the policy.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), @@ -141,137 +93,64 @@ func managedPolicyResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The path for the policy.", // "type": "string" // } "path": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The path for the policy.", - Optional: true, - Computed: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ - // Property: PermissionsBoundaryUsageCount - // CloudFormation resource type schema: - // - // { - // "description": "The number of entities (users and roles) for which the policy is used to set the permissions boundary.", - // "type": "integer" - // } - "permissions_boundary_usage_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "The number of entities (users and roles) for which the policy is used to set the permissions boundary.", - Computed: true, - PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ - int64planmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ - // Property: PolicyArn - // CloudFormation resource type schema: - // - // { - // "description": "Amazon Resource Name (ARN) of the managed policy", - // "type": "string" - // } - "policy_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Amazon Resource Name (ARN) of the managed policy", - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: PolicyDocument // CloudFormation resource type schema: // // { - // "description": "The JSON policy document that you want to use as the content for the new policy.", - // "type": "string" + // "type": "object" // } - "policy_document": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The JSON policy document that you want to use as the content for the new policy.", + "policy_document": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, Required: true, }, /*END ATTRIBUTE*/ - // Property: PolicyId - // CloudFormation resource type schema: - // - // { - // "description": "The stable and unique string identifying the policy.", - // "type": "string" - // } - "policy_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The stable and unique string identifying the policy.", - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ // Property: Roles // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the role to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } - "roles": schema.SetAttribute{ /*START ATTRIBUTE*/ + "roles": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the role to attach the policy to.", Optional: true, Computed: true, - PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ - setplanmodifier.UseStateForUnknown(), - }, /*END PLAN MODIFIERS*/ - }, /*END ATTRIBUTE*/ - // Property: UpdateDate - // CloudFormation resource type schema: - // - // { - // "description": "The date and time, in ISO 8601 date-time format, when the policy was last updated.", - // "type": "string" - // } - "update_date": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The date and time, in ISO 8601 date-time format, when the policy was last updated.", - Computed: true, - PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ - stringplanmodifier.UseStateForUnknown(), + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Users // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } - "users": schema.SetAttribute{ /*START ATTRIBUTE*/ + "users": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the IAM user to attach the policy to.", Optional: true, Computed: true, - PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ - setplanmodifier.UseStateForUnknown(), + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ - 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::IAM::ManagedPolicy", Version: 1, @@ -282,23 +161,16 @@ func managedPolicyResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::IAM::ManagedPolicy").WithTerraformTypeName("awscc_iam_managed_policy") opts = opts.WithTerraformSchema(schema) - opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithSyntheticIDAttribute(false) opts = opts.WithAttributeNameMap(map[string]string{ - "attachment_count": "AttachmentCount", - "create_date": "CreateDate", - "default_version_id": "DefaultVersionId", - "description": "Description", - "groups": "Groups", - "is_attachable": "IsAttachable", - "managed_policy_name": "ManagedPolicyName", - "path": "Path", - "permissions_boundary_usage_count": "PermissionsBoundaryUsageCount", - "policy_arn": "PolicyArn", - "policy_document": "PolicyDocument", - "policy_id": "PolicyId", - "roles": "Roles", - "update_date": "UpdateDate", - "users": "Users", + "description": "Description", + "groups": "Groups", + "id": "Id", + "managed_policy_name": "ManagedPolicyName", + "path": "Path", + "policy_document": "PolicyDocument", + "roles": "Roles", + "users": "Users", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/internetmonitor/monitor_resource_gen.go b/internal/aws/internetmonitor/monitor_resource_gen.go index 63b1bb561b..0780b22914 100644 --- a/internal/aws/internetmonitor/monitor_resource_gen.go +++ b/internal/aws/internetmonitor/monitor_resource_gen.go @@ -55,11 +55,57 @@ func monitorResource(ctx context.Context) (resource.Resource, error) { // { // "additionalProperties": false, // "properties": { + // "AvailabilityLocalHealthEventsConfig": { + // "additionalProperties": false, + // "properties": { + // "HealthScoreThreshold": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "MinTrafficImpact": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "Status": { + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "AvailabilityScoreThreshold": { // "maximum": 100.0, // "minimum": 0.0, // "type": "number" // }, + // "PerformanceLocalHealthEventsConfig": { + // "additionalProperties": false, + // "properties": { + // "HealthScoreThreshold": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "MinTrafficImpact": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "Status": { + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "PerformanceScoreThreshold": { // "maximum": 100.0, // "minimum": 0.0, @@ -70,6 +116,52 @@ func monitorResource(ctx context.Context) (resource.Resource, error) { // } "health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityLocalHealthEventsConfig + "availability_local_health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HealthScoreThreshold + "health_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 100.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MinTrafficImpact + "min_traffic_impact": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 100.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: AvailabilityScoreThreshold "availability_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ Optional: true, @@ -81,6 +173,52 @@ func monitorResource(ctx context.Context) (resource.Resource, error) { float64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: PerformanceLocalHealthEventsConfig + "performance_local_health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HealthScoreThreshold + "health_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 100.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MinTrafficImpact + "min_traffic_impact": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 100.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + 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*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: PerformanceScoreThreshold "performance_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ Optional: true, @@ -476,29 +614,33 @@ func monitorResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(true) opts = opts.WithAttributeNameMap(map[string]string{ - "availability_score_threshold": "AvailabilityScoreThreshold", - "bucket_name": "BucketName", - "bucket_prefix": "BucketPrefix", - "created_at": "CreatedAt", - "health_events_config": "HealthEventsConfig", - "internet_measurements_log_delivery": "InternetMeasurementsLogDelivery", - "key": "Key", - "log_delivery_status": "LogDeliveryStatus", - "max_city_networks_to_monitor": "MaxCityNetworksToMonitor", - "modified_at": "ModifiedAt", - "monitor_arn": "MonitorArn", - "monitor_name": "MonitorName", - "performance_score_threshold": "PerformanceScoreThreshold", - "processing_status": "ProcessingStatus", - "processing_status_info": "ProcessingStatusInfo", - "resources": "Resources", - "resources_to_add": "ResourcesToAdd", - "resources_to_remove": "ResourcesToRemove", - "s3_config": "S3Config", - "status": "Status", - "tags": "Tags", - "traffic_percentage_to_monitor": "TrafficPercentageToMonitor", - "value": "Value", + "availability_local_health_events_config": "AvailabilityLocalHealthEventsConfig", + "availability_score_threshold": "AvailabilityScoreThreshold", + "bucket_name": "BucketName", + "bucket_prefix": "BucketPrefix", + "created_at": "CreatedAt", + "health_events_config": "HealthEventsConfig", + "health_score_threshold": "HealthScoreThreshold", + "internet_measurements_log_delivery": "InternetMeasurementsLogDelivery", + "key": "Key", + "log_delivery_status": "LogDeliveryStatus", + "max_city_networks_to_monitor": "MaxCityNetworksToMonitor", + "min_traffic_impact": "MinTrafficImpact", + "modified_at": "ModifiedAt", + "monitor_arn": "MonitorArn", + "monitor_name": "MonitorName", + "performance_local_health_events_config": "PerformanceLocalHealthEventsConfig", + "performance_score_threshold": "PerformanceScoreThreshold", + "processing_status": "ProcessingStatus", + "processing_status_info": "ProcessingStatusInfo", + "resources": "Resources", + "resources_to_add": "ResourcesToAdd", + "resources_to_remove": "ResourcesToRemove", + "s3_config": "S3Config", + "status": "Status", + "tags": "Tags", + "traffic_percentage_to_monitor": "TrafficPercentageToMonitor", + "value": "Value", }) opts = opts.WithWriteOnlyPropertyPaths([]string{ diff --git a/internal/aws/ivs/recording_configuration_resource_gen.go b/internal/aws/ivs/recording_configuration_resource_gen.go index 904e9205d4..c9bc0d6761 100644 --- a/internal/aws/ivs/recording_configuration_resource_gen.go +++ b/internal/aws/ivs/recording_configuration_resource_gen.go @@ -18,10 +18,10 @@ import ( "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" - "regexp" - + "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" + "regexp" ) func init() { @@ -38,7 +38,7 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err // { // "description": "Recording Configuration ARN is automatically generated on creation and assigned as the unique identifier.", // "maxLength": 128, - // "minLength": 1, + // "minLength": 0, // "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", // "type": "string" // } @@ -73,9 +73,6 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err // "type": "object" // } // }, - // "required": [ - // "S3" - // ], // "type": "object" // } "destination_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -96,8 +93,10 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "Recording S3 Destination Configuration.", - Required: true, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), objectplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ @@ -154,6 +153,94 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err int64planmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: RenditionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Rendition Configuration describes which renditions should be recorded for a stream.", + // "properties": { + // "RenditionSelection": { + // "default": "ALL", + // "description": "Resolution Selection indicates which set of renditions are recorded for a stream.", + // "enum": [ + // "ALL", + // "NONE", + // "CUSTOM" + // ], + // "type": "string" + // }, + // "Renditions": { + // "description": "Renditions indicates which renditions are recorded for a stream.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "FULL_HD", + // "HD", + // "SD", + // "LOWEST_RESOLUTION" + // ], + // "type": "string" + // }, + // "maxItems": 4, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + // }, + // "type": "object" + // } + "rendition_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RenditionSelection + "rendition_selection": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Resolution Selection indicates which set of renditions are recorded for a stream.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ALL", + "NONE", + "CUSTOM", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("ALL"), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Renditions + "renditions": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Renditions indicates which renditions are recorded for a stream.", + Optional: true, + Computed: true, + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeBetween(0, 4), + setvalidator.ValueStringsAre( + stringvalidator.OneOf( + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION", + ), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + setplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Rendition Configuration describes which renditions should be recorded for a stream.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: State // CloudFormation resource type schema: // @@ -240,6 +327,7 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err // "description": "Recording Thumbnail Configuration.", // "properties": { // "RecordingMode": { + // "default": "INTERVAL", // "description": "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", // "enum": [ // "INTERVAL", @@ -247,16 +335,39 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err // ], // "type": "string" // }, + // "Resolution": { + // "description": "Resolution indicates the desired resolution of recorded thumbnails.", + // "enum": [ + // "FULL_HD", + // "HD", + // "SD", + // "LOWEST_RESOLUTION" + // ], + // "type": "string" + // }, + // "Storage": { + // "description": "Storage indicates the format in which thumbnails are recorded.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "SEQUENTIAL", + // "LATEST" + // ], + // "type": "string" + // }, + // "maxItems": 2, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // }, // "TargetIntervalSeconds": { - // "description": "Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + // "default": 60, + // "description": "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", // "maximum": 60, - // "minimum": 5, + // "minimum": 1, // "type": "integer" // } // }, - // "required": [ - // "RecordingMode" - // ], // "type": "object" // } "thumbnail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -264,7 +375,8 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err // Property: RecordingMode "recording_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( "INTERVAL", @@ -272,18 +384,59 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("INTERVAL"), + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Resolution + "resolution": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Resolution indicates the desired resolution of recorded thumbnails.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Storage + "storage": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Storage indicates the format in which thumbnails are recorded.", + Optional: true, + Computed: true, + Validators: []validator.Set{ /*START VALIDATORS*/ + setvalidator.SizeBetween(0, 2), + setvalidator.ValueStringsAre( + stringvalidator.OneOf( + "SEQUENTIAL", + "LATEST", + ), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + setplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: TargetIntervalSeconds "target_interval_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + Description: "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", Optional: true, Computed: true, Validators: []validator.Int64{ /*START VALIDATORS*/ - int64validator.Between(5, 60), + int64validator.Between(1, 60), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + generic.Int64DefaultValue(60), int64planmodifier.UseStateForUnknown(), int64planmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ @@ -326,8 +479,13 @@ func recordingConfigurationResource(ctx context.Context) (resource.Resource, err "name": "Name", "recording_mode": "RecordingMode", "recording_reconnect_window_seconds": "RecordingReconnectWindowSeconds", + "rendition_configuration": "RenditionConfiguration", + "rendition_selection": "RenditionSelection", + "renditions": "Renditions", + "resolution": "Resolution", "s3": "S3", "state": "State", + "storage": "Storage", "tags": "Tags", "target_interval_seconds": "TargetIntervalSeconds", "thumbnail_configuration": "ThumbnailConfiguration", diff --git a/internal/aws/kendra/data_source_resource_gen.go b/internal/aws/kendra/data_source_resource_gen.go index 47db4c27f8..8fe03e685d 100644 --- a/internal/aws/kendra/data_source_resource_gen.go +++ b/internal/aws/kendra/data_source_resource_gen.go @@ -801,6 +801,11 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { // "required": [ // "WorkDocsConfiguration" // ] + // }, + // { + // "required": [ + // "TemplateConfiguration" + // ] // } // ], // "properties": { @@ -2226,6 +2231,18 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "TemplateConfiguration": { + // "additionalProperties": false, + // "properties": { + // "Template": { + // "type": "string" + // } + // }, + // "required": [ + // "Template" + // ], + // "type": "object" + // }, // "WebCrawlerConfiguration": { // "additionalProperties": false, // "properties": { @@ -4422,6 +4439,20 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: TemplateConfiguration + "template_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Template + "template": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: WebCrawlerConfiguration "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -4951,7 +4982,8 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { // "CONFLUENCE", // "GOOGLEDRIVE", // "WEBCRAWLER", - // "WORKDOCS" + // "WORKDOCS", + // "TEMPLATE" // ], // "type": "string" // } @@ -4971,6 +5003,7 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { "GOOGLEDRIVE", "WEBCRAWLER", "WORKDOCS", + "TEMPLATE", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -5116,6 +5149,8 @@ func dataSourceResource(ctx context.Context) (resource.Resource, error) { "target_document_attribute_key": "TargetDocumentAttributeKey", "target_document_attribute_value": "TargetDocumentAttributeValue", "target_document_attribute_value_deletion": "TargetDocumentAttributeValueDeletion", + "template": "Template", + "template_configuration": "TemplateConfiguration", "tenant_domain": "TenantDomain", "type": "Type", "url_exclusion_patterns": "UrlExclusionPatterns", diff --git a/internal/aws/kms/key_resource_gen.go b/internal/aws/kms/key_resource_gen.go index 1e9116e194..ff6c03371f 100644 --- a/internal/aws/kms/key_resource_gen.go +++ b/internal/aws/kms/key_resource_gen.go @@ -43,6 +43,24 @@ func keyResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: BypassPolicyLockoutSafetyCheck + // CloudFormation resource type schema: + // + // { + // "default": false, + // "description": "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.", + // "type": "boolean" + // } + "bypass_policy_lockout_safety_check": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + generic.BoolDefaultValue(false), + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // BypassPolicyLockoutSafetyCheck is a write-only property. + }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // @@ -109,12 +127,18 @@ func keyResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:\u003cpartition\u003e:iam::\u003caccount-id\u003e:root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}", // "description": "The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules.", // "type": "string" // } "key_policy": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules.", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + generic.StringDefaultValue("{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn::iam:::root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}"), + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: KeySpec // CloudFormation resource type schema: @@ -341,24 +365,26 @@ func keyResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(true) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "description": "Description", - "enable_key_rotation": "EnableKeyRotation", - "enabled": "Enabled", - "key": "Key", - "key_id": "KeyId", - "key_policy": "KeyPolicy", - "key_spec": "KeySpec", - "key_usage": "KeyUsage", - "multi_region": "MultiRegion", - "origin": "Origin", - "pending_window_in_days": "PendingWindowInDays", - "tags": "Tags", - "value": "Value", + "arn": "Arn", + "bypass_policy_lockout_safety_check": "BypassPolicyLockoutSafetyCheck", + "description": "Description", + "enable_key_rotation": "EnableKeyRotation", + "enabled": "Enabled", + "key": "Key", + "key_id": "KeyId", + "key_policy": "KeyPolicy", + "key_spec": "KeySpec", + "key_usage": "KeyUsage", + "multi_region": "MultiRegion", + "origin": "Origin", + "pending_window_in_days": "PendingWindowInDays", + "tags": "Tags", + "value": "Value", }) opts = opts.WithWriteOnlyPropertyPaths([]string{ "/properties/PendingWindowInDays", + "/properties/BypassPolicyLockoutSafetyCheck", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/kms/key_resource_gen_test.go b/internal/aws/kms/key_resource_gen_test.go index ccb58de5e7..14d0200b95 100644 --- a/internal/aws/kms/key_resource_gen_test.go +++ b/internal/aws/kms/key_resource_gen_test.go @@ -6,7 +6,6 @@ package kms_test import ( - "regexp" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -18,8 +17,30 @@ func TestAccAWSKMSKey_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 TestAccAWSKMSKey_disappears(t *testing.T) { + td := acctest.NewTestData(t, "AWS::KMS::Key", "awscc_kms_key", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + Check: resource.ComposeTestCheckFunc( + td.CheckExistsInAWS(), + td.DeleteResource(), + ), + ExpectNonEmptyPlan: true, }, }) } diff --git a/internal/aws/lambda/layer_version_permission_resource_gen.go b/internal/aws/lambda/layer_version_permission_resource_gen.go new file mode 100644 index 0000000000..9e5b0f3f60 --- /dev/null +++ b/internal/aws/lambda/layer_version_permission_resource_gen.go @@ -0,0 +1,132 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package lambda + +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/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_lambda_layer_version_permission", layerVersionPermissionResource) +} + +// layerVersionPermissionResource returns the Terraform awscc_lambda_layer_version_permission resource. +// This Terraform resource corresponds to the CloudFormation AWS::Lambda::LayerVersionPermission resource. +func layerVersionPermissionResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Action + // CloudFormation resource type schema: + // + // { + // "description": "The API action that grants access to the layer.", + // "type": "string" + // } + "action": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The API action that grants access to the layer.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "ID generated by service", + // "type": "string" + // } + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID generated by service", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LayerVersionArn + // CloudFormation resource type schema: + // + // { + // "description": "The name or Amazon Resource Name (ARN) of the layer.", + // "type": "string" + // } + "layer_version_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name or Amazon Resource Name (ARN) of the layer.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OrganizationId + // CloudFormation resource type schema: + // + // { + // "description": "With the principal set to *, grant permission to all accounts in the specified organization.", + // "type": "string" + // } + "organization_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "With the principal set to *, grant permission to all accounts in the specified organization.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Principal + // CloudFormation resource type schema: + // + // { + // "description": "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + // "type": "string" + // } + "principal": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + schema := schema.Schema{ + Description: "Schema for Lambda LayerVersionPermission", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Lambda::LayerVersionPermission").WithTerraformTypeName("awscc_lambda_layer_version_permission") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(false) + opts = opts.WithAttributeNameMap(map[string]string{ + "action": "Action", + "id": "Id", + "layer_version_arn": "LayerVersionArn", + "organization_id": "OrganizationId", + "principal": "Principal", + }) + + opts = opts.IsImmutableType(true) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/lambda/layer_version_permission_resource_gen_test.go b/internal/aws/lambda/layer_version_permission_resource_gen_test.go new file mode 100644 index 0000000000..03e67f339f --- /dev/null +++ b/internal/aws/lambda/layer_version_permission_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 lambda_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSLambdaLayerVersionPermission_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Lambda::LayerVersionPermission", "awscc_lambda_layer_version_permission", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/mediatailor/channel_policy_resource_gen.go b/internal/aws/mediatailor/channel_policy_resource_gen.go new file mode 100644 index 0000000000..0fc01018fc --- /dev/null +++ b/internal/aws/mediatailor/channel_policy_resource_gen.go @@ -0,0 +1,88 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package mediatailor + +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/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_mediatailor_channel_policy", channelPolicyResource) +} + +// channelPolicyResource returns the Terraform awscc_mediatailor_channel_policy resource. +// This Terraform resource corresponds to the CloudFormation AWS::MediaTailor::ChannelPolicy resource. +func channelPolicyResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChannelName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "channel_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Policy + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe IAM policy for the channel. IAM policies are used to control access to your channel.\u003c/p\u003e", + // "type": "string" + // } + "policy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The IAM policy for the channel. IAM policies are used to control access to your channel.

", + Required: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Definition of AWS::MediaTailor::ChannelPolicy Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::ChannelPolicy").WithTerraformTypeName("awscc_mediatailor_channel_policy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "channel_name": "ChannelName", + "policy": "Policy", + }) + + 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/mediatailor/channel_policy_resource_gen_test.go b/internal/aws/mediatailor/channel_policy_resource_gen_test.go new file mode 100644 index 0000000000..b93cd50288 --- /dev/null +++ b/internal/aws/mediatailor/channel_policy_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorChannelPolicy_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::ChannelPolicy", "awscc_mediatailor_channel_policy", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/mediatailor/channel_resource_gen.go b/internal/aws/mediatailor/channel_resource_gen.go new file mode 100644 index 0000000000..5c6975b5de --- /dev/null +++ b/internal/aws/mediatailor/channel_resource_gen.go @@ -0,0 +1,463 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package mediatailor + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "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" +) + +func init() { + registry.AddResourceFactory("awscc_mediatailor_channel", channelResource) +} + +// channelResource returns the Terraform awscc_mediatailor_channel resource. +// This Terraform resource corresponds to the CloudFormation AWS::MediaTailor::Channel resource. +func channelResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the channel.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the channel.

", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ChannelName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "channel_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FillerSlate + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "\u003cp\u003eSlate VOD source configuration.\u003c/p\u003e", + // "properties": { + // "SourceLocationName": { + // "description": "\u003cp\u003eThe name of the source location where the slate VOD source is stored.\u003c/p\u003e", + // "type": "string" + // }, + // "VodSourceName": { + // "description": "\u003cp\u003eThe slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.\u003c/p\u003e", + // "type": "string" + // } + // }, + // "type": "object" + // } + "filler_slate": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SourceLocationName + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source location where the slate VOD source is stored.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VodSourceName + "vod_source_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

Slate VOD source configuration.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: LogConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe log configuration for the channel.\u003c/p\u003e", + // "properties": { + // "LogTypes": { + // "description": "\u003cp\u003eThe log types.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "AS_RUN" + // ], + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "log_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LogTypes + "log_types": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "

The log types.

", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.OneOf( + "AS_RUN", + ), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

The log configuration for the channel.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Outputs + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe channel's output properties.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe output configuration for this channel.\u003c/p\u003e", + // "properties": { + // "DashPlaylistSettings": { + // "additionalProperties": false, + // "description": "\u003cp\u003eDash manifest configuration parameters.\u003c/p\u003e", + // "properties": { + // "ManifestWindowSeconds": { + // "default": 0, + // "description": "\u003cp\u003eThe total duration (in seconds) of each manifest. Minimum value: \u003ccode\u003e30\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e3600\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "MinBufferTimeSeconds": { + // "default": 0, + // "description": "\u003cp\u003eMinimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "MinUpdatePeriodSeconds": { + // "default": 0, + // "description": "\u003cp\u003eMinimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "SuggestedPresentationDelaySeconds": { + // "default": 0, + // "description": "\u003cp\u003eAmount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "HlsPlaylistSettings": { + // "additionalProperties": false, + // "description": "\u003cp\u003eHLS playlist configuration parameters.\u003c/p\u003e", + // "properties": { + // "ManifestWindowSeconds": { + // "default": 0, + // "description": "\u003cp\u003eThe total duration (in seconds) of each manifest. Minimum value: \u003ccode\u003e30\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e3600\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ManifestName": { + // "description": "\u003cp\u003eThe name of the manifest for the channel. The name appears in the \u003ccode\u003ePlaybackUrl\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eA string used to match which \u003ccode\u003eHttpPackageConfiguration\u003c/code\u003e is used for each \u003ccode\u003eVodSource\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // } + // }, + // "required": [ + // "ManifestName", + // "SourceGroup" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "outputs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DashPlaylistSettings + "dash_playlist_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ManifestWindowSeconds + "manifest_window_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + generic.Float64DefaultValue(0.000000), + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MinBufferTimeSeconds + "min_buffer_time_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + generic.Float64DefaultValue(0.000000), + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MinUpdatePeriodSeconds + "min_update_period_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + generic.Float64DefaultValue(0.000000), + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SuggestedPresentationDelaySeconds + "suggested_presentation_delay_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + generic.Float64DefaultValue(0.000000), + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

Dash manifest configuration parameters.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HlsPlaylistSettings + "hls_playlist_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ManifestWindowSeconds + "manifest_window_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + generic.Float64DefaultValue(0.000000), + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

HLS playlist configuration parameters.

", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ManifestName + "manifest_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the manifest for the channel. The name appears in the PlaybackUrl.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

A string used to match which HttpPackageConfiguration is used for each VodSource.

", + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

The channel's output properties.

", + Required: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + }, /*END PLAN MODIFIERS*/ + // Outputs is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: PlaybackMode + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "LOOP", + // "LINEAR" + // ], + // "type": "string" + // } + "playback_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "LOOP", + "LINEAR", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the channel.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the channel.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tier + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "BASIC", + // "STANDARD" + // ], + // "type": "string" + // } + "tier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "BASIC", + "STANDARD", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Definition of AWS::MediaTailor::Channel Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::Channel").WithTerraformTypeName("awscc_mediatailor_channel") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "channel_name": "ChannelName", + "dash_playlist_settings": "DashPlaylistSettings", + "filler_slate": "FillerSlate", + "hls_playlist_settings": "HlsPlaylistSettings", + "key": "Key", + "log_configuration": "LogConfiguration", + "log_types": "LogTypes", + "manifest_name": "ManifestName", + "manifest_window_seconds": "ManifestWindowSeconds", + "min_buffer_time_seconds": "MinBufferTimeSeconds", + "min_update_period_seconds": "MinUpdatePeriodSeconds", + "outputs": "Outputs", + "playback_mode": "PlaybackMode", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "suggested_presentation_delay_seconds": "SuggestedPresentationDelaySeconds", + "tags": "Tags", + "tier": "Tier", + "value": "Value", + "vod_source_name": "VodSourceName", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/Outputs", + }) + 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/mediatailor/channel_resource_gen_test.go b/internal/aws/mediatailor/channel_resource_gen_test.go new file mode 100644 index 0000000000..9afc11d116 --- /dev/null +++ b/internal/aws/mediatailor/channel_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorChannel_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::Channel", "awscc_mediatailor_channel", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/mediatailor/live_source_resource_gen.go b/internal/aws/mediatailor/live_source_resource_gen.go new file mode 100644 index 0000000000..323d614338 --- /dev/null +++ b/internal/aws/mediatailor/live_source_resource_gen.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package mediatailor + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_mediatailor_live_source", liveSourceResource) +} + +// liveSourceResource returns the Terraform awscc_mediatailor_live_source resource. +// This Terraform resource corresponds to the CloudFormation AWS::MediaTailor::LiveSource resource. +func liveSourceResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the live source.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the live source.

", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HttpPackageConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eA list of HTTP package configuration parameters for this live source.\u003c/p\u003e", + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe HTTP package configuration properties for the requested VOD source.\u003c/p\u003e", + // "properties": { + // "Path": { + // "description": "\u003cp\u003eThe relative path to the URL for this VOD source. This is combined with \u003ccode\u003eSourceLocation::HttpConfiguration::BaseUrl\u003c/code\u003e to form a valid URL.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eThe name of the source group. This has to match one of the \u003ccode\u003eChannel::Outputs::SourceGroup\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "Type": { + // "enum": [ + // "DASH", + // "HLS" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Path", + // "SourceGroup", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "http_package_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Path + "path": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "DASH", + "HLS", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

A list of HTTP package configuration parameters for this live source.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: LiveSourceName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "live_source_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SourceLocationName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the live source.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the live source.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Definition of AWS::MediaTailor::LiveSource Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::LiveSource").WithTerraformTypeName("awscc_mediatailor_live_source") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "http_package_configurations": "HttpPackageConfigurations", + "key": "Key", + "live_source_name": "LiveSourceName", + "path": "Path", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "tags": "Tags", + "type": "Type", + "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/mediatailor/live_source_resource_gen_test.go b/internal/aws/mediatailor/live_source_resource_gen_test.go new file mode 100644 index 0000000000..ea42db4a94 --- /dev/null +++ b/internal/aws/mediatailor/live_source_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorLiveSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::LiveSource", "awscc_mediatailor_live_source", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/mediatailor/vod_source_resource_gen.go b/internal/aws/mediatailor/vod_source_resource_gen.go new file mode 100644 index 0000000000..314f1beac1 --- /dev/null +++ b/internal/aws/mediatailor/vod_source_resource_gen.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package mediatailor + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_mediatailor_vod_source", vodSourceResource) +} + +// vodSourceResource returns the Terraform awscc_mediatailor_vod_source resource. +// This Terraform resource corresponds to the CloudFormation AWS::MediaTailor::VodSource resource. +func vodSourceResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the VOD source.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the VOD source.

", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HttpPackageConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eA list of HTTP package configuration parameters for this VOD source.\u003c/p\u003e", + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe HTTP package configuration properties for the requested VOD source.\u003c/p\u003e", + // "properties": { + // "Path": { + // "description": "\u003cp\u003eThe relative path to the URL for this VOD source. This is combined with \u003ccode\u003eSourceLocation::HttpConfiguration::BaseUrl\u003c/code\u003e to form a valid URL.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eThe name of the source group. This has to match one of the \u003ccode\u003eChannel::Outputs::SourceGroup\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "Type": { + // "enum": [ + // "DASH", + // "HLS" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Path", + // "SourceGroup", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "http_package_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Path + "path": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "DASH", + "HLS", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

A list of HTTP package configuration parameters for this VOD source.

", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: SourceLocationName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the VOD source.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the VOD source.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ + setplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VodSourceName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vod_source_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Definition of AWS::MediaTailor::VodSource Resource Type", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::VodSource").WithTerraformTypeName("awscc_mediatailor_vod_source") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "http_package_configurations": "HttpPackageConfigurations", + "key": "Key", + "path": "Path", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "tags": "Tags", + "type": "Type", + "value": "Value", + "vod_source_name": "VodSourceName", + }) + + 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/mediatailor/vod_source_resource_gen_test.go b/internal/aws/mediatailor/vod_source_resource_gen_test.go new file mode 100644 index 0000000000..90e806ec97 --- /dev/null +++ b/internal/aws/mediatailor/vod_source_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorVodSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::VodSource", "awscc_mediatailor_vod_source", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/neptune/db_cluster_resource_gen.go b/internal/aws/neptune/db_cluster_resource_gen.go index 32cfc3c6f5..3784956db5 100644 --- a/internal/aws/neptune/db_cluster_resource_gen.go +++ b/internal/aws/neptune/db_cluster_resource_gen.go @@ -221,6 +221,21 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ // DBInstanceParameterGroupName is a write-only property. }, /*END ATTRIBUTE*/ + // Property: DBPort + // CloudFormation resource type schema: + // + // { + // "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + // "type": "integer" + // } + "db_port": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: DBSubnetGroupName // CloudFormation resource type schema: // @@ -280,11 +295,11 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + // "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", // "type": "string" // } "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + Description: "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -340,11 +355,11 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies the port that the database engine is listening on.", + // "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", // "type": "string" // } "port": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies the port that the database engine is listening on.", + Description: "The port number on which the DB cluster accepts connections. For example: `8182`.", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -384,11 +399,11 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + // "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", // "type": "string" // } "read_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + Description: "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -670,6 +685,7 @@ func dBClusterResource(ctx context.Context) (resource.Resource, error) { "db_cluster_identifier": "DBClusterIdentifier", "db_cluster_parameter_group_name": "DBClusterParameterGroupName", "db_instance_parameter_group_name": "DBInstanceParameterGroupName", + "db_port": "DBPort", "db_subnet_group_name": "DBSubnetGroupName", "deletion_protection": "DeletionProtection", "enable_cloudwatch_logs_exports": "EnableCloudwatchLogsExports", diff --git a/internal/aws/omics/run_group_resource_gen.go b/internal/aws/omics/run_group_resource_gen.go index b01dfd146e..0c64aef144 100644 --- a/internal/aws/omics/run_group_resource_gen.go +++ b/internal/aws/omics/run_group_resource_gen.go @@ -109,6 +109,24 @@ func runGroupResource(ctx context.Context) (resource.Resource, error) { float64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: MaxGpus + // CloudFormation resource type schema: + // + // { + // "maximum": 100000, + // "minimum": 1, + // "type": "number" + // } + "max_gpus": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 100000.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: MaxRuns // CloudFormation resource type schema: // @@ -192,6 +210,7 @@ func runGroupResource(ctx context.Context) (resource.Resource, error) { "id": "Id", "max_cpus": "MaxCpus", "max_duration": "MaxDuration", + "max_gpus": "MaxGpus", "max_runs": "MaxRuns", "name": "Name", "tags": "Tags", diff --git a/internal/aws/omics/workflow_resource_gen.go b/internal/aws/omics/workflow_resource_gen.go index 4932c2a371..7e8512d6e7 100644 --- a/internal/aws/omics/workflow_resource_gen.go +++ b/internal/aws/omics/workflow_resource_gen.go @@ -31,6 +31,31 @@ func init() { // This Terraform resource corresponds to the CloudFormation AWS::Omics::Workflow resource. func workflowResource(ctx context.Context) (resource.Resource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Accelerators + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "GPU" + // ], + // "maxLength": 64, + // "minLength": 1, + // "type": "string" + // } + "accelerators": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 64), + stringvalidator.OneOf( + "GPU", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Arn // CloudFormation resource type schema: // @@ -107,7 +132,8 @@ func workflowResource(ctx context.Context) (resource.Resource, error) { // { // "enum": [ // "WDL", - // "NEXTFLOW" + // "NEXTFLOW", + // "CWL" // ], // "maxLength": 64, // "minLength": 1, @@ -121,6 +147,7 @@ func workflowResource(ctx context.Context) (resource.Resource, error) { stringvalidator.OneOf( "WDL", "NEXTFLOW", + "CWL", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -338,6 +365,7 @@ func workflowResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(false) opts = opts.WithAttributeNameMap(map[string]string{ + "accelerators": "Accelerators", "arn": "Arn", "creation_time": "CreationTime", "definition_uri": "DefinitionUri", diff --git a/internal/aws/opensearchserverless/collection_resource_gen.go b/internal/aws/opensearchserverless/collection_resource_gen.go index d6a878fa55..2c3143c8ce 100644 --- a/internal/aws/opensearchserverless/collection_resource_gen.go +++ b/internal/aws/opensearchserverless/collection_resource_gen.go @@ -201,7 +201,8 @@ func collectionResource(ctx context.Context) (resource.Resource, error) { // "description": "The possible types for the collection", // "enum": [ // "SEARCH", - // "TIMESERIES" + // "TIMESERIES", + // "VECTORSEARCH" // ], // "type": "string" // } @@ -213,6 +214,7 @@ func collectionResource(ctx context.Context) (resource.Resource, error) { stringvalidator.OneOf( "SEARCH", "TIMESERIES", + "VECTORSEARCH", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/sagemaker/data_quality_job_definition_resource_gen.go b/internal/aws/sagemaker/data_quality_job_definition_resource_gen.go index 0068d219ea..7c929ac7e4 100644 --- a/internal/aws/sagemaker/data_quality_job_definition_resource_gen.go +++ b/internal/aws/sagemaker/data_quality_job_definition_resource_gen.go @@ -775,7 +775,9 @@ func dataQualityJobDefinitionResource(ctx context.Context) (resource.Resource, e }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // EndpointName is a write-only property. }, /*END ATTRIBUTE*/ // Property: JobDefinitionArn // CloudFormation resource type schema: @@ -1149,6 +1151,7 @@ func dataQualityJobDefinitionResource(ctx context.Context) (resource.Resource, e listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -1226,6 +1229,12 @@ func dataQualityJobDefinitionResource(ctx context.Context) (resource.Resource, e "vpc_config": "VpcConfig", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/sagemaker/feature_group_resource_gen.go b/internal/aws/sagemaker/feature_group_resource_gen.go index 2c7f39d9ef..e4af891e19 100644 --- a/internal/aws/sagemaker/feature_group_resource_gen.go +++ b/internal/aws/sagemaker/feature_group_resource_gen.go @@ -31,6 +31,20 @@ func init() { // This Terraform resource corresponds to the CloudFormation AWS::SageMaker::FeatureGroup resource. func featureGroupResource(ctx context.Context) (resource.Resource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "description": "A timestamp of FeatureGroup creation time.", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A timestamp of FeatureGroup creation time.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // @@ -157,6 +171,20 @@ func featureGroupResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: FeatureGroupStatus + // CloudFormation resource type schema: + // + // { + // "description": "The status of the feature group.", + // "type": "string" + // } + "feature_group_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the feature group.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: OfflineStoreConfig // CloudFormation resource type schema: // @@ -494,6 +522,7 @@ func featureGroupResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithSyntheticIDAttribute(true) opts = opts.WithAttributeNameMap(map[string]string{ "catalog": "Catalog", + "creation_time": "CreationTime", "data_catalog_config": "DataCatalogConfig", "database": "Database", "description": "Description", @@ -502,6 +531,7 @@ func featureGroupResource(ctx context.Context) (resource.Resource, error) { "event_time_feature_name": "EventTimeFeatureName", "feature_definitions": "FeatureDefinitions", "feature_group_name": "FeatureGroupName", + "feature_group_status": "FeatureGroupStatus", "feature_name": "FeatureName", "feature_type": "FeatureType", "key": "Key", diff --git a/internal/aws/sagemaker/model_bias_job_definition_resource_gen.go b/internal/aws/sagemaker/model_bias_job_definition_resource_gen.go index 1c9bac9dde..e6d009a929 100644 --- a/internal/aws/sagemaker/model_bias_job_definition_resource_gen.go +++ b/internal/aws/sagemaker/model_bias_job_definition_resource_gen.go @@ -67,7 +67,9 @@ func modelBiasJobDefinitionResource(ctx context.Context) (resource.Resource, err }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // EndpointName is a write-only property. }, /*END ATTRIBUTE*/ // Property: JobDefinitionArn // CloudFormation resource type schema: @@ -1280,6 +1282,7 @@ func modelBiasJobDefinitionResource(ctx context.Context) (resource.Resource, err listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -1360,6 +1363,12 @@ func modelBiasJobDefinitionResource(ctx context.Context) (resource.Resource, err "vpc_config": "VpcConfig", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/sagemaker/model_explainability_job_definition_resource_gen.go b/internal/aws/sagemaker/model_explainability_job_definition_resource_gen.go index 89c5f655d3..51099dcda6 100644 --- a/internal/aws/sagemaker/model_explainability_job_definition_resource_gen.go +++ b/internal/aws/sagemaker/model_explainability_job_definition_resource_gen.go @@ -66,7 +66,9 @@ func modelExplainabilityJobDefinitionResource(ctx context.Context) (resource.Res }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // EndpointName is a write-only property. }, /*END ATTRIBUTE*/ // Property: JobDefinitionArn // CloudFormation resource type schema: @@ -1140,6 +1142,7 @@ func modelExplainabilityJobDefinitionResource(ctx context.Context) (resource.Res listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -1216,6 +1219,12 @@ func modelExplainabilityJobDefinitionResource(ctx context.Context) (resource.Res "vpc_config": "VpcConfig", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/sagemaker/model_quality_job_definition_resource_gen.go b/internal/aws/sagemaker/model_quality_job_definition_resource_gen.go index 8b4a4299db..a12d58f1f7 100644 --- a/internal/aws/sagemaker/model_quality_job_definition_resource_gen.go +++ b/internal/aws/sagemaker/model_quality_job_definition_resource_gen.go @@ -67,7 +67,9 @@ func modelQualityJobDefinitionResource(ctx context.Context) (resource.Resource, }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // EndpointName is a write-only property. }, /*END ATTRIBUTE*/ // Property: JobDefinitionArn // CloudFormation resource type schema: @@ -1342,6 +1344,7 @@ func modelQualityJobDefinitionResource(ctx context.Context) (resource.Resource, listplanmodifier.UseStateForUnknown(), listplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ + // Tags is a write-only property. }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -1425,6 +1428,12 @@ func modelQualityJobDefinitionResource(ctx context.Context) (resource.Resource, "vpc_config": "VpcConfig", }) + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/EndpointName", + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value", + }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) diff --git a/internal/aws/sqs/queue_inline_policy_resource_gen.go b/internal/aws/sqs/queue_inline_policy_resource_gen.go new file mode 100644 index 0000000000..8ee6e4b8ed --- /dev/null +++ b/internal/aws/sqs/queue_inline_policy_resource_gen.go @@ -0,0 +1,91 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package sqs + +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/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_sqs_queue_inline_policy", queueInlinePolicyResource) +} + +// queueInlinePolicyResource returns the Terraform awscc_sqs_queue_inline_policy resource. +// This Terraform resource corresponds to the CloudFormation AWS::SQS::QueueInlinePolicy resource. +func queueInlinePolicyResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: PolicyDocument + // CloudFormation resource type schema: + // + // { + // "description": "A policy document that contains permissions to add to the specified SQS queue", + // "type": "object" + // } + "policy_document": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A policy document that contains permissions to add to the specified SQS queue", + Required: true, + }, /*END ATTRIBUTE*/ + // Property: Queue + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the SQS queue.", + // "type": "string" + // } + "queue": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the SQS queue.", + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Schema for SQS QueueInlinePolicy", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SQS::QueueInlinePolicy").WithTerraformTypeName("awscc_sqs_queue_inline_policy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithSyntheticIDAttribute(true) + opts = opts.WithAttributeNameMap(map[string]string{ + "policy_document": "PolicyDocument", + "queue": "Queue", + }) + + 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/sqs/queue_inline_policy_resource_gen_test.go b/internal/aws/sqs/queue_inline_policy_resource_gen_test.go new file mode 100644 index 0000000000..5f81c20f4d --- /dev/null +++ b/internal/aws/sqs/queue_inline_policy_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 sqs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSQSQueueInlinePolicy_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SQS::QueueInlinePolicy", "awscc_sqs_queue_inline_policy", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/transfer/connector_resource_gen.go b/internal/aws/transfer/connector_resource_gen.go index a58ec930bc..286a3ef186 100644 --- a/internal/aws/transfer/connector_resource_gen.go +++ b/internal/aws/transfer/connector_resource_gen.go @@ -7,18 +7,21 @@ package transfer import ( "context" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "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/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/schema/validator" - "regexp" - + "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" + "regexp" ) func init() { @@ -51,14 +54,14 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + // "description": "Specifies the unique Amazon Resource Name (ARN) for the connector.", // "maxLength": 1600, // "minLength": 20, // "pattern": "arn:.*", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + Description: "Specifies the unique Amazon Resource Name (ARN) for the connector.", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -71,6 +74,12 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "Configuration for an AS2 connector.", // "properties": { + // "BasicAuthSecretId": { + // "description": "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + // "maxLength": 2048, + // "minLength": 0, + // "type": "string" + // }, // "Compression": { // "description": "Compression setting for this AS2 connector configuration.", // "enum": [ @@ -146,6 +155,18 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { // } "as_2_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BasicAuthSecretId + "basic_auth_secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 2048), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Compression "compression": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Compression setting for this AS2 connector configuration.", @@ -270,7 +291,11 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "Configuration for an AS2 connector.", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: ConnectorId // CloudFormation resource type schema: @@ -311,11 +336,79 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: SftpConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration for an SFTP connector.", + // "properties": { + // "TrustedHostKeys": { + // "description": "List of public host keys, for the external server to which you are connecting.", + // "insertionOrder": false, + // "items": { + // "description": "The public host key for the external server to which you are connecting.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 10, + // "type": "array", + // "uniqueItems": false + // }, + // "UserSecretId": { + // "description": "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "sftp_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: TrustedHostKeys + "trusted_host_keys": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of public host keys, for the external server to which you are connecting.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeAtMost(10), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 2048), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserSecretId + "user_secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for an SFTP connector.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // // { - // "description": "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + // "description": "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -365,7 +458,7 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + Description: "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", Optional: true, Computed: true, Validators: []validator.Set{ /*START VALIDATORS*/ @@ -415,6 +508,7 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { "access_role": "AccessRole", "arn": "Arn", "as_2_config": "As2Config", + "basic_auth_secret_id": "BasicAuthSecretId", "compression": "Compression", "connector_id": "ConnectorId", "encryption_algorithm": "EncryptionAlgorithm", @@ -425,9 +519,12 @@ func connectorResource(ctx context.Context) (resource.Resource, error) { "mdn_signing_algorithm": "MdnSigningAlgorithm", "message_subject": "MessageSubject", "partner_profile_id": "PartnerProfileId", + "sftp_config": "SftpConfig", "signing_algorithm": "SigningAlgorithm", "tags": "Tags", + "trusted_host_keys": "TrustedHostKeys", "url": "Url", + "user_secret_id": "UserSecretId", "value": "Value", }) From d4bd53f30bef806847c22ec72f88dada0ec8e6a7 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 14:35:31 -0400 Subject: [PATCH 4/6] 08/09/2023 CloudFormation schemas in us-east-1; Generate Terraform data source schemas. --- .../billing_group_singular_data_source_gen.go | 8 + .../alarm_plural_data_source_gen.go | 54 ++ .../alarm_plural_data_source_gen_test.go | 27 + .../alarm_singular_data_source_gen.go | 568 ++++++++++++++++++ .../alarm_singular_data_source_gen_test.go | 36 ++ .../config_rule_plural_data_source_gen.go | 54 ++ ...config_rule_plural_data_source_gen_test.go | 27 + .../config_rule_singular_data_source_gen.go | 387 ++++++++++++ ...nfig_rule_singular_data_source_gen_test.go | 36 ++ ...ribution_group_singular_data_source_gen.go | 196 ++++++ ...ion_group_singular_data_source_gen_test.go | 36 ++ ...ation_azure_blob_plural_data_source_gen.go | 54 ++ ..._azure_blob_plural_data_source_gen_test.go | 27 + ...ion_azure_blob_singular_data_source_gen.go | 268 +++++++++ ...zure_blob_singular_data_source_gen_test.go | 36 ++ ...plication_config_plural_data_source_gen.go | 54 ++ ...tion_config_plural_data_source_gen_test.go | 27 + ...ication_config_singular_data_source_gen.go | 318 ++++++++++ ...on_config_singular_data_source_gen_test.go | 40 ++ ...rface_attachment_plural_data_source_gen.go | 54 ++ ..._attachment_plural_data_source_gen_test.go | 27 + ...ace_attachment_singular_data_source_gen.go | 113 ++++ ...ttachment_singular_data_source_gen_test.go | 36 ++ ...work_interface_singular_data_source_gen.go | 106 +++- .../aws/ec2/route_singular_data_source_gen.go | 220 +++++++ .../route_singular_data_source_gen_test.go | 36 ++ ...managed_policy_singular_data_source_gen.go | 148 +---- .../monitor_singular_data_source_gen.go | 132 +++- ..._configuration_singular_data_source_gen.go | 113 +++- .../data_source_singular_data_source_gen.go | 32 +- .../aws/kms/key_singular_data_source_gen.go | 42 +- .../kms/key_singular_data_source_gen_test.go | 8 +- ...ion_permission_singular_data_source_gen.go | 112 ++++ ...ermission_singular_data_source_gen_test.go | 36 ++ .../channel_plural_data_source_gen.go | 54 ++ .../channel_plural_data_source_gen_test.go | 27 + ...channel_policy_singular_data_source_gen.go | 74 +++ ...el_policy_singular_data_source_gen_test.go | 36 ++ .../channel_singular_data_source_gen.go | 350 +++++++++++ .../channel_singular_data_source_gen_test.go | 36 ++ .../live_source_singular_data_source_gen.go | 188 ++++++ ...ve_source_singular_data_source_gen_test.go | 36 ++ .../vod_source_singular_data_source_gen.go | 188 ++++++ ...od_source_singular_data_source_gen_test.go | 36 ++ .../db_cluster_singular_data_source_gen.go | 24 +- .../run_group_singular_data_source_gen.go | 12 + .../workflow_singular_data_source_gen.go | 18 +- .../collection_singular_data_source_gen.go | 3 +- .../aws/pipes/pipe_plural_data_source_gen.go | 54 ++ .../pipes/pipe_plural_data_source_gen_test.go | 27 + .../feature_group_singular_data_source_gen.go | 24 + ..._inline_policy_singular_data_source_gen.go | 77 +++ ...ne_policy_singular_data_source_gen_test.go | 36 ++ .../connector_singular_data_source_gen.go | 71 ++- 54 files changed, 4638 insertions(+), 201 deletions(-) create mode 100644 internal/aws/cloudwatch/alarm_plural_data_source_gen.go create mode 100644 internal/aws/cloudwatch/alarm_plural_data_source_gen_test.go create mode 100644 internal/aws/cloudwatch/alarm_singular_data_source_gen.go create mode 100644 internal/aws/cloudwatch/alarm_singular_data_source_gen_test.go create mode 100644 internal/aws/config/config_rule_plural_data_source_gen.go create mode 100644 internal/aws/config/config_rule_plural_data_source_gen_test.go create mode 100644 internal/aws/config/config_rule_singular_data_source_gen.go create mode 100644 internal/aws/config/config_rule_singular_data_source_gen_test.go create mode 100644 internal/aws/connect/traffic_distribution_group_singular_data_source_gen.go create mode 100644 internal/aws/connect/traffic_distribution_group_singular_data_source_gen_test.go create mode 100644 internal/aws/datasync/location_azure_blob_plural_data_source_gen.go create mode 100644 internal/aws/datasync/location_azure_blob_plural_data_source_gen_test.go create mode 100644 internal/aws/datasync/location_azure_blob_singular_data_source_gen.go create mode 100644 internal/aws/datasync/location_azure_blob_singular_data_source_gen_test.go create mode 100644 internal/aws/dms/replication_config_plural_data_source_gen.go create mode 100644 internal/aws/dms/replication_config_plural_data_source_gen_test.go create mode 100644 internal/aws/dms/replication_config_singular_data_source_gen.go create mode 100644 internal/aws/dms/replication_config_singular_data_source_gen_test.go create mode 100644 internal/aws/ec2/network_interface_attachment_plural_data_source_gen.go create mode 100644 internal/aws/ec2/network_interface_attachment_plural_data_source_gen_test.go create mode 100644 internal/aws/ec2/network_interface_attachment_singular_data_source_gen.go create mode 100644 internal/aws/ec2/network_interface_attachment_singular_data_source_gen_test.go create mode 100644 internal/aws/ec2/route_singular_data_source_gen.go create mode 100644 internal/aws/ec2/route_singular_data_source_gen_test.go create mode 100644 internal/aws/lambda/layer_version_permission_singular_data_source_gen.go create mode 100644 internal/aws/lambda/layer_version_permission_singular_data_source_gen_test.go create mode 100644 internal/aws/mediatailor/channel_plural_data_source_gen.go create mode 100644 internal/aws/mediatailor/channel_plural_data_source_gen_test.go create mode 100644 internal/aws/mediatailor/channel_policy_singular_data_source_gen.go create mode 100644 internal/aws/mediatailor/channel_policy_singular_data_source_gen_test.go create mode 100644 internal/aws/mediatailor/channel_singular_data_source_gen.go create mode 100644 internal/aws/mediatailor/channel_singular_data_source_gen_test.go create mode 100644 internal/aws/mediatailor/live_source_singular_data_source_gen.go create mode 100644 internal/aws/mediatailor/live_source_singular_data_source_gen_test.go create mode 100644 internal/aws/mediatailor/vod_source_singular_data_source_gen.go create mode 100644 internal/aws/mediatailor/vod_source_singular_data_source_gen_test.go create mode 100644 internal/aws/pipes/pipe_plural_data_source_gen.go create mode 100644 internal/aws/pipes/pipe_plural_data_source_gen_test.go create mode 100644 internal/aws/sqs/queue_inline_policy_singular_data_source_gen.go create mode 100644 internal/aws/sqs/queue_inline_policy_singular_data_source_gen_test.go diff --git a/internal/aws/billingconductor/billing_group_singular_data_source_gen.go b/internal/aws/billingconductor/billing_group_singular_data_source_gen.go index 39b72b2553..557603cd93 100644 --- a/internal/aws/billingconductor/billing_group_singular_data_source_gen.go +++ b/internal/aws/billingconductor/billing_group_singular_data_source_gen.go @@ -29,6 +29,9 @@ func billingGroupDataSource(ctx context.Context) (datasource.DataSource, error) // { // "additionalProperties": false, // "properties": { + // "AutoAssociate": { + // "type": "boolean" + // }, // "LinkedAccountIds": { // "insertionOrder": false, // "items": { @@ -47,6 +50,10 @@ func billingGroupDataSource(ctx context.Context) (datasource.DataSource, error) // } "account_grouping": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AutoAssociate + "auto_associate": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: LinkedAccountIds "linked_account_ids": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, @@ -245,6 +252,7 @@ func billingGroupDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithAttributeNameMap(map[string]string{ "account_grouping": "AccountGrouping", "arn": "Arn", + "auto_associate": "AutoAssociate", "computation_preference": "ComputationPreference", "creation_time": "CreationTime", "description": "Description", diff --git a/internal/aws/cloudwatch/alarm_plural_data_source_gen.go b/internal/aws/cloudwatch/alarm_plural_data_source_gen.go new file mode 100644 index 0000000000..bf535154bc --- /dev/null +++ b/internal/aws/cloudwatch/alarm_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 cloudwatch + +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_cloudwatch_alarms", alarmsDataSource) +} + +// alarmsDataSource returns the Terraform awscc_cloudwatch_alarms data source. +// This Terraform data source corresponds to the CloudFormation AWS::CloudWatch::Alarm resource. +func alarmsDataSource(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::CloudWatch::Alarm", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::CloudWatch::Alarm").WithTerraformTypeName("awscc_cloudwatch_alarms") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cloudwatch/alarm_plural_data_source_gen_test.go b/internal/aws/cloudwatch/alarm_plural_data_source_gen_test.go new file mode 100644 index 0000000000..3d0a11c3c8 --- /dev/null +++ b/internal/aws/cloudwatch/alarm_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 cloudwatch_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCloudWatchAlarmsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::CloudWatch::Alarm", "awscc_cloudwatch_alarms", "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/cloudwatch/alarm_singular_data_source_gen.go b/internal/aws/cloudwatch/alarm_singular_data_source_gen.go new file mode 100644 index 0000000000..2c5f41fbeb --- /dev/null +++ b/internal/aws/cloudwatch/alarm_singular_data_source_gen.go @@ -0,0 +1,568 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package cloudwatch + +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_cloudwatch_alarm", alarmDataSource) +} + +// alarmDataSource returns the Terraform awscc_cloudwatch_alarm data source. +// This Terraform data source corresponds to the CloudFormation AWS::CloudWatch::Alarm resource. +func alarmDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ActionsEnabled + // CloudFormation resource type schema: + // + // { + // "default": true, + // "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + // "type": "boolean" + // } + "actions_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AlarmActions + // CloudFormation resource type schema: + // + // { + // "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "alarm_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The list of actions to execute when this alarm transitions into an ALARM state from any other state.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AlarmDescription + // CloudFormation resource type schema: + // + // { + // "description": "The description of the alarm.", + // "type": "string" + // } + "alarm_description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The description of the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AlarmName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the alarm.", + // "type": "string" + // } + "alarm_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "Amazon Resource Name is a unique name for each resource.", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Amazon Resource Name is a unique name for each resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ComparisonOperator + // CloudFormation resource type schema: + // + // { + // "description": "The arithmetic operation to use when comparing the specified statistic and threshold.", + // "type": "string" + // } + "comparison_operator": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The arithmetic operation to use when comparing the specified statistic and threshold.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DatapointsToAlarm + // CloudFormation resource type schema: + // + // { + // "description": "The number of datapoints that must be breaching to trigger the alarm.", + // "type": "integer" + // } + "datapoints_to_alarm": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of datapoints that must be breaching to trigger the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Dimensions + // CloudFormation resource type schema: + // + // { + // "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Dimensions are arbitrary name/value pairs that can be associated with a CloudWatch metric.", + // "properties": { + // "Name": { + // "description": "The name of the dimension.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the dimension.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Name" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "dimensions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the dimension.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the dimension.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EvaluateLowSampleCountPercentile + // CloudFormation resource type schema: + // + // { + // "description": "Used only for alarms based on percentiles.", + // "type": "string" + // } + "evaluate_low_sample_count_percentile": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Used only for alarms based on percentiles.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EvaluationPeriods + // CloudFormation resource type schema: + // + // { + // "description": "The number of periods over which data is compared to the specified threshold.", + // "type": "integer" + // } + "evaluation_periods": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of periods over which data is compared to the specified threshold.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ExtendedStatistic + // CloudFormation resource type schema: + // + // { + // "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.", + // "type": "string" + // } + "extended_statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InsufficientDataActions + // CloudFormation resource type schema: + // + // { + // "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "insufficient_data_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MetricName + // CloudFormation resource type schema: + // + // { + // "description": "The name of the metric associated with the alarm.", + // "type": "string" + // } + "metric_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the metric associated with the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Metrics + // CloudFormation resource type schema: + // + // { + // "description": "An array that enables you to create an alarm based on the result of a metric math expression.", + // "items": { + // "additionalProperties": false, + // "description": "This property type specifies the metric data to return, and whether this call is just retrieving a batch set of data for one metric, or is performing a math expression on metric data.", + // "properties": { + // "AccountId": { + // "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", + // "type": "string" + // }, + // "Expression": { + // "description": "The math expression to be performed on the returned data.", + // "type": "string" + // }, + // "Id": { + // "description": "A short name used to tie this object to the results in the response.", + // "type": "string" + // }, + // "Label": { + // "description": "A human-readable label for this metric or expression.", + // "type": "string" + // }, + // "MetricStat": { + // "additionalProperties": false, + // "description": "The metric to be returned, along with statistics, period, and units.", + // "properties": { + // "Metric": { + // "additionalProperties": false, + // "description": "The metric to return, including the metric name, namespace, and dimensions.", + // "properties": { + // "Dimensions": { + // "description": "The dimensions for the metric.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Dimensions are arbitrary name/value pairs that can be associated with a CloudWatch metric.", + // "properties": { + // "Name": { + // "description": "The name of the dimension.", + // "type": "string" + // }, + // "Value": { + // "description": "The value for the dimension.", + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Name" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // }, + // "MetricName": { + // "description": "The name of the metric.", + // "type": "string" + // }, + // "Namespace": { + // "description": "The namespace of the metric.", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "Period": { + // "description": "The granularity, in seconds, of the returned data points.", + // "type": "integer" + // }, + // "Stat": { + // "description": "The statistic to return.", + // "type": "string" + // }, + // "Unit": { + // "description": "The unit to use for the returned data points.", + // "type": "string" + // } + // }, + // "required": [ + // "Stat", + // "Period", + // "Metric" + // ], + // "type": "object" + // }, + // "Period": { + // "description": "The period in seconds, over which the statistic is applied.", + // "type": "integer" + // }, + // "ReturnData": { + // "description": "This option indicates whether to return the timestamps and raw data values of this metric.", + // "type": "boolean" + // } + // }, + // "required": [ + // "Id" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "metrics": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the account where the metrics are located, if this is a cross-account alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Expression + "expression": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The math expression to be performed on the returned data.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A short name used to tie this object to the results in the response.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Label + "label": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A human-readable label for this metric or expression.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MetricStat + "metric_stat": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Metric + "metric": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Dimensions + "dimensions": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Name + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the dimension.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the dimension.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The dimensions for the metric.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MetricName + "metric_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the metric.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Namespace + "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The namespace of the metric.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metric to return, including the metric name, namespace, and dimensions.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The granularity, in seconds, of the returned data points.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Stat + "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The statistic to return.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Unit + "unit": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unit to use for the returned data points.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "The metric to be returned, along with statistics, period, and units.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The period in seconds, over which the statistic is applied.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReturnData + "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "This option indicates whether to return the timestamps and raw data values of this metric.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array that enables you to create an alarm based on the result of a metric math expression.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Namespace + // CloudFormation resource type schema: + // + // { + // "description": "The namespace of the metric associated with the alarm.", + // "type": "string" + // } + "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The namespace of the metric associated with the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OKActions + // CloudFormation resource type schema: + // + // { + // "description": "The actions to execute when this alarm transitions to the OK state from any other state.", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ok_actions": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The actions to execute when this alarm transitions to the OK state from any other state.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Period + // CloudFormation resource type schema: + // + // { + // "description": "The period in seconds, over which the statistic is applied.", + // "type": "integer" + // } + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The period in seconds, over which the statistic is applied.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Statistic + // CloudFormation resource type schema: + // + // { + // "description": "The statistic for the metric associated with the alarm, other than percentile.", + // "type": "string" + // } + "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The statistic for the metric associated with the alarm, other than percentile.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Threshold + // CloudFormation resource type schema: + // + // { + // "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + // "type": "number" + // } + "threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ThresholdMetricId + // CloudFormation resource type schema: + // + // { + // "description": "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + // "type": "string" + // } + "threshold_metric_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TreatMissingData + // CloudFormation resource type schema: + // + // { + // "description": "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing.", + // "type": "string" + // } + "treat_missing_data": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Unit + // CloudFormation resource type schema: + // + // { + // "description": "The unit of the metric associated with the alarm.", + // "type": "string" + // } + "unit": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The unit of the metric associated with the alarm.", + 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::CloudWatch::Alarm", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::CloudWatch::Alarm").WithTerraformTypeName("awscc_cloudwatch_alarm") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "actions_enabled": "ActionsEnabled", + "alarm_actions": "AlarmActions", + "alarm_description": "AlarmDescription", + "alarm_name": "AlarmName", + "arn": "Arn", + "comparison_operator": "ComparisonOperator", + "datapoints_to_alarm": "DatapointsToAlarm", + "dimensions": "Dimensions", + "evaluate_low_sample_count_percentile": "EvaluateLowSampleCountPercentile", + "evaluation_periods": "EvaluationPeriods", + "expression": "Expression", + "extended_statistic": "ExtendedStatistic", + "id": "Id", + "insufficient_data_actions": "InsufficientDataActions", + "label": "Label", + "metric": "Metric", + "metric_name": "MetricName", + "metric_stat": "MetricStat", + "metrics": "Metrics", + "name": "Name", + "namespace": "Namespace", + "ok_actions": "OKActions", + "period": "Period", + "return_data": "ReturnData", + "stat": "Stat", + "statistic": "Statistic", + "threshold": "Threshold", + "threshold_metric_id": "ThresholdMetricId", + "treat_missing_data": "TreatMissingData", + "unit": "Unit", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cloudwatch/alarm_singular_data_source_gen_test.go b/internal/aws/cloudwatch/alarm_singular_data_source_gen_test.go new file mode 100644 index 0000000000..9027df21ab --- /dev/null +++ b/internal/aws/cloudwatch/alarm_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 cloudwatch_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCloudWatchAlarmDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::CloudWatch::Alarm", "awscc_cloudwatch_alarm", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSCloudWatchAlarmDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::CloudWatch::Alarm", "awscc_cloudwatch_alarm", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/config/config_rule_plural_data_source_gen.go b/internal/aws/config/config_rule_plural_data_source_gen.go new file mode 100644 index 0000000000..3e7ccbbad1 --- /dev/null +++ b/internal/aws/config/config_rule_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 config + +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_config_config_rules", configRulesDataSource) +} + +// configRulesDataSource returns the Terraform awscc_config_config_rules data source. +// This Terraform data source corresponds to the CloudFormation AWS::Config::ConfigRule resource. +func configRulesDataSource(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::Config::ConfigRule", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Config::ConfigRule").WithTerraformTypeName("awscc_config_config_rules") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/config/config_rule_plural_data_source_gen_test.go b/internal/aws/config/config_rule_plural_data_source_gen_test.go new file mode 100644 index 0000000000..f741808bb3 --- /dev/null +++ b/internal/aws/config/config_rule_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 config_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConfigConfigRulesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Config::ConfigRule", "awscc_config_config_rules", "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/config/config_rule_singular_data_source_gen.go b/internal/aws/config/config_rule_singular_data_source_gen.go new file mode 100644 index 0000000000..5640411a84 --- /dev/null +++ b/internal/aws/config/config_rule_singular_data_source_gen.go @@ -0,0 +1,387 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package config + +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_config_config_rule", configRuleDataSource) +} + +// configRuleDataSource returns the Terraform awscc_config_config_rule data source. +// This Terraform data source corresponds to the CloudFormation AWS::Config::ConfigRule resource. +func configRuleDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "ARN generated for the AWS Config rule ", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN generated for the AWS Config rule ", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Compliance + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Compliance details of the Config rule", + // "properties": { + // "Type": { + // "description": "Compliance type determined by the Config rule", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compliance": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Compliance type determined by the Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Compliance details of the Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ConfigRuleId + // CloudFormation resource type schema: + // + // { + // "description": "ID of the config rule", + // "type": "string" + // } + "config_rule_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID of the config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ConfigRuleName + // CloudFormation resource type schema: + // + // { + // "description": "Name for the AWS Config rule", + // "type": "string" + // } + "config_rule_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Name for the AWS Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "Description provided for the AWS Config rule", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Description provided for the AWS Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EvaluationModes + // CloudFormation resource type schema: + // + // { + // "description": "List of EvaluationModeConfiguration objects", + // "items": { + // "additionalProperties": false, + // "description": "Mode of evaluation of AWS Config rule", + // "properties": { + // "Mode": { + // "description": "Mode of evaluation of AWS Config rule", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "evaluation_modes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Mode + "mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Mode of evaluation of AWS Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of EvaluationModeConfiguration objects", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InputParameters + // CloudFormation resource type schema: + // + // { + // "description": "JSON string passed the Lambda function", + // "type": "string" + // } + "input_parameters": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "JSON string passed the Lambda function", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaximumExecutionFrequency + // CloudFormation resource type schema: + // + // { + // "description": "Maximum frequency at which the rule has to be evaluated", + // "type": "string" + // } + "maximum_execution_frequency": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Maximum frequency at which the rule has to be evaluated", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Scope + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Scope to constrain which resources can trigger the AWS Config rule", + // "properties": { + // "ComplianceResourceId": { + // "description": "ID of the only one resource which we want to trigger the rule", + // "type": "string" + // }, + // "ComplianceResourceTypes": { + // "description": "Resource types of resources which we want to trigger the rule", + // "items": { + // "type": "string" + // }, + // "type": "array", + // "uniqueItems": true + // }, + // "TagKey": { + // "description": "Tag key applied only to resources which we want to trigger the rule", + // "type": "string" + // }, + // "TagValue": { + // "description": "Tag value applied only to resources which we want to trigger the rule", + // "type": "string" + // } + // }, + // "type": "object" + // } + "scope": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComplianceResourceId + "compliance_resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID of the only one resource which we want to trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ComplianceResourceTypes + "compliance_resource_types": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Resource types of resources which we want to trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TagKey + "tag_key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tag key applied only to resources which we want to trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TagValue + "tag_value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Tag value applied only to resources which we want to trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Scope to constrain which resources can trigger the AWS Config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Source + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Source of events for the AWS Config rule", + // "properties": { + // "CustomPolicyDetails": { + // "additionalProperties": false, + // "description": "Custom policy details when rule is custom owned", + // "properties": { + // "EnableDebugLogDelivery": { + // "description": "Logging toggle for custom policy rule", + // "type": "boolean" + // }, + // "PolicyRuntime": { + // "description": "Runtime system for custom policy rule", + // "type": "string" + // }, + // "PolicyText": { + // "description": "Policy definition containing logic for custom policy rule", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "Owner": { + // "description": "Owner of the config rule", + // "type": "string" + // }, + // "SourceDetails": { + // "description": "List of message types that can trigger the rule", + // "items": { + // "additionalProperties": false, + // "description": "Source and message type that can trigger the rule", + // "properties": { + // "EventSource": { + // "description": "Source of event that can trigger the rule", + // "type": "string" + // }, + // "MaximumExecutionFrequency": { + // "description": "Frequency at which the rule has to be evaluated", + // "type": "string" + // }, + // "MessageType": { + // "description": "Notification type that can trigger the rule", + // "type": "string" + // } + // }, + // "required": [ + // "EventSource", + // "MessageType" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // }, + // "SourceIdentifier": { + // "description": "Identifier for the source of events", + // "type": "string" + // } + // }, + // "required": [ + // "Owner" + // ], + // "type": "object" + // } + "source": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CustomPolicyDetails + "custom_policy_details": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EnableDebugLogDelivery + "enable_debug_log_delivery": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Logging toggle for custom policy rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PolicyRuntime + "policy_runtime": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Runtime system for custom policy rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PolicyText + "policy_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Policy definition containing logic for custom policy rule", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Custom policy details when rule is custom owned", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Owner + "owner": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Owner of the config rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceDetails + "source_details": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: EventSource + "event_source": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Source of event that can trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaximumExecutionFrequency + "maximum_execution_frequency": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Frequency at which the rule has to be evaluated", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MessageType + "message_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Notification type that can trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "List of message types that can trigger the rule", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceIdentifier + "source_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Identifier for the source of events", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Source of events for the AWS Config rule", + 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::Config::ConfigRule", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Config::ConfigRule").WithTerraformTypeName("awscc_config_config_rule") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "compliance": "Compliance", + "compliance_resource_id": "ComplianceResourceId", + "compliance_resource_types": "ComplianceResourceTypes", + "config_rule_id": "ConfigRuleId", + "config_rule_name": "ConfigRuleName", + "custom_policy_details": "CustomPolicyDetails", + "description": "Description", + "enable_debug_log_delivery": "EnableDebugLogDelivery", + "evaluation_modes": "EvaluationModes", + "event_source": "EventSource", + "input_parameters": "InputParameters", + "maximum_execution_frequency": "MaximumExecutionFrequency", + "message_type": "MessageType", + "mode": "Mode", + "owner": "Owner", + "policy_runtime": "PolicyRuntime", + "policy_text": "PolicyText", + "scope": "Scope", + "source": "Source", + "source_details": "SourceDetails", + "source_identifier": "SourceIdentifier", + "tag_key": "TagKey", + "tag_value": "TagValue", + "type": "Type", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/config/config_rule_singular_data_source_gen_test.go b/internal/aws/config/config_rule_singular_data_source_gen_test.go new file mode 100644 index 0000000000..aff7d2f65c --- /dev/null +++ b/internal/aws/config/config_rule_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 config_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConfigConfigRuleDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Config::ConfigRule", "awscc_config_config_rule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSConfigConfigRuleDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Config::ConfigRule", "awscc_config_config_rule", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/connect/traffic_distribution_group_singular_data_source_gen.go b/internal/aws/connect/traffic_distribution_group_singular_data_source_gen.go new file mode 100644 index 0000000000..679030043c --- /dev/null +++ b/internal/aws/connect/traffic_distribution_group_singular_data_source_gen.go @@ -0,0 +1,196 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package connect + +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_connect_traffic_distribution_group", trafficDistributionGroupDataSource) +} + +// trafficDistributionGroupDataSource returns the Terraform awscc_connect_traffic_distribution_group data source. +// This Terraform data source corresponds to the CloudFormation AWS::Connect::TrafficDistributionGroup resource. +func trafficDistributionGroupDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Description + // CloudFormation resource type schema: + // + // { + // "description": "A description for the traffic distribution group.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + // "type": "string" + // } + "description": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A description for the traffic distribution group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InstanceArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the Amazon Connect instance that has been replicated.", + // "maxLength": 250, + // "minLength": 1, + // "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + // "type": "string" + // } + "instance_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the Amazon Connect instance that has been replicated.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: IsDefault + // CloudFormation resource type schema: + // + // { + // "description": "If this is the default traffic distribution group.", + // "type": "boolean" + // } + "is_default": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "If this is the default traffic distribution group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Name + // CloudFormation resource type schema: + // + // { + // "description": "The name for the traffic distribution group.", + // "maxLength": 128, + // "minLength": 1, + // "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + // "type": "string" + // } + "name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name for the traffic distribution group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + // CloudFormation resource type schema: + // + // { + // "description": "The status of the traffic distribution group.", + // "enum": [ + // "CREATION_IN_PROGRESS", + // "ACTIVE", + // "CREATION_FAILED", + // "PENDING_DELETION", + // "DELETION_FAILED", + // "UPDATE_IN_PROGRESS" + // ], + // "type": "string" + // } + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the traffic distribution group.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "One or more tags.", + // "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 1 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": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "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 1 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: "One or more tags.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TrafficDistributionGroupArn + // CloudFormation resource type schema: + // + // { + // "description": "The identifier of the traffic distribution group.", + // "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:traffic-distribution-group/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + // "type": "string" + // } + "traffic_distribution_group_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier of the traffic distribution group.", + 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::Connect::TrafficDistributionGroup", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Connect::TrafficDistributionGroup").WithTerraformTypeName("awscc_connect_traffic_distribution_group") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "description": "Description", + "instance_arn": "InstanceArn", + "is_default": "IsDefault", + "key": "Key", + "name": "Name", + "status": "Status", + "tags": "Tags", + "traffic_distribution_group_arn": "TrafficDistributionGroupArn", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/connect/traffic_distribution_group_singular_data_source_gen_test.go b/internal/aws/connect/traffic_distribution_group_singular_data_source_gen_test.go new file mode 100644 index 0000000000..1d51d0537f --- /dev/null +++ b/internal/aws/connect/traffic_distribution_group_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package connect_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSConnectTrafficDistributionGroupDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::TrafficDistributionGroup", "awscc_connect_traffic_distribution_group", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSConnectTrafficDistributionGroupDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Connect::TrafficDistributionGroup", "awscc_connect_traffic_distribution_group", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/datasync/location_azure_blob_plural_data_source_gen.go b/internal/aws/datasync/location_azure_blob_plural_data_source_gen.go new file mode 100644 index 0000000000..1e5883eb55 --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_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 datasync + +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_datasync_location_azure_blobs", locationAzureBlobsDataSource) +} + +// locationAzureBlobsDataSource returns the Terraform awscc_datasync_location_azure_blobs data source. +// This Terraform data source corresponds to the CloudFormation AWS::DataSync::LocationAzureBlob resource. +func locationAzureBlobsDataSource(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::DataSync::LocationAzureBlob", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DataSync::LocationAzureBlob").WithTerraformTypeName("awscc_datasync_location_azure_blobs") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/datasync/location_azure_blob_plural_data_source_gen_test.go b/internal/aws/datasync/location_azure_blob_plural_data_source_gen_test.go new file mode 100644 index 0000000000..16bc88f931 --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_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 datasync_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDataSyncLocationAzureBlobsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataSync::LocationAzureBlob", "awscc_datasync_location_azure_blobs", "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/datasync/location_azure_blob_singular_data_source_gen.go b/internal/aws/datasync/location_azure_blob_singular_data_source_gen.go new file mode 100644 index 0000000000..f60e9d156d --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_singular_data_source_gen.go @@ -0,0 +1,268 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package datasync + +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_datasync_location_azure_blob", locationAzureBlobDataSource) +} + +// locationAzureBlobDataSource returns the Terraform awscc_datasync_location_azure_blob data source. +// This Terraform data source corresponds to the CloudFormation AWS::DataSync::LocationAzureBlob resource. +func locationAzureBlobDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AgentArns + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + // "insertionOrder": false, + // "items": { + // "maxLength": 128, + // "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + // "type": "string" + // }, + // "maxItems": 4, + // "minItems": 1, + // "type": "array" + // } + "agent_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AzureAccessTier + // CloudFormation resource type schema: + // + // { + // "default": "HOT", + // "description": "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + // "enum": [ + // "HOT", + // "COOL", + // "ARCHIVE" + // ], + // "type": "string" + // } + "azure_access_tier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AzureBlobAuthenticationType + // CloudFormation resource type schema: + // + // { + // "default": "SAS", + // "description": "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + // "enum": [ + // "SAS" + // ], + // "type": "string" + // } + "azure_blob_authentication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AzureBlobContainerUrl + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the Azure Blob container that was described.", + // "maxLength": 325, + // "pattern": "^https://[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}/[a-z0-9](-?[a-z0-9]){2,62}$", + // "type": "string" + // } + "azure_blob_container_url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the Azure Blob container that was described.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AzureBlobSasConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + // "properties": { + // "AzureBlobSasToken": { + // "description": "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + // "maxLength": 255, + // "minLength": 1, + // "pattern": "(^.+$)", + // "type": "string" + // } + // }, + // "required": [ + // "AzureBlobSasToken" + // ], + // "type": "object" + // } + "azure_blob_sas_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AzureBlobSasToken + "azure_blob_sas_token": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: AzureBlobType + // CloudFormation resource type schema: + // + // { + // "default": "BLOCK", + // "description": "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + // "enum": [ + // "BLOCK" + // ], + // "type": "string" + // } + "azure_blob_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocationArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + // "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}$", + // "type": "string" + // } + "location_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocationUri + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the Azure Blob Location that was described.", + // "maxLength": 4356, + // "pattern": "^(azure-blob)://[a-zA-Z0-9./\\-]+$", + // "type": "string" + // } + "location_uri": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the Azure Blob Location that was described.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Subdirectory + // CloudFormation resource type schema: + // + // { + // "description": "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + // "maxLength": 1024, + // "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + // "type": "string" + // } + "subdirectory": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + 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 for an AWS resource tag.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + // "type": "string" + // }, + // "Value": { + // "description": "The value for an AWS resource tag.", + // "maxLength": 256, + // "minLength": 1, + // "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "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 for an AWS resource tag.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for an AWS resource 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::DataSync::LocationAzureBlob", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DataSync::LocationAzureBlob").WithTerraformTypeName("awscc_datasync_location_azure_blob") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "agent_arns": "AgentArns", + "azure_access_tier": "AzureAccessTier", + "azure_blob_authentication_type": "AzureBlobAuthenticationType", + "azure_blob_container_url": "AzureBlobContainerUrl", + "azure_blob_sas_configuration": "AzureBlobSasConfiguration", + "azure_blob_sas_token": "AzureBlobSasToken", + "azure_blob_type": "AzureBlobType", + "key": "Key", + "location_arn": "LocationArn", + "location_uri": "LocationUri", + "subdirectory": "Subdirectory", + "tags": "Tags", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/datasync/location_azure_blob_singular_data_source_gen_test.go b/internal/aws/datasync/location_azure_blob_singular_data_source_gen_test.go new file mode 100644 index 0000000000..13de9362b3 --- /dev/null +++ b/internal/aws/datasync/location_azure_blob_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 datasync_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDataSyncLocationAzureBlobDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataSync::LocationAzureBlob", "awscc_datasync_location_azure_blob", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSDataSyncLocationAzureBlobDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DataSync::LocationAzureBlob", "awscc_datasync_location_azure_blob", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/dms/replication_config_plural_data_source_gen.go b/internal/aws/dms/replication_config_plural_data_source_gen.go new file mode 100644 index 0000000000..a36cd44d1a --- /dev/null +++ b/internal/aws/dms/replication_config_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_dms_replication_configs", replicationConfigsDataSource) +} + +// replicationConfigsDataSource returns the Terraform awscc_dms_replication_configs data source. +// This Terraform data source corresponds to the CloudFormation AWS::DMS::ReplicationConfig resource. +func replicationConfigsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::DMS::ReplicationConfig", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::ReplicationConfig").WithTerraformTypeName("awscc_dms_replication_configs") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/replication_config_plural_data_source_gen_test.go b/internal/aws/dms/replication_config_plural_data_source_gen_test.go new file mode 100644 index 0000000000..268c854bda --- /dev/null +++ b/internal/aws/dms/replication_config_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package dms_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSReplicationConfigsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::ReplicationConfig", "awscc_dms_replication_configs", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/dms/replication_config_singular_data_source_gen.go b/internal/aws/dms/replication_config_singular_data_source_gen.go new file mode 100644 index 0000000000..44628e550e --- /dev/null +++ b/internal/aws/dms/replication_config_singular_data_source_gen.go @@ -0,0 +1,318 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package dms + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_dms_replication_config", replicationConfigDataSource) +} + +// replicationConfigDataSource returns the Terraform awscc_dms_replication_config data source. +// This Terraform data source corresponds to the CloudFormation AWS::DMS::ReplicationConfig resource. +func replicationConfigDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration parameters for provisioning a AWS DMS Serverless replication", + // "properties": { + // "AvailabilityZone": { + // "type": "string" + // }, + // "DnsNameServers": { + // "type": "string" + // }, + // "KmsKeyId": { + // "type": "string" + // }, + // "MaxCapacityUnits": { + // "type": "integer" + // }, + // "MinCapacityUnits": { + // "type": "integer" + // }, + // "MultiAZ": { + // "type": "boolean" + // }, + // "PreferredMaintenanceWindow": { + // "type": "string" + // }, + // "ReplicationSubnetGroupId": { + // "type": "string" + // }, + // "VpcSecurityGroupIds": { + // "items": { + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "MaxCapacityUnits" + // ], + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityZone + "availability_zone": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DnsNameServers + "dns_name_servers": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: KmsKeyId + "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaxCapacityUnits + "max_capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinCapacityUnits + "min_capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MultiAZ + "multi_az": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PreferredMaintenanceWindow + "preferred_maintenance_window": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicationSubnetGroupId + "replication_subnet_group_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcSecurityGroupIds + "vpc_security_group_ids": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration parameters for provisioning a AWS DMS Serverless replication", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicationConfigArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the Replication Config", + // "type": "string" + // } + "replication_config_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the Replication Config", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicationConfigIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "A unique identifier of replication configuration", + // "type": "string" + // } + "replication_config_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique identifier of replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicationSettings + // CloudFormation resource type schema: + // + // { + // "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", + // "type": "object" + // } + "replication_settings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON settings for Servereless replications that are provisioned using this replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReplicationType + // CloudFormation resource type schema: + // + // { + // "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", + // "enum": [ + // "full-load", + // "full-load-and-cdc", + // "cdc" + // ], + // "type": "string" + // } + "replication_type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The type of AWS DMS Serverless replication to provision using this replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceIdentifier + // CloudFormation resource type schema: + // + // { + // "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + // "type": "string" + // } + "resource_identifier": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + // "type": "string" + // } + "source_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SupplementalSettings + // CloudFormation resource type schema: + // + // { + // "description": "JSON settings for specifying supplemental data", + // "type": "object" + // } + "supplemental_settings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON settings for specifying supplemental data", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TableMappings + // CloudFormation resource type schema: + // + // { + // "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + // "type": "object" + // } + "table_mappings": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eContains a map of the key-value pairs for the resource tag or tags assigned to the dataset.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.\u003c/p\u003e", + // "properties": { + // "Key": { + // "description": "\u003cp\u003eTag key.\u003c/p\u003e", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "\u003cp\u003eTag value.\u003c/p\u003e", + // "maxLength": 256, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "maxItems": 200, + // "minItems": 1, + // "type": "array" + // } + "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: "

Tag key.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

Tag value.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TargetEndpointArn + // CloudFormation resource type schema: + // + // { + // "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + // "type": "string" + // } + "target_endpoint_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::DMS::ReplicationConfig", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::DMS::ReplicationConfig").WithTerraformTypeName("awscc_dms_replication_config") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "availability_zone": "AvailabilityZone", + "compute_config": "ComputeConfig", + "dns_name_servers": "DnsNameServers", + "key": "Key", + "kms_key_id": "KmsKeyId", + "max_capacity_units": "MaxCapacityUnits", + "min_capacity_units": "MinCapacityUnits", + "multi_az": "MultiAZ", + "preferred_maintenance_window": "PreferredMaintenanceWindow", + "replication_config_arn": "ReplicationConfigArn", + "replication_config_identifier": "ReplicationConfigIdentifier", + "replication_settings": "ReplicationSettings", + "replication_subnet_group_id": "ReplicationSubnetGroupId", + "replication_type": "ReplicationType", + "resource_identifier": "ResourceIdentifier", + "source_endpoint_arn": "SourceEndpointArn", + "supplemental_settings": "SupplementalSettings", + "table_mappings": "TableMappings", + "tags": "Tags", + "target_endpoint_arn": "TargetEndpointArn", + "value": "Value", + "vpc_security_group_ids": "VpcSecurityGroupIds", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/dms/replication_config_singular_data_source_gen_test.go b/internal/aws/dms/replication_config_singular_data_source_gen_test.go new file mode 100644 index 0000000000..0fd265ad7e --- /dev/null +++ b/internal/aws/dms/replication_config_singular_data_source_gen_test.go @@ -0,0 +1,40 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package dms_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSDMSReplicationConfigDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::ReplicationConfig", "awscc_dms_replication_config", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithEmptyResourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "id", td.ResourceName, "id"), + resource.TestCheckResourceAttrPair(fmt.Sprintf("data.%s", td.ResourceName), "arn", td.ResourceName, "arn"), + ), + }, + }) +} + +func TestAccAWSDMSReplicationConfigDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::DMS::ReplicationConfig", "awscc_dms_replication_config", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/network_interface_attachment_plural_data_source_gen.go b/internal/aws/ec2/network_interface_attachment_plural_data_source_gen.go new file mode 100644 index 0000000000..5ba44767b9 --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_network_interface_attachments", networkInterfaceAttachmentsDataSource) +} + +// networkInterfaceAttachmentsDataSource returns the Terraform awscc_ec2_network_interface_attachments data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::NetworkInterfaceAttachment resource. +func networkInterfaceAttachmentsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::EC2::NetworkInterfaceAttachment", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::NetworkInterfaceAttachment").WithTerraformTypeName("awscc_ec2_network_interface_attachments") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/network_interface_attachment_plural_data_source_gen_test.go b/internal/aws/ec2/network_interface_attachment_plural_data_source_gen_test.go new file mode 100644 index 0000000000..22a4d15de8 --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2NetworkInterfaceAttachmentsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::NetworkInterfaceAttachment", "awscc_ec2_network_interface_attachments", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/ec2/network_interface_attachment_singular_data_source_gen.go b/internal/aws/ec2/network_interface_attachment_singular_data_source_gen.go new file mode 100644 index 0000000000..42819abb4e --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_singular_data_source_gen.go @@ -0,0 +1,113 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_network_interface_attachment", networkInterfaceAttachmentDataSource) +} + +// networkInterfaceAttachmentDataSource returns the Terraform awscc_ec2_network_interface_attachment data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::NetworkInterfaceAttachment resource. +func networkInterfaceAttachmentDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AttachmentId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the network interface attachment.", + // "type": "string" + // } + "attachment_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the network interface attachment.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DeleteOnTermination + // CloudFormation resource type schema: + // + // { + // "default": true, + // "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to true.", + // "type": "boolean" + // } + "delete_on_termination": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Whether to delete the network interface when the instance terminates. By default, this value is set to true.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DeviceIndex + // CloudFormation resource type schema: + // + // { + // "description": "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.", + // "type": "string" + // } + "device_index": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InstanceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the instance to which you will attach the ENI.", + // "type": "string" + // } + "instance_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the instance to which you will attach the ENI.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NetworkInterfaceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the ENI that you want to attach.", + // "type": "string" + // } + "network_interface_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the ENI that you want to attach.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::EC2::NetworkInterfaceAttachment", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::NetworkInterfaceAttachment").WithTerraformTypeName("awscc_ec2_network_interface_attachment") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "attachment_id": "AttachmentId", + "delete_on_termination": "DeleteOnTermination", + "device_index": "DeviceIndex", + "instance_id": "InstanceId", + "network_interface_id": "NetworkInterfaceId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/network_interface_attachment_singular_data_source_gen_test.go b/internal/aws/ec2/network_interface_attachment_singular_data_source_gen_test.go new file mode 100644 index 0000000000..437b07b6b4 --- /dev/null +++ b/internal/aws/ec2/network_interface_attachment_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2NetworkInterfaceAttachmentDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::NetworkInterfaceAttachment", "awscc_ec2_network_interface_attachment", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2NetworkInterfaceAttachmentDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::NetworkInterfaceAttachment", "awscc_ec2_network_interface_attachment", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/network_interface_singular_data_source_gen.go b/internal/aws/ec2/network_interface_singular_data_source_gen.go index d8612b60c3..161d26cffc 100644 --- a/internal/aws/ec2/network_interface_singular_data_source_gen.go +++ b/internal/aws/ec2/network_interface_singular_data_source_gen.go @@ -34,17 +34,6 @@ func networkInterfaceDataSource(ctx context.Context) (datasource.DataSource, err Description: "A description for the network interface.", Computed: true, }, /*END ATTRIBUTE*/ - // Property: EnablePrimaryIpv6 - // CloudFormation resource type schema: - // - // { - // "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - // "type": "boolean" - // } - "enable_primary_ipv_6": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - Computed: true, - }, /*END ATTRIBUTE*/ // Property: GroupSet // CloudFormation resource type schema: // @@ -84,6 +73,50 @@ func networkInterfaceDataSource(ctx context.Context) (datasource.DataSource, err Description: "Indicates the type of network interface.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Ipv4PrefixCount + // CloudFormation resource type schema: + // + // { + // "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + // "type": "integer" + // } + "ipv_4_prefix_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Ipv4Prefixes + // CloudFormation resource type schema: + // + // { + // "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Ipv4Prefix": { + // "type": "string" + // } + // }, + // "required": [ + // "Ipv4Prefix" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ipv_4_prefixes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Ipv4Prefix + "ipv_4_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Ipv6AddressCount // CloudFormation resource type schema: // @@ -128,6 +161,50 @@ func networkInterfaceDataSource(ctx context.Context) (datasource.DataSource, err Description: "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Ipv6PrefixCount + // CloudFormation resource type schema: + // + // { + // "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + // "type": "integer" + // } + "ipv_6_prefix_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Ipv6Prefixes + // CloudFormation resource type schema: + // + // { + // "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Ipv6Prefix": { + // "type": "string" + // } + // }, + // "required": [ + // "Ipv6Prefix" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "ipv_6_prefixes": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Ipv6Prefix + "ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: PrimaryPrivateIpAddress // CloudFormation resource type schema: // @@ -300,13 +377,18 @@ func networkInterfaceDataSource(ctx context.Context) (datasource.DataSource, err opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "description": "Description", - "enable_primary_ipv_6": "EnablePrimaryIpv6", "group_set": "GroupSet", "id": "Id", "interface_type": "InterfaceType", + "ipv_4_prefix": "Ipv4Prefix", + "ipv_4_prefix_count": "Ipv4PrefixCount", + "ipv_4_prefixes": "Ipv4Prefixes", "ipv_6_address": "Ipv6Address", "ipv_6_address_count": "Ipv6AddressCount", "ipv_6_addresses": "Ipv6Addresses", + "ipv_6_prefix": "Ipv6Prefix", + "ipv_6_prefix_count": "Ipv6PrefixCount", + "ipv_6_prefixes": "Ipv6Prefixes", "key": "Key", "primary": "Primary", "primary_private_ip_address": "PrimaryPrivateIpAddress", diff --git a/internal/aws/ec2/route_singular_data_source_gen.go b/internal/aws/ec2/route_singular_data_source_gen.go new file mode 100644 index 0000000000..3dbfd0e3be --- /dev/null +++ b/internal/aws/ec2/route_singular_data_source_gen.go @@ -0,0 +1,220 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_route", routeDataSource) +} + +// routeDataSource returns the Terraform awscc_ec2_route data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::Route resource. +func routeDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CarrierGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the carrier gateway.", + // "type": "string" + // } + "carrier_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the carrier gateway.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: CidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The primary identifier of the resource generated by the service.", + // "type": "string" + // } + "cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The primary identifier of the resource generated by the service.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DestinationCidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The IPv4 CIDR block used for the destination match.", + // "type": "string" + // } + "destination_cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IPv4 CIDR block used for the destination match.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: DestinationIpv6CidrBlock + // CloudFormation resource type schema: + // + // { + // "description": "The IPv6 CIDR block used for the destination match.", + // "type": "string" + // } + "destination_ipv_6_cidr_block": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The IPv6 CIDR block used for the destination match.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: EgressOnlyInternetGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the egress-only internet gateway.", + // "type": "string" + // } + "egress_only_internet_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the egress-only internet gateway.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: GatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of an internet gateway or virtual private gateway attached to your VPC.", + // "type": "string" + // } + "gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of an internet gateway or virtual private gateway attached to your VPC.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InstanceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a NAT instance in your VPC.", + // "type": "string" + // } + "instance_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a NAT instance in your VPC.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LocalGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the local gateway.", + // "type": "string" + // } + "local_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the local gateway.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NatGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a NAT gateway.", + // "type": "string" + // } + "nat_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a NAT gateway.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NetworkInterfaceId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the network interface.", + // "type": "string" + // } + "network_interface_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the network interface.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RouteTableId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.", + // "type": "string" + // } + "route_table_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: TransitGatewayId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a transit gateway.", + // "type": "string" + // } + "transit_gateway_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a transit gateway.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcEndpointId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + // "type": "string" + // } + "vpc_endpoint_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcPeeringConnectionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of a VPC peering connection.", + // "type": "string" + // } + "vpc_peering_connection_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of a VPC peering connection.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::EC2::Route", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::Route").WithTerraformTypeName("awscc_ec2_route") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "carrier_gateway_id": "CarrierGatewayId", + "cidr_block": "CidrBlock", + "destination_cidr_block": "DestinationCidrBlock", + "destination_ipv_6_cidr_block": "DestinationIpv6CidrBlock", + "egress_only_internet_gateway_id": "EgressOnlyInternetGatewayId", + "gateway_id": "GatewayId", + "instance_id": "InstanceId", + "local_gateway_id": "LocalGatewayId", + "nat_gateway_id": "NatGatewayId", + "network_interface_id": "NetworkInterfaceId", + "route_table_id": "RouteTableId", + "transit_gateway_id": "TransitGatewayId", + "vpc_endpoint_id": "VpcEndpointId", + "vpc_peering_connection_id": "VpcPeeringConnectionId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/route_singular_data_source_gen_test.go b/internal/aws/ec2/route_singular_data_source_gen_test.go new file mode 100644 index 0000000000..9336f914ed --- /dev/null +++ b/internal/aws/ec2/route_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2RouteDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::Route", "awscc_ec2_route", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2RouteDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::Route", "awscc_ec2_route", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/iam/managed_policy_singular_data_source_gen.go b/internal/aws/iam/managed_policy_singular_data_source_gen.go index e3bb4094ed..597e260587 100644 --- a/internal/aws/iam/managed_policy_singular_data_source_gen.go +++ b/internal/aws/iam/managed_policy_singular_data_source_gen.go @@ -23,187 +23,92 @@ func init() { // This Terraform data source corresponds to the CloudFormation AWS::IAM::ManagedPolicy resource. func managedPolicyDataSource(ctx context.Context) (datasource.DataSource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ - // Property: AttachmentCount - // CloudFormation resource type schema: - // - // { - // "description": "The number of entities (users, groups, and roles) that the policy is attached to.", - // "type": "integer" - // } - "attachment_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "The number of entities (users, groups, and roles) that the policy is attached to.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: CreateDate - // CloudFormation resource type schema: - // - // { - // "description": "The date and time, in ISO 8601 date-time format, when the policy was created.", - // "type": "string" - // } - "create_date": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The date and time, in ISO 8601 date-time format, when the policy was created.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: DefaultVersionId - // CloudFormation resource type schema: - // - // { - // "description": "The identifier for the version of the policy that is set as the default version.", - // "type": "string" - // } - "default_version_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The identifier for the version of the policy that is set as the default version.", - Computed: true, - }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // // { - // "description": "A friendly description of the policy.", // "type": "string" // } "description": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A friendly description of the policy.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Groups // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the group to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", // "uniqueItems": true // } - "groups": schema.SetAttribute{ /*START ATTRIBUTE*/ + "groups": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the group to attach the policy to.", Computed: true, }, /*END ATTRIBUTE*/ - // Property: IsAttachable + // Property: Id // CloudFormation resource type schema: // // { - // "description": "Specifies whether the policy can be attached to an IAM user, group, or role.", - // "type": "boolean" + // "type": "string" // } - "is_attachable": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies whether the policy can be attached to an IAM user, group, or role.", - Computed: true, + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, }, /*END ATTRIBUTE*/ // Property: ManagedPolicyName // CloudFormation resource type schema: // // { - // "description": "The friendly name of the policy.", // "type": "string" // } "managed_policy_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The friendly name of the policy.", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: Path // CloudFormation resource type schema: // // { - // "description": "The path for the policy.", // "type": "string" // } "path": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The path for the policy.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: PermissionsBoundaryUsageCount - // CloudFormation resource type schema: - // - // { - // "description": "The number of entities (users and roles) for which the policy is used to set the permissions boundary.", - // "type": "integer" - // } - "permissions_boundary_usage_count": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "The number of entities (users and roles) for which the policy is used to set the permissions boundary.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: PolicyArn - // CloudFormation resource type schema: - // - // { - // "description": "Amazon Resource Name (ARN) of the managed policy", - // "type": "string" - // } - "policy_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Amazon Resource Name (ARN) of the managed policy", - Computed: true, + Computed: true, }, /*END ATTRIBUTE*/ // Property: PolicyDocument // CloudFormation resource type schema: // // { - // "description": "The JSON policy document that you want to use as the content for the new policy.", - // "type": "string" - // } - "policy_document": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The JSON policy document that you want to use as the content for the new policy.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: PolicyId - // CloudFormation resource type schema: - // - // { - // "description": "The stable and unique string identifying the policy.", - // "type": "string" + // "type": "object" // } - "policy_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The stable and unique string identifying the policy.", + "policy_document": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, Computed: true, }, /*END ATTRIBUTE*/ // Property: Roles // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the role to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } - "roles": schema.SetAttribute{ /*START ATTRIBUTE*/ + "roles": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the role to attach the policy to.", - Computed: true, - }, /*END ATTRIBUTE*/ - // Property: UpdateDate - // CloudFormation resource type schema: - // - // { - // "description": "The date and time, in ISO 8601 date-time format, when the policy was last updated.", - // "type": "string" - // } - "update_date": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The date and time, in ISO 8601 date-time format, when the policy was last updated.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Users // CloudFormation resource type schema: // // { - // "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.", - // "insertionOrder": false, // "items": { // "type": "string" // }, // "type": "array", - // "uniqueItems": true + // "uniqueItems": false // } - "users": schema.SetAttribute{ /*START ATTRIBUTE*/ + "users": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The name (friendly name, not ARN) of the IAM user to attach the policy to.", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -223,21 +128,14 @@ func managedPolicyDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithCloudFormationTypeName("AWS::IAM::ManagedPolicy").WithTerraformTypeName("awscc_iam_managed_policy") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "attachment_count": "AttachmentCount", - "create_date": "CreateDate", - "default_version_id": "DefaultVersionId", - "description": "Description", - "groups": "Groups", - "is_attachable": "IsAttachable", - "managed_policy_name": "ManagedPolicyName", - "path": "Path", - "permissions_boundary_usage_count": "PermissionsBoundaryUsageCount", - "policy_arn": "PolicyArn", - "policy_document": "PolicyDocument", - "policy_id": "PolicyId", - "roles": "Roles", - "update_date": "UpdateDate", - "users": "Users", + "description": "Description", + "groups": "Groups", + "id": "Id", + "managed_policy_name": "ManagedPolicyName", + "path": "Path", + "policy_document": "PolicyDocument", + "roles": "Roles", + "users": "Users", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/internetmonitor/monitor_singular_data_source_gen.go b/internal/aws/internetmonitor/monitor_singular_data_source_gen.go index f8cdf9fdba..3e729090d3 100644 --- a/internal/aws/internetmonitor/monitor_singular_data_source_gen.go +++ b/internal/aws/internetmonitor/monitor_singular_data_source_gen.go @@ -41,11 +41,57 @@ func monitorDataSource(ctx context.Context) (datasource.DataSource, error) { // { // "additionalProperties": false, // "properties": { + // "AvailabilityLocalHealthEventsConfig": { + // "additionalProperties": false, + // "properties": { + // "HealthScoreThreshold": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "MinTrafficImpact": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "Status": { + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "AvailabilityScoreThreshold": { // "maximum": 100.0, // "minimum": 0.0, // "type": "number" // }, + // "PerformanceLocalHealthEventsConfig": { + // "additionalProperties": false, + // "properties": { + // "HealthScoreThreshold": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "MinTrafficImpact": { + // "maximum": 100.0, + // "minimum": 0.0, + // "type": "number" + // }, + // "Status": { + // "enum": [ + // "ENABLED", + // "DISABLED" + // ], + // "type": "string" + // } + // }, + // "type": "object" + // }, // "PerformanceScoreThreshold": { // "maximum": 100.0, // "minimum": 0.0, @@ -56,10 +102,46 @@ func monitorDataSource(ctx context.Context) (datasource.DataSource, error) { // } "health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AvailabilityLocalHealthEventsConfig + "availability_local_health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HealthScoreThreshold + "health_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinTrafficImpact + "min_traffic_impact": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: AvailabilityScoreThreshold "availability_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: PerformanceLocalHealthEventsConfig + "performance_local_health_events_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: HealthScoreThreshold + "health_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinTrafficImpact + "min_traffic_impact": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Status + "status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: PerformanceScoreThreshold "performance_score_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ Computed: true, @@ -319,29 +401,33 @@ func monitorDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithCloudFormationTypeName("AWS::InternetMonitor::Monitor").WithTerraformTypeName("awscc_internetmonitor_monitor") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "availability_score_threshold": "AvailabilityScoreThreshold", - "bucket_name": "BucketName", - "bucket_prefix": "BucketPrefix", - "created_at": "CreatedAt", - "health_events_config": "HealthEventsConfig", - "internet_measurements_log_delivery": "InternetMeasurementsLogDelivery", - "key": "Key", - "log_delivery_status": "LogDeliveryStatus", - "max_city_networks_to_monitor": "MaxCityNetworksToMonitor", - "modified_at": "ModifiedAt", - "monitor_arn": "MonitorArn", - "monitor_name": "MonitorName", - "performance_score_threshold": "PerformanceScoreThreshold", - "processing_status": "ProcessingStatus", - "processing_status_info": "ProcessingStatusInfo", - "resources": "Resources", - "resources_to_add": "ResourcesToAdd", - "resources_to_remove": "ResourcesToRemove", - "s3_config": "S3Config", - "status": "Status", - "tags": "Tags", - "traffic_percentage_to_monitor": "TrafficPercentageToMonitor", - "value": "Value", + "availability_local_health_events_config": "AvailabilityLocalHealthEventsConfig", + "availability_score_threshold": "AvailabilityScoreThreshold", + "bucket_name": "BucketName", + "bucket_prefix": "BucketPrefix", + "created_at": "CreatedAt", + "health_events_config": "HealthEventsConfig", + "health_score_threshold": "HealthScoreThreshold", + "internet_measurements_log_delivery": "InternetMeasurementsLogDelivery", + "key": "Key", + "log_delivery_status": "LogDeliveryStatus", + "max_city_networks_to_monitor": "MaxCityNetworksToMonitor", + "min_traffic_impact": "MinTrafficImpact", + "modified_at": "ModifiedAt", + "monitor_arn": "MonitorArn", + "monitor_name": "MonitorName", + "performance_local_health_events_config": "PerformanceLocalHealthEventsConfig", + "performance_score_threshold": "PerformanceScoreThreshold", + "processing_status": "ProcessingStatus", + "processing_status_info": "ProcessingStatusInfo", + "resources": "Resources", + "resources_to_add": "ResourcesToAdd", + "resources_to_remove": "ResourcesToRemove", + "s3_config": "S3Config", + "status": "Status", + "tags": "Tags", + "traffic_percentage_to_monitor": "TrafficPercentageToMonitor", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/ivs/recording_configuration_singular_data_source_gen.go b/internal/aws/ivs/recording_configuration_singular_data_source_gen.go index 4533d7418b..0e2e1fe1b0 100644 --- a/internal/aws/ivs/recording_configuration_singular_data_source_gen.go +++ b/internal/aws/ivs/recording_configuration_singular_data_source_gen.go @@ -10,7 +10,7 @@ import ( "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" ) @@ -29,7 +29,7 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc // { // "description": "Recording Configuration ARN is automatically generated on creation and assigned as the unique identifier.", // "maxLength": 128, - // "minLength": 1, + // "minLength": 0, // "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", // "type": "string" // } @@ -61,9 +61,6 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc // "type": "object" // } // }, - // "required": [ - // "S3" - // ], // "type": "object" // } "destination_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -111,6 +108,60 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc Description: "Recording Reconnect Window Seconds. (0 means disabled)", Computed: true, }, /*END ATTRIBUTE*/ + // Property: RenditionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Rendition Configuration describes which renditions should be recorded for a stream.", + // "properties": { + // "RenditionSelection": { + // "default": "ALL", + // "description": "Resolution Selection indicates which set of renditions are recorded for a stream.", + // "enum": [ + // "ALL", + // "NONE", + // "CUSTOM" + // ], + // "type": "string" + // }, + // "Renditions": { + // "description": "Renditions indicates which renditions are recorded for a stream.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "FULL_HD", + // "HD", + // "SD", + // "LOWEST_RESOLUTION" + // ], + // "type": "string" + // }, + // "maxItems": 4, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // } + // }, + // "type": "object" + // } + "rendition_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RenditionSelection + "rendition_selection": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Resolution Selection indicates which set of renditions are recorded for a stream.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Renditions + "renditions": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Renditions indicates which renditions are recorded for a stream.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Rendition Configuration describes which renditions should be recorded for a stream.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: State // CloudFormation resource type schema: // @@ -181,6 +232,7 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc // "description": "Recording Thumbnail Configuration.", // "properties": { // "RecordingMode": { + // "default": "INTERVAL", // "description": "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", // "enum": [ // "INTERVAL", @@ -188,16 +240,39 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc // ], // "type": "string" // }, + // "Resolution": { + // "description": "Resolution indicates the desired resolution of recorded thumbnails.", + // "enum": [ + // "FULL_HD", + // "HD", + // "SD", + // "LOWEST_RESOLUTION" + // ], + // "type": "string" + // }, + // "Storage": { + // "description": "Storage indicates the format in which thumbnails are recorded.", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "SEQUENTIAL", + // "LATEST" + // ], + // "type": "string" + // }, + // "maxItems": 2, + // "minItems": 0, + // "type": "array", + // "uniqueItems": true + // }, // "TargetIntervalSeconds": { - // "description": "Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + // "default": 60, + // "description": "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", // "maximum": 60, - // "minimum": 5, + // "minimum": 1, // "type": "integer" // } // }, - // "required": [ - // "RecordingMode" - // ], // "type": "object" // } "thumbnail_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -207,9 +282,20 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc Description: "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: Resolution + "resolution": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Resolution indicates the desired resolution of recorded thumbnails.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Storage + "storage": schema.SetAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Storage indicates the format in which thumbnails are recorded.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: TargetIntervalSeconds "target_interval_seconds": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Description: "Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + Description: "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ @@ -240,8 +326,13 @@ func recordingConfigurationDataSource(ctx context.Context) (datasource.DataSourc "name": "Name", "recording_mode": "RecordingMode", "recording_reconnect_window_seconds": "RecordingReconnectWindowSeconds", + "rendition_configuration": "RenditionConfiguration", + "rendition_selection": "RenditionSelection", + "renditions": "Renditions", + "resolution": "Resolution", "s3": "S3", "state": "State", + "storage": "Storage", "tags": "Tags", "target_interval_seconds": "TargetIntervalSeconds", "thumbnail_configuration": "ThumbnailConfiguration", diff --git a/internal/aws/kendra/data_source_singular_data_source_gen.go b/internal/aws/kendra/data_source_singular_data_source_gen.go index b0b2716642..c12e91ce5e 100644 --- a/internal/aws/kendra/data_source_singular_data_source_gen.go +++ b/internal/aws/kendra/data_source_singular_data_source_gen.go @@ -569,6 +569,11 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { // "required": [ // "WorkDocsConfiguration" // ] + // }, + // { + // "required": [ + // "TemplateConfiguration" + // ] // } // ], // "properties": { @@ -1994,6 +1999,18 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { // ], // "type": "object" // }, + // "TemplateConfiguration": { + // "additionalProperties": false, + // "properties": { + // "Template": { + // "type": "string" + // } + // }, + // "required": [ + // "Template" + // ], + // "type": "object" + // }, // "WebCrawlerConfiguration": { // "additionalProperties": false, // "properties": { @@ -3132,6 +3149,16 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "SharePoint configuration", Computed: true, }, /*END ATTRIBUTE*/ + // Property: TemplateConfiguration + "template_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Template + "template": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: WebCrawlerConfiguration "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -3434,7 +3461,8 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { // "CONFLUENCE", // "GOOGLEDRIVE", // "WEBCRAWLER", - // "WORKDOCS" + // "WORKDOCS", + // "TEMPLATE" // ], // "type": "string" // } @@ -3584,6 +3612,8 @@ func dataSourceDataSource(ctx context.Context) (datasource.DataSource, error) { "target_document_attribute_key": "TargetDocumentAttributeKey", "target_document_attribute_value": "TargetDocumentAttributeValue", "target_document_attribute_value_deletion": "TargetDocumentAttributeValueDeletion", + "template": "Template", + "template_configuration": "TemplateConfiguration", "tenant_domain": "TenantDomain", "type": "Type", "url_exclusion_patterns": "UrlExclusionPatterns", diff --git a/internal/aws/kms/key_singular_data_source_gen.go b/internal/aws/kms/key_singular_data_source_gen.go index e67f3b091e..ad5f2a2ff0 100644 --- a/internal/aws/kms/key_singular_data_source_gen.go +++ b/internal/aws/kms/key_singular_data_source_gen.go @@ -32,6 +32,18 @@ func keyDataSource(ctx context.Context) (datasource.DataSource, error) { "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: BypassPolicyLockoutSafetyCheck + // CloudFormation resource type schema: + // + // { + // "default": false, + // "description": "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.", + // "type": "boolean" + // } + "bypass_policy_lockout_safety_check": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // @@ -80,6 +92,7 @@ func keyDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { + // "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:\u003cpartition\u003e:iam::\u003caccount-id\u003e:root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}", // "description": "The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules.", // "type": "string" // } @@ -239,20 +252,21 @@ func keyDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithCloudFormationTypeName("AWS::KMS::Key").WithTerraformTypeName("awscc_kms_key") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "description": "Description", - "enable_key_rotation": "EnableKeyRotation", - "enabled": "Enabled", - "key": "Key", - "key_id": "KeyId", - "key_policy": "KeyPolicy", - "key_spec": "KeySpec", - "key_usage": "KeyUsage", - "multi_region": "MultiRegion", - "origin": "Origin", - "pending_window_in_days": "PendingWindowInDays", - "tags": "Tags", - "value": "Value", + "arn": "Arn", + "bypass_policy_lockout_safety_check": "BypassPolicyLockoutSafetyCheck", + "description": "Description", + "enable_key_rotation": "EnableKeyRotation", + "enabled": "Enabled", + "key": "Key", + "key_id": "KeyId", + "key_policy": "KeyPolicy", + "key_spec": "KeySpec", + "key_usage": "KeyUsage", + "multi_region": "MultiRegion", + "origin": "Origin", + "pending_window_in_days": "PendingWindowInDays", + "tags": "Tags", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/kms/key_singular_data_source_gen_test.go b/internal/aws/kms/key_singular_data_source_gen_test.go index 9757d380f8..ff38164b56 100644 --- a/internal/aws/kms/key_singular_data_source_gen_test.go +++ b/internal/aws/kms/key_singular_data_source_gen_test.go @@ -6,6 +6,7 @@ package kms_test import ( + "fmt" "regexp" "testing" @@ -18,8 +19,11 @@ func TestAccAWSKMSKeyDataSource_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/lambda/layer_version_permission_singular_data_source_gen.go b/internal/aws/lambda/layer_version_permission_singular_data_source_gen.go new file mode 100644 index 0000000000..3d1ec97c07 --- /dev/null +++ b/internal/aws/lambda/layer_version_permission_singular_data_source_gen.go @@ -0,0 +1,112 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package lambda + +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_lambda_layer_version_permission", layerVersionPermissionDataSource) +} + +// layerVersionPermissionDataSource returns the Terraform awscc_lambda_layer_version_permission data source. +// This Terraform data source corresponds to the CloudFormation AWS::Lambda::LayerVersionPermission resource. +func layerVersionPermissionDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Action + // CloudFormation resource type schema: + // + // { + // "description": "The API action that grants access to the layer.", + // "type": "string" + // } + "action": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The API action that grants access to the layer.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Id + // CloudFormation resource type schema: + // + // { + // "description": "ID generated by service", + // "type": "string" + // } + "id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ID generated by service", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LayerVersionArn + // CloudFormation resource type schema: + // + // { + // "description": "The name or Amazon Resource Name (ARN) of the layer.", + // "type": "string" + // } + "layer_version_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name or Amazon Resource Name (ARN) of the layer.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OrganizationId + // CloudFormation resource type schema: + // + // { + // "description": "With the principal set to *, grant permission to all accounts in the specified organization.", + // "type": "string" + // } + "organization_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "With the principal set to *, grant permission to all accounts in the specified organization.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Principal + // CloudFormation resource type schema: + // + // { + // "description": "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + // "type": "string" + // } + "principal": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + 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::Lambda::LayerVersionPermission", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Lambda::LayerVersionPermission").WithTerraformTypeName("awscc_lambda_layer_version_permission") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "action": "Action", + "id": "Id", + "layer_version_arn": "LayerVersionArn", + "organization_id": "OrganizationId", + "principal": "Principal", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/lambda/layer_version_permission_singular_data_source_gen_test.go b/internal/aws/lambda/layer_version_permission_singular_data_source_gen_test.go new file mode 100644 index 0000000000..35fc370081 --- /dev/null +++ b/internal/aws/lambda/layer_version_permission_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 lambda_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSLambdaLayerVersionPermissionDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Lambda::LayerVersionPermission", "awscc_lambda_layer_version_permission", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSLambdaLayerVersionPermissionDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Lambda::LayerVersionPermission", "awscc_lambda_layer_version_permission", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/mediatailor/channel_plural_data_source_gen.go b/internal/aws/mediatailor/channel_plural_data_source_gen.go new file mode 100644 index 0000000000..a2fca7c614 --- /dev/null +++ b/internal/aws/mediatailor/channel_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 mediatailor + +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_mediatailor_channels", channelsDataSource) +} + +// channelsDataSource returns the Terraform awscc_mediatailor_channels data source. +// This Terraform data source corresponds to the CloudFormation AWS::MediaTailor::Channel resource. +func channelsDataSource(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::MediaTailor::Channel", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::Channel").WithTerraformTypeName("awscc_mediatailor_channels") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/mediatailor/channel_plural_data_source_gen_test.go b/internal/aws/mediatailor/channel_plural_data_source_gen_test.go new file mode 100644 index 0000000000..b1d95533be --- /dev/null +++ b/internal/aws/mediatailor/channel_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 mediatailor_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorChannelsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::Channel", "awscc_mediatailor_channels", "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/mediatailor/channel_policy_singular_data_source_gen.go b/internal/aws/mediatailor/channel_policy_singular_data_source_gen.go new file mode 100644 index 0000000000..480c542e7a --- /dev/null +++ b/internal/aws/mediatailor/channel_policy_singular_data_source_gen.go @@ -0,0 +1,74 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package mediatailor + +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_mediatailor_channel_policy", channelPolicyDataSource) +} + +// channelPolicyDataSource returns the Terraform awscc_mediatailor_channel_policy data source. +// This Terraform data source corresponds to the CloudFormation AWS::MediaTailor::ChannelPolicy resource. +func channelPolicyDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChannelName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "channel_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Policy + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe IAM policy for the channel. IAM policies are used to control access to your channel.\u003c/p\u003e", + // "type": "string" + // } + "policy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The IAM policy for the channel. IAM policies are used to control access to your channel.

", + 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::MediaTailor::ChannelPolicy", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::ChannelPolicy").WithTerraformTypeName("awscc_mediatailor_channel_policy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "channel_name": "ChannelName", + "policy": "Policy", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/mediatailor/channel_policy_singular_data_source_gen_test.go b/internal/aws/mediatailor/channel_policy_singular_data_source_gen_test.go new file mode 100644 index 0000000000..1c87e31079 --- /dev/null +++ b/internal/aws/mediatailor/channel_policy_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorChannelPolicyDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::ChannelPolicy", "awscc_mediatailor_channel_policy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSMediaTailorChannelPolicyDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::ChannelPolicy", "awscc_mediatailor_channel_policy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/mediatailor/channel_singular_data_source_gen.go b/internal/aws/mediatailor/channel_singular_data_source_gen.go new file mode 100644 index 0000000000..f3e7de1f24 --- /dev/null +++ b/internal/aws/mediatailor/channel_singular_data_source_gen.go @@ -0,0 +1,350 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package mediatailor + +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_mediatailor_channel", channelDataSource) +} + +// channelDataSource returns the Terraform awscc_mediatailor_channel data source. +// This Terraform data source corresponds to the CloudFormation AWS::MediaTailor::Channel resource. +func channelDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the channel.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the channel.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ChannelName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "channel_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FillerSlate + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "\u003cp\u003eSlate VOD source configuration.\u003c/p\u003e", + // "properties": { + // "SourceLocationName": { + // "description": "\u003cp\u003eThe name of the source location where the slate VOD source is stored.\u003c/p\u003e", + // "type": "string" + // }, + // "VodSourceName": { + // "description": "\u003cp\u003eThe slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.\u003c/p\u003e", + // "type": "string" + // } + // }, + // "type": "object" + // } + "filler_slate": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SourceLocationName + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source location where the slate VOD source is stored.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VodSourceName + "vod_source_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

Slate VOD source configuration.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LogConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe log configuration for the channel.\u003c/p\u003e", + // "properties": { + // "LogTypes": { + // "description": "\u003cp\u003eThe log types.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "enum": [ + // "AS_RUN" + // ], + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "type": "object" + // } + "log_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LogTypes + "log_types": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "

The log types.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

The log configuration for the channel.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Outputs + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe channel's output properties.\u003c/p\u003e", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe output configuration for this channel.\u003c/p\u003e", + // "properties": { + // "DashPlaylistSettings": { + // "additionalProperties": false, + // "description": "\u003cp\u003eDash manifest configuration parameters.\u003c/p\u003e", + // "properties": { + // "ManifestWindowSeconds": { + // "default": 0, + // "description": "\u003cp\u003eThe total duration (in seconds) of each manifest. Minimum value: \u003ccode\u003e30\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e3600\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "MinBufferTimeSeconds": { + // "default": 0, + // "description": "\u003cp\u003eMinimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "MinUpdatePeriodSeconds": { + // "default": 0, + // "description": "\u003cp\u003eMinimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // }, + // "SuggestedPresentationDelaySeconds": { + // "default": 0, + // "description": "\u003cp\u003eAmount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: \u003ccode\u003e2\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e60\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "HlsPlaylistSettings": { + // "additionalProperties": false, + // "description": "\u003cp\u003eHLS playlist configuration parameters.\u003c/p\u003e", + // "properties": { + // "ManifestWindowSeconds": { + // "default": 0, + // "description": "\u003cp\u003eThe total duration (in seconds) of each manifest. Minimum value: \u003ccode\u003e30\u003c/code\u003e seconds. Maximum value: \u003ccode\u003e3600\u003c/code\u003e seconds.\u003c/p\u003e", + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ManifestName": { + // "description": "\u003cp\u003eThe name of the manifest for the channel. The name appears in the \u003ccode\u003ePlaybackUrl\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eA string used to match which \u003ccode\u003eHttpPackageConfiguration\u003c/code\u003e is used for each \u003ccode\u003eVodSource\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // } + // }, + // "required": [ + // "ManifestName", + // "SourceGroup" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "outputs": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: DashPlaylistSettings + "dash_playlist_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ManifestWindowSeconds + "manifest_window_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinBufferTimeSeconds + "min_buffer_time_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MinUpdatePeriodSeconds + "min_update_period_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SuggestedPresentationDelaySeconds + "suggested_presentation_delay_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

Dash manifest configuration parameters.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HlsPlaylistSettings + "hls_playlist_settings": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ManifestWindowSeconds + "manifest_window_seconds": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Description: "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "

HLS playlist configuration parameters.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ManifestName + "manifest_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the manifest for the channel. The name appears in the PlaybackUrl.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

A string used to match which HttpPackageConfiguration is used for each VodSource.

", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

The channel's output properties.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: PlaybackMode + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "LOOP", + // "LINEAR" + // ], + // "type": "string" + // } + "playback_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the channel.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the channel.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tier + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "BASIC", + // "STANDARD" + // ], + // "type": "string" + // } + "tier": 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::MediaTailor::Channel", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::Channel").WithTerraformTypeName("awscc_mediatailor_channel") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "channel_name": "ChannelName", + "dash_playlist_settings": "DashPlaylistSettings", + "filler_slate": "FillerSlate", + "hls_playlist_settings": "HlsPlaylistSettings", + "key": "Key", + "log_configuration": "LogConfiguration", + "log_types": "LogTypes", + "manifest_name": "ManifestName", + "manifest_window_seconds": "ManifestWindowSeconds", + "min_buffer_time_seconds": "MinBufferTimeSeconds", + "min_update_period_seconds": "MinUpdatePeriodSeconds", + "outputs": "Outputs", + "playback_mode": "PlaybackMode", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "suggested_presentation_delay_seconds": "SuggestedPresentationDelaySeconds", + "tags": "Tags", + "tier": "Tier", + "value": "Value", + "vod_source_name": "VodSourceName", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/mediatailor/channel_singular_data_source_gen_test.go b/internal/aws/mediatailor/channel_singular_data_source_gen_test.go new file mode 100644 index 0000000000..718f1b6bb0 --- /dev/null +++ b/internal/aws/mediatailor/channel_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorChannelDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::Channel", "awscc_mediatailor_channel", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSMediaTailorChannelDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::Channel", "awscc_mediatailor_channel", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/mediatailor/live_source_singular_data_source_gen.go b/internal/aws/mediatailor/live_source_singular_data_source_gen.go new file mode 100644 index 0000000000..919b873b79 --- /dev/null +++ b/internal/aws/mediatailor/live_source_singular_data_source_gen.go @@ -0,0 +1,188 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package mediatailor + +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_mediatailor_live_source", liveSourceDataSource) +} + +// liveSourceDataSource returns the Terraform awscc_mediatailor_live_source data source. +// This Terraform data source corresponds to the CloudFormation AWS::MediaTailor::LiveSource resource. +func liveSourceDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the live source.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the live source.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HttpPackageConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eA list of HTTP package configuration parameters for this live source.\u003c/p\u003e", + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe HTTP package configuration properties for the requested VOD source.\u003c/p\u003e", + // "properties": { + // "Path": { + // "description": "\u003cp\u003eThe relative path to the URL for this VOD source. This is combined with \u003ccode\u003eSourceLocation::HttpConfiguration::BaseUrl\u003c/code\u003e to form a valid URL.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eThe name of the source group. This has to match one of the \u003ccode\u003eChannel::Outputs::SourceGroup\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "Type": { + // "enum": [ + // "DASH", + // "HLS" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Path", + // "SourceGroup", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "http_package_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Path + "path": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

A list of HTTP package configuration parameters for this live source.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: LiveSourceName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "live_source_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceLocationName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the live source.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the live source.", + 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::MediaTailor::LiveSource", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::LiveSource").WithTerraformTypeName("awscc_mediatailor_live_source") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "http_package_configurations": "HttpPackageConfigurations", + "key": "Key", + "live_source_name": "LiveSourceName", + "path": "Path", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "tags": "Tags", + "type": "Type", + "value": "Value", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/mediatailor/live_source_singular_data_source_gen_test.go b/internal/aws/mediatailor/live_source_singular_data_source_gen_test.go new file mode 100644 index 0000000000..8520bc00ff --- /dev/null +++ b/internal/aws/mediatailor/live_source_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorLiveSourceDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::LiveSource", "awscc_mediatailor_live_source", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSMediaTailorLiveSourceDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::LiveSource", "awscc_mediatailor_live_source", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/mediatailor/vod_source_singular_data_source_gen.go b/internal/aws/mediatailor/vod_source_singular_data_source_gen.go new file mode 100644 index 0000000000..0c3e98e456 --- /dev/null +++ b/internal/aws/mediatailor/vod_source_singular_data_source_gen.go @@ -0,0 +1,188 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package mediatailor + +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_mediatailor_vod_source", vodSourceDataSource) +} + +// vodSourceDataSource returns the Terraform awscc_mediatailor_vod_source data source. +// This Terraform data source corresponds to the CloudFormation AWS::MediaTailor::VodSource resource. +func vodSourceDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Arn + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eThe ARN of the VOD source.\u003c/p\u003e", + // "type": "string" + // } + "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The ARN of the VOD source.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HttpPackageConfigurations + // CloudFormation resource type schema: + // + // { + // "description": "\u003cp\u003eA list of HTTP package configuration parameters for this VOD source.\u003c/p\u003e", + // "items": { + // "additionalProperties": false, + // "description": "\u003cp\u003eThe HTTP package configuration properties for the requested VOD source.\u003c/p\u003e", + // "properties": { + // "Path": { + // "description": "\u003cp\u003eThe relative path to the URL for this VOD source. This is combined with \u003ccode\u003eSourceLocation::HttpConfiguration::BaseUrl\u003c/code\u003e to form a valid URL.\u003c/p\u003e", + // "type": "string" + // }, + // "SourceGroup": { + // "description": "\u003cp\u003eThe name of the source group. This has to match one of the \u003ccode\u003eChannel::Outputs::SourceGroup\u003c/code\u003e.\u003c/p\u003e", + // "type": "string" + // }, + // "Type": { + // "enum": [ + // "DASH", + // "HLS" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "Path", + // "SourceGroup", + // "Type" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "http_package_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Path + "path": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceGroup + "source_group": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Type + "type": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "

A list of HTTP package configuration parameters for this VOD source.

", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SourceLocationName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "source_location_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "The tags to assign to the VOD source.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "properties": { + // "Key": { + // "type": "string" + // }, + // "Value": { + // "type": "string" + // } + // }, + // "required": [ + // "Value", + // "Key" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": true + // } + "tags": schema.SetNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "The tags to assign to the VOD source.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VodSourceName + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "vod_source_name": 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::MediaTailor::VodSource", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::MediaTailor::VodSource").WithTerraformTypeName("awscc_mediatailor_vod_source") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "arn": "Arn", + "http_package_configurations": "HttpPackageConfigurations", + "key": "Key", + "path": "Path", + "source_group": "SourceGroup", + "source_location_name": "SourceLocationName", + "tags": "Tags", + "type": "Type", + "value": "Value", + "vod_source_name": "VodSourceName", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/mediatailor/vod_source_singular_data_source_gen_test.go b/internal/aws/mediatailor/vod_source_singular_data_source_gen_test.go new file mode 100644 index 0000000000..c481ceb7db --- /dev/null +++ b/internal/aws/mediatailor/vod_source_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 mediatailor_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSMediaTailorVodSourceDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::VodSource", "awscc_mediatailor_vod_source", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSMediaTailorVodSourceDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::MediaTailor::VodSource", "awscc_mediatailor_vod_source", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/neptune/db_cluster_singular_data_source_gen.go b/internal/aws/neptune/db_cluster_singular_data_source_gen.go index b9d120f7ae..fb218c4955 100644 --- a/internal/aws/neptune/db_cluster_singular_data_source_gen.go +++ b/internal/aws/neptune/db_cluster_singular_data_source_gen.go @@ -156,6 +156,17 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: DBPort + // CloudFormation resource type schema: + // + // { + // "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + // "type": "integer" + // } + "db_port": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Description: "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: DBSubnetGroupName // CloudFormation resource type schema: // @@ -199,11 +210,11 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + // "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", // "type": "string" // } "endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + Description: "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", Computed: true, }, /*END ATTRIBUTE*/ // Property: EngineVersion @@ -243,11 +254,11 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies the port that the database engine is listening on.", + // "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", // "type": "string" // } "port": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies the port that the database engine is listening on.", + Description: "The port number on which the DB cluster accepts connections. For example: `8182`.", Computed: true, }, /*END ATTRIBUTE*/ // Property: PreferredBackupWindow @@ -276,11 +287,11 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + // "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", // "type": "string" // } "read_endpoint": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com", + Description: "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", Computed: true, }, /*END ATTRIBUTE*/ // Property: RestoreToTime @@ -484,6 +495,7 @@ func dBClusterDataSource(ctx context.Context) (datasource.DataSource, error) { "db_cluster_identifier": "DBClusterIdentifier", "db_cluster_parameter_group_name": "DBClusterParameterGroupName", "db_instance_parameter_group_name": "DBInstanceParameterGroupName", + "db_port": "DBPort", "db_subnet_group_name": "DBSubnetGroupName", "deletion_protection": "DeletionProtection", "enable_cloudwatch_logs_exports": "EnableCloudwatchLogsExports", diff --git a/internal/aws/omics/run_group_singular_data_source_gen.go b/internal/aws/omics/run_group_singular_data_source_gen.go index 9cdd005b5c..c39a6ceff1 100644 --- a/internal/aws/omics/run_group_singular_data_source_gen.go +++ b/internal/aws/omics/run_group_singular_data_source_gen.go @@ -79,6 +79,17 @@ func runGroupDataSource(ctx context.Context) (datasource.DataSource, error) { "max_duration": schema.Float64Attribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: MaxGpus + // CloudFormation resource type schema: + // + // { + // "maximum": 100000, + // "minimum": 1, + // "type": "number" + // } + "max_gpus": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: MaxRuns // CloudFormation resource type schema: // @@ -146,6 +157,7 @@ func runGroupDataSource(ctx context.Context) (datasource.DataSource, error) { "id": "Id", "max_cpus": "MaxCpus", "max_duration": "MaxDuration", + "max_gpus": "MaxGpus", "max_runs": "MaxRuns", "name": "Name", "tags": "Tags", diff --git a/internal/aws/omics/workflow_singular_data_source_gen.go b/internal/aws/omics/workflow_singular_data_source_gen.go index 83fb8ba584..9fa1440852 100644 --- a/internal/aws/omics/workflow_singular_data_source_gen.go +++ b/internal/aws/omics/workflow_singular_data_source_gen.go @@ -23,6 +23,20 @@ func init() { // This Terraform data source corresponds to the CloudFormation AWS::Omics::Workflow resource. func workflowDataSource(ctx context.Context) (datasource.DataSource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Accelerators + // CloudFormation resource type schema: + // + // { + // "enum": [ + // "GPU" + // ], + // "maxLength": 64, + // "minLength": 1, + // "type": "string" + // } + "accelerators": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Arn // CloudFormation resource type schema: // @@ -75,7 +89,8 @@ func workflowDataSource(ctx context.Context) (datasource.DataSource, error) { // { // "enum": [ // "WDL", - // "NEXTFLOW" + // "NEXTFLOW", + // "CWL" // ], // "maxLength": 64, // "minLength": 1, @@ -242,6 +257,7 @@ func workflowDataSource(ctx context.Context) (datasource.DataSource, error) { opts = opts.WithCloudFormationTypeName("AWS::Omics::Workflow").WithTerraformTypeName("awscc_omics_workflow") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ + "accelerators": "Accelerators", "arn": "Arn", "creation_time": "CreationTime", "definition_uri": "DefinitionUri", diff --git a/internal/aws/opensearchserverless/collection_singular_data_source_gen.go b/internal/aws/opensearchserverless/collection_singular_data_source_gen.go index d280b481c2..a33423620f 100644 --- a/internal/aws/opensearchserverless/collection_singular_data_source_gen.go +++ b/internal/aws/opensearchserverless/collection_singular_data_source_gen.go @@ -153,7 +153,8 @@ func collectionDataSource(ctx context.Context) (datasource.DataSource, error) { // "description": "The possible types for the collection", // "enum": [ // "SEARCH", - // "TIMESERIES" + // "TIMESERIES", + // "VECTORSEARCH" // ], // "type": "string" // } diff --git a/internal/aws/pipes/pipe_plural_data_source_gen.go b/internal/aws/pipes/pipe_plural_data_source_gen.go new file mode 100644 index 0000000000..3b3f15726e --- /dev/null +++ b/internal/aws/pipes/pipe_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 pipes + +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_pipes_pipes", pipesDataSource) +} + +// pipesDataSource returns the Terraform awscc_pipes_pipes data source. +// This Terraform data source corresponds to the CloudFormation AWS::Pipes::Pipe resource. +func pipesDataSource(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::Pipes::Pipe", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Pipes::Pipe").WithTerraformTypeName("awscc_pipes_pipes") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/pipes/pipe_plural_data_source_gen_test.go b/internal/aws/pipes/pipe_plural_data_source_gen_test.go new file mode 100644 index 0000000000..fa053fc576 --- /dev/null +++ b/internal/aws/pipes/pipe_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 pipes_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSPipesPipesDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Pipes::Pipe", "awscc_pipes_pipes", "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/feature_group_singular_data_source_gen.go b/internal/aws/sagemaker/feature_group_singular_data_source_gen.go index 101dd4b7c2..07be294c70 100644 --- a/internal/aws/sagemaker/feature_group_singular_data_source_gen.go +++ b/internal/aws/sagemaker/feature_group_singular_data_source_gen.go @@ -23,6 +23,17 @@ func init() { // This Terraform data source corresponds to the CloudFormation AWS::SageMaker::FeatureGroup resource. func featureGroupDataSource(ctx context.Context) (datasource.DataSource, error) { attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CreationTime + // CloudFormation resource type schema: + // + // { + // "description": "A timestamp of FeatureGroup creation time.", + // "type": "string" + // } + "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "A timestamp of FeatureGroup creation time.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Description // CloudFormation resource type schema: // @@ -113,6 +124,17 @@ func featureGroupDataSource(ctx context.Context) (datasource.DataSource, error) Description: "The Name of the FeatureGroup.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: FeatureGroupStatus + // CloudFormation resource type schema: + // + // { + // "description": "The status of the feature group.", + // "type": "string" + // } + "feature_group_status": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The status of the feature group.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: OfflineStoreConfig // CloudFormation resource type schema: // @@ -358,6 +380,7 @@ func featureGroupDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "catalog": "Catalog", + "creation_time": "CreationTime", "data_catalog_config": "DataCatalogConfig", "database": "Database", "description": "Description", @@ -366,6 +389,7 @@ func featureGroupDataSource(ctx context.Context) (datasource.DataSource, error) "event_time_feature_name": "EventTimeFeatureName", "feature_definitions": "FeatureDefinitions", "feature_group_name": "FeatureGroupName", + "feature_group_status": "FeatureGroupStatus", "feature_name": "FeatureName", "feature_type": "FeatureType", "key": "Key", diff --git a/internal/aws/sqs/queue_inline_policy_singular_data_source_gen.go b/internal/aws/sqs/queue_inline_policy_singular_data_source_gen.go new file mode 100644 index 0000000000..c65c72f72c --- /dev/null +++ b/internal/aws/sqs/queue_inline_policy_singular_data_source_gen.go @@ -0,0 +1,77 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package sqs + +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_sqs_queue_inline_policy", queueInlinePolicyDataSource) +} + +// queueInlinePolicyDataSource returns the Terraform awscc_sqs_queue_inline_policy data source. +// This Terraform data source corresponds to the CloudFormation AWS::SQS::QueueInlinePolicy resource. +func queueInlinePolicyDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: PolicyDocument + // CloudFormation resource type schema: + // + // { + // "description": "A policy document that contains permissions to add to the specified SQS queue", + // "type": "object" + // } + "policy_document": schema.MapAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "A policy document that contains permissions to add to the specified SQS queue", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Queue + // CloudFormation resource type schema: + // + // { + // "description": "The URL of the SQS queue.", + // "type": "string" + // } + "queue": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The URL of the SQS queue.", + 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::SQS::QueueInlinePolicy", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::SQS::QueueInlinePolicy").WithTerraformTypeName("awscc_sqs_queue_inline_policy") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "policy_document": "PolicyDocument", + "queue": "Queue", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/sqs/queue_inline_policy_singular_data_source_gen_test.go b/internal/aws/sqs/queue_inline_policy_singular_data_source_gen_test.go new file mode 100644 index 0000000000..9baac9c31d --- /dev/null +++ b/internal/aws/sqs/queue_inline_policy_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 sqs_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSSQSQueueInlinePolicyDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SQS::QueueInlinePolicy", "awscc_sqs_queue_inline_policy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSSQSQueueInlinePolicyDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::SQS::QueueInlinePolicy", "awscc_sqs_queue_inline_policy", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/transfer/connector_singular_data_source_gen.go b/internal/aws/transfer/connector_singular_data_source_gen.go index 4d1df9cab7..28476ae31d 100644 --- a/internal/aws/transfer/connector_singular_data_source_gen.go +++ b/internal/aws/transfer/connector_singular_data_source_gen.go @@ -10,7 +10,7 @@ import ( "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" ) @@ -41,14 +41,14 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + // "description": "Specifies the unique Amazon Resource Name (ARN) for the connector.", // "maxLength": 1600, // "minLength": 20, // "pattern": "arn:.*", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + Description: "Specifies the unique Amazon Resource Name (ARN) for the connector.", Computed: true, }, /*END ATTRIBUTE*/ // Property: As2Config @@ -58,6 +58,12 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "Configuration for an AS2 connector.", // "properties": { + // "BasicAuthSecretId": { + // "description": "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + // "maxLength": 2048, + // "minLength": 0, + // "type": "string" + // }, // "Compression": { // "description": "Compression setting for this AS2 connector configuration.", // "enum": [ @@ -133,6 +139,11 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { // } "as_2_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BasicAuthSecretId + "basic_auth_secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Compression "compression": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Compression setting for this AS2 connector configuration.", @@ -205,11 +216,57 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "Specifies the logging role for the connector.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: SftpConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration for an SFTP connector.", + // "properties": { + // "TrustedHostKeys": { + // "description": "List of public host keys, for the external server to which you are connecting.", + // "insertionOrder": false, + // "items": { + // "description": "The public host key for the external server to which you are connecting.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 10, + // "type": "array", + // "uniqueItems": false + // }, + // "UserSecretId": { + // "description": "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + // "maxLength": 2048, + // "minLength": 1, + // "type": "string" + // } + // }, + // "type": "object" + // } + "sftp_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: TrustedHostKeys + "trusted_host_keys": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "List of public host keys, for the external server to which you are connecting.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserSecretId + "user_secret_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration for an SFTP connector.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // // { - // "description": "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + // "description": "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -253,7 +310,7 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + Description: "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Url @@ -288,6 +345,7 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { "access_role": "AccessRole", "arn": "Arn", "as_2_config": "As2Config", + "basic_auth_secret_id": "BasicAuthSecretId", "compression": "Compression", "connector_id": "ConnectorId", "encryption_algorithm": "EncryptionAlgorithm", @@ -298,9 +356,12 @@ func connectorDataSource(ctx context.Context) (datasource.DataSource, error) { "mdn_signing_algorithm": "MdnSigningAlgorithm", "message_subject": "MessageSubject", "partner_profile_id": "PartnerProfileId", + "sftp_config": "SftpConfig", "signing_algorithm": "SigningAlgorithm", "tags": "Tags", + "trusted_host_keys": "TrustedHostKeys", "url": "Url", + "user_secret_id": "UserSecretId", "value": "Value", }) From 9f286ca83182bd5324ec974616a1572e0b527e60 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 14:39:27 -0400 Subject: [PATCH 5/6] Run 'make docs'. --- .../billingconductor_billing_group.md | 1 + docs/data-sources/cloudwatch_alarm.md | 94 +++++++++++++++ docs/data-sources/cloudwatch_alarms.md | 21 ++++ docs/data-sources/config_config_rule.md | 89 ++++++++++++++ docs/data-sources/config_config_rules.md | 21 ++++ .../connect_traffic_distribution_group.md | 38 ++++++ .../datasync_location_azure_blob.md | 49 ++++++++ .../datasync_location_azure_blobs.md | 21 ++++ docs/data-sources/dms_replication_config.md | 58 +++++++++ docs/data-sources/dms_replication_configs.md | 21 ++++ docs/data-sources/ec2_network_interface.md | 21 +++- .../ec2_network_interface_attachment.md | 28 +++++ .../ec2_network_interface_attachments.md | 21 ++++ docs/data-sources/ec2_route.md | 37 ++++++ docs/data-sources/iam_managed_policy.md | 22 ++-- docs/data-sources/internetmonitor_monitor.md | 22 ++++ .../ivs_recording_configuration.md | 14 ++- docs/data-sources/kendra_data_source.md | 9 ++ docs/data-sources/kms_key.md | 1 + .../lambda_layer_version_permission.md | 27 +++++ docs/data-sources/mediatailor_channel.md | 86 ++++++++++++++ .../mediatailor_channel_policy.md | 25 ++++ docs/data-sources/mediatailor_channels.md | 21 ++++ docs/data-sources/mediatailor_live_source.md | 46 ++++++++ docs/data-sources/mediatailor_vod_source.md | 46 ++++++++ docs/data-sources/neptune_db_cluster.md | 11 +- docs/data-sources/omics_run_group.md | 1 + docs/data-sources/omics_workflow.md | 1 + docs/data-sources/pipes_pipes.md | 21 ++++ docs/data-sources/sagemaker_feature_group.md | 2 + docs/data-sources/sqs_queue_inline_policy.md | 25 ++++ docs/data-sources/transfer_connector.md | 15 ++- .../billingconductor_billing_group.md | 4 + docs/resources/cloudwatch_alarm.md | 111 ++++++++++++++++++ docs/resources/config_config_rule.md | 107 +++++++++++++++++ .../connect_traffic_distribution_group.md | 49 ++++++++ .../resources/datasync_location_azure_blob.md | 60 ++++++++++ docs/resources/dms_replication_config.md | 69 +++++++++++ docs/resources/ec2_network_interface.md | 21 +++- .../ec2_network_interface_attachment.md | 39 ++++++ docs/resources/ec2_route.md | 48 ++++++++ docs/resources/iam_managed_policy.md | 24 ++-- docs/resources/internetmonitor_monitor.md | 22 ++++ docs/resources/ivs_recording_configuration.md | 21 +++- docs/resources/kendra_data_source.md | 9 ++ docs/resources/kms_key.md | 6 +- .../lambda_layer_version_permission.md | 38 ++++++ docs/resources/mediatailor_channel.md | 100 ++++++++++++++++ docs/resources/mediatailor_channel_policy.md | 33 ++++++ docs/resources/mediatailor_live_source.md | 57 +++++++++ docs/resources/mediatailor_vod_source.md | 57 +++++++++ docs/resources/neptune_db_cluster.md | 11 +- docs/resources/omics_run_group.md | 1 + docs/resources/omics_workflow.md | 1 + docs/resources/sagemaker_feature_group.md | 2 + docs/resources/sqs_queue_inline_policy.md | 33 ++++++ docs/resources/transfer_connector.md | 17 ++- .../awscc_cloudwatch_alarm/import.sh | 1 + .../awscc_config_config_rule/import.sh | 1 + .../import.sh | 1 + .../import.sh | 1 + .../awscc_dms_replication_config/import.sh | 1 + .../import.sh | 1 + examples/resources/awscc_ec2_route/import.sh | 1 + .../import.sh | 1 + .../awscc_mediatailor_channel/import.sh | 1 + .../import.sh | 1 + .../awscc_mediatailor_live_source/import.sh | 1 + .../awscc_mediatailor_vod_source/import.sh | 1 + .../awscc_sqs_queue_inline_policy/import.sh | 1 + 70 files changed, 1813 insertions(+), 55 deletions(-) create mode 100644 docs/data-sources/cloudwatch_alarm.md create mode 100644 docs/data-sources/cloudwatch_alarms.md create mode 100644 docs/data-sources/config_config_rule.md create mode 100644 docs/data-sources/config_config_rules.md create mode 100644 docs/data-sources/connect_traffic_distribution_group.md create mode 100644 docs/data-sources/datasync_location_azure_blob.md create mode 100644 docs/data-sources/datasync_location_azure_blobs.md create mode 100644 docs/data-sources/dms_replication_config.md create mode 100644 docs/data-sources/dms_replication_configs.md create mode 100644 docs/data-sources/ec2_network_interface_attachment.md create mode 100644 docs/data-sources/ec2_network_interface_attachments.md create mode 100644 docs/data-sources/ec2_route.md create mode 100644 docs/data-sources/lambda_layer_version_permission.md create mode 100644 docs/data-sources/mediatailor_channel.md create mode 100644 docs/data-sources/mediatailor_channel_policy.md create mode 100644 docs/data-sources/mediatailor_channels.md create mode 100644 docs/data-sources/mediatailor_live_source.md create mode 100644 docs/data-sources/mediatailor_vod_source.md create mode 100644 docs/data-sources/pipes_pipes.md create mode 100644 docs/data-sources/sqs_queue_inline_policy.md create mode 100644 docs/resources/cloudwatch_alarm.md create mode 100644 docs/resources/config_config_rule.md create mode 100644 docs/resources/connect_traffic_distribution_group.md create mode 100644 docs/resources/datasync_location_azure_blob.md create mode 100644 docs/resources/dms_replication_config.md create mode 100644 docs/resources/ec2_network_interface_attachment.md create mode 100644 docs/resources/ec2_route.md create mode 100644 docs/resources/lambda_layer_version_permission.md create mode 100644 docs/resources/mediatailor_channel.md create mode 100644 docs/resources/mediatailor_channel_policy.md create mode 100644 docs/resources/mediatailor_live_source.md create mode 100644 docs/resources/mediatailor_vod_source.md create mode 100644 docs/resources/sqs_queue_inline_policy.md create mode 100644 examples/resources/awscc_cloudwatch_alarm/import.sh create mode 100644 examples/resources/awscc_config_config_rule/import.sh create mode 100644 examples/resources/awscc_connect_traffic_distribution_group/import.sh create mode 100644 examples/resources/awscc_datasync_location_azure_blob/import.sh create mode 100644 examples/resources/awscc_dms_replication_config/import.sh create mode 100644 examples/resources/awscc_ec2_network_interface_attachment/import.sh create mode 100644 examples/resources/awscc_ec2_route/import.sh create mode 100644 examples/resources/awscc_lambda_layer_version_permission/import.sh create mode 100644 examples/resources/awscc_mediatailor_channel/import.sh create mode 100644 examples/resources/awscc_mediatailor_channel_policy/import.sh create mode 100644 examples/resources/awscc_mediatailor_live_source/import.sh create mode 100644 examples/resources/awscc_mediatailor_vod_source/import.sh create mode 100644 examples/resources/awscc_sqs_queue_inline_policy/import.sh diff --git a/docs/data-sources/billingconductor_billing_group.md b/docs/data-sources/billingconductor_billing_group.md index 538ad3fded..6ac8908da2 100644 --- a/docs/data-sources/billingconductor_billing_group.md +++ b/docs/data-sources/billingconductor_billing_group.md @@ -39,6 +39,7 @@ Data Source schema for AWS::BillingConductor::BillingGroup Read-Only: +- `auto_associate` (Boolean) - `linked_account_ids` (Set of String) diff --git a/docs/data-sources/cloudwatch_alarm.md b/docs/data-sources/cloudwatch_alarm.md new file mode 100644 index 0000000000..0abc762f6d --- /dev/null +++ b/docs/data-sources/cloudwatch_alarm.md @@ -0,0 +1,94 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cloudwatch_alarm Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::CloudWatch::Alarm +--- + +# awscc_cloudwatch_alarm (Data Source) + +Data Source schema for AWS::CloudWatch::Alarm + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `actions_enabled` (Boolean) Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE. +- `alarm_actions` (List of String) The list of actions to execute when this alarm transitions into an ALARM state from any other state. +- `alarm_description` (String) The description of the alarm. +- `alarm_name` (String) The name of the alarm. +- `arn` (String) Amazon Resource Name is a unique name for each resource. +- `comparison_operator` (String) The arithmetic operation to use when comparing the specified statistic and threshold. +- `datapoints_to_alarm` (Number) The number of datapoints that must be breaching to trigger the alarm. +- `dimensions` (Attributes List) The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics. (see [below for nested schema](#nestedatt--dimensions)) +- `evaluate_low_sample_count_percentile` (String) Used only for alarms based on percentiles. +- `evaluation_periods` (Number) The number of periods over which data is compared to the specified threshold. +- `extended_statistic` (String) The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. +- `insufficient_data_actions` (List of String) The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. +- `metric_name` (String) The name of the metric associated with the alarm. +- `metrics` (Attributes List) An array that enables you to create an alarm based on the result of a metric math expression. (see [below for nested schema](#nestedatt--metrics)) +- `namespace` (String) The namespace of the metric associated with the alarm. +- `ok_actions` (List of String) The actions to execute when this alarm transitions to the OK state from any other state. +- `period` (Number) The period in seconds, over which the statistic is applied. +- `statistic` (String) The statistic for the metric associated with the alarm, other than percentile. +- `threshold` (Number) In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm. +- `threshold_metric_id` (String) In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm. +- `treat_missing_data` (String) Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing. +- `unit` (String) The unit of the metric associated with the alarm. + + +### Nested Schema for `dimensions` + +Read-Only: + +- `name` (String) The name of the dimension. +- `value` (String) The value for the dimension. + + + +### Nested Schema for `metrics` + +Read-Only: + +- `account_id` (String) The ID of the account where the metrics are located, if this is a cross-account alarm. +- `expression` (String) The math expression to be performed on the returned data. +- `id` (String) A short name used to tie this object to the results in the response. +- `label` (String) A human-readable label for this metric or expression. +- `metric_stat` (Attributes) The metric to be returned, along with statistics, period, and units. (see [below for nested schema](#nestedatt--metrics--metric_stat)) +- `period` (Number) The period in seconds, over which the statistic is applied. +- `return_data` (Boolean) This option indicates whether to return the timestamps and raw data values of this metric. + + +### Nested Schema for `metrics.metric_stat` + +Read-Only: + +- `metric` (Attributes) The metric to return, including the metric name, namespace, and dimensions. (see [below for nested schema](#nestedatt--metrics--metric_stat--metric)) +- `period` (Number) The granularity, in seconds, of the returned data points. +- `stat` (String) The statistic to return. +- `unit` (String) The unit to use for the returned data points. + + +### Nested Schema for `metrics.metric_stat.metric` + +Read-Only: + +- `dimensions` (Attributes List) The dimensions for the metric. (see [below for nested schema](#nestedatt--metrics--metric_stat--metric--dimensions)) +- `metric_name` (String) The name of the metric. +- `namespace` (String) The namespace of the metric. + + +### Nested Schema for `metrics.metric_stat.metric.namespace` + +Read-Only: + +- `name` (String) The name of the dimension. +- `value` (String) The value for the dimension. diff --git a/docs/data-sources/cloudwatch_alarms.md b/docs/data-sources/cloudwatch_alarms.md new file mode 100644 index 0000000000..5e9849a3ba --- /dev/null +++ b/docs/data-sources/cloudwatch_alarms.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cloudwatch_alarms Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::CloudWatch::Alarm +--- + +# awscc_cloudwatch_alarms (Data Source) + +Plural Data Source schema for AWS::CloudWatch::Alarm + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/config_config_rule.md b/docs/data-sources/config_config_rule.md new file mode 100644 index 0000000000..705da4b081 --- /dev/null +++ b/docs/data-sources/config_config_rule.md @@ -0,0 +1,89 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_config_config_rule Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Config::ConfigRule +--- + +# awscc_config_config_rule (Data Source) + +Data Source schema for AWS::Config::ConfigRule + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String) ARN generated for the AWS Config rule +- `compliance` (Attributes) Compliance details of the Config rule (see [below for nested schema](#nestedatt--compliance)) +- `config_rule_id` (String) ID of the config rule +- `config_rule_name` (String) Name for the AWS Config rule +- `description` (String) Description provided for the AWS Config rule +- `evaluation_modes` (Attributes List) List of EvaluationModeConfiguration objects (see [below for nested schema](#nestedatt--evaluation_modes)) +- `input_parameters` (String) JSON string passed the Lambda function +- `maximum_execution_frequency` (String) Maximum frequency at which the rule has to be evaluated +- `scope` (Attributes) Scope to constrain which resources can trigger the AWS Config rule (see [below for nested schema](#nestedatt--scope)) +- `source` (Attributes) Source of events for the AWS Config rule (see [below for nested schema](#nestedatt--source)) + + +### Nested Schema for `compliance` + +Read-Only: + +- `type` (String) Compliance type determined by the Config rule + + + +### Nested Schema for `evaluation_modes` + +Read-Only: + +- `mode` (String) Mode of evaluation of AWS Config rule + + + +### Nested Schema for `scope` + +Read-Only: + +- `compliance_resource_id` (String) ID of the only one resource which we want to trigger the rule +- `compliance_resource_types` (List of String) Resource types of resources which we want to trigger the rule +- `tag_key` (String) Tag key applied only to resources which we want to trigger the rule +- `tag_value` (String) Tag value applied only to resources which we want to trigger the rule + + + +### Nested Schema for `source` + +Read-Only: + +- `custom_policy_details` (Attributes) Custom policy details when rule is custom owned (see [below for nested schema](#nestedatt--source--custom_policy_details)) +- `owner` (String) Owner of the config rule +- `source_details` (Attributes List) List of message types that can trigger the rule (see [below for nested schema](#nestedatt--source--source_details)) +- `source_identifier` (String) Identifier for the source of events + + +### Nested Schema for `source.custom_policy_details` + +Read-Only: + +- `enable_debug_log_delivery` (Boolean) Logging toggle for custom policy rule +- `policy_runtime` (String) Runtime system for custom policy rule +- `policy_text` (String) Policy definition containing logic for custom policy rule + + + +### Nested Schema for `source.source_details` + +Read-Only: + +- `event_source` (String) Source of event that can trigger the rule +- `maximum_execution_frequency` (String) Frequency at which the rule has to be evaluated +- `message_type` (String) Notification type that can trigger the rule diff --git a/docs/data-sources/config_config_rules.md b/docs/data-sources/config_config_rules.md new file mode 100644 index 0000000000..bbb0a41e2b --- /dev/null +++ b/docs/data-sources/config_config_rules.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_config_config_rules Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Config::ConfigRule +--- + +# awscc_config_config_rules (Data Source) + +Plural Data Source schema for AWS::Config::ConfigRule + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/connect_traffic_distribution_group.md b/docs/data-sources/connect_traffic_distribution_group.md new file mode 100644 index 0000000000..2320e813bb --- /dev/null +++ b/docs/data-sources/connect_traffic_distribution_group.md @@ -0,0 +1,38 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_traffic_distribution_group Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Connect::TrafficDistributionGroup +--- + +# awscc_connect_traffic_distribution_group (Data Source) + +Data Source schema for AWS::Connect::TrafficDistributionGroup + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `description` (String) A description for the traffic distribution group. +- `instance_arn` (String) The identifier of the Amazon Connect instance that has been replicated. +- `is_default` (Boolean) If this is the default traffic distribution group. +- `name` (String) The name for the traffic distribution group. +- `status` (String) The status of the traffic distribution group. +- `tags` (Attributes Set) One or more tags. (see [below for nested schema](#nestedatt--tags)) +- `traffic_distribution_group_arn` (String) The identifier of the traffic distribution group. + + +### 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 1 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/datasync_location_azure_blob.md b/docs/data-sources/datasync_location_azure_blob.md new file mode 100644 index 0000000000..fbad23f94a --- /dev/null +++ b/docs/data-sources/datasync_location_azure_blob.md @@ -0,0 +1,49 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_datasync_location_azure_blob Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::DataSync::LocationAzureBlob +--- + +# awscc_datasync_location_azure_blob (Data Source) + +Data Source schema for AWS::DataSync::LocationAzureBlob + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `agent_arns` (List of String) The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location. +- `azure_access_tier` (String) Specifies an access tier for the objects you're transferring into your Azure Blob Storage container. +- `azure_blob_authentication_type` (String) The specific authentication type that you want DataSync to use to access your Azure Blob Container. +- `azure_blob_container_url` (String) The URL of the Azure Blob container that was described. +- `azure_blob_sas_configuration` (Attributes) Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container. (see [below for nested schema](#nestedatt--azure_blob_sas_configuration)) +- `azure_blob_type` (String) Specifies a blob type for the objects you're transferring into your Azure Blob Storage container. +- `location_arn` (String) The Amazon Resource Name (ARN) of the Azure Blob Location that is created. +- `location_uri` (String) The URL of the Azure Blob Location that was described. +- `subdirectory` (String) The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location. +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `azure_blob_sas_configuration` + +Read-Only: + +- `azure_blob_sas_token` (String) Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container. + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key for an AWS resource tag. +- `value` (String) The value for an AWS resource tag. diff --git a/docs/data-sources/datasync_location_azure_blobs.md b/docs/data-sources/datasync_location_azure_blobs.md new file mode 100644 index 0000000000..492993029c --- /dev/null +++ b/docs/data-sources/datasync_location_azure_blobs.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_datasync_location_azure_blobs Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::DataSync::LocationAzureBlob +--- + +# awscc_datasync_location_azure_blobs (Data Source) + +Plural Data Source schema for AWS::DataSync::LocationAzureBlob + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/dms_replication_config.md b/docs/data-sources/dms_replication_config.md new file mode 100644 index 0000000000..32f64e60c7 --- /dev/null +++ b/docs/data-sources/dms_replication_config.md @@ -0,0 +1,58 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_replication_config Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::DMS::ReplicationConfig +--- + +# awscc_dms_replication_config (Data Source) + +Data Source schema for AWS::DMS::ReplicationConfig + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `compute_config` (Attributes) Configuration parameters for provisioning a AWS DMS Serverless replication (see [below for nested schema](#nestedatt--compute_config)) +- `replication_config_arn` (String) The Amazon Resource Name (ARN) of the Replication Config +- `replication_config_identifier` (String) A unique identifier of replication configuration +- `replication_settings` (Map of String) JSON settings for Servereless replications that are provisioned using this replication configuration +- `replication_type` (String) The type of AWS DMS Serverless replication to provision using this replication configuration +- `resource_identifier` (String) A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource +- `source_endpoint_arn` (String) The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration +- `supplemental_settings` (Map of String) JSON settings for specifying supplemental data +- `table_mappings` (Map of String) JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration +- `tags` (Attributes List)

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

(see [below for nested schema](#nestedatt--tags)) +- `target_endpoint_arn` (String) The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration + + +### Nested Schema for `compute_config` + +Read-Only: + +- `availability_zone` (String) +- `dns_name_servers` (String) +- `kms_key_id` (String) +- `max_capacity_units` (Number) +- `min_capacity_units` (Number) +- `multi_az` (Boolean) +- `preferred_maintenance_window` (String) +- `replication_subnet_group_id` (String) +- `vpc_security_group_ids` (List of String) + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String)

Tag key.

+- `value` (String)

Tag value.

diff --git a/docs/data-sources/dms_replication_configs.md b/docs/data-sources/dms_replication_configs.md new file mode 100644 index 0000000000..9794ac4dac --- /dev/null +++ b/docs/data-sources/dms_replication_configs.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_replication_configs Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::DMS::ReplicationConfig +--- + +# awscc_dms_replication_configs (Data Source) + +Plural Data Source schema for AWS::DMS::ReplicationConfig + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ec2_network_interface.md b/docs/data-sources/ec2_network_interface.md index 9471c298bd..e91d6256cc 100644 --- a/docs/data-sources/ec2_network_interface.md +++ b/docs/data-sources/ec2_network_interface.md @@ -22,11 +22,14 @@ Data Source schema for AWS::EC2::NetworkInterface ### Read-Only - `description` (String) A description for the network interface. -- `enable_primary_ipv_6` (Boolean) If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address. - `group_set` (List of String) A list of security group IDs associated with this network interface. - `interface_type` (String) Indicates the type of network interface. +- `ipv_4_prefix_count` (Number) The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses. +- `ipv_4_prefixes` (Attributes List) Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses. (see [below for nested schema](#nestedatt--ipv_4_prefixes)) - `ipv_6_address_count` (Number) The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property. - `ipv_6_addresses` (Attributes Set) One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property. (see [below for nested schema](#nestedatt--ipv_6_addresses)) +- `ipv_6_prefix_count` (Number) The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses. +- `ipv_6_prefixes` (Attributes List) Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses. (see [below for nested schema](#nestedatt--ipv_6_prefixes)) - `primary_private_ip_address` (String) Returns the primary private IP address of the network interface. - `private_ip_address` (String) Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property. - `private_ip_addresses` (Attributes List) Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property. (see [below for nested schema](#nestedatt--private_ip_addresses)) @@ -36,6 +39,14 @@ Data Source schema for AWS::EC2::NetworkInterface - `subnet_id` (String) The ID of the subnet to associate with the network interface. - `tags` (Attributes List) An arbitrary set of tags (key-value pairs) for this network interface. (see [below for nested schema](#nestedatt--tags)) + +### Nested Schema for `ipv_4_prefixes` + +Read-Only: + +- `ipv_4_prefix` (String) + + ### Nested Schema for `ipv_6_addresses` @@ -44,6 +55,14 @@ Read-Only: - `ipv_6_address` (String) + +### Nested Schema for `ipv_6_prefixes` + +Read-Only: + +- `ipv_6_prefix` (String) + + ### Nested Schema for `private_ip_addresses` diff --git a/docs/data-sources/ec2_network_interface_attachment.md b/docs/data-sources/ec2_network_interface_attachment.md new file mode 100644 index 0000000000..41d4f934ed --- /dev/null +++ b/docs/data-sources/ec2_network_interface_attachment.md @@ -0,0 +1,28 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_network_interface_attachment Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::NetworkInterfaceAttachment +--- + +# awscc_ec2_network_interface_attachment (Data Source) + +Data Source schema for AWS::EC2::NetworkInterfaceAttachment + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `attachment_id` (String) The ID of the network interface attachment. +- `delete_on_termination` (Boolean) Whether to delete the network interface when the instance terminates. By default, this value is set to true. +- `device_index` (String) The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0. +- `instance_id` (String) The ID of the instance to which you will attach the ENI. +- `network_interface_id` (String) The ID of the ENI that you want to attach. diff --git a/docs/data-sources/ec2_network_interface_attachments.md b/docs/data-sources/ec2_network_interface_attachments.md new file mode 100644 index 0000000000..8f335955f8 --- /dev/null +++ b/docs/data-sources/ec2_network_interface_attachments.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_network_interface_attachments Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::EC2::NetworkInterfaceAttachment +--- + +# awscc_ec2_network_interface_attachments (Data Source) + +Plural Data Source schema for AWS::EC2::NetworkInterfaceAttachment + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ec2_route.md b/docs/data-sources/ec2_route.md new file mode 100644 index 0000000000..da9c4200bf --- /dev/null +++ b/docs/data-sources/ec2_route.md @@ -0,0 +1,37 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_route Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::Route +--- + +# awscc_ec2_route (Data Source) + +Data Source schema for AWS::EC2::Route + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `carrier_gateway_id` (String) The ID of the carrier gateway. +- `cidr_block` (String) The primary identifier of the resource generated by the service. +- `destination_cidr_block` (String) The IPv4 CIDR block used for the destination match. +- `destination_ipv_6_cidr_block` (String) The IPv6 CIDR block used for the destination match. +- `egress_only_internet_gateway_id` (String) The ID of the egress-only internet gateway. +- `gateway_id` (String) The ID of an internet gateway or virtual private gateway attached to your VPC. +- `instance_id` (String) The ID of a NAT instance in your VPC. +- `local_gateway_id` (String) The ID of the local gateway. +- `nat_gateway_id` (String) The ID of a NAT gateway. +- `network_interface_id` (String) The ID of the network interface. +- `route_table_id` (String) The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to. +- `transit_gateway_id` (String) The ID of a transit gateway. +- `vpc_endpoint_id` (String) The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only. +- `vpc_peering_connection_id` (String) The ID of a VPC peering connection. diff --git a/docs/data-sources/iam_managed_policy.md b/docs/data-sources/iam_managed_policy.md index 69365ea891..e0b6f7e438 100644 --- a/docs/data-sources/iam_managed_policy.md +++ b/docs/data-sources/iam_managed_policy.md @@ -21,18 +21,10 @@ Data Source schema for AWS::IAM::ManagedPolicy ### Read-Only -- `attachment_count` (Number) The number of entities (users, groups, and roles) that the policy is attached to. -- `create_date` (String) The date and time, in ISO 8601 date-time format, when the policy was created. -- `default_version_id` (String) The identifier for the version of the policy that is set as the default version. -- `description` (String) A friendly description of the policy. -- `groups` (Set of String) The name (friendly name, not ARN) of the group to attach the policy to. -- `is_attachable` (Boolean) Specifies whether the policy can be attached to an IAM user, group, or role. -- `managed_policy_name` (String) The friendly name of the policy. -- `path` (String) The path for the policy. -- `permissions_boundary_usage_count` (Number) The number of entities (users and roles) for which the policy is used to set the permissions boundary. -- `policy_arn` (String) Amazon Resource Name (ARN) of the managed policy -- `policy_document` (String) The JSON policy document that you want to use as the content for the new policy. -- `policy_id` (String) The stable and unique string identifying the policy. -- `roles` (Set of String) The name (friendly name, not ARN) of the role to attach the policy to. -- `update_date` (String) The date and time, in ISO 8601 date-time format, when the policy was last updated. -- `users` (Set of String) The name (friendly name, not ARN) of the IAM user to attach the policy to. +- `description` (String) +- `groups` (List of String) +- `managed_policy_name` (String) +- `path` (String) +- `policy_document` (Map of String) +- `roles` (List of String) +- `users` (List of String) diff --git a/docs/data-sources/internetmonitor_monitor.md b/docs/data-sources/internetmonitor_monitor.md index cc94fa8332..3fd045a9ff 100644 --- a/docs/data-sources/internetmonitor_monitor.md +++ b/docs/data-sources/internetmonitor_monitor.md @@ -42,9 +42,31 @@ Data Source schema for AWS::InternetMonitor::Monitor Read-Only: +- `availability_local_health_events_config` (Attributes) (see [below for nested schema](#nestedatt--health_events_config--availability_local_health_events_config)) - `availability_score_threshold` (Number) +- `performance_local_health_events_config` (Attributes) (see [below for nested schema](#nestedatt--health_events_config--performance_local_health_events_config)) - `performance_score_threshold` (Number) + +### Nested Schema for `health_events_config.availability_local_health_events_config` + +Read-Only: + +- `health_score_threshold` (Number) +- `min_traffic_impact` (Number) +- `status` (String) + + + +### Nested Schema for `health_events_config.performance_local_health_events_config` + +Read-Only: + +- `health_score_threshold` (Number) +- `min_traffic_impact` (Number) +- `status` (String) + + ### Nested Schema for `internet_measurements_log_delivery` diff --git a/docs/data-sources/ivs_recording_configuration.md b/docs/data-sources/ivs_recording_configuration.md index ff0653b331..eef0486922 100644 --- a/docs/data-sources/ivs_recording_configuration.md +++ b/docs/data-sources/ivs_recording_configuration.md @@ -25,6 +25,7 @@ Data Source schema for AWS::IVS::RecordingConfiguration - `destination_configuration` (Attributes) Recording Destination Configuration. (see [below for nested schema](#nestedatt--destination_configuration)) - `name` (String) Recording Configuration Name. - `recording_reconnect_window_seconds` (Number) Recording Reconnect Window Seconds. (0 means disabled) +- `rendition_configuration` (Attributes) Rendition Configuration describes which renditions should be recorded for a stream. (see [below for nested schema](#nestedatt--rendition_configuration)) - `state` (String) Recording Configuration State. - `tags` (Attributes Set) A list of key-value pairs that contain metadata for the asset model. (see [below for nested schema](#nestedatt--tags)) - `thumbnail_configuration` (Attributes) Recording Thumbnail Configuration. (see [below for nested schema](#nestedatt--thumbnail_configuration)) @@ -45,6 +46,15 @@ Read-Only: + +### Nested Schema for `rendition_configuration` + +Read-Only: + +- `rendition_selection` (String) Resolution Selection indicates which set of renditions are recorded for a stream. +- `renditions` (Set of String) Renditions indicates which renditions are recorded for a stream. + + ### Nested Schema for `tags` @@ -60,4 +70,6 @@ Read-Only: Read-Only: - `recording_mode` (String) Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled. -- `target_interval_seconds` (Number) Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL. +- `resolution` (String) Resolution indicates the desired resolution of recorded thumbnails. +- `storage` (Set of String) Storage indicates the format in which thumbnails are recorded. +- `target_interval_seconds` (Number) Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL. diff --git a/docs/data-sources/kendra_data_source.md b/docs/data-sources/kendra_data_source.md index f2bdb99f9d..7910b6c7af 100644 --- a/docs/data-sources/kendra_data_source.md +++ b/docs/data-sources/kendra_data_source.md @@ -170,6 +170,7 @@ Read-Only: - `salesforce_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--salesforce_configuration)) - `service_now_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--service_now_configuration)) - `share_point_configuration` (Attributes) SharePoint configuration (see [below for nested schema](#nestedatt--data_source_configuration--share_point_configuration)) +- `template_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--template_configuration)) - `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--web_crawler_configuration)) - `work_docs_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--work_docs_configuration)) @@ -678,6 +679,14 @@ Read-Only: + +### Nested Schema for `data_source_configuration.template_configuration` + +Read-Only: + +- `template` (String) + + ### Nested Schema for `data_source_configuration.web_crawler_configuration` diff --git a/docs/data-sources/kms_key.md b/docs/data-sources/kms_key.md index 53702096cb..f4fae9b02f 100644 --- a/docs/data-sources/kms_key.md +++ b/docs/data-sources/kms_key.md @@ -22,6 +22,7 @@ Data Source schema for AWS::KMS::Key ### Read-Only - `arn` (String) +- `bypass_policy_lockout_safety_check` (Boolean) Skips ("bypasses") the key policy lockout safety check. The default value is false. - `description` (String) A description of the AWS KMS key. Use a description that helps you to distinguish this AWS KMS key from others in the account, such as its intended use. - `enable_key_rotation` (Boolean) Enables automatic rotation of the key material for the specified AWS KMS key. By default, automation key rotation is not enabled. - `enabled` (Boolean) Specifies whether the AWS KMS key is enabled. Disabled AWS KMS keys cannot be used in cryptographic operations. diff --git a/docs/data-sources/lambda_layer_version_permission.md b/docs/data-sources/lambda_layer_version_permission.md new file mode 100644 index 0000000000..f7626c3223 --- /dev/null +++ b/docs/data-sources/lambda_layer_version_permission.md @@ -0,0 +1,27 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_lambda_layer_version_permission Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Lambda::LayerVersionPermission +--- + +# awscc_lambda_layer_version_permission (Data Source) + +Data Source schema for AWS::Lambda::LayerVersionPermission + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `action` (String) The API action that grants access to the layer. +- `layer_version_arn` (String) The name or Amazon Resource Name (ARN) of the layer. +- `organization_id` (String) With the principal set to *, grant permission to all accounts in the specified organization. +- `principal` (String) An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified). diff --git a/docs/data-sources/mediatailor_channel.md b/docs/data-sources/mediatailor_channel.md new file mode 100644 index 0000000000..830c65e10f --- /dev/null +++ b/docs/data-sources/mediatailor_channel.md @@ -0,0 +1,86 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_channel Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::MediaTailor::Channel +--- + +# awscc_mediatailor_channel (Data Source) + +Data Source schema for AWS::MediaTailor::Channel + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String)

The ARN of the channel.

+- `channel_name` (String) +- `filler_slate` (Attributes)

Slate VOD source configuration.

(see [below for nested schema](#nestedatt--filler_slate)) +- `log_configuration` (Attributes)

The log configuration for the channel.

(see [below for nested schema](#nestedatt--log_configuration)) +- `outputs` (Attributes List)

The channel's output properties.

(see [below for nested schema](#nestedatt--outputs)) +- `playback_mode` (String) +- `tags` (Attributes Set) The tags to assign to the channel. (see [below for nested schema](#nestedatt--tags)) +- `tier` (String) + + +### Nested Schema for `filler_slate` + +Read-Only: + +- `source_location_name` (String)

The name of the source location where the slate VOD source is stored.

+- `vod_source_name` (String)

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

+ + + +### Nested Schema for `log_configuration` + +Read-Only: + +- `log_types` (List of String)

The log types.

+ + + +### Nested Schema for `outputs` + +Read-Only: + +- `dash_playlist_settings` (Attributes)

Dash manifest configuration parameters.

(see [below for nested schema](#nestedatt--outputs--dash_playlist_settings)) +- `hls_playlist_settings` (Attributes)

HLS playlist configuration parameters.

(see [below for nested schema](#nestedatt--outputs--hls_playlist_settings)) +- `manifest_name` (String)

The name of the manifest for the channel. The name appears in the PlaybackUrl.

+- `source_group` (String)

A string used to match which HttpPackageConfiguration is used for each VodSource.

+ + +### Nested Schema for `outputs.dash_playlist_settings` + +Read-Only: + +- `manifest_window_seconds` (Number)

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

+- `min_buffer_time_seconds` (Number)

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

+- `min_update_period_seconds` (Number)

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

+- `suggested_presentation_delay_seconds` (Number)

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

+ + + +### Nested Schema for `outputs.hls_playlist_settings` + +Read-Only: + +- `manifest_window_seconds` (Number)

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

+ + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/mediatailor_channel_policy.md b/docs/data-sources/mediatailor_channel_policy.md new file mode 100644 index 0000000000..1aad7e58aa --- /dev/null +++ b/docs/data-sources/mediatailor_channel_policy.md @@ -0,0 +1,25 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_channel_policy Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::MediaTailor::ChannelPolicy +--- + +# awscc_mediatailor_channel_policy (Data Source) + +Data Source schema for AWS::MediaTailor::ChannelPolicy + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `channel_name` (String) +- `policy` (String)

The IAM policy for the channel. IAM policies are used to control access to your channel.

diff --git a/docs/data-sources/mediatailor_channels.md b/docs/data-sources/mediatailor_channels.md new file mode 100644 index 0000000000..d046fdab04 --- /dev/null +++ b/docs/data-sources/mediatailor_channels.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_channels Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::MediaTailor::Channel +--- + +# awscc_mediatailor_channels (Data Source) + +Plural Data Source schema for AWS::MediaTailor::Channel + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/mediatailor_live_source.md b/docs/data-sources/mediatailor_live_source.md new file mode 100644 index 0000000000..d0b7ddd1b5 --- /dev/null +++ b/docs/data-sources/mediatailor_live_source.md @@ -0,0 +1,46 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_live_source Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::MediaTailor::LiveSource +--- + +# awscc_mediatailor_live_source (Data Source) + +Data Source schema for AWS::MediaTailor::LiveSource + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String)

The ARN of the live source.

+- `http_package_configurations` (Attributes List)

A list of HTTP package configuration parameters for this live source.

(see [below for nested schema](#nestedatt--http_package_configurations)) +- `live_source_name` (String) +- `source_location_name` (String) +- `tags` (Attributes Set) The tags to assign to the live source. (see [below for nested schema](#nestedatt--tags)) + + +### Nested Schema for `http_package_configurations` + +Read-Only: + +- `path` (String)

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

+- `source_group` (String)

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

+- `type` (String) + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/mediatailor_vod_source.md b/docs/data-sources/mediatailor_vod_source.md new file mode 100644 index 0000000000..6ef75c6de8 --- /dev/null +++ b/docs/data-sources/mediatailor_vod_source.md @@ -0,0 +1,46 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_vod_source Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::MediaTailor::VodSource +--- + +# awscc_mediatailor_vod_source (Data Source) + +Data Source schema for AWS::MediaTailor::VodSource + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `arn` (String)

The ARN of the VOD source.

+- `http_package_configurations` (Attributes List)

A list of HTTP package configuration parameters for this VOD source.

(see [below for nested schema](#nestedatt--http_package_configurations)) +- `source_location_name` (String) +- `tags` (Attributes Set) The tags to assign to the VOD source. (see [below for nested schema](#nestedatt--tags)) +- `vod_source_name` (String) + + +### Nested Schema for `http_package_configurations` + +Read-Only: + +- `path` (String)

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

+- `source_group` (String)

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

+- `type` (String) + + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) +- `value` (String) diff --git a/docs/data-sources/neptune_db_cluster.md b/docs/data-sources/neptune_db_cluster.md index a700663fcb..6007409ac7 100644 --- a/docs/data-sources/neptune_db_cluster.md +++ b/docs/data-sources/neptune_db_cluster.md @@ -29,17 +29,22 @@ Data Source schema for AWS::Neptune::DBCluster - `db_cluster_identifier` (String) The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string. - `db_cluster_parameter_group_name` (String) Provides the name of the DB cluster parameter group. - `db_instance_parameter_group_name` (String) The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request. +- `db_port` (Number) The port number on which the DB instances in the DB cluster accept connections. + +If not specified, the default port used is `8182`. + +Note: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities. - `db_subnet_group_name` (String) Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group. - `deletion_protection` (Boolean) Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. - `enable_cloudwatch_logs_exports` (List of String) Specifies a list of log types that are enabled for export to CloudWatch Logs. -- `endpoint` (String) The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com +- `endpoint` (String) The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com` - `engine_version` (String) Indicates the database engine version. - `iam_auth_enabled` (Boolean) True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false. - `kms_key_id` (String) If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster. -- `port` (String) Specifies the port that the database engine is listening on. +- `port` (String) The port number on which the DB cluster accepts connections. For example: `8182`. - `preferred_backup_window` (String) Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. - `preferred_maintenance_window` (String) Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). -- `read_endpoint` (String) The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com +- `read_endpoint` (String) The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com` - `restore_to_time` (String) Creates a new DB cluster from a DB snapshot or DB cluster snapshot. If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group. diff --git a/docs/data-sources/omics_run_group.md b/docs/data-sources/omics_run_group.md index c80973918f..0e94bcc20f 100644 --- a/docs/data-sources/omics_run_group.md +++ b/docs/data-sources/omics_run_group.md @@ -25,6 +25,7 @@ Data Source schema for AWS::Omics::RunGroup - `creation_time` (String) - `max_cpus` (Number) - `max_duration` (Number) +- `max_gpus` (Number) - `max_runs` (Number) - `name` (String) - `tags` (Map of String) A map of resource tags diff --git a/docs/data-sources/omics_workflow.md b/docs/data-sources/omics_workflow.md index b665614b02..379e9db229 100644 --- a/docs/data-sources/omics_workflow.md +++ b/docs/data-sources/omics_workflow.md @@ -21,6 +21,7 @@ Data Source schema for AWS::Omics::Workflow ### Read-Only +- `accelerators` (String) - `arn` (String) - `creation_time` (String) - `definition_uri` (String) diff --git a/docs/data-sources/pipes_pipes.md b/docs/data-sources/pipes_pipes.md new file mode 100644 index 0000000000..10b47f3858 --- /dev/null +++ b/docs/data-sources/pipes_pipes.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_pipes_pipes Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::Pipes::Pipe +--- + +# awscc_pipes_pipes (Data Source) + +Plural Data Source schema for AWS::Pipes::Pipe + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/sagemaker_feature_group.md b/docs/data-sources/sagemaker_feature_group.md index b7fd515ddc..78895ae558 100644 --- a/docs/data-sources/sagemaker_feature_group.md +++ b/docs/data-sources/sagemaker_feature_group.md @@ -21,10 +21,12 @@ Data Source schema for AWS::SageMaker::FeatureGroup ### Read-Only +- `creation_time` (String) A timestamp of FeatureGroup creation time. - `description` (String) Description about the FeatureGroup. - `event_time_feature_name` (String) The Event Time Feature Name. - `feature_definitions` (Attributes List) An Array of Feature Definition (see [below for nested schema](#nestedatt--feature_definitions)) - `feature_group_name` (String) The Name of the FeatureGroup. +- `feature_group_status` (String) The status of the feature group. - `offline_store_config` (Attributes) (see [below for nested schema](#nestedatt--offline_store_config)) - `online_store_config` (Attributes) (see [below for nested schema](#nestedatt--online_store_config)) - `record_identifier_feature_name` (String) The Record Identifier Feature Name. diff --git a/docs/data-sources/sqs_queue_inline_policy.md b/docs/data-sources/sqs_queue_inline_policy.md new file mode 100644 index 0000000000..09fb1d8195 --- /dev/null +++ b/docs/data-sources/sqs_queue_inline_policy.md @@ -0,0 +1,25 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_sqs_queue_inline_policy Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::SQS::QueueInlinePolicy +--- + +# awscc_sqs_queue_inline_policy (Data Source) + +Data Source schema for AWS::SQS::QueueInlinePolicy + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `policy_document` (Map of String) A policy document that contains permissions to add to the specified SQS queue +- `queue` (String) The URL of the SQS queue. diff --git a/docs/data-sources/transfer_connector.md b/docs/data-sources/transfer_connector.md index 51f0a6176a..179b378f0c 100644 --- a/docs/data-sources/transfer_connector.md +++ b/docs/data-sources/transfer_connector.md @@ -22,11 +22,12 @@ Data Source schema for AWS::Transfer::Connector ### Read-Only - `access_role` (String) Specifies the access role for the connector. -- `arn` (String) Specifies the unique Amazon Resource Name (ARN) for the workflow. +- `arn` (String) Specifies the unique Amazon Resource Name (ARN) for the connector. - `as_2_config` (Attributes) Configuration for an AS2 connector. (see [below for nested schema](#nestedatt--as_2_config)) - `connector_id` (String) A unique identifier for the connector. - `logging_role` (String) Specifies the logging role for the connector. -- `tags` (Attributes Set) Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose. (see [below for nested schema](#nestedatt--tags)) +- `sftp_config` (Attributes) Configuration for an SFTP connector. (see [below for nested schema](#nestedatt--sftp_config)) +- `tags` (Attributes Set) Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose. (see [below for nested schema](#nestedatt--tags)) - `url` (String) URL for Connector @@ -34,6 +35,7 @@ Data Source schema for AWS::Transfer::Connector Read-Only: +- `basic_auth_secret_id` (String) ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector - `compression` (String) Compression setting for this AS2 connector configuration. - `encryption_algorithm` (String) Encryption algorithm for this AS2 connector configuration. - `local_profile_id` (String) A unique identifier for the local profile. @@ -44,6 +46,15 @@ Read-Only: - `signing_algorithm` (String) Signing algorithm for this AS2 connector configuration. + +### Nested Schema for `sftp_config` + +Read-Only: + +- `trusted_host_keys` (List of String) List of public host keys, for the external server to which you are connecting. +- `user_secret_id` (String) ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords. + + ### Nested Schema for `tags` diff --git a/docs/resources/billingconductor_billing_group.md b/docs/resources/billingconductor_billing_group.md index 064dc03ec3..c92997d0e4 100644 --- a/docs/resources/billingconductor_billing_group.md +++ b/docs/resources/billingconductor_billing_group.md @@ -44,6 +44,10 @@ Required: - `linked_account_ids` (Set of String) +Optional: + +- `auto_associate` (Boolean) + ### Nested Schema for `computation_preference` diff --git a/docs/resources/cloudwatch_alarm.md b/docs/resources/cloudwatch_alarm.md new file mode 100644 index 0000000000..4dc5737f9e --- /dev/null +++ b/docs/resources/cloudwatch_alarm.md @@ -0,0 +1,111 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cloudwatch_alarm Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::CloudWatch::Alarm +--- + +# awscc_cloudwatch_alarm (Resource) + +Resource Type definition for AWS::CloudWatch::Alarm + + + + +## Schema + +### Required + +- `comparison_operator` (String) The arithmetic operation to use when comparing the specified statistic and threshold. +- `evaluation_periods` (Number) The number of periods over which data is compared to the specified threshold. + +### Optional + +- `actions_enabled` (Boolean) Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE. +- `alarm_actions` (List of String) The list of actions to execute when this alarm transitions into an ALARM state from any other state. +- `alarm_description` (String) The description of the alarm. +- `alarm_name` (String) The name of the alarm. +- `datapoints_to_alarm` (Number) The number of datapoints that must be breaching to trigger the alarm. +- `dimensions` (Attributes List) The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics. (see [below for nested schema](#nestedatt--dimensions)) +- `evaluate_low_sample_count_percentile` (String) Used only for alarms based on percentiles. +- `extended_statistic` (String) The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. +- `insufficient_data_actions` (List of String) The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. +- `metric_name` (String) The name of the metric associated with the alarm. +- `metrics` (Attributes List) An array that enables you to create an alarm based on the result of a metric math expression. (see [below for nested schema](#nestedatt--metrics)) +- `namespace` (String) The namespace of the metric associated with the alarm. +- `ok_actions` (List of String) The actions to execute when this alarm transitions to the OK state from any other state. +- `period` (Number) The period in seconds, over which the statistic is applied. +- `statistic` (String) The statistic for the metric associated with the alarm, other than percentile. +- `threshold` (Number) In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm. +- `threshold_metric_id` (String) In an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND function used as the threshold for the alarm. +- `treat_missing_data` (String) Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing. +- `unit` (String) The unit of the metric associated with the alarm. + +### Read-Only + +- `arn` (String) Amazon Resource Name is a unique name for each resource. +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `dimensions` + +Required: + +- `name` (String) The name of the dimension. +- `value` (String) The value for the dimension. + + + +### Nested Schema for `metrics` + +Required: + +- `id` (String) A short name used to tie this object to the results in the response. + +Optional: + +- `account_id` (String) The ID of the account where the metrics are located, if this is a cross-account alarm. +- `expression` (String) The math expression to be performed on the returned data. +- `label` (String) A human-readable label for this metric or expression. +- `metric_stat` (Attributes) The metric to be returned, along with statistics, period, and units. (see [below for nested schema](#nestedatt--metrics--metric_stat)) +- `period` (Number) The period in seconds, over which the statistic is applied. +- `return_data` (Boolean) This option indicates whether to return the timestamps and raw data values of this metric. + + +### Nested Schema for `metrics.metric_stat` + +Required: + +- `metric` (Attributes) The metric to return, including the metric name, namespace, and dimensions. (see [below for nested schema](#nestedatt--metrics--metric_stat--metric)) +- `period` (Number) The granularity, in seconds, of the returned data points. +- `stat` (String) The statistic to return. + +Optional: + +- `unit` (String) The unit to use for the returned data points. + + +### Nested Schema for `metrics.metric_stat.metric` + +Optional: + +- `dimensions` (Attributes List) The dimensions for the metric. (see [below for nested schema](#nestedatt--metrics--metric_stat--metric--dimensions)) +- `metric_name` (String) The name of the metric. +- `namespace` (String) The namespace of the metric. + + +### Nested Schema for `metrics.metric_stat.metric.namespace` + +Required: + +- `name` (String) The name of the dimension. +- `value` (String) The value for the dimension. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_cloudwatch_alarm.example +``` diff --git a/docs/resources/config_config_rule.md b/docs/resources/config_config_rule.md new file mode 100644 index 0000000000..c98919cf09 --- /dev/null +++ b/docs/resources/config_config_rule.md @@ -0,0 +1,107 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_config_config_rule Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Schema for AWS Config ConfigRule +--- + +# awscc_config_config_rule (Resource) + +Schema for AWS Config ConfigRule + + + + +## Schema + +### Required + +- `source` (Attributes) Source of events for the AWS Config rule (see [below for nested schema](#nestedatt--source)) + +### Optional + +- `compliance` (Attributes) Compliance details of the Config rule (see [below for nested schema](#nestedatt--compliance)) +- `config_rule_name` (String) Name for the AWS Config rule +- `description` (String) Description provided for the AWS Config rule +- `evaluation_modes` (Attributes List) List of EvaluationModeConfiguration objects (see [below for nested schema](#nestedatt--evaluation_modes)) +- `input_parameters` (String) JSON string passed the Lambda function +- `maximum_execution_frequency` (String) Maximum frequency at which the rule has to be evaluated +- `scope` (Attributes) Scope to constrain which resources can trigger the AWS Config rule (see [below for nested schema](#nestedatt--scope)) + +### Read-Only + +- `arn` (String) ARN generated for the AWS Config rule +- `config_rule_id` (String) ID of the config rule +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `source` + +Required: + +- `owner` (String) Owner of the config rule + +Optional: + +- `custom_policy_details` (Attributes) Custom policy details when rule is custom owned (see [below for nested schema](#nestedatt--source--custom_policy_details)) +- `source_details` (Attributes List) List of message types that can trigger the rule (see [below for nested schema](#nestedatt--source--source_details)) +- `source_identifier` (String) Identifier for the source of events + + +### Nested Schema for `source.custom_policy_details` + +Optional: + +- `enable_debug_log_delivery` (Boolean) Logging toggle for custom policy rule +- `policy_runtime` (String) Runtime system for custom policy rule +- `policy_text` (String) Policy definition containing logic for custom policy rule + + + +### Nested Schema for `source.source_details` + +Required: + +- `event_source` (String) Source of event that can trigger the rule +- `message_type` (String) Notification type that can trigger the rule + +Optional: + +- `maximum_execution_frequency` (String) Frequency at which the rule has to be evaluated + + + + +### Nested Schema for `compliance` + +Read-Only: + +- `type` (String) Compliance type determined by the Config rule + + + +### Nested Schema for `evaluation_modes` + +Optional: + +- `mode` (String) Mode of evaluation of AWS Config rule + + + +### Nested Schema for `scope` + +Optional: + +- `compliance_resource_id` (String) ID of the only one resource which we want to trigger the rule +- `compliance_resource_types` (List of String) Resource types of resources which we want to trigger the rule +- `tag_key` (String) Tag key applied only to resources which we want to trigger the rule +- `tag_value` (String) Tag value applied only to resources which we want to trigger the rule + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_config_config_rule.example +``` diff --git a/docs/resources/connect_traffic_distribution_group.md b/docs/resources/connect_traffic_distribution_group.md new file mode 100644 index 0000000000..a5d20cde8d --- /dev/null +++ b/docs/resources/connect_traffic_distribution_group.md @@ -0,0 +1,49 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_connect_traffic_distribution_group Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Connect::TrafficDistributionGroup +--- + +# awscc_connect_traffic_distribution_group (Resource) + +Resource Type definition for AWS::Connect::TrafficDistributionGroup + + + + +## Schema + +### Required + +- `instance_arn` (String) The identifier of the Amazon Connect instance that has been replicated. +- `name` (String) The name for the traffic distribution group. + +### Optional + +- `description` (String) A description for the traffic distribution group. +- `tags` (Attributes Set) One or more tags. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `is_default` (Boolean) If this is the default traffic distribution group. +- `status` (String) The status of the traffic distribution group. +- `traffic_distribution_group_arn` (String) The identifier of the traffic distribution group. + + +### Nested Schema for `tags` + +Required: + +- `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 1 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_connect_traffic_distribution_group.example +``` diff --git a/docs/resources/datasync_location_azure_blob.md b/docs/resources/datasync_location_azure_blob.md new file mode 100644 index 0000000000..82011b275e --- /dev/null +++ b/docs/resources/datasync_location_azure_blob.md @@ -0,0 +1,60 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_datasync_location_azure_blob Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource schema for AWS::DataSync::LocationAzureBlob. +--- + +# awscc_datasync_location_azure_blob (Resource) + +Resource schema for AWS::DataSync::LocationAzureBlob. + + + + +## Schema + +### Required + +- `agent_arns` (List of String) The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location. + +### Optional + +- `azure_access_tier` (String) Specifies an access tier for the objects you're transferring into your Azure Blob Storage container. +- `azure_blob_authentication_type` (String) The specific authentication type that you want DataSync to use to access your Azure Blob Container. +- `azure_blob_container_url` (String) The URL of the Azure Blob container that was described. +- `azure_blob_sas_configuration` (Attributes) Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container. (see [below for nested schema](#nestedatt--azure_blob_sas_configuration)) +- `azure_blob_type` (String) Specifies a blob type for the objects you're transferring into your Azure Blob Storage container. +- `subdirectory` (String) The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location. +- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `location_arn` (String) The Amazon Resource Name (ARN) of the Azure Blob Location that is created. +- `location_uri` (String) The URL of the Azure Blob Location that was described. + + +### Nested Schema for `azure_blob_sas_configuration` + +Required: + +- `azure_blob_sas_token` (String) Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container. + + + +### Nested Schema for `tags` + +Required: + +- `key` (String) The key for an AWS resource tag. +- `value` (String) The value for an AWS resource tag. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_datasync_location_azure_blob.example +``` diff --git a/docs/resources/dms_replication_config.md b/docs/resources/dms_replication_config.md new file mode 100644 index 0000000000..981d8047d5 --- /dev/null +++ b/docs/resources/dms_replication_config.md @@ -0,0 +1,69 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_dms_replication_config Resource - terraform-provider-awscc" +subcategory: "" +description: |- + A replication configuration that you later provide to configure and start a AWS DMS Serverless replication +--- + +# awscc_dms_replication_config (Resource) + +A replication configuration that you later provide to configure and start a AWS DMS Serverless replication + + + + +## Schema + +### Optional + +- `compute_config` (Attributes) Configuration parameters for provisioning a AWS DMS Serverless replication (see [below for nested schema](#nestedatt--compute_config)) +- `replication_config_arn` (String) The Amazon Resource Name (ARN) of the Replication Config +- `replication_config_identifier` (String) A unique identifier of replication configuration +- `replication_settings` (Map of String) JSON settings for Servereless replications that are provisioned using this replication configuration +- `replication_type` (String) The type of AWS DMS Serverless replication to provision using this replication configuration +- `resource_identifier` (String) A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource +- `source_endpoint_arn` (String) The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration +- `supplemental_settings` (Map of String) JSON settings for specifying supplemental data +- `table_mappings` (Map of String) JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration +- `tags` (Attributes List)

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

(see [below for nested schema](#nestedatt--tags)) +- `target_endpoint_arn` (String) The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `compute_config` + +Required: + +- `max_capacity_units` (Number) + +Optional: + +- `availability_zone` (String) +- `dns_name_servers` (String) +- `kms_key_id` (String) +- `min_capacity_units` (Number) +- `multi_az` (Boolean) +- `preferred_maintenance_window` (String) +- `replication_subnet_group_id` (String) +- `vpc_security_group_ids` (List of String) + + + +### Nested Schema for `tags` + +Required: + +- `key` (String)

Tag key.

+- `value` (String)

Tag value.

+ +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_dms_replication_config.example +``` diff --git a/docs/resources/ec2_network_interface.md b/docs/resources/ec2_network_interface.md index 2190118827..6b837df47f 100644 --- a/docs/resources/ec2_network_interface.md +++ b/docs/resources/ec2_network_interface.md @@ -22,11 +22,14 @@ The AWS::EC2::NetworkInterface resource creates network interface ### Optional - `description` (String) A description for the network interface. -- `enable_primary_ipv_6` (Boolean) If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address. - `group_set` (List of String) A list of security group IDs associated with this network interface. - `interface_type` (String) Indicates the type of network interface. +- `ipv_4_prefix_count` (Number) The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses. +- `ipv_4_prefixes` (Attributes List) Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses. (see [below for nested schema](#nestedatt--ipv_4_prefixes)) - `ipv_6_address_count` (Number) The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property. - `ipv_6_addresses` (Attributes Set) One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property. (see [below for nested schema](#nestedatt--ipv_6_addresses)) +- `ipv_6_prefix_count` (Number) The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses. +- `ipv_6_prefixes` (Attributes List) Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses. (see [below for nested schema](#nestedatt--ipv_6_prefixes)) - `private_ip_address` (String) Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property. - `private_ip_addresses` (Attributes List) Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property. (see [below for nested schema](#nestedatt--private_ip_addresses)) - `secondary_private_ip_address_count` (Number) The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses @@ -39,6 +42,14 @@ The AWS::EC2::NetworkInterface resource creates network interface - `primary_private_ip_address` (String) Returns the primary private IP address of the network interface. - `secondary_private_ip_addresses` (List of String) Returns the secondary private IP addresses of the network interface. + +### Nested Schema for `ipv_4_prefixes` + +Required: + +- `ipv_4_prefix` (String) + + ### Nested Schema for `ipv_6_addresses` @@ -47,6 +58,14 @@ Required: - `ipv_6_address` (String) + +### Nested Schema for `ipv_6_prefixes` + +Required: + +- `ipv_6_prefix` (String) + + ### Nested Schema for `private_ip_addresses` diff --git a/docs/resources/ec2_network_interface_attachment.md b/docs/resources/ec2_network_interface_attachment.md new file mode 100644 index 0000000000..3de743f28c --- /dev/null +++ b/docs/resources/ec2_network_interface_attachment.md @@ -0,0 +1,39 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_network_interface_attachment Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::NetworkInterfaceAttachment +--- + +# awscc_ec2_network_interface_attachment (Resource) + +Resource Type definition for AWS::EC2::NetworkInterfaceAttachment + + + + +## Schema + +### Required + +- `device_index` (String) The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0. +- `instance_id` (String) The ID of the instance to which you will attach the ENI. +- `network_interface_id` (String) The ID of the ENI that you want to attach. + +### Optional + +- `delete_on_termination` (Boolean) Whether to delete the network interface when the instance terminates. By default, this value is set to true. + +### Read-Only + +- `attachment_id` (String) The ID of the network interface attachment. +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_network_interface_attachment.example +``` diff --git a/docs/resources/ec2_route.md b/docs/resources/ec2_route.md new file mode 100644 index 0000000000..2d8b8ec52f --- /dev/null +++ b/docs/resources/ec2_route.md @@ -0,0 +1,48 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_route Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::Route +--- + +# awscc_ec2_route (Resource) + +Resource Type definition for AWS::EC2::Route + + + + +## Schema + +### Required + +- `route_table_id` (String) The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to. + +### Optional + +- `carrier_gateway_id` (String) The ID of the carrier gateway. +- `destination_cidr_block` (String) The IPv4 CIDR block used for the destination match. +- `destination_ipv_6_cidr_block` (String) The IPv6 CIDR block used for the destination match. +- `egress_only_internet_gateway_id` (String) The ID of the egress-only internet gateway. +- `gateway_id` (String) The ID of an internet gateway or virtual private gateway attached to your VPC. +- `instance_id` (String) The ID of a NAT instance in your VPC. +- `local_gateway_id` (String) The ID of the local gateway. +- `nat_gateway_id` (String) The ID of a NAT gateway. +- `network_interface_id` (String) The ID of the network interface. +- `transit_gateway_id` (String) The ID of a transit gateway. +- `vpc_endpoint_id` (String) The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only. +- `vpc_peering_connection_id` (String) The ID of a VPC peering connection. + +### Read-Only + +- `cidr_block` (String) The primary identifier of the resource generated by the service. +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_route.example +``` diff --git a/docs/resources/iam_managed_policy.md b/docs/resources/iam_managed_policy.md index 36747077eb..8472b03ca8 100644 --- a/docs/resources/iam_managed_policy.md +++ b/docs/resources/iam_managed_policy.md @@ -17,28 +17,20 @@ Resource Type definition for AWS::IAM::ManagedPolicy ### Required -- `policy_document` (String) The JSON policy document that you want to use as the content for the new policy. +- `policy_document` (Map of String) ### Optional -- `description` (String) A friendly description of the policy. -- `groups` (Set of String) The name (friendly name, not ARN) of the group to attach the policy to. -- `managed_policy_name` (String) The friendly name of the policy. -- `path` (String) The path for the policy. -- `roles` (Set of String) The name (friendly name, not ARN) of the role to attach the policy to. -- `users` (Set of String) The name (friendly name, not ARN) of the IAM user to attach the policy to. +- `description` (String) +- `groups` (List of String) +- `managed_policy_name` (String) +- `path` (String) +- `roles` (List of String) +- `users` (List of String) ### Read-Only -- `attachment_count` (Number) The number of entities (users, groups, and roles) that the policy is attached to. -- `create_date` (String) The date and time, in ISO 8601 date-time format, when the policy was created. -- `default_version_id` (String) The identifier for the version of the policy that is set as the default version. -- `id` (String) Uniquely identifies the resource. -- `is_attachable` (Boolean) Specifies whether the policy can be attached to an IAM user, group, or role. -- `permissions_boundary_usage_count` (Number) The number of entities (users and roles) for which the policy is used to set the permissions boundary. -- `policy_arn` (String) Amazon Resource Name (ARN) of the managed policy -- `policy_id` (String) The stable and unique string identifying the policy. -- `update_date` (String) The date and time, in ISO 8601 date-time format, when the policy was last updated. +- `id` (String) The ID of this resource. ## Import diff --git a/docs/resources/internetmonitor_monitor.md b/docs/resources/internetmonitor_monitor.md index 8a5b7ba9db..39b6b68a93 100644 --- a/docs/resources/internetmonitor_monitor.md +++ b/docs/resources/internetmonitor_monitor.md @@ -45,9 +45,31 @@ Represents a monitor, which defines the monitoring boundaries for measurements t Optional: +- `availability_local_health_events_config` (Attributes) (see [below for nested schema](#nestedatt--health_events_config--availability_local_health_events_config)) - `availability_score_threshold` (Number) +- `performance_local_health_events_config` (Attributes) (see [below for nested schema](#nestedatt--health_events_config--performance_local_health_events_config)) - `performance_score_threshold` (Number) + +### Nested Schema for `health_events_config.availability_local_health_events_config` + +Optional: + +- `health_score_threshold` (Number) +- `min_traffic_impact` (Number) +- `status` (String) + + + +### Nested Schema for `health_events_config.performance_local_health_events_config` + +Optional: + +- `health_score_threshold` (Number) +- `min_traffic_impact` (Number) +- `status` (String) + + ### Nested Schema for `internet_measurements_log_delivery` diff --git a/docs/resources/ivs_recording_configuration.md b/docs/resources/ivs_recording_configuration.md index 5fd1737a2d..4edd8b3b1a 100644 --- a/docs/resources/ivs_recording_configuration.md +++ b/docs/resources/ivs_recording_configuration.md @@ -23,6 +23,7 @@ Resource Type definition for AWS::IVS::RecordingConfiguration - `name` (String) Recording Configuration Name. - `recording_reconnect_window_seconds` (Number) Recording Reconnect Window Seconds. (0 means disabled) +- `rendition_configuration` (Attributes) Rendition Configuration describes which renditions should be recorded for a stream. (see [below for nested schema](#nestedatt--rendition_configuration)) - `tags` (Attributes Set) A list of key-value pairs that contain metadata for the asset model. (see [below for nested schema](#nestedatt--tags)) - `thumbnail_configuration` (Attributes) Recording Thumbnail Configuration. (see [below for nested schema](#nestedatt--thumbnail_configuration)) @@ -35,7 +36,7 @@ Resource Type definition for AWS::IVS::RecordingConfiguration ### Nested Schema for `destination_configuration` -Required: +Optional: - `s3` (Attributes) Recording S3 Destination Configuration. (see [below for nested schema](#nestedatt--destination_configuration--s3)) @@ -48,6 +49,15 @@ Required: + +### Nested Schema for `rendition_configuration` + +Optional: + +- `rendition_selection` (String) Resolution Selection indicates which set of renditions are recorded for a stream. +- `renditions` (Set of String) Renditions indicates which renditions are recorded for a stream. + + ### Nested Schema for `tags` @@ -60,13 +70,12 @@ Required: ### Nested Schema for `thumbnail_configuration` -Required: - -- `recording_mode` (String) Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled. - Optional: -- `target_interval_seconds` (Number) Thumbnail recording Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL. +- `recording_mode` (String) Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled. +- `resolution` (String) Resolution indicates the desired resolution of recorded thumbnails. +- `storage` (Set of String) Storage indicates the format in which thumbnails are recorded. +- `target_interval_seconds` (Number) Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL. ## Import diff --git a/docs/resources/kendra_data_source.md b/docs/resources/kendra_data_source.md index d33199c80b..60e22447f4 100644 --- a/docs/resources/kendra_data_source.md +++ b/docs/resources/kendra_data_source.md @@ -191,6 +191,7 @@ Optional: - `salesforce_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--salesforce_configuration)) - `service_now_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--service_now_configuration)) - `share_point_configuration` (Attributes) SharePoint configuration (see [below for nested schema](#nestedatt--data_source_configuration--share_point_configuration)) +- `template_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--template_configuration)) - `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--web_crawler_configuration)) - `work_docs_configuration` (Attributes) (see [below for nested schema](#nestedatt--data_source_configuration--work_docs_configuration)) @@ -792,6 +793,14 @@ Required: + +### Nested Schema for `data_source_configuration.template_configuration` + +Required: + +- `template` (String) + + ### Nested Schema for `data_source_configuration.web_crawler_configuration` diff --git a/docs/resources/kms_key.md b/docs/resources/kms_key.md index 821b7c2c81..508877a8cd 100644 --- a/docs/resources/kms_key.md +++ b/docs/resources/kms_key.md @@ -186,15 +186,13 @@ resource "awscc_kms_key" "this" { ## Schema -### Required - -- `key_policy` (String) The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules. - ### Optional +- `bypass_policy_lockout_safety_check` (Boolean) Skips ("bypasses") the key policy lockout safety check. The default value is false. - `description` (String) A description of the AWS KMS key. Use a description that helps you to distinguish this AWS KMS key from others in the account, such as its intended use. - `enable_key_rotation` (Boolean) Enables automatic rotation of the key material for the specified AWS KMS key. By default, automation key rotation is not enabled. - `enabled` (Boolean) Specifies whether the AWS KMS key is enabled. Disabled AWS KMS keys cannot be used in cryptographic operations. +- `key_policy` (String) The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules. - `key_spec` (String) Specifies the type of AWS KMS key to create. The default value is SYMMETRIC_DEFAULT. This property is required only for asymmetric AWS KMS keys. You can't change the KeySpec value after the AWS KMS key is created. - `key_usage` (String) Determines the cryptographic operations for which you can use the AWS KMS key. The default value is ENCRYPT_DECRYPT. This property is required only for asymmetric AWS KMS keys. You can't change the KeyUsage value after the AWS KMS key is created. - `multi_region` (Boolean) Specifies whether the AWS KMS key should be Multi-Region. You can't change the MultiRegion value after the AWS KMS key is created. diff --git a/docs/resources/lambda_layer_version_permission.md b/docs/resources/lambda_layer_version_permission.md new file mode 100644 index 0000000000..011897f713 --- /dev/null +++ b/docs/resources/lambda_layer_version_permission.md @@ -0,0 +1,38 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_lambda_layer_version_permission Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Schema for Lambda LayerVersionPermission +--- + +# awscc_lambda_layer_version_permission (Resource) + +Schema for Lambda LayerVersionPermission + + + + +## Schema + +### Required + +- `action` (String) The API action that grants access to the layer. +- `layer_version_arn` (String) The name or Amazon Resource Name (ARN) of the layer. +- `principal` (String) An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified). + +### Optional + +- `organization_id` (String) With the principal set to *, grant permission to all accounts in the specified organization. + +### Read-Only + +- `id` (String) ID generated by service + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_lambda_layer_version_permission.example +``` diff --git a/docs/resources/mediatailor_channel.md b/docs/resources/mediatailor_channel.md new file mode 100644 index 0000000000..e41f612c54 --- /dev/null +++ b/docs/resources/mediatailor_channel.md @@ -0,0 +1,100 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_channel Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::MediaTailor::Channel Resource Type +--- + +# awscc_mediatailor_channel (Resource) + +Definition of AWS::MediaTailor::Channel Resource Type + + + + +## Schema + +### Required + +- `channel_name` (String) +- `outputs` (Attributes List)

The channel's output properties.

(see [below for nested schema](#nestedatt--outputs)) +- `playback_mode` (String) + +### Optional + +- `filler_slate` (Attributes)

Slate VOD source configuration.

(see [below for nested schema](#nestedatt--filler_slate)) +- `log_configuration` (Attributes)

The log configuration for the channel.

(see [below for nested schema](#nestedatt--log_configuration)) +- `tags` (Attributes Set) The tags to assign to the channel. (see [below for nested schema](#nestedatt--tags)) +- `tier` (String) + +### Read-Only + +- `arn` (String)

The ARN of the channel.

+- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `outputs` + +Required: + +- `manifest_name` (String)

The name of the manifest for the channel. The name appears in the PlaybackUrl.

+- `source_group` (String)

A string used to match which HttpPackageConfiguration is used for each VodSource.

+ +Optional: + +- `dash_playlist_settings` (Attributes)

Dash manifest configuration parameters.

(see [below for nested schema](#nestedatt--outputs--dash_playlist_settings)) +- `hls_playlist_settings` (Attributes)

HLS playlist configuration parameters.

(see [below for nested schema](#nestedatt--outputs--hls_playlist_settings)) + + +### Nested Schema for `outputs.dash_playlist_settings` + +Optional: + +- `manifest_window_seconds` (Number)

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

+- `min_buffer_time_seconds` (Number)

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

+- `min_update_period_seconds` (Number)

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

+- `suggested_presentation_delay_seconds` (Number)

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

+ + + +### Nested Schema for `outputs.hls_playlist_settings` + +Optional: + +- `manifest_window_seconds` (Number)

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

+ + + + +### Nested Schema for `filler_slate` + +Optional: + +- `source_location_name` (String)

The name of the source location where the slate VOD source is stored.

+- `vod_source_name` (String)

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

+ + + +### Nested Schema for `log_configuration` + +Optional: + +- `log_types` (List of String)

The log types.

+ + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_mediatailor_channel.example +``` diff --git a/docs/resources/mediatailor_channel_policy.md b/docs/resources/mediatailor_channel_policy.md new file mode 100644 index 0000000000..12411a5749 --- /dev/null +++ b/docs/resources/mediatailor_channel_policy.md @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_channel_policy Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::MediaTailor::ChannelPolicy Resource Type +--- + +# awscc_mediatailor_channel_policy (Resource) + +Definition of AWS::MediaTailor::ChannelPolicy Resource Type + + + + +## Schema + +### Required + +- `channel_name` (String) +- `policy` (String)

The IAM policy for the channel. IAM policies are used to control access to your channel.

+ +### Read-Only + +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_mediatailor_channel_policy.example +``` diff --git a/docs/resources/mediatailor_live_source.md b/docs/resources/mediatailor_live_source.md new file mode 100644 index 0000000000..3707ca19be --- /dev/null +++ b/docs/resources/mediatailor_live_source.md @@ -0,0 +1,57 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_live_source Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::MediaTailor::LiveSource Resource Type +--- + +# awscc_mediatailor_live_source (Resource) + +Definition of AWS::MediaTailor::LiveSource Resource Type + + + + +## Schema + +### Required + +- `http_package_configurations` (Attributes List)

A list of HTTP package configuration parameters for this live source.

(see [below for nested schema](#nestedatt--http_package_configurations)) +- `live_source_name` (String) +- `source_location_name` (String) + +### Optional + +- `tags` (Attributes Set) The tags to assign to the live source. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String)

The ARN of the live source.

+- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `http_package_configurations` + +Required: + +- `path` (String)

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

+- `source_group` (String)

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

+- `type` (String) + + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_mediatailor_live_source.example +``` diff --git a/docs/resources/mediatailor_vod_source.md b/docs/resources/mediatailor_vod_source.md new file mode 100644 index 0000000000..214a88a7fe --- /dev/null +++ b/docs/resources/mediatailor_vod_source.md @@ -0,0 +1,57 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_mediatailor_vod_source Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Definition of AWS::MediaTailor::VodSource Resource Type +--- + +# awscc_mediatailor_vod_source (Resource) + +Definition of AWS::MediaTailor::VodSource Resource Type + + + + +## Schema + +### Required + +- `http_package_configurations` (Attributes List)

A list of HTTP package configuration parameters for this VOD source.

(see [below for nested schema](#nestedatt--http_package_configurations)) +- `source_location_name` (String) +- `vod_source_name` (String) + +### Optional + +- `tags` (Attributes Set) The tags to assign to the VOD source. (see [below for nested schema](#nestedatt--tags)) + +### Read-Only + +- `arn` (String)

The ARN of the VOD source.

+- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `http_package_configurations` + +Required: + +- `path` (String)

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

+- `source_group` (String)

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

+- `type` (String) + + + +### Nested Schema for `tags` + +Required: + +- `key` (String) +- `value` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_mediatailor_vod_source.example +``` diff --git a/docs/resources/neptune_db_cluster.md b/docs/resources/neptune_db_cluster.md index f9003e900a..2f36cf4504 100644 --- a/docs/resources/neptune_db_cluster.md +++ b/docs/resources/neptune_db_cluster.md @@ -24,6 +24,11 @@ The AWS::Neptune::DBCluster resource creates an Amazon Neptune DB cluster. - `db_cluster_identifier` (String) The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string. - `db_cluster_parameter_group_name` (String) Provides the name of the DB cluster parameter group. - `db_instance_parameter_group_name` (String) The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request. +- `db_port` (Number) The port number on which the DB instances in the DB cluster accept connections. + +If not specified, the default port used is `8182`. + +Note: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities. - `db_subnet_group_name` (String) Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group. - `deletion_protection` (Boolean) Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. - `enable_cloudwatch_logs_exports` (List of String) Specifies a list of log types that are enabled for export to CloudWatch Logs. @@ -69,10 +74,10 @@ If a DB cluster snapshot is specified, the target DB cluster is created from the ### Read-Only - `cluster_resource_id` (String) The resource id for the DB cluster. For example: `cluster-ABCD1234EFGH5678IJKL90MNOP`. The cluster ID uniquely identifies the cluster and is used in things like IAM authentication policies. -- `endpoint` (String) The connection endpoint for the DB cluster. For example: mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com +- `endpoint` (String) The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com` - `id` (String) Uniquely identifies the resource. -- `port` (String) Specifies the port that the database engine is listening on. -- `read_endpoint` (String) The reader endpoint for the DB cluster. For example: mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com +- `port` (String) The port number on which the DB cluster accepts connections. For example: `8182`. +- `read_endpoint` (String) The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com` ### Nested Schema for `associated_roles` diff --git a/docs/resources/omics_run_group.md b/docs/resources/omics_run_group.md index 2635114f4b..9433b2870a 100644 --- a/docs/resources/omics_run_group.md +++ b/docs/resources/omics_run_group.md @@ -19,6 +19,7 @@ Definition of AWS::Omics::RunGroup Resource Type - `max_cpus` (Number) - `max_duration` (Number) +- `max_gpus` (Number) - `max_runs` (Number) - `name` (String) - `tags` (Map of String) A map of resource tags diff --git a/docs/resources/omics_workflow.md b/docs/resources/omics_workflow.md index af384baf02..9fae8460a7 100644 --- a/docs/resources/omics_workflow.md +++ b/docs/resources/omics_workflow.md @@ -17,6 +17,7 @@ Definition of AWS::Omics::Workflow Resource Type ### Optional +- `accelerators` (String) - `definition_uri` (String) - `description` (String) - `engine` (String) diff --git a/docs/resources/sagemaker_feature_group.md b/docs/resources/sagemaker_feature_group.md index 9624e2e9e5..adb3a96508 100644 --- a/docs/resources/sagemaker_feature_group.md +++ b/docs/resources/sagemaker_feature_group.md @@ -32,6 +32,8 @@ Resource Type definition for AWS::SageMaker::FeatureGroup ### Read-Only +- `creation_time` (String) A timestamp of FeatureGroup creation time. +- `feature_group_status` (String) The status of the feature group. - `id` (String) Uniquely identifies the resource. diff --git a/docs/resources/sqs_queue_inline_policy.md b/docs/resources/sqs_queue_inline_policy.md new file mode 100644 index 0000000000..86341e55a0 --- /dev/null +++ b/docs/resources/sqs_queue_inline_policy.md @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_sqs_queue_inline_policy Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Schema for SQS QueueInlinePolicy +--- + +# awscc_sqs_queue_inline_policy (Resource) + +Schema for SQS QueueInlinePolicy + + + + +## Schema + +### Required + +- `policy_document` (Map of String) A policy document that contains permissions to add to the specified SQS queue +- `queue` (String) The URL of the SQS queue. + +### Read-Only + +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_sqs_queue_inline_policy.example +``` diff --git a/docs/resources/transfer_connector.md b/docs/resources/transfer_connector.md index b2185d13db..7a18852e1f 100644 --- a/docs/resources/transfer_connector.md +++ b/docs/resources/transfer_connector.md @@ -18,17 +18,18 @@ Resource Type definition for AWS::Transfer::Connector ### Required - `access_role` (String) Specifies the access role for the connector. -- `as_2_config` (Attributes) Configuration for an AS2 connector. (see [below for nested schema](#nestedatt--as_2_config)) - `url` (String) URL for Connector ### Optional +- `as_2_config` (Attributes) Configuration for an AS2 connector. (see [below for nested schema](#nestedatt--as_2_config)) - `logging_role` (String) Specifies the logging role for the connector. -- `tags` (Attributes Set) Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose. (see [below for nested schema](#nestedatt--tags)) +- `sftp_config` (Attributes) Configuration for an SFTP connector. (see [below for nested schema](#nestedatt--sftp_config)) +- `tags` (Attributes Set) Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose. (see [below for nested schema](#nestedatt--tags)) ### Read-Only -- `arn` (String) Specifies the unique Amazon Resource Name (ARN) for the workflow. +- `arn` (String) Specifies the unique Amazon Resource Name (ARN) for the connector. - `connector_id` (String) A unique identifier for the connector. - `id` (String) Uniquely identifies the resource. @@ -37,6 +38,7 @@ Resource Type definition for AWS::Transfer::Connector Optional: +- `basic_auth_secret_id` (String) ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector - `compression` (String) Compression setting for this AS2 connector configuration. - `encryption_algorithm` (String) Encryption algorithm for this AS2 connector configuration. - `local_profile_id` (String) A unique identifier for the local profile. @@ -47,6 +49,15 @@ Optional: - `signing_algorithm` (String) Signing algorithm for this AS2 connector configuration. + +### Nested Schema for `sftp_config` + +Optional: + +- `trusted_host_keys` (List of String) List of public host keys, for the external server to which you are connecting. +- `user_secret_id` (String) ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords. + + ### Nested Schema for `tags` diff --git a/examples/resources/awscc_cloudwatch_alarm/import.sh b/examples/resources/awscc_cloudwatch_alarm/import.sh new file mode 100644 index 0000000000..bb753958dc --- /dev/null +++ b/examples/resources/awscc_cloudwatch_alarm/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_cloudwatch_alarm.example \ No newline at end of file diff --git a/examples/resources/awscc_config_config_rule/import.sh b/examples/resources/awscc_config_config_rule/import.sh new file mode 100644 index 0000000000..79c8464bcd --- /dev/null +++ b/examples/resources/awscc_config_config_rule/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_config_config_rule.example \ No newline at end of file diff --git a/examples/resources/awscc_connect_traffic_distribution_group/import.sh b/examples/resources/awscc_connect_traffic_distribution_group/import.sh new file mode 100644 index 0000000000..f47d8436d3 --- /dev/null +++ b/examples/resources/awscc_connect_traffic_distribution_group/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_connect_traffic_distribution_group.example \ No newline at end of file diff --git a/examples/resources/awscc_datasync_location_azure_blob/import.sh b/examples/resources/awscc_datasync_location_azure_blob/import.sh new file mode 100644 index 0000000000..cd981a7d89 --- /dev/null +++ b/examples/resources/awscc_datasync_location_azure_blob/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_datasync_location_azure_blob.example \ No newline at end of file diff --git a/examples/resources/awscc_dms_replication_config/import.sh b/examples/resources/awscc_dms_replication_config/import.sh new file mode 100644 index 0000000000..db40bcf285 --- /dev/null +++ b/examples/resources/awscc_dms_replication_config/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_dms_replication_config.example \ No newline at end of file diff --git a/examples/resources/awscc_ec2_network_interface_attachment/import.sh b/examples/resources/awscc_ec2_network_interface_attachment/import.sh new file mode 100644 index 0000000000..b69462f9e6 --- /dev/null +++ b/examples/resources/awscc_ec2_network_interface_attachment/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_network_interface_attachment.example \ No newline at end of file diff --git a/examples/resources/awscc_ec2_route/import.sh b/examples/resources/awscc_ec2_route/import.sh new file mode 100644 index 0000000000..b8372b8511 --- /dev/null +++ b/examples/resources/awscc_ec2_route/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_route.example \ No newline at end of file diff --git a/examples/resources/awscc_lambda_layer_version_permission/import.sh b/examples/resources/awscc_lambda_layer_version_permission/import.sh new file mode 100644 index 0000000000..cd1818c619 --- /dev/null +++ b/examples/resources/awscc_lambda_layer_version_permission/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_lambda_layer_version_permission.example \ No newline at end of file diff --git a/examples/resources/awscc_mediatailor_channel/import.sh b/examples/resources/awscc_mediatailor_channel/import.sh new file mode 100644 index 0000000000..e4151c6101 --- /dev/null +++ b/examples/resources/awscc_mediatailor_channel/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_mediatailor_channel.example \ No newline at end of file diff --git a/examples/resources/awscc_mediatailor_channel_policy/import.sh b/examples/resources/awscc_mediatailor_channel_policy/import.sh new file mode 100644 index 0000000000..bb7aeceef0 --- /dev/null +++ b/examples/resources/awscc_mediatailor_channel_policy/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_mediatailor_channel_policy.example \ No newline at end of file diff --git a/examples/resources/awscc_mediatailor_live_source/import.sh b/examples/resources/awscc_mediatailor_live_source/import.sh new file mode 100644 index 0000000000..5d201fcd20 --- /dev/null +++ b/examples/resources/awscc_mediatailor_live_source/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_mediatailor_live_source.example \ No newline at end of file diff --git a/examples/resources/awscc_mediatailor_vod_source/import.sh b/examples/resources/awscc_mediatailor_vod_source/import.sh new file mode 100644 index 0000000000..e248cbf940 --- /dev/null +++ b/examples/resources/awscc_mediatailor_vod_source/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_mediatailor_vod_source.example \ No newline at end of file diff --git a/examples/resources/awscc_sqs_queue_inline_policy/import.sh b/examples/resources/awscc_sqs_queue_inline_policy/import.sh new file mode 100644 index 0000000000..e2166a49c4 --- /dev/null +++ b/examples/resources/awscc_sqs_queue_inline_policy/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_sqs_queue_inline_policy.example \ No newline at end of file From eee270ce581bce3963278325685ef4c4cb469d08 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 10 Aug 2023 14:41:07 -0400 Subject: [PATCH 6/6] Add CHANGELOG entries. --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68a9514fa7..d89db4878a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,41 @@ ## 0.58.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_cloudwatch_alarm` +* **New Data Source:** `awscc_cloudwatch_alarms` +* **New Data Source:** `awscc_config_config_rule` +* **New Data Source:** `awscc_config_config_rules` +* **New Data Source:** `awscc_connect_traffic_distribution_group` +* **New Data Source:** `awscc_datasync_location_azure_blob` +* **New Data Source:** `awscc_datasync_location_azure_blobs` +* **New Data Source:** `awscc_dms_replication_config` +* **New Data Source:** `awscc_dms_replication_configs` +* **New Data Source:** `awscc_ec2_network_interface_attachment` +* **New Data Source:** `awscc_ec2_network_interface_attachments` +* **New Data Source:** `awscc_ec2_route` +* **New Data Source:** `awscc_lambda_layer_version_permission` +* **New Data Source:** `awscc_mediatailor_channel` +* **New Data Source:** `awscc_mediatailor_channel_policy` +* **New Data Source:** `awscc_mediatailor_channels` +* **New Data Source:** `awscc_mediatailor_live_source` +* **New Data Source:** `awscc_mediatailor_vod_source` +* **New Data Source:** `awscc_pipes_pipes` +* **New Data Source:** `awscc_sqs_queue_inline_policy` +* **New Resource:** `awscc_cloudwatch_alarm` +* **New Resource:** `awscc_config_config_rule` +* **New Resource:** `awscc_connect_traffic_distribution_group` +* **New Resource:** `awscc_datasync_location_azure_blob` +* **New Resource:** `awscc_dms_replication_config` +* **New Resource:** `awscc_ec2_network_interface_attachment` +* **New Resource:** `awscc_ec2_route` +* **New Resource:** `awscc_lambda_layer_version_permission` +* **New Resource:** `awscc_mediatailor_channel` +* **New Resource:** `awscc_mediatailor_channel_policy` +* **New Resource:** `awscc_mediatailor_live_source` +* **New Resource:** `awscc_mediatailor_vod_source` +* **New Resource:** `awscc_sqs_queue_inline_policy` + ## 0.57.0 (July 27, 2023) FEATURES: