From 635533010a8dbd64fb849ab65ea78f9a069eb257 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 11:21:06 -0500 Subject: [PATCH 1/6] 2024/11/26 CloudFormation schemas in us-east-1; Refresh existing schemas. --- internal/provider/generators/schema/main.go | 2 +- .../AWS_AutoScaling_ScalingPolicy.json | 9 + ...ot_MicrosoftTeamsChannelConfiguration.json | 24 +- ...AWS_Chatbot_SlackChannelConfiguration.json | 24 +- .../schemas/AWS_Cognito_UserPool.json | 711 +++++++++-------- .../schemas/AWS_Connect_TaskTemplate.json | 4 +- ..._EnclaveCertificateIamRoleAssociation.json | 6 +- .../schemas/AWS_EKS_Cluster.json | 734 ++++++++++-------- .../AWS_ElasticLoadBalancingV2_Listener.json | 6 +- ...S_ElasticLoadBalancingV2_ListenerRule.json | 2 +- ...S_ElasticLoadBalancingV2_LoadBalancer.json | 34 +- .../schemas/AWS_IoT_DomainConfiguration.json | 18 +- .../schemas/AWS_Organizations_Policy.json | 5 +- .../schemas/AWS_QBusiness_Application.json | 11 +- .../AWS_SageMaker_InferenceComponent.json | 18 +- .../schemas/AWS_Wisdom_KnowledgeBase.json | 289 ++++++- 16 files changed, 1190 insertions(+), 707 deletions(-) diff --git a/internal/provider/generators/schema/main.go b/internal/provider/generators/schema/main.go index 6f8f0c45fb..657ccc424b 100644 --- a/internal/provider/generators/schema/main.go +++ b/internal/provider/generators/schema/main.go @@ -522,7 +522,7 @@ func (g *Generator) GenerateResourceImportExamples(packageName, filename string, for _, v := range resources { tmplData, err := shared.GenerateTemplateData(g.UI(), v.CloudFormationTypeSchemaFile, shared.ResourceType, v.TerraformResourceType, v.GeneratedCodePackageName) if err != nil { - return err + return fmt.Errorf("%s: %w", v.CloudFormationTypeSchemaFile, err) } r := &ResourceImportData{ diff --git a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json index 157b6508a6..3ecf3566af 100644 --- a/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json +++ b/internal/service/cloudformation/schemas/AWS_AutoScaling_ScalingPolicy.json @@ -93,6 +93,9 @@ }, "Namespace": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [] @@ -300,6 +303,9 @@ }, "Unit": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [ @@ -344,6 +350,9 @@ }, "Expression": { "type": "string" + }, + "Period": { + "type": "integer" } }, "required": [ diff --git a/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json b/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json index 12ac02debc..1e4d0ad0d7 100644 --- a/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_Chatbot_MicrosoftTeamsChannelConfiguration.json @@ -96,6 +96,15 @@ "items": { "$ref": "#/definitions/Tag" } + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$" + } } }, "required": [ @@ -122,13 +131,16 @@ "permissions": [ "chatbot:CreateMicrosoftTeamsChannelConfiguration", "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", "iam:PassRole", "iam:CreateServiceLinkedRole" ] }, "read": { "permissions": [ - "chatbot:GetMicrosoftTeamsChannelConfiguration" + "chatbot:GetMicrosoftTeamsChannelConfiguration", + "chatbot:ListAssociations" ] }, "update": { @@ -137,18 +149,24 @@ "chatbot:TagResource", "chatbot:UntagResource", "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", "iam:PassRole" ] }, "delete": { "permissions": [ "chatbot:GetMicrosoftTeamsChannelConfiguration", - "chatbot:DeleteMicrosoftTeamsChannelConfiguration" + "chatbot:DeleteMicrosoftTeamsChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ] }, "list": { "permissions": [ - "chatbot:ListMicrosoftTeamsChannelConfigurations" + "chatbot:ListMicrosoftTeamsChannelConfigurations", + "chatbot:ListAssociations" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json b/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json index 4fb91f1961..2ab76726ab 100644 --- a/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_Chatbot_SlackChannelConfiguration.json @@ -89,6 +89,15 @@ "description": "Enables use of a user role requirement in your chat configuration", "type": "boolean", "default": false + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$" + } } }, "required": [ @@ -113,13 +122,16 @@ "permissions": [ "chatbot:CreateSlackChannelConfiguration", "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", "iam:PassRole", "iam:CreateServiceLinkedRole" ] }, "read": { "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" ] }, "update": { @@ -128,17 +140,23 @@ "chatbot:TagResource", "chatbot:UntagResource", "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", "iam:PassRole" ] }, "delete": { "permissions": [ - "chatbot:DeleteSlackChannelConfiguration" + "chatbot:DeleteSlackChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ] }, "list": { "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" ] } }, diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json b/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json index d73c10f0f5..7d52d1b9d5 100644 --- a/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json +++ b/internal/service/cloudformation/schemas/AWS_Cognito_UserPool.json @@ -1,549 +1,582 @@ { + "typeName": "AWS::Cognito::UserPool", + "description": "Definition of AWS::Cognito::UserPool Resource Type", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { - "permissions": [ - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource" - ], "taggable": true, "tagOnCreate": true, "tagUpdatable": true, + "cloudFormationSystemTags": false, "tagProperty": "/properties/UserPoolTags", - "cloudFormationSystemTags": false - }, - "propertyTransform": { - "/properties/Schema/*/Name": "'custom:' & '' & Name" - }, - "handlers": { - "read": { - "permissions": [ - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig" - ] - }, - "create": { - "permissions": [ - "cognito-idp:CreateUserPool", - "iam:PassRole", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:DescribeUserPool", - "kms:CreateGrant", - "iam:CreateServiceLinkedRole", - "cognito-idp:TagResource" - ], - "timeoutInMinutes": 2 - }, - "update": { - "permissions": [ - "cognito-idp:UpdateUserPool", - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:AddCustomAttributes", - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - }, - "list": { - "permissions": [ - "cognito-idp:ListUserPools" - ] - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteUserPool" - ], - "timeoutInMinutes": 2 - } + "permissions": [ + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource" + ] }, - "typeName": "AWS::Cognito::UserPool", - "readOnlyProperties": [ - "/properties/ProviderName", - "/properties/UserPoolId", - "/properties/ProviderURL", - "/properties/Arn" - ], - "description": "Definition of AWS::Cognito::UserPool Resource Type", - "writeOnlyProperties": [ - "/properties/EnabledMfas" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/UserPoolId" - ], "definitions": { - "Policies": { - "additionalProperties": false, - "type": "object", - "properties": { - "PasswordPolicy": { - "$ref": "#/definitions/PasswordPolicy" - } - } - }, - "VerificationMessageTemplate": { - "additionalProperties": false, + "PasswordPolicy": { "type": "object", "properties": { - "EmailMessageByLink": { - "type": "string" + "MinimumLength": { + "type": "integer" }, - "EmailMessage": { - "type": "string" + "RequireLowercase": { + "type": "boolean" }, - "SmsMessage": { - "type": "string" + "RequireNumbers": { + "type": "boolean" }, - "EmailSubject": { - "type": "string" + "RequireSymbols": { + "type": "boolean" }, - "DefaultEmailOption": { - "type": "string" + "RequireUppercase": { + "type": "boolean" }, - "EmailSubjectByLink": { - "type": "string" + "TemporaryPasswordValidityDays": { + "type": "integer" + }, + "PasswordHistorySize": { + "type": "integer" } - } + }, + "additionalProperties": false + }, + "SignInPolicy": { + "type": "object", + "properties": { + "AllowedFirstAuthFactors": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "Policies": { + "type": "object", + "properties": { + "PasswordPolicy": { + "$ref": "#/definitions/PasswordPolicy" + }, + "SignInPolicy": { + "$ref": "#/definitions/SignInPolicy" + } + }, + "additionalProperties": false }, "InviteMessageTemplate": { - "additionalProperties": false, "type": "object", "properties": { "EmailMessage": { "type": "string" }, - "SMSMessage": { + "EmailSubject": { "type": "string" }, - "EmailSubject": { + "SMSMessage": { "type": "string" } - } + }, + "additionalProperties": false }, - "NumberAttributeConstraints": { - "additionalProperties": false, + "RecoveryOption": { "type": "object", "properties": { - "MinValue": { + "Name": { "type": "string" }, - "MaxValue": { - "type": "string" + "Priority": { + "type": "integer" } - } + }, + "additionalProperties": false }, - "AdvancedSecurityAdditionalFlows": { - "additionalProperties": false, + "AccountRecoverySetting": { "type": "object", "properties": { - "CustomAuthMode": { - "type": "string" + "RecoveryMechanisms": { + "type": "array", + "items": { + "$ref": "#/definitions/RecoveryOption" + } } - } + }, + "additionalProperties": false }, "AdminCreateUserConfig": { - "additionalProperties": false, "type": "object", "properties": { + "AllowAdminCreateUserOnly": { + "type": "boolean" + }, "InviteMessageTemplate": { "$ref": "#/definitions/InviteMessageTemplate" }, "UnusedAccountValidityDays": { "type": "integer" - }, - "AllowAdminCreateUserOnly": { - "type": "boolean" } - } + }, + "additionalProperties": false }, - "UsernameConfiguration": { - "additionalProperties": false, + "DeviceConfiguration": { "type": "object", "properties": { - "CaseSensitive": { + "ChallengeRequiredOnNewDevice": { + "type": "boolean" + }, + "DeviceOnlyRememberedOnUserPrompt": { "type": "boolean" } - } + }, + "additionalProperties": false }, - "UserPoolAddOns": { - "additionalProperties": false, + "EmailConfiguration": { "type": "object", "properties": { - "AdvancedSecurityAdditionalFlows": { - "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" + "ReplyToEmailAddress": { + "type": "string" }, - "AdvancedSecurityMode": { + "SourceArn": { "type": "string" - } - } - }, - "RecoveryOption": { - "additionalProperties": false, - "type": "object", - "properties": { - "Priority": { - "type": "integer" }, - "Name": { + "From": { + "type": "string" + }, + "ConfigurationSet": { + "type": "string" + }, + "EmailSendingAccount": { "type": "string" } - } + }, + "additionalProperties": false }, - "StringAttributeConstraints": { - "additionalProperties": false, + "CustomEmailSender": { "type": "object", "properties": { - "MinLength": { + "LambdaVersion": { "type": "string" }, - "MaxLength": { + "LambdaArn": { "type": "string" } - } + }, + "additionalProperties": false }, - "UserAttributeUpdateSettings": { - "additionalProperties": false, + "CustomSMSSender": { "type": "object", "properties": { - "AttributesRequireVerificationBeforeUpdate": { - "type": "array", - "items": { - "type": "string" - } + "LambdaVersion": { + "type": "string" + }, + "LambdaArn": { + "type": "string" } }, - "required": [ - "AttributesRequireVerificationBeforeUpdate" - ] + "additionalProperties": false }, - "CustomSMSSender": { - "additionalProperties": false, + "PreTokenGenerationConfig": { "type": "object", "properties": { - "LambdaArn": { + "LambdaVersion": { "type": "string" }, - "LambdaVersion": { + "LambdaArn": { "type": "string" } - } + }, + "additionalProperties": false }, - "EmailConfiguration": { - "additionalProperties": false, + "LambdaConfig": { "type": "object", "properties": { - "ReplyToEmailAddress": { + "CreateAuthChallenge": { "type": "string" }, - "ConfigurationSet": { + "CustomMessage": { "type": "string" }, - "EmailSendingAccount": { + "DefineAuthChallenge": { "type": "string" }, - "SourceArn": { + "PostAuthentication": { "type": "string" }, - "From": { + "PostConfirmation": { "type": "string" - } - } - }, - "SmsConfiguration": { - "additionalProperties": false, - "type": "object", - "properties": { - "SnsRegion": { + }, + "PreAuthentication": { "type": "string" }, - "ExternalId": { + "PreSignUp": { "type": "string" }, - "SnsCallerArn": { + "VerifyAuthChallengeResponse": { "type": "string" - } - } - }, - "PasswordPolicy": { - "additionalProperties": false, - "type": "object", - "properties": { - "RequireNumbers": { - "type": "boolean" }, - "MinimumLength": { - "type": "integer" + "UserMigration": { + "type": "string" }, - "TemporaryPasswordValidityDays": { - "type": "integer" + "PreTokenGeneration": { + "type": "string" }, - "RequireUppercase": { - "type": "boolean" + "CustomEmailSender": { + "$ref": "#/definitions/CustomEmailSender" }, - "RequireLowercase": { - "type": "boolean" + "CustomSMSSender": { + "$ref": "#/definitions/CustomSMSSender" }, - "RequireSymbols": { - "type": "boolean" + "KMSKeyID": { + "type": "string" }, - "PasswordHistorySize": { - "type": "integer" + "PreTokenGenerationConfig": { + "$ref": "#/definitions/PreTokenGenerationConfig" } - } + }, + "additionalProperties": false }, - "PreTokenGenerationConfig": { - "additionalProperties": false, + "SmsConfiguration": { "type": "object", "properties": { - "LambdaArn": { + "ExternalId": { "type": "string" }, - "LambdaVersion": { + "SnsCallerArn": { + "type": "string" + }, + "SnsRegion": { "type": "string" } - } + }, + "additionalProperties": false }, - "CustomEmailSender": { - "additionalProperties": false, + "StringAttributeConstraints": { "type": "object", "properties": { - "LambdaArn": { + "MaxLength": { "type": "string" }, - "LambdaVersion": { + "MinLength": { "type": "string" } - } + }, + "additionalProperties": false }, - "LambdaConfig": { - "additionalProperties": false, + "NumberAttributeConstraints": { "type": "object", "properties": { - "CreateAuthChallenge": { - "type": "string" - }, - "PreSignUp": { - "type": "string" - }, - "KMSKeyID": { - "type": "string" - }, - "UserMigration": { - "type": "string" - }, - "PostAuthentication": { - "type": "string" - }, - "VerifyAuthChallengeResponse": { - "type": "string" - }, - "PreAuthentication": { - "type": "string" - }, - "DefineAuthChallenge": { - "type": "string" - }, - "PreTokenGeneration": { - "type": "string" - }, - "CustomSMSSender": { - "$ref": "#/definitions/CustomSMSSender" - }, - "PostConfirmation": { + "MaxValue": { "type": "string" }, - "CustomMessage": { + "MinValue": { "type": "string" - }, - "PreTokenGenerationConfig": { - "$ref": "#/definitions/PreTokenGenerationConfig" - }, - "CustomEmailSender": { - "$ref": "#/definitions/CustomEmailSender" } - } + }, + "additionalProperties": false }, "SchemaAttribute": { - "additionalProperties": false, "type": "object", "properties": { + "AttributeDataType": { + "type": "string" + }, "DeveloperOnlyAttribute": { "type": "boolean" }, "Mutable": { "type": "boolean" }, - "AttributeDataType": { + "Name": { "type": "string" }, + "NumberAttributeConstraints": { + "$ref": "#/definitions/NumberAttributeConstraints" + }, "StringAttributeConstraints": { "$ref": "#/definitions/StringAttributeConstraints" }, "Required": { "type": "boolean" - }, - "NumberAttributeConstraints": { - "$ref": "#/definitions/NumberAttributeConstraints" - }, - "Name": { - "type": "string" } - } + }, + "additionalProperties": false }, - "DeviceConfiguration": { - "additionalProperties": false, + "UsernameConfiguration": { "type": "object", "properties": { - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - }, - "ChallengeRequiredOnNewDevice": { + "CaseSensitive": { "type": "boolean" } - } + }, + "additionalProperties": false }, - "AccountRecoverySetting": { - "additionalProperties": false, + "UserAttributeUpdateSettings": { "type": "object", "properties": { - "RecoveryMechanisms": { + "AttributesRequireVerificationBeforeUpdate": { "type": "array", "items": { - "$ref": "#/definitions/RecoveryOption" + "type": "string" } } - } - } - }, - "properties": { - "UserPoolTags": { - "patternProperties": { - "": { + }, + "required": [ + "AttributesRequireVerificationBeforeUpdate" + ], + "additionalProperties": false + }, + "VerificationMessageTemplate": { + "type": "object", + "properties": { + "DefaultEmailOption": { + "type": "string" + }, + "EmailMessage": { + "type": "string" + }, + "EmailMessageByLink": { + "type": "string" + }, + "EmailSubject": { + "type": "string" + }, + "EmailSubjectByLink": { + "type": "string" + }, + "SmsMessage": { "type": "string" } }, - "additionalProperties": false, - "type": "object" + "additionalProperties": false + }, + "AdvancedSecurityAdditionalFlows": { + "type": "object", + "properties": { + "CustomAuthMode": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UserPoolAddOns": { + "type": "object", + "properties": { + "AdvancedSecurityMode": { + "type": "string" + }, + "AdvancedSecurityAdditionalFlows": { + "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" + } + }, + "additionalProperties": false + } + }, + "properties": { + "UserPoolName": { + "type": "string", + "minLength": 1, + "maxLength": 128 }, "Policies": { "$ref": "#/definitions/Policies" }, - "Schema": { - "type": "array", - "items": { - "$ref": "#/definitions/SchemaAttribute" - } + "AccountRecoverySetting": { + "$ref": "#/definitions/AccountRecoverySetting" }, "AdminCreateUserConfig": { "$ref": "#/definitions/AdminCreateUserConfig" }, - "UsernameConfiguration": { - "$ref": "#/definitions/UsernameConfiguration" + "AliasAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "UserPoolName": { - "minLength": 1, - "type": "string", - "maxLength": 128 + "UsernameAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "SmsVerificationMessage": { - "minLength": 6, - "type": "string", - "maxLength": 140 + "AutoVerifiedAttributes": { + "type": "array", + "items": { + "type": "string" + } }, - "UserAttributeUpdateSettings": { - "$ref": "#/definitions/UserAttributeUpdateSettings" + "DeviceConfiguration": { + "$ref": "#/definitions/DeviceConfiguration" }, "EmailConfiguration": { "$ref": "#/definitions/EmailConfiguration" }, - "SmsConfiguration": { - "$ref": "#/definitions/SmsConfiguration" + "EmailVerificationMessage": { + "type": "string", + "minLength": 6, + "maxLength": 20000 }, "EmailVerificationSubject": { - "minLength": 1, "type": "string", - "maxLength": 140 - }, - "EmailAuthenticationSubject": { "minLength": 1, - "type": "string", "maxLength": 140 }, - "AccountRecoverySetting": { - "$ref": "#/definitions/AccountRecoverySetting" - }, - "VerificationMessageTemplate": { - "$ref": "#/definitions/VerificationMessageTemplate" - }, - "ProviderURL": { + "DeletionProtection": { "type": "string" }, + "LambdaConfig": { + "$ref": "#/definitions/LambdaConfig" + }, "MfaConfiguration": { "type": "string" }, - "DeletionProtection": { - "type": "string" + "EnabledMfas": { + "type": "array", + "items": { + "type": "string" + } }, "SmsAuthenticationMessage": { - "minLength": 6, "type": "string", + "minLength": 6, "maxLength": 140 }, - "UserPoolAddOns": { - "$ref": "#/definitions/UserPoolAddOns" + "EmailAuthenticationMessage": { + "type": "string", + "minLength": 6, + "maxLength": 20000 }, - "ProviderName": { - "type": "string" + "EmailAuthenticationSubject": { + "type": "string", + "minLength": 1, + "maxLength": 140 }, - "UserPoolId": { - "type": "string" + "SmsConfiguration": { + "$ref": "#/definitions/SmsConfiguration" }, - "EmailAuthenticationMessage": { + "SmsVerificationMessage": { + "type": "string", "minLength": 6, + "maxLength": 140 + }, + "WebAuthnRelyingPartyID": { "type": "string", - "maxLength": 20000 + "minLength": 1, + "maxLength": 63 }, - "AliasAttributes": { - "type": "array", - "items": { - "type": "string" - } + "WebAuthnUserVerification": { + "type": "string", + "minLength": 1, + "maxLength": 9 }, - "EnabledMfas": { + "Schema": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/SchemaAttribute" } }, - "LambdaConfig": { - "$ref": "#/definitions/LambdaConfig" + "UsernameConfiguration": { + "$ref": "#/definitions/UsernameConfiguration" }, - "Arn": { + "UserAttributeUpdateSettings": { + "$ref": "#/definitions/UserAttributeUpdateSettings" + }, + "UserPoolTags": { + "type": "object", + "patternProperties": { + "": { + "type": "string" + } + }, + "additionalProperties": false + }, + "VerificationMessageTemplate": { + "$ref": "#/definitions/VerificationMessageTemplate" + }, + "UserPoolAddOns": { + "$ref": "#/definitions/UserPoolAddOns" + }, + "ProviderName": { "type": "string" }, - "UsernameAttributes": { - "type": "array", - "items": { - "type": "string" - } + "ProviderURL": { + "type": "string" }, - "AutoVerifiedAttributes": { - "type": "array", - "items": { - "type": "string" - } + "Arn": { + "type": "string" }, - "DeviceConfiguration": { - "$ref": "#/definitions/DeviceConfiguration" + "UserPoolId": { + "type": "string" }, - "EmailVerificationMessage": { - "minLength": 6, + "UserPoolTier": { "type": "string", - "maxLength": 20000 + "enum": [ + "LITE", + "ESSENTIALS", + "PLUS" + ] + } + }, + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/UserPoolId" + ], + "readOnlyProperties": [ + "/properties/ProviderName", + "/properties/UserPoolId", + "/properties/ProviderURL", + "/properties/Arn" + ], + "writeOnlyProperties": [ + "/properties/EnabledMfas" + ], + "propertyTransform": { + "/properties/Schema/*/Name": "'custom:' & '' & Name" + }, + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateUserPool", + "iam:PassRole", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:DescribeUserPool", + "kms:CreateGrant", + "iam:CreateServiceLinkedRole", + "cognito-idp:TagResource" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateUserPool", + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:AddCustomAttributes", + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteUserPool" + ], + "timeoutInMinutes": 2 + }, + "list": { + "permissions": [ + "cognito-idp:ListUserPools" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json b/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json index 11c99a2ed3..41fa78912a 100644 --- a/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json +++ b/internal/service/cloudformation/schemas/AWS_Connect_TaskTemplate.json @@ -26,7 +26,9 @@ "DATE_TIME", "BOOLEAN", "SINGLE_SELECT", - "EMAIL" + "EMAIL", + "EXPIRY_DURATION", + "SELF_ASSIGN" ] }, "FieldIdentifier": { diff --git a/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json b/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json index 65397083b5..7efd4be5b8 100644 --- a/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json +++ b/internal/service/cloudformation/schemas/AWS_EC2_EnclaveCertificateIamRoleAssociation.json @@ -42,7 +42,8 @@ "handlers": { "create": { "permissions": [ - "ec2:AssociateEnclaveCertificateIamRole" + "ec2:AssociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" ] }, "read": { @@ -52,7 +53,8 @@ }, "delete": { "permissions": [ - "ec2:DisassociateEnclaveCertificateIamRole" + "ec2:DisassociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" ] }, "list": { diff --git a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json index 1aa45d2a80..28c43c2fa4 100644 --- a/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_EKS_Cluster.json @@ -1,192 +1,107 @@ { - "tagging": { - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": true - }, "typeName": "AWS::EKS::Cluster", - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Endpoint", - "/properties/CertificateAuthorityData", - "/properties/ClusterSecurityGroupId", - "/properties/EncryptionConfigKeyArn", - "/properties/OpenIdConnectIssuerUrl", - "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" - ], "description": "An object representing an Amazon EKS cluster.", - "createOnlyProperties": [ - "/properties/OutpostConfig", - "/properties/EncryptionConfig", - "/properties/KubernetesNetworkConfig", - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/Name", - "/properties/RoleArn", - "/properties/BootstrapSelfManagedAddons" - ], - "primaryIdentifier": [ - "/properties/Name" - ], - "required": [ - "RoleArn", - "ResourcesVpcConfig" - ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "handlers": { - "read": { - "permissions": [ - "eks:DescribeCluster" - ] - }, - "create": { - "permissions": [ - "eks:CreateCluster", - "eks:DescribeCluster", - "eks:TagResource", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:CreateServiceLinkedRole", - "iam:CreateInstanceProfile", - "iam:TagInstanceProfile", - "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile", - "iam:DeleteInstanceProfile", - "iam:RemoveRoleFromInstanceProfile", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "eks:UpdateClusterConfig", - "eks:UpdateClusterVersion", - "eks:DescribeCluster", - "eks:DescribeUpdate", - "eks:TagResource", - "eks:UntagResource" - ], - "timeoutInMinutes": 180 - }, - "list": { - "permissions": [ - "eks:ListClusters" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteCluster", - "eks:DescribeCluster" - ] - } - }, - "writeOnlyProperties": [ - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/BootstrapSelfManagedAddons" - ], - "additionalProperties": false, "definitions": { - "Logging": { - "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", - "additionalProperties": false, + "Tag": { + "description": "A key-value pair to associate with a resource.", "type": "object", "properties": { - "ClusterLogging": { - "description": "The cluster control plane logging configuration for your cluster. ", - "$ref": "#/definitions/ClusterLogging" + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 } - } - }, - "RemoteNodeNetworks": { - "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/RemoteNodeNetwork" - } - }, - "EnabledTypes": { - "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/LoggingTypeConfig" - } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false }, - "ControlPlanePlacement": { - "description": "Specify the placement group of the control plane machines for your cluster.", - "additionalProperties": false, + "Provider": { "type": "object", + "additionalProperties": false, "properties": { - "GroupName": { - "description": "Specify the placement group name of the control place machines for your cluster.", + "KeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", "type": "string" } } }, - "ZonalShiftConfig": { - "description": "The current zonal shift configuration to use for the cluster.", - "additionalProperties": false, + "EncryptionConfig": { + "description": "The encryption configuration for the cluster", "type": "object", "properties": { - "Enabled": { - "description": "Set this value to true to enable zonal shift for the cluster.", - "type": "boolean" + "Provider": { + "description": "The encryption provider for the cluster.", + "$ref": "#/definitions/Provider" + }, + "Resources": { + "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + } } - } + }, + "additionalProperties": false }, - "AccessConfig": { - "description": "An object representing the Access Config to use for the cluster.", - "additionalProperties": false, + "ResourcesVpcConfig": { + "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", "type": "object", + "additionalProperties": false, "properties": { - "AuthenticationMode": { - "description": "Specify the authentication mode that should be used to create your cluster.", - "type": "string", - "enum": [ - "CONFIG_MAP", - "API_AND_CONFIG_MAP", - "API" - ] + "EndpointPrivateAccess": { + "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", + "type": "boolean" }, - "BootstrapClusterCreatorAdminPermissions": { - "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", + "EndpointPublicAccess": { + "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", "type": "boolean" - } - } - }, - "EncryptionConfig": { - "description": "The encryption configuration for the cluster", - "additionalProperties": false, - "type": "object", - "properties": { - "Resources": { - "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", + }, + "PublicAccessCidrs": { + "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", + "type": "array", "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } + }, + "SecurityGroupIds": { + "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", "type": "array", + "insertionOrder": false, "items": { - "type": "string" + "type": "string", + "minItems": 1 } }, - "Provider": { - "description": "The encryption provider for the cluster.", - "$ref": "#/definitions/Provider" + "SubnetIds": { + "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } } - } + }, + "required": [ + "SubnetIds" + ] }, "LoggingTypeConfig": { "description": "Enabled Logging Type", - "additionalProperties": false, "type": "object", "properties": { "Type": { @@ -200,70 +115,133 @@ "scheduler" ] } + }, + "additionalProperties": false + }, + "EnabledTypes": { + "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoggingTypeConfig" } }, "ClusterLogging": { "description": "The cluster control plane logging configuration for your cluster. ", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "EnabledTypes": { "$ref": "#/definitions/EnabledTypes" } } }, - "KubernetesNetworkConfig": { - "description": "The Kubernetes network configuration for the cluster.", - "additionalProperties": false, + "Logging": { + "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", "type": "object", + "additionalProperties": false, "properties": { - "ServiceIpv4Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", - "type": "string" - }, - "ServiceIpv6Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from.", - "type": "string" - }, - "IpFamily": { - "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", - "type": "string", - "enum": [ - "ipv4", - "ipv6" - ] - } - } - }, - "Provider": { - "additionalProperties": false, - "type": "object", - "properties": { - "KeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", - "type": "string" + "ClusterLogging": { + "description": "The cluster control plane logging configuration for your cluster. ", + "$ref": "#/definitions/ClusterLogging" } } }, "RemoteNodeNetwork": { "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "additionalProperties": false, "type": "object", "properties": { "Cidrs": { "description": "Specifies the list of remote node CIDRs.", + "type": "array", "insertionOrder": false, + "items": { + "type": "string", + "minItems": 1 + } + } + }, + "additionalProperties": false, + "required": [ + "Cidrs" + ] + }, + "RemoteNodeNetworks": { + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemoteNodeNetwork" + } + }, + "RemotePodNetwork": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "type": "object", + "properties": { + "Cidrs": { + "description": "Specifies the list of remote pod CIDRs.", "type": "array", + "insertionOrder": false, "items": { - "minItems": 1, - "type": "string" + "type": "string", + "minItems": 1 } } }, + "additionalProperties": false, "required": [ "Cidrs" ] }, + "RemotePodNetworks": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemotePodNetwork" + } + }, + "RemoteNetworkConfig": { + "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + "additionalProperties": false, + "type": "object", + "properties": { + "RemoteNodeNetworks": { + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "$ref": "#/definitions/RemoteNodeNetworks" + }, + "RemotePodNetworks": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "$ref": "#/definitions/RemotePodNetworks" + } + }, + "required": [ + "RemoteNodeNetworks" + ] + }, + "ComputeConfig": { + "description": "Todo: add description", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + }, + "NodeRoleArn": { + "description": "Todo: add description", + "type": "string" + }, + "NodePools": { + "description": "Todo: add description", + "type": "array", + "insertionOrder": false, + "items": { + "type": "string" + } + } + } + }, "BlockStorage": { "description": "Todo: add description", "additionalProperties": false, @@ -275,51 +253,65 @@ } } }, - "UpgradePolicy": { - "description": "An object representing the Upgrade Policy to use for the cluster.", + "StorageConfig": { + "description": "Todo: add description", "additionalProperties": false, "type": "object", "properties": { - "SupportType": { - "description": "Specify the support type for your cluster.", - "type": "string", - "enum": [ - "STANDARD", - "EXTENDED" - ] + "BlockStorage": { + "description": "Todo: add description", + "$ref": "#/definitions/BlockStorage" } } }, - "RemotePodNetworks": { - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/RemotePodNetwork" + "ElasticLoadBalancing": { + "description": "Todo: add description", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + } } }, - "Tag": { - "description": "A key-value pair to associate with a resource.", + "KubernetesNetworkConfig": { + "description": "The Kubernetes network configuration for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "Value": { - "minLength": 0, - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string", - "maxLength": 256 + "ServiceIpv4Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", + "type": "string" }, - "Key": { - "minLength": 1, - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "ServiceIpv6Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from.", + "type": "string" + }, + "IpFamily": { + "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", "type": "string", - "maxLength": 128 + "enum": [ + "ipv4", + "ipv6" + ] + }, + "ElasticLoadBalancing": { + "description": "Todo: add description", + "$ref": "#/definitions/ElasticLoadBalancing" } - }, - "required": [ - "Key", - "Value" - ] + } + }, + "ControlPlanePlacement": { + "description": "Specify the placement group of the control plane machines for your cluster.", + "type": "object", + "additionalProperties": false, + "properties": { + "GroupName": { + "description": "Specify the placement group name of the control place machines for your cluster.", + "type": "string" + } + } }, "OutpostConfig": { "description": "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", @@ -328,20 +320,20 @@ "properties": { "OutpostArns": { "description": "Specify one or more Arn(s) of Outpost(s) on which you would like to create your cluster.", - "insertionOrder": false, "type": "array", + "insertionOrder": false, "items": { - "minItems": 1, - "type": "string" + "type": "string", + "minItems": 1 } }, - "ControlPlanePlacement": { - "description": "Specify the placement group of the control plane machines for your cluster.", - "$ref": "#/definitions/ControlPlanePlacement" - }, "ControlPlaneInstanceType": { "description": "Specify the Instance type of the machines that should be used to create your cluster.", "type": "string" + }, + "ControlPlanePlacement": { + "description": "Specify the placement group of the control plane machines for your cluster.", + "$ref": "#/definitions/ControlPlanePlacement" } }, "required": [ @@ -349,157 +341,243 @@ "ControlPlaneInstanceType" ] }, - "ResourcesVpcConfig": { - "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", + "AccessConfig": { + "description": "An object representing the Access Config to use for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "EndpointPublicAccess": { - "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", - "type": "boolean" - }, - "PublicAccessCidrs": { - "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } - }, - "EndpointPrivateAccess": { - "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", + "BootstrapClusterCreatorAdminPermissions": { + "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", "type": "boolean" }, - "SecurityGroupIds": { - "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } - }, - "SubnetIds": { - "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } + "AuthenticationMode": { + "description": "Specify the authentication mode that should be used to create your cluster.", + "type": "string", + "enum": [ + "CONFIG_MAP", + "API_AND_CONFIG_MAP", + "API" + ] } - }, - "required": [ - "SubnetIds" - ] + } }, - "RemotePodNetwork": { - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "UpgradePolicy": { + "description": "An object representing the Upgrade Policy to use for the cluster.", "additionalProperties": false, "type": "object", "properties": { - "Cidrs": { - "description": "Specifies the list of remote pod CIDRs.", - "insertionOrder": false, - "type": "array", - "items": { - "minItems": 1, - "type": "string" - } + "SupportType": { + "description": "Specify the support type for your cluster.", + "type": "string", + "enum": [ + "STANDARD", + "EXTENDED" + ] } - }, - "required": [ - "Cidrs" - ] + } + }, + "ZonalShiftConfig": { + "description": "The current zonal shift configuration to use for the cluster.", + "additionalProperties": false, + "type": "object", + "properties": { + "Enabled": { + "description": "Set this value to true to enable zonal shift for the cluster.", + "type": "boolean" + } + } } }, "properties": { + "EncryptionConfig": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EncryptionConfig", + "maxItems": 1 + } + }, + "KubernetesNetworkConfig": { + "$ref": "#/definitions/KubernetesNetworkConfig" + }, "Logging": { "$ref": "#/definitions/Logging" }, - "BootstrapSelfManagedAddons": { - "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", - "type": "boolean" + "Name": { + "description": "The unique name to give to your cluster.", + "type": "string", + "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", + "minLength": 1, + "maxLength": 100 }, - "EncryptionConfigKeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", + "Id": { + "description": "The unique ID given to your cluster.", "type": "string" }, - "ZonalShiftConfig": { - "$ref": "#/definitions/ZonalShiftConfig" + "ResourcesVpcConfig": { + "$ref": "#/definitions/ResourcesVpcConfig" + }, + "OutpostConfig": { + "$ref": "#/definitions/OutpostConfig" }, "AccessConfig": { "$ref": "#/definitions/AccessConfig" }, - "CertificateAuthorityData": { - "description": "The certificate-authority-data for your cluster.", - "type": "string" + "UpgradePolicy": { + "$ref": "#/definitions/UpgradePolicy" }, - "EncryptionConfig": { - "insertionOrder": false, - "type": "array", - "items": { - "maxItems": 1, - "$ref": "#/definitions/EncryptionConfig" - } + "RemoteNetworkConfig": { + "$ref": "#/definitions/RemoteNetworkConfig" }, - "KubernetesNetworkConfig": { - "$ref": "#/definitions/KubernetesNetworkConfig" + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "StorageConfig": { + "$ref": "#/definitions/StorageConfig" }, "RoleArn": { "description": "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", "type": "string" }, - "Name": { - "minLength": 1, - "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", - "description": "The unique name to give to your cluster.", + "Version": { + "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", "type": "string", - "maxLength": 100 + "pattern": "1\\.\\d\\d" }, - "UpgradePolicy": { - "$ref": "#/definitions/UpgradePolicy" + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + }, + "Arn": { + "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", + "type": "string" }, "Endpoint": { "description": "The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.", "type": "string" }, - "Version": { - "pattern": "1\\.\\d\\d", - "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", + "CertificateAuthorityData": { + "description": "The certificate-authority-data for your cluster.", "type": "string" }, "ClusterSecurityGroupId": { "description": "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", "type": "string" }, - "Id": { - "description": "The unique ID given to your cluster.", + "EncryptionConfigKeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", "type": "string" }, - "OutpostConfig": { - "$ref": "#/definitions/OutpostConfig" - }, - "Arn": { - "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", + "OpenIdConnectIssuerUrl": { + "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", "type": "string" }, - "ResourcesVpcConfig": { - "$ref": "#/definitions/ResourcesVpcConfig" + "BootstrapSelfManagedAddons": { + "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", + "type": "boolean" }, - "Tags": { - "uniqueItems": true, - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - } + "ZonalShiftConfig": { + "$ref": "#/definitions/ZonalShiftConfig" + } + }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ] + }, + "additionalProperties": false, + "required": [ + "RoleArn", + "ResourcesVpcConfig" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "createOnlyProperties": [ + "/properties/OutpostConfig", + "/properties/EncryptionConfig", + "/properties/KubernetesNetworkConfig", + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/Name", + "/properties/RoleArn", + "/properties/BootstrapSelfManagedAddons", + "/properties/RemoteNetworkConfig" + ], + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Endpoint", + "/properties/CertificateAuthorityData", + "/properties/ClusterSecurityGroupId", + "/properties/EncryptionConfigKeyArn", + "/properties/OpenIdConnectIssuerUrl", + "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" + ], + "writeOnlyProperties": [ + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/BootstrapSelfManagedAddons" + ], + "handlers": { + "create": { + "permissions": [ + "eks:CreateCluster", + "eks:DescribeCluster", + "eks:TagResource", + "eks:CreateAccessEntry", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:CreateServiceLinkedRole", + "iam:CreateInstanceProfile", + "iam:TagInstanceProfile", + "iam:AddRoleToInstanceProfile", + "iam:GetInstanceProfile", + "iam:DeleteInstanceProfile", + "iam:RemoveRoleFromInstanceProfile", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "kms:DescribeKey", + "kms:CreateGrant" + ] }, - "OpenIdConnectIssuerUrl": { - "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", - "type": "string" + "read": { + "permissions": [ + "eks:DescribeCluster" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "eks:UpdateClusterConfig", + "eks:UpdateClusterVersion", + "eks:DescribeCluster", + "eks:DescribeUpdate", + "eks:TagResource", + "eks:UntagResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "eks:DeleteCluster", + "eks:DescribeCluster" + ] + }, + "list": { + "permissions": [ + "eks:ListClusters" + ] } } } diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json index a2500cd818..d6d44ad65c 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_Listener.json @@ -286,7 +286,7 @@ "type": "string" }, "Protocol": { - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.", + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP.", "type": "string" }, "StatusCode": { @@ -495,7 +495,7 @@ } }, "Port": { - "description": "The port on which the load balancer is listening. You cannot specify a port for a Gateway Load Balancer.", + "description": "The port on which the load balancer is listening. You can't specify a port for a Gateway Load Balancer.", "type": "integer" }, "Certificates": { @@ -507,7 +507,7 @@ } }, "Protocol": { - "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer.", + "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer.", "type": "string" } } diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json index 56a76019b3..c38629eae5 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_ListenerRule.json @@ -302,7 +302,7 @@ }, "Protocol": { "type": "string", - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP." + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP." }, "StatusCode": { "type": "string", diff --git a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json index dab799fea0..b500b48ba8 100644 --- a/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json +++ b/internal/service/cloudformation/schemas/AWS_ElasticLoadBalancingV2_LoadBalancer.json @@ -7,11 +7,11 @@ "properties": { "IpAddressType": { "type": "string", - "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses)." + "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses)." }, "EnablePrefixForIpv6SourceNat": { "type": "string", - "description": "" + "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``." }, "SecurityGroups": { "type": "array", @@ -32,9 +32,14 @@ "$ref": "#/definitions/LoadBalancerAttribute" } }, + "MinimumLoadBalancerCapacity": { + "type": "object", + "description": "", + "$ref": "#/definitions/MinimumLoadBalancerCapacity" + }, "Scheme": { "type": "string", - "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer." + "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer." }, "DNSName": { "type": "string", @@ -54,7 +59,7 @@ }, "Subnets": { "type": "array", - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", "uniqueItems": true, "insertionOrder": false, "items": { @@ -84,7 +89,7 @@ }, "SubnetMappings": { "type": "array", - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", "uniqueItems": true, "insertionOrder": false, "items": { @@ -97,6 +102,19 @@ } }, "definitions": { + "MinimumLoadBalancerCapacity": { + "type": "object", + "additionalProperties": false, + "properties": { + "CapacityUnits": { + "type": "integer" + } + }, + "required": [ + "CapacityUnits" + ], + "description": "" + }, "SubnetMapping": { "type": "object", "additionalProperties": false, @@ -119,7 +137,7 @@ }, "SourceNatIpv6Prefix": { "type": "string", - "description": "" + "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block." } }, "required": [ @@ -137,7 +155,7 @@ }, "Key": { "type": "string", - "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``." + "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``." } }, "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer." @@ -213,12 +231,14 @@ "permissions": [ "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeCapacityReservation", "elasticloadbalancing:DescribeTags" ] }, "update": { "permissions": [ "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:ModifyCapacityReservation", "elasticloadbalancing:SetSubnets", "elasticloadbalancing:SetIpAddressType", "elasticloadbalancing:SetSecurityGroups", diff --git a/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json b/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json index d057f2f9a0..81a993ac8d 100644 --- a/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json +++ b/internal/service/cloudformation/schemas/AWS_IoT_DomainConfiguration.json @@ -23,6 +23,17 @@ "properties": { "EnableOCSPCheck": { "type": "boolean" + }, + "OcspLambdaArn": { + "type": "string", + "minLength": 1, + "maxLength": 170 + }, + "OcspAuthorizedResponderArn": { + "type": "string", + "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + "minLength": 1, + "maxLength": 2048 } }, "additionalProperties": false @@ -193,7 +204,12 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "iot:ListTagsForResource", + "iot:TagResource", + "iot:UntagResource" + ] }, "additionalProperties": false, "required": [], diff --git a/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json b/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json index 0ed6a9ae99..173a466437 100644 --- a/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json +++ b/internal/service/cloudformation/schemas/AWS_Organizations_Policy.json @@ -11,14 +11,15 @@ "maxLength": 128 }, "Type": { - "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", "type": "string", "enum": [ "SERVICE_CONTROL_POLICY", "AISERVICES_OPT_OUT_POLICY", "BACKUP_POLICY", "TAG_POLICY", - "CHATBOT_POLICY" + "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY" ] }, "Content": { diff --git a/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json b/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json index 0952cd06ae..8e6282dcfd 100644 --- a/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json +++ b/internal/service/cloudformation/schemas/AWS_QBusiness_Application.json @@ -316,7 +316,16 @@ } }, "tagging": { - "taggable": true + "taggable": true, + "tagUpdatable": true, + "tagOnCreate": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ] }, "additionalProperties": false } diff --git a/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json b/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json index 0e7bdea0a0..217250e429 100644 --- a/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json +++ b/internal/service/cloudformation/schemas/AWS_SageMaker_InferenceComponent.json @@ -41,9 +41,7 @@ }, "required": [ "EndpointName", - "VariantName", - "Specification", - "RuntimeConfig" + "Specification" ], "additionalProperties": false, "definitions": { @@ -155,6 +153,12 @@ "minimum": 60, "maximum": 3600 }, + "BaseInferenceComponentName": { + "description": "The name of the base inference component", + "type": "string", + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "maxLength": 63 + }, "InferenceComponentStartupParameters": { "description": "", "type": "object", @@ -207,6 +211,9 @@ "ModelName": { "$ref": "#/definitions/ModelName" }, + "BaseInferenceComponentName": { + "$ref": "#/definitions/BaseInferenceComponentName" + }, "Container": { "$ref": "#/definitions/InferenceComponentContainerSpecification" }, @@ -216,10 +223,7 @@ "ComputeResourceRequirements": { "$ref": "#/definitions/InferenceComponentComputeResourceRequirements" } - }, - "required": [ - "ComputeResourceRequirements" - ] + } }, "InferenceComponentCopyCount": { "description": "The number of copies for the inference component", diff --git a/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json b/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json index 68fc0a7775..d40038ca63 100644 --- a/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json +++ b/internal/service/cloudformation/schemas/AWS_Wisdom_KnowledgeBase.json @@ -33,7 +33,8 @@ "enum": [ "EXTERNAL", "CUSTOM", - "MESSAGE_TEMPLATES" + "MESSAGE_TEMPLATES", + "MANAGED" ] }, "RenderingConfiguration": { @@ -58,21 +59,281 @@ }, "additionalProperties": false }, - "SourceConfiguration": { + "SeedUrl": { + "type": "object", + "additionalProperties": false, + "properties": { + "Url": { + "type": "string", + "pattern": "^https?://[A-Za-z0-9][^\\s]*$" + } + } + }, + "UrlFilterPattern": { + "type": "string", + "maxLength": 1000, + "minLength": 1 + }, + "UrlFilterList": { + "type": "array", + "items": { + "$ref": "#/definitions/UrlFilterPattern" + }, + "maxItems": 25, + "minItems": 1 + }, + "WebCrawlerConfiguration": { "type": "object", + "additionalProperties": false, "properties": { - "AppIntegrations": { - "$ref": "#/definitions/AppIntegrationsConfiguration" + "UrlConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "SeedUrls": { + "type": "array", + "items": { + "$ref": "#/definitions/SeedUrl" + }, + "maxItems": 100, + "minItems": 1 + } + } + }, + "CrawlerLimits": { + "type": "object", + "additionalProperties": false, + "properties": { + "RateLimit": { + "type": "number", + "minimum": 1, + "maximum": 3000 + } + } + }, + "InclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "ExclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "Scope": { + "type": "string", + "enum": [ + "HOST_ONLY", + "SUBDOMAINS" + ] } }, + "required": [ + "UrlConfiguration" + ] + }, + "ManagedSourceConfiguration": { "oneOf": [ { + "type": "object", + "properties": { + "WebCrawlerConfiguration": { + "$ref": "#/definitions/WebCrawlerConfiguration" + } + }, "required": [ - "AppIntegrations" + "WebCrawlerConfiguration" + ], + "additionalProperties": false + } + ] + }, + "FixedSizeChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1 + }, + "OverlapPercentage": { + "type": "number", + "minimum": 1, + "maximum": 99 + } + }, + "required": [ + "MaxTokens", + "OverlapPercentage" + ] + }, + "HierarchicalChunkingLevelConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1, + "maximum": 8192 + } + }, + "required": [ + "MaxTokens" + ] + }, + "HierarchicalChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "LevelConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/HierarchicalChunkingLevelConfiguration" + }, + "maxItems": 2, + "minItems": 2 + }, + "OverlapTokens": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "LevelConfigurations", + "OverlapTokens" + ] + }, + "SemanticChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxTokens": { + "type": "number", + "minimum": 1 + }, + "BufferSize": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "BreakpointPercentileThreshold": { + "type": "number", + "minimum": 50, + "maximum": 99 + } + }, + "required": [ + "MaxTokens", + "BufferSize", + "BreakpointPercentileThreshold" + ] + }, + "BedrockFoundationModelConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ModelArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$" + }, + "ParsingPrompt": { + "type": "object", + "additionalProperties": false, + "properties": { + "ParsingPromptText": { + "type": "string", + "maxLength": 10000, + "minLength": 1 + } + }, + "required": [ + "ParsingPromptText" ] } - ], - "additionalProperties": false + }, + "required": [ + "ModelArn" + ] + }, + "VectorIngestionConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ChunkingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ChunkingStrategy": { + "type": "string", + "enum": [ + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC" + ] + }, + "FixedSizeChunkingConfiguration": { + "$ref": "#/definitions/FixedSizeChunkingConfiguration" + }, + "HierarchicalChunkingConfiguration": { + "$ref": "#/definitions/HierarchicalChunkingConfiguration" + }, + "SemanticChunkingConfiguration": { + "$ref": "#/definitions/SemanticChunkingConfiguration" + } + }, + "required": [ + "ChunkingStrategy" + ] + }, + "ParsingConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ParsingStrategy": { + "type": "string", + "enum": [ + "BEDROCK_FOUNDATION_MODEL" + ] + }, + "BedrockFoundationModelConfiguration": { + "$ref": "#/definitions/BedrockFoundationModelConfiguration" + } + }, + "required": [ + "ParsingStrategy" + ] + } + } + }, + "SourceConfiguration": { + "oneOf": [ + { + "type": "object", + "title": "AppIntegrationsConfiguration", + "properties": { + "AppIntegrations": { + "$ref": "#/definitions/AppIntegrationsConfiguration" + } + }, + "required": [ + "AppIntegrations" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "ManagedSourceConfiguration", + "properties": { + "ManagedSourceConfiguration": { + "$ref": "#/definitions/ManagedSourceConfiguration" + } + }, + "required": [ + "ManagedSourceConfiguration" + ], + "additionalProperties": false + } + ] }, "Tag": { "additionalProperties": false, @@ -127,6 +388,9 @@ "SourceConfiguration": { "$ref": "#/definitions/SourceConfiguration" }, + "VectorIngestionConfiguration": { + "$ref": "#/definitions/VectorIngestionConfiguration" + }, "Tags": { "insertionOrder": false, "uniqueItems": true, @@ -161,7 +425,16 @@ ] ], "additionalProperties": false, - "taggable": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": false, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "wisdom:TagResource" + ] + }, "replacementStrategy": "delete_then_create", "handlers": { "create": { From 4a44c82ade8a8b2672bd9cb637e55a8bea72cfb7 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 11:35:35 -0500 Subject: [PATCH 2/6] 2024/11/26 CloudFormation schemas in us-east-1; New schemas. --- internal/provider/all_schemas.hcl | 16 +- .../available_schemas.2024-11-26.hcl | 4687 +++++++++++++++++ internal/provider/import_examples_gen.json | 15 + internal/provider/plural_data_sources.go | 1 + internal/provider/resources.go | 3 + internal/provider/singular_data_sources.go | 3 + .../AWS_Cognito_ManagedLoginBranding.json | 165 + ...AWS_EC2_VPCBlockPublicAccessExclusion.json | 131 + .../AWS_EC2_VPCBlockPublicAccessOptions.json | 60 + 9 files changed, 5080 insertions(+), 1 deletion(-) create mode 100644 internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl create mode 100644 internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json create mode 100644 internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json create mode 100644 internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl index 025f16fe85..0e21e8e698 100644 --- a/internal/provider/all_schemas.hcl +++ b/internal/provider/all_schemas.hcl @@ -10,7 +10,7 @@ meta_schema { path = "../service/cloudformation/meta-schemas/provider.definition.schema.v1.json" } -# 1074 CloudFormation resource types schemas are available for use with the Cloud Control API. +# 1103 CloudFormation resource types schemas are available for use with the Cloud Control API. resource_schema "aws_acmpca_certificate" { cloudformation_type_name = "AWS::ACMPCA::Certificate" @@ -974,6 +974,11 @@ resource_schema "aws_cognito_log_delivery_configuration" { suppress_plural_data_source_generation = true } +resource_schema "aws_cognito_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + suppress_plural_data_source_generation = true +} + resource_schema "aws_cognito_user_pool" { cloudformation_type_name = "AWS::Cognito::UserPool" @@ -1789,6 +1794,15 @@ resource_schema "aws_ec2_vpc" { cloudformation_type_name = "AWS::EC2::VPC" } +resource_schema "aws_ec2_vpc_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + resource_schema "aws_ec2_vpc_cidr_block" { cloudformation_type_name = "AWS::EC2::VPCCidrBlock" suppress_plural_data_source_generation = true diff --git a/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl b/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl new file mode 100644 index 0000000000..14061aa660 --- /dev/null +++ b/internal/provider/generators/allschemas/available_schemas.2024-11-26.hcl @@ -0,0 +1,4687 @@ +# 1103 CloudFormation resource types schemas are available for use with the Cloud Control API. + +resource_schema "aws_acmpca_certificate" { + cloudformation_type_name = "AWS::ACMPCA::Certificate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_certificate_authority" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthority" +} + +resource_schema "aws_acmpca_certificate_authority_activation" { + cloudformation_type_name = "AWS::ACMPCA::CertificateAuthorityActivation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_acmpca_permission" { + cloudformation_type_name = "AWS::ACMPCA::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_rule_groups_namespace" { + cloudformation_type_name = "AWS::APS::RuleGroupsNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_aps_scraper" { + cloudformation_type_name = "AWS::APS::Scraper" +} + +resource_schema "aws_aps_workspace" { + cloudformation_type_name = "AWS::APS::Workspace" +} + +resource_schema "aws_arczonalshift_autoshift_observer_notification_status" { + cloudformation_type_name = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} + +resource_schema "aws_arczonalshift_zonal_autoshift_configuration" { + cloudformation_type_name = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} + +resource_schema "aws_accessanalyzer_analyzer" { + cloudformation_type_name = "AWS::AccessAnalyzer::Analyzer" +} + +resource_schema "aws_amazonmq_configuration" { + cloudformation_type_name = "AWS::AmazonMQ::Configuration" +} + +resource_schema "aws_amplify_app" { + cloudformation_type_name = "AWS::Amplify::App" +} + +resource_schema "aws_amplify_branch" { + cloudformation_type_name = "AWS::Amplify::Branch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplify_domain" { + cloudformation_type_name = "AWS::Amplify::Domain" +} + +resource_schema "aws_amplifyuibuilder_component" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_form" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Form" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_amplifyuibuilder_theme" { + cloudformation_type_name = "AWS::AmplifyUIBuilder::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_account" { + cloudformation_type_name = "AWS::ApiGateway::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_api_key" { + cloudformation_type_name = "AWS::ApiGateway::ApiKey" +} + +resource_schema "aws_apigateway_authorizer" { + cloudformation_type_name = "AWS::ApiGateway::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMapping" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_base_path_mapping_v2" { + cloudformation_type_name = "AWS::ApiGateway::BasePathMappingV2" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_client_certificate" { + cloudformation_type_name = "AWS::ApiGateway::ClientCertificate" +} + +resource_schema "aws_apigateway_deployment" { + cloudformation_type_name = "AWS::ApiGateway::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_part" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationPart" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_documentation_version" { + cloudformation_type_name = "AWS::ApiGateway::DocumentationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_domain_name" { + cloudformation_type_name = "AWS::ApiGateway::DomainName" +} + +resource_schema "aws_apigateway_domain_name_access_association" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameAccessAssociation" +} + +resource_schema "aws_apigateway_domain_name_v2" { + cloudformation_type_name = "AWS::ApiGateway::DomainNameV2" +} + +resource_schema "aws_apigateway_gateway_response" { + cloudformation_type_name = "AWS::ApiGateway::GatewayResponse" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_method" { + cloudformation_type_name = "AWS::ApiGateway::Method" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_model" { + cloudformation_type_name = "AWS::ApiGateway::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_request_validator" { + cloudformation_type_name = "AWS::ApiGateway::RequestValidator" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_resource" { + cloudformation_type_name = "AWS::ApiGateway::Resource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_rest_api" { + cloudformation_type_name = "AWS::ApiGateway::RestApi" +} + +resource_schema "aws_apigateway_stage" { + cloudformation_type_name = "AWS::ApiGateway::Stage" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_usage_plan" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlan" +} + +resource_schema "aws_apigateway_usage_plan_key" { + cloudformation_type_name = "AWS::ApiGateway::UsagePlanKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigateway_vpc_link" { + cloudformation_type_name = "AWS::ApiGateway::VpcLink" +} + +resource_schema "aws_apigatewayv2_api" { + cloudformation_type_name = "AWS::ApiGatewayV2::Api" +} + +resource_schema "aws_apigatewayv2_api_mapping" { + cloudformation_type_name = "AWS::ApiGatewayV2::ApiMapping" +} + +resource_schema "aws_apigatewayv2_authorizer" { + cloudformation_type_name = "AWS::ApiGatewayV2::Authorizer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_deployment" { + cloudformation_type_name = "AWS::ApiGatewayV2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_domain_name" { + cloudformation_type_name = "AWS::ApiGatewayV2::DomainName" +} + +resource_schema "aws_apigatewayv2_integration" { + cloudformation_type_name = "AWS::ApiGatewayV2::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_integration_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::IntegrationResponse" +} + +resource_schema "aws_apigatewayv2_model" { + cloudformation_type_name = "AWS::ApiGatewayV2::Model" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route" { + cloudformation_type_name = "AWS::ApiGatewayV2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apigatewayv2_route_response" { + cloudformation_type_name = "AWS::ApiGatewayV2::RouteResponse" +} + +resource_schema "aws_apigatewayv2_vpc_link" { + cloudformation_type_name = "AWS::ApiGatewayV2::VpcLink" +} + +resource_schema "aws_appconfig_application" { + cloudformation_type_name = "AWS::AppConfig::Application" +} + +resource_schema "aws_appconfig_configuration_profile" { + cloudformation_type_name = "AWS::AppConfig::ConfigurationProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_deployment_strategy" { + cloudformation_type_name = "AWS::AppConfig::DeploymentStrategy" +} + +resource_schema "aws_appconfig_environment" { + cloudformation_type_name = "AWS::AppConfig::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appconfig_extension" { + cloudformation_type_name = "AWS::AppConfig::Extension" +} + +resource_schema "aws_appconfig_extension_association" { + cloudformation_type_name = "AWS::AppConfig::ExtensionAssociation" +} + +resource_schema "aws_appconfig_hosted_configuration_version" { + cloudformation_type_name = "AWS::AppConfig::HostedConfigurationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appflow_connector" { + cloudformation_type_name = "AWS::AppFlow::Connector" +} + +resource_schema "aws_appflow_connector_profile" { + cloudformation_type_name = "AWS::AppFlow::ConnectorProfile" +} + +resource_schema "aws_appflow_flow" { + cloudformation_type_name = "AWS::AppFlow::Flow" +} + +resource_schema "aws_appintegrations_application" { + cloudformation_type_name = "AWS::AppIntegrations::Application" +} + +resource_schema "aws_appintegrations_data_integration" { + cloudformation_type_name = "AWS::AppIntegrations::DataIntegration" +} + +resource_schema "aws_appintegrations_event_integration" { + cloudformation_type_name = "AWS::AppIntegrations::EventIntegration" +} + +resource_schema "aws_apprunner_auto_scaling_configuration" { + cloudformation_type_name = "AWS::AppRunner::AutoScalingConfiguration" +} + +resource_schema "aws_apprunner_observability_configuration" { + cloudformation_type_name = "AWS::AppRunner::ObservabilityConfiguration" +} + +resource_schema "aws_apprunner_service" { + cloudformation_type_name = "AWS::AppRunner::Service" +} + +resource_schema "aws_apprunner_vpc_connector" { + cloudformation_type_name = "AWS::AppRunner::VpcConnector" +} + +resource_schema "aws_apprunner_vpc_ingress_connection" { + cloudformation_type_name = "AWS::AppRunner::VpcIngressConnection" +} + +resource_schema "aws_appstream_app_block" { + cloudformation_type_name = "AWS::AppStream::AppBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_app_block_builder" { + cloudformation_type_name = "AWS::AppStream::AppBlockBuilder" +} + +resource_schema "aws_appstream_application" { + cloudformation_type_name = "AWS::AppStream::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_entitlement_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationEntitlementAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_application_fleet_association" { + cloudformation_type_name = "AWS::AppStream::ApplicationFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_directory_config" { + cloudformation_type_name = "AWS::AppStream::DirectoryConfig" +} + +resource_schema "aws_appstream_entitlement" { + cloudformation_type_name = "AWS::AppStream::Entitlement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appstream_image_builder" { + cloudformation_type_name = "AWS::AppStream::ImageBuilder" +} + +resource_schema "aws_appsync_api" { + cloudformation_type_name = "AWS::AppSync::Api" +} + +resource_schema "aws_appsync_channel_namespace" { + cloudformation_type_name = "AWS::AppSync::ChannelNamespace" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_data_source" { + cloudformation_type_name = "AWS::AppSync::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_domain_name" { + cloudformation_type_name = "AWS::AppSync::DomainName" +} + +resource_schema "aws_appsync_domain_name_api_association" { + cloudformation_type_name = "AWS::AppSync::DomainNameApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_function_configuration" { + cloudformation_type_name = "AWS::AppSync::FunctionConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_graph_ql_api" { + cloudformation_type_name = "AWS::AppSync::GraphQLApi" +} + +resource_schema "aws_appsync_resolver" { + cloudformation_type_name = "AWS::AppSync::Resolver" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_appsync_source_api_association" { + cloudformation_type_name = "AWS::AppSync::SourceApiAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_apptest_test_case" { + cloudformation_type_name = "AWS::AppTest::TestCase" +} + +resource_schema "aws_applicationautoscaling_scalable_target" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalableTarget" +} + +resource_schema "aws_applicationautoscaling_scaling_policy" { + cloudformation_type_name = "AWS::ApplicationAutoScaling::ScalingPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_applicationinsights_application" { + cloudformation_type_name = "AWS::ApplicationInsights::Application" +} + +resource_schema "aws_applicationsignals_service_level_objective" { + cloudformation_type_name = "AWS::ApplicationSignals::ServiceLevelObjective" +} + +resource_schema "aws_athena_capacity_reservation" { + cloudformation_type_name = "AWS::Athena::CapacityReservation" +} + +resource_schema "aws_athena_data_catalog" { + cloudformation_type_name = "AWS::Athena::DataCatalog" +} + +resource_schema "aws_athena_named_query" { + cloudformation_type_name = "AWS::Athena::NamedQuery" +} + +resource_schema "aws_athena_prepared_statement" { + cloudformation_type_name = "AWS::Athena::PreparedStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_athena_work_group" { + cloudformation_type_name = "AWS::Athena::WorkGroup" +} + +resource_schema "aws_auditmanager_assessment" { + cloudformation_type_name = "AWS::AuditManager::Assessment" +} + +resource_schema "aws_autoscaling_auto_scaling_group" { + cloudformation_type_name = "AWS::AutoScaling::AutoScalingGroup" +} + +resource_schema "aws_autoscaling_launch_configuration" { + cloudformation_type_name = "AWS::AutoScaling::LaunchConfiguration" +} + +resource_schema "aws_autoscaling_lifecycle_hook" { + cloudformation_type_name = "AWS::AutoScaling::LifecycleHook" +} + +resource_schema "aws_autoscaling_scaling_policy" { + cloudformation_type_name = "AWS::AutoScaling::ScalingPolicy" +} + +resource_schema "aws_autoscaling_scheduled_action" { + cloudformation_type_name = "AWS::AutoScaling::ScheduledAction" +} + +resource_schema "aws_autoscaling_warm_pool" { + cloudformation_type_name = "AWS::AutoScaling::WarmPool" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_b2bi_capability" { + cloudformation_type_name = "AWS::B2BI::Capability" +} + +resource_schema "aws_b2bi_partnership" { + cloudformation_type_name = "AWS::B2BI::Partnership" +} + +resource_schema "aws_b2bi_profile" { + cloudformation_type_name = "AWS::B2BI::Profile" +} + +resource_schema "aws_b2bi_transformer" { + cloudformation_type_name = "AWS::B2BI::Transformer" +} + +resource_schema "aws_bcmdataexports_export" { + cloudformation_type_name = "AWS::BCMDataExports::Export" +} + +resource_schema "aws_backup_backup_plan" { + cloudformation_type_name = "AWS::Backup::BackupPlan" +} + +resource_schema "aws_backup_backup_selection" { + cloudformation_type_name = "AWS::Backup::BackupSelection" +} + +resource_schema "aws_backup_backup_vault" { + cloudformation_type_name = "AWS::Backup::BackupVault" +} + +resource_schema "aws_backup_framework" { + cloudformation_type_name = "AWS::Backup::Framework" +} + +resource_schema "aws_backup_logically_air_gapped_backup_vault" { + cloudformation_type_name = "AWS::Backup::LogicallyAirGappedBackupVault" +} + +resource_schema "aws_backup_report_plan" { + cloudformation_type_name = "AWS::Backup::ReportPlan" +} + +resource_schema "aws_backup_restore_testing_plan" { + cloudformation_type_name = "AWS::Backup::RestoreTestingPlan" +} + +resource_schema "aws_backup_restore_testing_selection" { + cloudformation_type_name = "AWS::Backup::RestoreTestingSelection" +} + +resource_schema "aws_backupgateway_hypervisor" { + cloudformation_type_name = "AWS::BackupGateway::Hypervisor" +} + +resource_schema "aws_batch_compute_environment" { + cloudformation_type_name = "AWS::Batch::ComputeEnvironment" +} + +resource_schema "aws_batch_job_queue" { + cloudformation_type_name = "AWS::Batch::JobQueue" +} + +resource_schema "aws_batch_scheduling_policy" { + cloudformation_type_name = "AWS::Batch::SchedulingPolicy" +} + +resource_schema "aws_bedrock_agent" { + cloudformation_type_name = "AWS::Bedrock::Agent" +} + +resource_schema "aws_bedrock_agent_alias" { + cloudformation_type_name = "AWS::Bedrock::AgentAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_application_inference_profile" { + cloudformation_type_name = "AWS::Bedrock::ApplicationInferenceProfile" +} + +resource_schema "aws_bedrock_data_source" { + cloudformation_type_name = "AWS::Bedrock::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow" { + cloudformation_type_name = "AWS::Bedrock::Flow" +} + +resource_schema "aws_bedrock_flow_alias" { + cloudformation_type_name = "AWS::Bedrock::FlowAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_flow_version" { + cloudformation_type_name = "AWS::Bedrock::FlowVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_guardrail" { + cloudformation_type_name = "AWS::Bedrock::Guardrail" +} + +resource_schema "aws_bedrock_guardrail_version" { + cloudformation_type_name = "AWS::Bedrock::GuardrailVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_bedrock_knowledge_base" { + cloudformation_type_name = "AWS::Bedrock::KnowledgeBase" +} + +resource_schema "aws_bedrock_prompt" { + cloudformation_type_name = "AWS::Bedrock::Prompt" +} + +resource_schema "aws_bedrock_prompt_version" { + cloudformation_type_name = "AWS::Bedrock::PromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_billingconductor_billing_group" { + cloudformation_type_name = "AWS::BillingConductor::BillingGroup" +} + +resource_schema "aws_billingconductor_custom_line_item" { + cloudformation_type_name = "AWS::BillingConductor::CustomLineItem" +} + +resource_schema "aws_billingconductor_pricing_plan" { + cloudformation_type_name = "AWS::BillingConductor::PricingPlan" +} + +resource_schema "aws_billingconductor_pricing_rule" { + cloudformation_type_name = "AWS::BillingConductor::PricingRule" +} + +resource_schema "aws_budgets_budgets_action" { + cloudformation_type_name = "AWS::Budgets::BudgetsAction" +} + +resource_schema "aws_ce_anomaly_monitor" { + cloudformation_type_name = "AWS::CE::AnomalyMonitor" +} + +resource_schema "aws_ce_anomaly_subscription" { + cloudformation_type_name = "AWS::CE::AnomalySubscription" +} + +resource_schema "aws_ce_cost_category" { + cloudformation_type_name = "AWS::CE::CostCategory" +} + +resource_schema "aws_cur_report_definition" { + cloudformation_type_name = "AWS::CUR::ReportDefinition" +} + +resource_schema "aws_cassandra_keyspace" { + cloudformation_type_name = "AWS::Cassandra::Keyspace" +} + +resource_schema "aws_cassandra_table" { + cloudformation_type_name = "AWS::Cassandra::Table" +} + +resource_schema "aws_certificatemanager_account" { + cloudformation_type_name = "AWS::CertificateManager::Account" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_chatbot_custom_action" { + cloudformation_type_name = "AWS::Chatbot::CustomAction" +} + +resource_schema "aws_chatbot_microsoft_teams_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} + +resource_schema "aws_chatbot_slack_channel_configuration" { + cloudformation_type_name = "AWS::Chatbot::SlackChannelConfiguration" +} + +resource_schema "aws_cleanrooms_analysis_template" { + cloudformation_type_name = "AWS::CleanRooms::AnalysisTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_collaboration" { + cloudformation_type_name = "AWS::CleanRooms::Collaboration" +} + +resource_schema "aws_cleanrooms_configured_table" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTable" +} + +resource_schema "aws_cleanrooms_configured_table_association" { + cloudformation_type_name = "AWS::CleanRooms::ConfiguredTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_mapping_table" { + cloudformation_type_name = "AWS::CleanRooms::IdMappingTable" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_id_namespace_association" { + cloudformation_type_name = "AWS::CleanRooms::IdNamespaceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanrooms_membership" { + cloudformation_type_name = "AWS::CleanRooms::Membership" +} + +resource_schema "aws_cleanrooms_privacy_budget_template" { + cloudformation_type_name = "AWS::CleanRooms::PrivacyBudgetTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cleanroomsml_training_dataset" { + cloudformation_type_name = "AWS::CleanRoomsML::TrainingDataset" +} + +resource_schema "aws_cloudformation_guard_hook" { + cloudformation_type_name = "AWS::CloudFormation::GuardHook" +} + +resource_schema "aws_cloudformation_hook_default_version" { + cloudformation_type_name = "AWS::CloudFormation::HookDefaultVersion" +} + +resource_schema "aws_cloudformation_hook_type_config" { + cloudformation_type_name = "AWS::CloudFormation::HookTypeConfig" +} + +resource_schema "aws_cloudformation_hook_version" { + cloudformation_type_name = "AWS::CloudFormation::HookVersion" +} + +resource_schema "aws_cloudformation_lambda_hook" { + cloudformation_type_name = "AWS::CloudFormation::LambdaHook" +} + +resource_schema "aws_cloudformation_module_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleDefaultVersion" +} + +resource_schema "aws_cloudformation_module_version" { + cloudformation_type_name = "AWS::CloudFormation::ModuleVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudformation_public_type_version" { + cloudformation_type_name = "AWS::CloudFormation::PublicTypeVersion" +} + +resource_schema "aws_cloudformation_publisher" { + cloudformation_type_name = "AWS::CloudFormation::Publisher" +} + +resource_schema "aws_cloudformation_resource_default_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceDefaultVersion" +} + +resource_schema "aws_cloudformation_resource_version" { + cloudformation_type_name = "AWS::CloudFormation::ResourceVersion" +} + +resource_schema "aws_cloudformation_stack" { + cloudformation_type_name = "AWS::CloudFormation::Stack" +} + +resource_schema "aws_cloudformation_stack_set" { + cloudformation_type_name = "AWS::CloudFormation::StackSet" +} + +resource_schema "aws_cloudformation_type_activation" { + cloudformation_type_name = "AWS::CloudFormation::TypeActivation" +} + +resource_schema "aws_cloudfront_cache_policy" { + cloudformation_type_name = "AWS::CloudFront::CachePolicy" +} + +resource_schema "aws_cloudfront_cloudfront_origin_access_identity" { + cloudformation_type_name = "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} + +resource_schema "aws_cloudfront_continuous_deployment_policy" { + cloudformation_type_name = "AWS::CloudFront::ContinuousDeploymentPolicy" +} + +resource_schema "aws_cloudfront_distribution" { + cloudformation_type_name = "AWS::CloudFront::Distribution" +} + +resource_schema "aws_cloudfront_function" { + cloudformation_type_name = "AWS::CloudFront::Function" +} + +resource_schema "aws_cloudfront_key_group" { + cloudformation_type_name = "AWS::CloudFront::KeyGroup" +} + +resource_schema "aws_cloudfront_key_value_store" { + cloudformation_type_name = "AWS::CloudFront::KeyValueStore" +} + +resource_schema "aws_cloudfront_monitoring_subscription" { + cloudformation_type_name = "AWS::CloudFront::MonitoringSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudfront_origin_access_control" { + cloudformation_type_name = "AWS::CloudFront::OriginAccessControl" +} + +resource_schema "aws_cloudfront_origin_request_policy" { + cloudformation_type_name = "AWS::CloudFront::OriginRequestPolicy" +} + +resource_schema "aws_cloudfront_public_key" { + cloudformation_type_name = "AWS::CloudFront::PublicKey" +} + +resource_schema "aws_cloudfront_realtime_log_config" { + cloudformation_type_name = "AWS::CloudFront::RealtimeLogConfig" +} + +resource_schema "aws_cloudfront_response_headers_policy" { + cloudformation_type_name = "AWS::CloudFront::ResponseHeadersPolicy" +} + +resource_schema "aws_cloudtrail_channel" { + cloudformation_type_name = "AWS::CloudTrail::Channel" +} + +resource_schema "aws_cloudtrail_dashboard" { + cloudformation_type_name = "AWS::CloudTrail::Dashboard" +} + +resource_schema "aws_cloudtrail_event_data_store" { + cloudformation_type_name = "AWS::CloudTrail::EventDataStore" +} + +resource_schema "aws_cloudtrail_resource_policy" { + cloudformation_type_name = "AWS::CloudTrail::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cloudtrail_trail" { + cloudformation_type_name = "AWS::CloudTrail::Trail" +} + +resource_schema "aws_cloudwatch_alarm" { + cloudformation_type_name = "AWS::CloudWatch::Alarm" +} + +resource_schema "aws_cloudwatch_composite_alarm" { + cloudformation_type_name = "AWS::CloudWatch::CompositeAlarm" +} + +resource_schema "aws_cloudwatch_dashboard" { + cloudformation_type_name = "AWS::CloudWatch::Dashboard" +} + +resource_schema "aws_cloudwatch_metric_stream" { + cloudformation_type_name = "AWS::CloudWatch::MetricStream" +} + +resource_schema "aws_codeartifact_domain" { + cloudformation_type_name = "AWS::CodeArtifact::Domain" +} + +resource_schema "aws_codeartifact_package_group" { + cloudformation_type_name = "AWS::CodeArtifact::PackageGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_codeartifact_repository" { + cloudformation_type_name = "AWS::CodeArtifact::Repository" +} + +resource_schema "aws_codebuild_fleet" { + cloudformation_type_name = "AWS::CodeBuild::Fleet" +} + +resource_schema "aws_codeconnections_connection" { + cloudformation_type_name = "AWS::CodeConnections::Connection" +} + +resource_schema "aws_codedeploy_application" { + cloudformation_type_name = "AWS::CodeDeploy::Application" +} + +resource_schema "aws_codedeploy_deployment_config" { + cloudformation_type_name = "AWS::CodeDeploy::DeploymentConfig" +} + +resource_schema "aws_codeguruprofiler_profiling_group" { + cloudformation_type_name = "AWS::CodeGuruProfiler::ProfilingGroup" +} + +resource_schema "aws_codegurureviewer_repository_association" { + cloudformation_type_name = "AWS::CodeGuruReviewer::RepositoryAssociation" +} + +resource_schema "aws_codepipeline_custom_action_type" { + cloudformation_type_name = "AWS::CodePipeline::CustomActionType" +} + +resource_schema "aws_codepipeline_pipeline" { + cloudformation_type_name = "AWS::CodePipeline::Pipeline" +} + +resource_schema "aws_codestarconnections_connection" { + cloudformation_type_name = "AWS::CodeStarConnections::Connection" +} + +resource_schema "aws_codestarconnections_repository_link" { + cloudformation_type_name = "AWS::CodeStarConnections::RepositoryLink" +} + +resource_schema "aws_codestarconnections_sync_configuration" { + cloudformation_type_name = "AWS::CodeStarConnections::SyncConfiguration" +} + +resource_schema "aws_codestarnotifications_notification_rule" { + cloudformation_type_name = "AWS::CodeStarNotifications::NotificationRule" +} + +resource_schema "aws_cognito_identity_pool" { + cloudformation_type_name = "AWS::Cognito::IdentityPool" +} + +resource_schema "aws_cognito_identity_pool_principal_tag" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolPrincipalTag" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_identity_pool_role_attachment" { + cloudformation_type_name = "AWS::Cognito::IdentityPoolRoleAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_log_delivery_configuration" { + cloudformation_type_name = "AWS::Cognito::LogDeliveryConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_managed_login_branding" { + cloudformation_type_name = "AWS::Cognito::ManagedLoginBranding" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool" { + cloudformation_type_name = "AWS::Cognito::UserPool" +} + +resource_schema "aws_cognito_user_pool_client" { + cloudformation_type_name = "AWS::Cognito::UserPoolClient" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_group" { + cloudformation_type_name = "AWS::Cognito::UserPoolGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_identity_provider" { + cloudformation_type_name = "AWS::Cognito::UserPoolIdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_resource_server" { + cloudformation_type_name = "AWS::Cognito::UserPoolResourceServer" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_risk_configuration_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolRiskConfigurationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_ui_customization_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUICustomizationAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user" { + cloudformation_type_name = "AWS::Cognito::UserPoolUser" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_cognito_user_pool_user_to_group_attachment" { + cloudformation_type_name = "AWS::Cognito::UserPoolUserToGroupAttachment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_comprehend_document_classifier" { + cloudformation_type_name = "AWS::Comprehend::DocumentClassifier" +} + +resource_schema "aws_comprehend_flywheel" { + cloudformation_type_name = "AWS::Comprehend::Flywheel" +} + +resource_schema "aws_config_aggregation_authorization" { + cloudformation_type_name = "AWS::Config::AggregationAuthorization" +} + +resource_schema "aws_config_config_rule" { + cloudformation_type_name = "AWS::Config::ConfigRule" +} + +resource_schema "aws_config_configuration_aggregator" { + cloudformation_type_name = "AWS::Config::ConfigurationAggregator" +} + +resource_schema "aws_config_conformance_pack" { + cloudformation_type_name = "AWS::Config::ConformancePack" +} + +resource_schema "aws_config_organization_conformance_pack" { + cloudformation_type_name = "AWS::Config::OrganizationConformancePack" +} + +resource_schema "aws_config_stored_query" { + cloudformation_type_name = "AWS::Config::StoredQuery" +} + +resource_schema "aws_connect_agent_status" { + cloudformation_type_name = "AWS::Connect::AgentStatus" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_approved_origin" { + cloudformation_type_name = "AWS::Connect::ApprovedOrigin" +} + +resource_schema "aws_connect_contact_flow" { + cloudformation_type_name = "AWS::Connect::ContactFlow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_contact_flow_module" { + cloudformation_type_name = "AWS::Connect::ContactFlowModule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_email_address" { + cloudformation_type_name = "AWS::Connect::EmailAddress" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_evaluation_form" { + cloudformation_type_name = "AWS::Connect::EvaluationForm" +} + +resource_schema "aws_connect_hours_of_operation" { + cloudformation_type_name = "AWS::Connect::HoursOfOperation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_instance" { + cloudformation_type_name = "AWS::Connect::Instance" +} + +resource_schema "aws_connect_instance_storage_config" { + cloudformation_type_name = "AWS::Connect::InstanceStorageConfig" +} + +resource_schema "aws_connect_integration_association" { + cloudformation_type_name = "AWS::Connect::IntegrationAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_phone_number" { + cloudformation_type_name = "AWS::Connect::PhoneNumber" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_predefined_attribute" { + cloudformation_type_name = "AWS::Connect::PredefinedAttribute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_prompt" { + cloudformation_type_name = "AWS::Connect::Prompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_queue" { + cloudformation_type_name = "AWS::Connect::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_quick_connect" { + cloudformation_type_name = "AWS::Connect::QuickConnect" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_routing_profile" { + cloudformation_type_name = "AWS::Connect::RoutingProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_rule" { + cloudformation_type_name = "AWS::Connect::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_security_key" { + cloudformation_type_name = "AWS::Connect::SecurityKey" +} + +resource_schema "aws_connect_security_profile" { + cloudformation_type_name = "AWS::Connect::SecurityProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_task_template" { + cloudformation_type_name = "AWS::Connect::TaskTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_traffic_distribution_group" { + cloudformation_type_name = "AWS::Connect::TrafficDistributionGroup" +} + +resource_schema "aws_connect_user" { + cloudformation_type_name = "AWS::Connect::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_group" { + cloudformation_type_name = "AWS::Connect::UserHierarchyGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_user_hierarchy_structure" { + cloudformation_type_name = "AWS::Connect::UserHierarchyStructure" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view" { + cloudformation_type_name = "AWS::Connect::View" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connect_view_version" { + cloudformation_type_name = "AWS::Connect::ViewVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_connectcampaigns_campaign" { + cloudformation_type_name = "AWS::ConnectCampaigns::Campaign" +} + +resource_schema "aws_connectcampaignsv2_campaign" { + cloudformation_type_name = "AWS::ConnectCampaignsV2::Campaign" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_enabled_baseline" { + cloudformation_type_name = "AWS::ControlTower::EnabledBaseline" +} + +resource_schema "aws_controltower_enabled_control" { + cloudformation_type_name = "AWS::ControlTower::EnabledControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_controltower_landing_zone" { + cloudformation_type_name = "AWS::ControlTower::LandingZone" +} + +resource_schema "aws_customerprofiles_calculated_attribute_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::CalculatedAttributeDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_domain" { + cloudformation_type_name = "AWS::CustomerProfiles::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_event_stream" { + cloudformation_type_name = "AWS::CustomerProfiles::EventStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_integration" { + cloudformation_type_name = "AWS::CustomerProfiles::Integration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_object_type" { + cloudformation_type_name = "AWS::CustomerProfiles::ObjectType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_customerprofiles_segment_definition" { + cloudformation_type_name = "AWS::CustomerProfiles::SegmentDefinition" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_dms_data_migration" { + cloudformation_type_name = "AWS::DMS::DataMigration" +} + +resource_schema "aws_dms_data_provider" { + cloudformation_type_name = "AWS::DMS::DataProvider" +} + +resource_schema "aws_dms_instance_profile" { + cloudformation_type_name = "AWS::DMS::InstanceProfile" +} + +resource_schema "aws_dms_migration_project" { + cloudformation_type_name = "AWS::DMS::MigrationProject" +} + +resource_schema "aws_dms_replication_config" { + cloudformation_type_name = "AWS::DMS::ReplicationConfig" +} + +resource_schema "aws_databrew_dataset" { + cloudformation_type_name = "AWS::DataBrew::Dataset" +} + +resource_schema "aws_databrew_job" { + cloudformation_type_name = "AWS::DataBrew::Job" +} + +resource_schema "aws_databrew_project" { + cloudformation_type_name = "AWS::DataBrew::Project" +} + +resource_schema "aws_databrew_recipe" { + cloudformation_type_name = "AWS::DataBrew::Recipe" +} + +resource_schema "aws_databrew_ruleset" { + cloudformation_type_name = "AWS::DataBrew::Ruleset" +} + +resource_schema "aws_databrew_schedule" { + cloudformation_type_name = "AWS::DataBrew::Schedule" +} + +resource_schema "aws_datapipeline_pipeline" { + cloudformation_type_name = "AWS::DataPipeline::Pipeline" +} + +resource_schema "aws_datasync_agent" { + cloudformation_type_name = "AWS::DataSync::Agent" +} + +resource_schema "aws_datasync_location_azure_blob" { + cloudformation_type_name = "AWS::DataSync::LocationAzureBlob" +} + +resource_schema "aws_datasync_location_efs" { + cloudformation_type_name = "AWS::DataSync::LocationEFS" +} + +resource_schema "aws_datasync_location_fsx_lustre" { + cloudformation_type_name = "AWS::DataSync::LocationFSxLustre" +} + +resource_schema "aws_datasync_location_fsx_ontap" { + cloudformation_type_name = "AWS::DataSync::LocationFSxONTAP" +} + +resource_schema "aws_datasync_location_fsx_open_zfs" { + cloudformation_type_name = "AWS::DataSync::LocationFSxOpenZFS" +} + +resource_schema "aws_datasync_location_fsx_windows" { + cloudformation_type_name = "AWS::DataSync::LocationFSxWindows" +} + +resource_schema "aws_datasync_location_hdfs" { + cloudformation_type_name = "AWS::DataSync::LocationHDFS" +} + +resource_schema "aws_datasync_location_nfs" { + cloudformation_type_name = "AWS::DataSync::LocationNFS" +} + +resource_schema "aws_datasync_location_object_storage" { + cloudformation_type_name = "AWS::DataSync::LocationObjectStorage" +} + +resource_schema "aws_datasync_location_s3" { + cloudformation_type_name = "AWS::DataSync::LocationS3" +} + +resource_schema "aws_datasync_location_smb" { + cloudformation_type_name = "AWS::DataSync::LocationSMB" +} + +resource_schema "aws_datasync_storage_system" { + cloudformation_type_name = "AWS::DataSync::StorageSystem" +} + +resource_schema "aws_datasync_task" { + cloudformation_type_name = "AWS::DataSync::Task" +} + +resource_schema "aws_datazone_data_source" { + cloudformation_type_name = "AWS::DataZone::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_domain" { + cloudformation_type_name = "AWS::DataZone::Domain" +} + +resource_schema "aws_datazone_environment" { + cloudformation_type_name = "AWS::DataZone::Environment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_actions" { + cloudformation_type_name = "AWS::DataZone::EnvironmentActions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_blueprint_configuration" { + cloudformation_type_name = "AWS::DataZone::EnvironmentBlueprintConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_environment_profile" { + cloudformation_type_name = "AWS::DataZone::EnvironmentProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_group_profile" { + cloudformation_type_name = "AWS::DataZone::GroupProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project" { + cloudformation_type_name = "AWS::DataZone::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_project_membership" { + cloudformation_type_name = "AWS::DataZone::ProjectMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_subscription_target" { + cloudformation_type_name = "AWS::DataZone::SubscriptionTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_datazone_user_profile" { + cloudformation_type_name = "AWS::DataZone::UserProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_farm" { + cloudformation_type_name = "AWS::Deadline::Farm" +} + +resource_schema "aws_deadline_fleet" { + cloudformation_type_name = "AWS::Deadline::Fleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_license_endpoint" { + cloudformation_type_name = "AWS::Deadline::LicenseEndpoint" +} + +resource_schema "aws_deadline_metered_product" { + cloudformation_type_name = "AWS::Deadline::MeteredProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_monitor" { + cloudformation_type_name = "AWS::Deadline::Monitor" +} + +resource_schema "aws_deadline_queue" { + cloudformation_type_name = "AWS::Deadline::Queue" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_environment" { + cloudformation_type_name = "AWS::Deadline::QueueEnvironment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_queue_fleet_association" { + cloudformation_type_name = "AWS::Deadline::QueueFleetAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_deadline_storage_profile" { + cloudformation_type_name = "AWS::Deadline::StorageProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_detective_graph" { + cloudformation_type_name = "AWS::Detective::Graph" +} + +resource_schema "aws_detective_member_invitation" { + cloudformation_type_name = "AWS::Detective::MemberInvitation" +} + +resource_schema "aws_detective_organization_admin" { + cloudformation_type_name = "AWS::Detective::OrganizationAdmin" +} + +resource_schema "aws_devopsguru_log_anomaly_detection_integration" { + cloudformation_type_name = "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} + +resource_schema "aws_devopsguru_notification_channel" { + cloudformation_type_name = "AWS::DevOpsGuru::NotificationChannel" +} + +resource_schema "aws_devopsguru_resource_collection" { + cloudformation_type_name = "AWS::DevOpsGuru::ResourceCollection" +} + +resource_schema "aws_directoryservice_simple_ad" { + cloudformation_type_name = "AWS::DirectoryService::SimpleAD" +} + +resource_schema "aws_docdbelastic_cluster" { + cloudformation_type_name = "AWS::DocDBElastic::Cluster" +} + +resource_schema "aws_dynamodb_global_table" { + cloudformation_type_name = "AWS::DynamoDB::GlobalTable" +} + +resource_schema "aws_dynamodb_table" { + cloudformation_type_name = "AWS::DynamoDB::Table" +} + +resource_schema "aws_ec2_capacity_reservation" { + cloudformation_type_name = "AWS::EC2::CapacityReservation" +} + +resource_schema "aws_ec2_capacity_reservation_fleet" { + cloudformation_type_name = "AWS::EC2::CapacityReservationFleet" +} + +resource_schema "aws_ec2_carrier_gateway" { + cloudformation_type_name = "AWS::EC2::CarrierGateway" +} + +resource_schema "aws_ec2_customer_gateway" { + cloudformation_type_name = "AWS::EC2::CustomerGateway" +} + +resource_schema "aws_ec2_dhcp_options" { + cloudformation_type_name = "AWS::EC2::DHCPOptions" +} + +resource_schema "aws_ec2_ec2_fleet" { + cloudformation_type_name = "AWS::EC2::EC2Fleet" +} + +resource_schema "aws_ec2_eip" { + cloudformation_type_name = "AWS::EC2::EIP" +} + +resource_schema "aws_ec2_eip_association" { + cloudformation_type_name = "AWS::EC2::EIPAssociation" +} + +resource_schema "aws_ec2_egress_only_internet_gateway" { + cloudformation_type_name = "AWS::EC2::EgressOnlyInternetGateway" +} + +resource_schema "aws_ec2_enclave_certificate_iam_role_association" { + cloudformation_type_name = "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} + +resource_schema "aws_ec2_flow_log" { + cloudformation_type_name = "AWS::EC2::FlowLog" +} + +resource_schema "aws_ec2_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::GatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_host" { + cloudformation_type_name = "AWS::EC2::Host" +} + +resource_schema "aws_ec2_ipam" { + cloudformation_type_name = "AWS::EC2::IPAM" +} + +resource_schema "aws_ec2_ipam_allocation" { + cloudformation_type_name = "AWS::EC2::IPAMAllocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_pool" { + cloudformation_type_name = "AWS::EC2::IPAMPool" +} + +resource_schema "aws_ec2_ipam_pool_cidr" { + cloudformation_type_name = "AWS::EC2::IPAMPoolCidr" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_ipam_resource_discovery" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscovery" +} + +resource_schema "aws_ec2_ipam_resource_discovery_association" { + cloudformation_type_name = "AWS::EC2::IPAMResourceDiscoveryAssociation" +} + +resource_schema "aws_ec2_ipam_scope" { + cloudformation_type_name = "AWS::EC2::IPAMScope" +} + +resource_schema "aws_ec2_instance" { + cloudformation_type_name = "AWS::EC2::Instance" +} + +resource_schema "aws_ec2_instance_connect_endpoint" { + cloudformation_type_name = "AWS::EC2::InstanceConnectEndpoint" +} + +resource_schema "aws_ec2_internet_gateway" { + cloudformation_type_name = "AWS::EC2::InternetGateway" +} + +resource_schema "aws_ec2_key_pair" { + cloudformation_type_name = "AWS::EC2::KeyPair" +} + +resource_schema "aws_ec2_launch_template" { + cloudformation_type_name = "AWS::EC2::LaunchTemplate" +} + +resource_schema "aws_ec2_local_gateway_route" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRoute" +} + +resource_schema "aws_ec2_local_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTable" +} + +resource_schema "aws_ec2_local_gateway_route_table_vpc_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} + +resource_schema "aws_ec2_local_gateway_route_table_virtual_interface_group_association" { + cloudformation_type_name = "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} + +resource_schema "aws_ec2_nat_gateway" { + cloudformation_type_name = "AWS::EC2::NatGateway" +} + +resource_schema "aws_ec2_network_acl" { + cloudformation_type_name = "AWS::EC2::NetworkAcl" +} + +resource_schema "aws_ec2_network_insights_access_scope" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScope" +} + +resource_schema "aws_ec2_network_insights_access_scope_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} + +resource_schema "aws_ec2_network_insights_analysis" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsAnalysis" +} + +resource_schema "aws_ec2_network_insights_path" { + cloudformation_type_name = "AWS::EC2::NetworkInsightsPath" +} + +resource_schema "aws_ec2_network_interface" { + cloudformation_type_name = "AWS::EC2::NetworkInterface" +} + +resource_schema "aws_ec2_network_interface_attachment" { + cloudformation_type_name = "AWS::EC2::NetworkInterfaceAttachment" +} + +resource_schema "aws_ec2_network_performance_metric_subscription" { + cloudformation_type_name = "AWS::EC2::NetworkPerformanceMetricSubscription" +} + +resource_schema "aws_ec2_placement_group" { + cloudformation_type_name = "AWS::EC2::PlacementGroup" +} + +resource_schema "aws_ec2_prefix_list" { + cloudformation_type_name = "AWS::EC2::PrefixList" +} + +resource_schema "aws_ec2_route" { + cloudformation_type_name = "AWS::EC2::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_route_table" { + cloudformation_type_name = "AWS::EC2::RouteTable" +} + +resource_schema "aws_ec2_security_group" { + cloudformation_type_name = "AWS::EC2::SecurityGroup" +} + +resource_schema "aws_ec2_security_group_egress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupEgress" +} + +resource_schema "aws_ec2_security_group_ingress" { + cloudformation_type_name = "AWS::EC2::SecurityGroupIngress" +} + +resource_schema "aws_ec2_security_group_vpc_association" { + cloudformation_type_name = "AWS::EC2::SecurityGroupVpcAssociation" +} + +resource_schema "aws_ec2_snapshot_block_public_access" { + cloudformation_type_name = "AWS::EC2::SnapshotBlockPublicAccess" +} + +resource_schema "aws_ec2_spot_fleet" { + cloudformation_type_name = "AWS::EC2::SpotFleet" +} + +resource_schema "aws_ec2_subnet" { + cloudformation_type_name = "AWS::EC2::Subnet" +} + +resource_schema "aws_ec2_subnet_cidr_block" { + cloudformation_type_name = "AWS::EC2::SubnetCidrBlock" +} + +resource_schema "aws_ec2_subnet_network_acl_association" { + cloudformation_type_name = "AWS::EC2::SubnetNetworkAclAssociation" +} + +resource_schema "aws_ec2_subnet_route_table_association" { + cloudformation_type_name = "AWS::EC2::SubnetRouteTableAssociation" +} + +resource_schema "aws_ec2_transit_gateway" { + cloudformation_type_name = "AWS::EC2::TransitGateway" +} + +resource_schema "aws_ec2_transit_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayAttachment" +} + +resource_schema "aws_ec2_transit_gateway_connect" { + cloudformation_type_name = "AWS::EC2::TransitGatewayConnect" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomain" +} + +resource_schema "aws_ec2_transit_gateway_multicast_domain_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_member" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupMember" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_multicast_group_source" { + cloudformation_type_name = "AWS::EC2::TransitGatewayMulticastGroupSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_peering_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayPeeringAttachment" +} + +resource_schema "aws_ec2_transit_gateway_route" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRoute" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTable" +} + +resource_schema "aws_ec2_transit_gateway_route_table_association" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTableAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_route_table_propagation" { + cloudformation_type_name = "AWS::EC2::TransitGatewayRouteTablePropagation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_transit_gateway_vpc_attachment" { + cloudformation_type_name = "AWS::EC2::TransitGatewayVpcAttachment" +} + +resource_schema "aws_ec2_vpc" { + cloudformation_type_name = "AWS::EC2::VPC" +} + +resource_schema "aws_ec2_vpc_block_public_access_exclusion" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessExclusion" +} + +resource_schema "aws_ec2_vpc_block_public_access_options" { + cloudformation_type_name = "AWS::EC2::VPCBlockPublicAccessOptions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpc_cidr_block" { + cloudformation_type_name = "AWS::EC2::VPCCidrBlock" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ec2_vpcdhcp_options_association" { + cloudformation_type_name = "AWS::EC2::VPCDHCPOptionsAssociation" +} + +resource_schema "aws_ec2_vpc_endpoint" { + cloudformation_type_name = "AWS::EC2::VPCEndpoint" +} + +resource_schema "aws_ec2_vpc_endpoint_connection_notification" { + cloudformation_type_name = "AWS::EC2::VPCEndpointConnectionNotification" +} + +resource_schema "aws_ec2_vpc_endpoint_service" { + cloudformation_type_name = "AWS::EC2::VPCEndpointService" +} + +resource_schema "aws_ec2_vpc_endpoint_service_permissions" { + cloudformation_type_name = "AWS::EC2::VPCEndpointServicePermissions" +} + +resource_schema "aws_ec2_vpc_gateway_attachment" { + cloudformation_type_name = "AWS::EC2::VPCGatewayAttachment" +} + +resource_schema "aws_ec2_vpc_peering_connection" { + cloudformation_type_name = "AWS::EC2::VPCPeeringConnection" +} + +resource_schema "aws_ec2_vpn_connection" { + cloudformation_type_name = "AWS::EC2::VPNConnection" +} + +resource_schema "aws_ec2_vpn_connection_route" { + cloudformation_type_name = "AWS::EC2::VPNConnectionRoute" +} + +resource_schema "aws_ec2_vpn_gateway" { + cloudformation_type_name = "AWS::EC2::VPNGateway" +} + +resource_schema "aws_ec2_verified_access_endpoint" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessEndpoint" +} + +resource_schema "aws_ec2_verified_access_group" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessGroup" +} + +resource_schema "aws_ec2_verified_access_instance" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessInstance" +} + +resource_schema "aws_ec2_verified_access_trust_provider" { + cloudformation_type_name = "AWS::EC2::VerifiedAccessTrustProvider" +} + +resource_schema "aws_ec2_volume" { + cloudformation_type_name = "AWS::EC2::Volume" +} + +resource_schema "aws_ec2_volume_attachment" { + cloudformation_type_name = "AWS::EC2::VolumeAttachment" +} + +resource_schema "aws_ecr_public_repository" { + cloudformation_type_name = "AWS::ECR::PublicRepository" +} + +resource_schema "aws_ecr_pull_through_cache_rule" { + cloudformation_type_name = "AWS::ECR::PullThroughCacheRule" +} + +resource_schema "aws_ecr_registry_policy" { + cloudformation_type_name = "AWS::ECR::RegistryPolicy" +} + +resource_schema "aws_ecr_replication_configuration" { + cloudformation_type_name = "AWS::ECR::ReplicationConfiguration" +} + +resource_schema "aws_ecr_repository" { + cloudformation_type_name = "AWS::ECR::Repository" +} + +resource_schema "aws_ecr_repository_creation_template" { + cloudformation_type_name = "AWS::ECR::RepositoryCreationTemplate" +} + +resource_schema "aws_ecs_capacity_provider" { + cloudformation_type_name = "AWS::ECS::CapacityProvider" +} + +resource_schema "aws_ecs_cluster" { + cloudformation_type_name = "AWS::ECS::Cluster" +} + +resource_schema "aws_ecs_cluster_capacity_provider_associations" { + cloudformation_type_name = "AWS::ECS::ClusterCapacityProviderAssociations" +} + +resource_schema "aws_ecs_primary_task_set" { + cloudformation_type_name = "AWS::ECS::PrimaryTaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ecs_service" { + cloudformation_type_name = "AWS::ECS::Service" +} + +resource_schema "aws_ecs_task_definition" { + cloudformation_type_name = "AWS::ECS::TaskDefinition" +} + +resource_schema "aws_ecs_task_set" { + cloudformation_type_name = "AWS::ECS::TaskSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_efs_access_point" { + cloudformation_type_name = "AWS::EFS::AccessPoint" +} + +resource_schema "aws_efs_file_system" { + cloudformation_type_name = "AWS::EFS::FileSystem" +} + +resource_schema "aws_efs_mount_target" { + cloudformation_type_name = "AWS::EFS::MountTarget" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_access_entry" { + cloudformation_type_name = "AWS::EKS::AccessEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_addon" { + cloudformation_type_name = "AWS::EKS::Addon" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_cluster" { + cloudformation_type_name = "AWS::EKS::Cluster" +} + +resource_schema "aws_eks_fargate_profile" { + cloudformation_type_name = "AWS::EKS::FargateProfile" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_identity_provider_config" { + cloudformation_type_name = "AWS::EKS::IdentityProviderConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_nodegroup" { + cloudformation_type_name = "AWS::EKS::Nodegroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eks_pod_identity_association" { + cloudformation_type_name = "AWS::EKS::PodIdentityAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_emr_security_configuration" { + cloudformation_type_name = "AWS::EMR::SecurityConfiguration" +} + +resource_schema "aws_emr_studio" { + cloudformation_type_name = "AWS::EMR::Studio" +} + +resource_schema "aws_emr_studio_session_mapping" { + cloudformation_type_name = "AWS::EMR::StudioSessionMapping" +} + +resource_schema "aws_emr_wal_workspace" { + cloudformation_type_name = "AWS::EMR::WALWorkspace" +} + +resource_schema "aws_emrcontainers_virtual_cluster" { + cloudformation_type_name = "AWS::EMRContainers::VirtualCluster" +} + +resource_schema "aws_emrserverless_application" { + cloudformation_type_name = "AWS::EMRServerless::Application" +} + +resource_schema "aws_elasticache_global_replication_group" { + cloudformation_type_name = "AWS::ElastiCache::GlobalReplicationGroup" +} + +resource_schema "aws_elasticache_parameter_group" { + cloudformation_type_name = "AWS::ElastiCache::ParameterGroup" +} + +resource_schema "aws_elasticache_serverless_cache" { + cloudformation_type_name = "AWS::ElastiCache::ServerlessCache" +} + +resource_schema "aws_elasticache_subnet_group" { + cloudformation_type_name = "AWS::ElastiCache::SubnetGroup" +} + +resource_schema "aws_elasticache_user" { + cloudformation_type_name = "AWS::ElastiCache::User" +} + +resource_schema "aws_elasticache_user_group" { + cloudformation_type_name = "AWS::ElastiCache::UserGroup" +} + +resource_schema "aws_elasticbeanstalk_application" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Application" +} + +resource_schema "aws_elasticbeanstalk_application_version" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ApplicationVersion" +} + +resource_schema "aws_elasticbeanstalk_configuration_template" { + cloudformation_type_name = "AWS::ElasticBeanstalk::ConfigurationTemplate" +} + +resource_schema "aws_elasticbeanstalk_environment" { + cloudformation_type_name = "AWS::ElasticBeanstalk::Environment" +} + +resource_schema "aws_elasticloadbalancingv2_listener" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_listener_rule" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::ListenerRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_elasticloadbalancingv2_load_balancer" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::LoadBalancer" +} + +resource_schema "aws_elasticloadbalancingv2_target_group" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TargetGroup" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStore" +} + +resource_schema "aws_elasticloadbalancingv2_trust_store_revocation" { + cloudformation_type_name = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_id_mapping_workflow" { + cloudformation_type_name = "AWS::EntityResolution::IdMappingWorkflow" +} + +resource_schema "aws_entityresolution_id_namespace" { + cloudformation_type_name = "AWS::EntityResolution::IdNamespace" +} + +resource_schema "aws_entityresolution_matching_workflow" { + cloudformation_type_name = "AWS::EntityResolution::MatchingWorkflow" +} + +resource_schema "aws_entityresolution_policy_statement" { + cloudformation_type_name = "AWS::EntityResolution::PolicyStatement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_entityresolution_schema_mapping" { + cloudformation_type_name = "AWS::EntityResolution::SchemaMapping" +} + +resource_schema "aws_eventschemas_discoverer" { + cloudformation_type_name = "AWS::EventSchemas::Discoverer" +} + +resource_schema "aws_eventschemas_registry" { + cloudformation_type_name = "AWS::EventSchemas::Registry" +} + +resource_schema "aws_eventschemas_registry_policy" { + cloudformation_type_name = "AWS::EventSchemas::RegistryPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_eventschemas_schema" { + cloudformation_type_name = "AWS::EventSchemas::Schema" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_events_api_destination" { + cloudformation_type_name = "AWS::Events::ApiDestination" +} + +resource_schema "aws_events_archive" { + cloudformation_type_name = "AWS::Events::Archive" +} + +resource_schema "aws_events_connection" { + cloudformation_type_name = "AWS::Events::Connection" +} + +resource_schema "aws_events_endpoint" { + cloudformation_type_name = "AWS::Events::Endpoint" +} + +resource_schema "aws_events_event_bus" { + cloudformation_type_name = "AWS::Events::EventBus" +} + +resource_schema "aws_events_rule" { + cloudformation_type_name = "AWS::Events::Rule" +} + +resource_schema "aws_evidently_experiment" { + cloudformation_type_name = "AWS::Evidently::Experiment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_feature" { + cloudformation_type_name = "AWS::Evidently::Feature" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_launch" { + cloudformation_type_name = "AWS::Evidently::Launch" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_project" { + cloudformation_type_name = "AWS::Evidently::Project" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_evidently_segment" { + cloudformation_type_name = "AWS::Evidently::Segment" +} + +resource_schema "aws_fis_experiment_template" { + cloudformation_type_name = "AWS::FIS::ExperimentTemplate" +} + +resource_schema "aws_fis_target_account_configuration" { + cloudformation_type_name = "AWS::FIS::TargetAccountConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_fms_notification_channel" { + cloudformation_type_name = "AWS::FMS::NotificationChannel" +} + +resource_schema "aws_fms_policy" { + cloudformation_type_name = "AWS::FMS::Policy" +} + +resource_schema "aws_fms_resource_set" { + cloudformation_type_name = "AWS::FMS::ResourceSet" +} + +resource_schema "aws_fsx_data_repository_association" { + cloudformation_type_name = "AWS::FSx::DataRepositoryAssociation" +} + +resource_schema "aws_finspace_environment" { + cloudformation_type_name = "AWS::FinSpace::Environment" +} + +resource_schema "aws_forecast_dataset" { + cloudformation_type_name = "AWS::Forecast::Dataset" +} + +resource_schema "aws_forecast_dataset_group" { + cloudformation_type_name = "AWS::Forecast::DatasetGroup" +} + +resource_schema "aws_frauddetector_detector" { + cloudformation_type_name = "AWS::FraudDetector::Detector" +} + +resource_schema "aws_frauddetector_entity_type" { + cloudformation_type_name = "AWS::FraudDetector::EntityType" +} + +resource_schema "aws_frauddetector_event_type" { + cloudformation_type_name = "AWS::FraudDetector::EventType" +} + +resource_schema "aws_frauddetector_label" { + cloudformation_type_name = "AWS::FraudDetector::Label" +} + +resource_schema "aws_frauddetector_list" { + cloudformation_type_name = "AWS::FraudDetector::List" +} + +resource_schema "aws_frauddetector_outcome" { + cloudformation_type_name = "AWS::FraudDetector::Outcome" +} + +resource_schema "aws_frauddetector_variable" { + cloudformation_type_name = "AWS::FraudDetector::Variable" +} + +resource_schema "aws_gamelift_alias" { + cloudformation_type_name = "AWS::GameLift::Alias" +} + +resource_schema "aws_gamelift_build" { + cloudformation_type_name = "AWS::GameLift::Build" +} + +resource_schema "aws_gamelift_container_fleet" { + cloudformation_type_name = "AWS::GameLift::ContainerFleet" +} + +resource_schema "aws_gamelift_container_group_definition" { + cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition" +} + +resource_schema "aws_gamelift_fleet" { + cloudformation_type_name = "AWS::GameLift::Fleet" +} + +resource_schema "aws_gamelift_game_server_group" { + cloudformation_type_name = "AWS::GameLift::GameServerGroup" +} + +resource_schema "aws_gamelift_game_session_queue" { + cloudformation_type_name = "AWS::GameLift::GameSessionQueue" +} + +resource_schema "aws_gamelift_location" { + cloudformation_type_name = "AWS::GameLift::Location" +} + +resource_schema "aws_gamelift_matchmaking_configuration" { + cloudformation_type_name = "AWS::GameLift::MatchmakingConfiguration" +} + +resource_schema "aws_gamelift_matchmaking_rule_set" { + cloudformation_type_name = "AWS::GameLift::MatchmakingRuleSet" +} + +resource_schema "aws_gamelift_script" { + cloudformation_type_name = "AWS::GameLift::Script" +} + +resource_schema "aws_globalaccelerator_accelerator" { + cloudformation_type_name = "AWS::GlobalAccelerator::Accelerator" +} + +resource_schema "aws_globalaccelerator_cross_account_attachment" { + cloudformation_type_name = "AWS::GlobalAccelerator::CrossAccountAttachment" +} + +resource_schema "aws_globalaccelerator_endpoint_group" { + cloudformation_type_name = "AWS::GlobalAccelerator::EndpointGroup" +} + +resource_schema "aws_globalaccelerator_listener" { + cloudformation_type_name = "AWS::GlobalAccelerator::Listener" +} + +resource_schema "aws_glue_crawler" { + cloudformation_type_name = "AWS::Glue::Crawler" +} + +resource_schema "aws_glue_database" { + cloudformation_type_name = "AWS::Glue::Database" +} + +resource_schema "aws_glue_job" { + cloudformation_type_name = "AWS::Glue::Job" +} + +resource_schema "aws_glue_registry" { + cloudformation_type_name = "AWS::Glue::Registry" +} + +resource_schema "aws_glue_schema" { + cloudformation_type_name = "AWS::Glue::Schema" +} + +resource_schema "aws_glue_schema_version" { + cloudformation_type_name = "AWS::Glue::SchemaVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_schema_version_metadata" { + cloudformation_type_name = "AWS::Glue::SchemaVersionMetadata" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_glue_trigger" { + cloudformation_type_name = "AWS::Glue::Trigger" +} + +resource_schema "aws_glue_usage_profile" { + cloudformation_type_name = "AWS::Glue::UsageProfile" +} + +resource_schema "aws_grafana_workspace" { + cloudformation_type_name = "AWS::Grafana::Workspace" +} + +resource_schema "aws_greengrassv2_component_version" { + cloudformation_type_name = "AWS::GreengrassV2::ComponentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_greengrassv2_deployment" { + cloudformation_type_name = "AWS::GreengrassV2::Deployment" +} + +resource_schema "aws_groundstation_config" { + cloudformation_type_name = "AWS::GroundStation::Config" +} + +resource_schema "aws_groundstation_dataflow_endpoint_group" { + cloudformation_type_name = "AWS::GroundStation::DataflowEndpointGroup" +} + +resource_schema "aws_groundstation_mission_profile" { + cloudformation_type_name = "AWS::GroundStation::MissionProfile" +} + +resource_schema "aws_guardduty_detector" { + cloudformation_type_name = "AWS::GuardDuty::Detector" +} + +resource_schema "aws_guardduty_filter" { + cloudformation_type_name = "AWS::GuardDuty::Filter" +} + +resource_schema "aws_guardduty_ip_set" { + cloudformation_type_name = "AWS::GuardDuty::IPSet" +} + +resource_schema "aws_guardduty_malware_protection_plan" { + cloudformation_type_name = "AWS::GuardDuty::MalwareProtectionPlan" +} + +resource_schema "aws_guardduty_master" { + cloudformation_type_name = "AWS::GuardDuty::Master" +} + +resource_schema "aws_guardduty_member" { + cloudformation_type_name = "AWS::GuardDuty::Member" +} + +resource_schema "aws_guardduty_threat_intel_set" { + cloudformation_type_name = "AWS::GuardDuty::ThreatIntelSet" +} + +resource_schema "aws_healthimaging_datastore" { + cloudformation_type_name = "AWS::HealthImaging::Datastore" +} + +resource_schema "aws_healthlake_fhir_datastore" { + cloudformation_type_name = "AWS::HealthLake::FHIRDatastore" +} + +resource_schema "aws_iam_group" { + cloudformation_type_name = "AWS::IAM::Group" +} + +resource_schema "aws_iam_group_policy" { + cloudformation_type_name = "AWS::IAM::GroupPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_instance_profile" { + cloudformation_type_name = "AWS::IAM::InstanceProfile" +} + +resource_schema "aws_iam_managed_policy" { + cloudformation_type_name = "AWS::IAM::ManagedPolicy" +} + +resource_schema "aws_iam_oidc_provider" { + cloudformation_type_name = "AWS::IAM::OIDCProvider" +} + +resource_schema "aws_iam_role" { + cloudformation_type_name = "AWS::IAM::Role" +} + +resource_schema "aws_iam_role_policy" { + cloudformation_type_name = "AWS::IAM::RolePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_saml_provider" { + cloudformation_type_name = "AWS::IAM::SAMLProvider" +} + +resource_schema "aws_iam_server_certificate" { + cloudformation_type_name = "AWS::IAM::ServerCertificate" +} + +resource_schema "aws_iam_service_linked_role" { + cloudformation_type_name = "AWS::IAM::ServiceLinkedRole" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_user" { + cloudformation_type_name = "AWS::IAM::User" +} + +resource_schema "aws_iam_user_policy" { + cloudformation_type_name = "AWS::IAM::UserPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iam_virtual_mfa_device" { + cloudformation_type_name = "AWS::IAM::VirtualMFADevice" +} + +resource_schema "aws_ivs_channel" { + cloudformation_type_name = "AWS::IVS::Channel" +} + +resource_schema "aws_ivs_encoder_configuration" { + cloudformation_type_name = "AWS::IVS::EncoderConfiguration" +} + +resource_schema "aws_ivs_ingest_configuration" { + cloudformation_type_name = "AWS::IVS::IngestConfiguration" +} + +resource_schema "aws_ivs_playback_key_pair" { + cloudformation_type_name = "AWS::IVS::PlaybackKeyPair" +} + +resource_schema "aws_ivs_playback_restriction_policy" { + cloudformation_type_name = "AWS::IVS::PlaybackRestrictionPolicy" +} + +resource_schema "aws_ivs_public_key" { + cloudformation_type_name = "AWS::IVS::PublicKey" +} + +resource_schema "aws_ivs_recording_configuration" { + cloudformation_type_name = "AWS::IVS::RecordingConfiguration" +} + +resource_schema "aws_ivs_stage" { + cloudformation_type_name = "AWS::IVS::Stage" +} + +resource_schema "aws_ivs_storage_configuration" { + cloudformation_type_name = "AWS::IVS::StorageConfiguration" +} + +resource_schema "aws_ivs_stream_key" { + cloudformation_type_name = "AWS::IVS::StreamKey" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ivschat_logging_configuration" { + cloudformation_type_name = "AWS::IVSChat::LoggingConfiguration" +} + +resource_schema "aws_ivschat_room" { + cloudformation_type_name = "AWS::IVSChat::Room" +} + +resource_schema "aws_identitystore_group" { + cloudformation_type_name = "AWS::IdentityStore::Group" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_identitystore_group_membership" { + cloudformation_type_name = "AWS::IdentityStore::GroupMembership" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_component" { + cloudformation_type_name = "AWS::ImageBuilder::Component" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_container_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ContainerRecipe" +} + +resource_schema "aws_imagebuilder_distribution_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::DistributionConfiguration" +} + +resource_schema "aws_imagebuilder_image" { + cloudformation_type_name = "AWS::ImageBuilder::Image" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_imagebuilder_image_pipeline" { + cloudformation_type_name = "AWS::ImageBuilder::ImagePipeline" +} + +resource_schema "aws_imagebuilder_image_recipe" { + cloudformation_type_name = "AWS::ImageBuilder::ImageRecipe" +} + +resource_schema "aws_imagebuilder_infrastructure_configuration" { + cloudformation_type_name = "AWS::ImageBuilder::InfrastructureConfiguration" +} + +resource_schema "aws_imagebuilder_lifecycle_policy" { + cloudformation_type_name = "AWS::ImageBuilder::LifecyclePolicy" +} + +resource_schema "aws_imagebuilder_workflow" { + cloudformation_type_name = "AWS::ImageBuilder::Workflow" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspector_assessment_target" { + cloudformation_type_name = "AWS::Inspector::AssessmentTarget" +} + +resource_schema "aws_inspector_assessment_template" { + cloudformation_type_name = "AWS::Inspector::AssessmentTemplate" +} + +resource_schema "aws_inspector_resource_group" { + cloudformation_type_name = "AWS::Inspector::ResourceGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_inspectorv2_cis_scan_configuration" { + cloudformation_type_name = "AWS::InspectorV2::CisScanConfiguration" +} + +resource_schema "aws_inspectorv2_filter" { + cloudformation_type_name = "AWS::InspectorV2::Filter" +} + +resource_schema "aws_internetmonitor_monitor" { + cloudformation_type_name = "AWS::InternetMonitor::Monitor" +} + +resource_schema "aws_iot_account_audit_configuration" { + cloudformation_type_name = "AWS::IoT::AccountAuditConfiguration" +} + +resource_schema "aws_iot_authorizer" { + cloudformation_type_name = "AWS::IoT::Authorizer" +} + +resource_schema "aws_iot_billing_group" { + cloudformation_type_name = "AWS::IoT::BillingGroup" +} + +resource_schema "aws_iot_ca_certificate" { + cloudformation_type_name = "AWS::IoT::CACertificate" +} + +resource_schema "aws_iot_certificate" { + cloudformation_type_name = "AWS::IoT::Certificate" +} + +resource_schema "aws_iot_certificate_provider" { + cloudformation_type_name = "AWS::IoT::CertificateProvider" +} + +resource_schema "aws_iot_custom_metric" { + cloudformation_type_name = "AWS::IoT::CustomMetric" +} + +resource_schema "aws_iot_dimension" { + cloudformation_type_name = "AWS::IoT::Dimension" +} + +resource_schema "aws_iot_domain_configuration" { + cloudformation_type_name = "AWS::IoT::DomainConfiguration" +} + +resource_schema "aws_iot_fleet_metric" { + cloudformation_type_name = "AWS::IoT::FleetMetric" +} + +resource_schema "aws_iot_job_template" { + cloudformation_type_name = "AWS::IoT::JobTemplate" +} + +resource_schema "aws_iot_logging" { + cloudformation_type_name = "AWS::IoT::Logging" +} + +resource_schema "aws_iot_mitigation_action" { + cloudformation_type_name = "AWS::IoT::MitigationAction" +} + +resource_schema "aws_iot_policy" { + cloudformation_type_name = "AWS::IoT::Policy" +} + +resource_schema "aws_iot_provisioning_template" { + cloudformation_type_name = "AWS::IoT::ProvisioningTemplate" +} + +resource_schema "aws_iot_resource_specific_logging" { + cloudformation_type_name = "AWS::IoT::ResourceSpecificLogging" +} + +resource_schema "aws_iot_role_alias" { + cloudformation_type_name = "AWS::IoT::RoleAlias" +} + +resource_schema "aws_iot_scheduled_audit" { + cloudformation_type_name = "AWS::IoT::ScheduledAudit" +} + +resource_schema "aws_iot_security_profile" { + cloudformation_type_name = "AWS::IoT::SecurityProfile" +} + +resource_schema "aws_iot_software_package" { + cloudformation_type_name = "AWS::IoT::SoftwarePackage" +} + +resource_schema "aws_iot_software_package_version" { + cloudformation_type_name = "AWS::IoT::SoftwarePackageVersion" +} + +resource_schema "aws_iot_thing" { + cloudformation_type_name = "AWS::IoT::Thing" +} + +resource_schema "aws_iot_thing_group" { + cloudformation_type_name = "AWS::IoT::ThingGroup" +} + +resource_schema "aws_iot_thing_type" { + cloudformation_type_name = "AWS::IoT::ThingType" +} + +resource_schema "aws_iot_topic_rule" { + cloudformation_type_name = "AWS::IoT::TopicRule" +} + +resource_schema "aws_iot_topic_rule_destination" { + cloudformation_type_name = "AWS::IoT::TopicRuleDestination" +} + +resource_schema "aws_iotanalytics_channel" { + cloudformation_type_name = "AWS::IoTAnalytics::Channel" +} + +resource_schema "aws_iotanalytics_dataset" { + cloudformation_type_name = "AWS::IoTAnalytics::Dataset" +} + +resource_schema "aws_iotanalytics_datastore" { + cloudformation_type_name = "AWS::IoTAnalytics::Datastore" +} + +resource_schema "aws_iotanalytics_pipeline" { + cloudformation_type_name = "AWS::IoTAnalytics::Pipeline" +} + +resource_schema "aws_iotcoredeviceadvisor_suite_definition" { + cloudformation_type_name = "AWS::IoTCoreDeviceAdvisor::SuiteDefinition" +} + +resource_schema "aws_iotevents_alarm_model" { + cloudformation_type_name = "AWS::IoTEvents::AlarmModel" +} + +resource_schema "aws_iotevents_detector_model" { + cloudformation_type_name = "AWS::IoTEvents::DetectorModel" +} + +resource_schema "aws_iotevents_input" { + cloudformation_type_name = "AWS::IoTEvents::Input" +} + +resource_schema "aws_iotfleethub_application" { + cloudformation_type_name = "AWS::IoTFleetHub::Application" +} + +resource_schema "aws_iotfleetwise_campaign" { + cloudformation_type_name = "AWS::IoTFleetWise::Campaign" +} + +resource_schema "aws_iotfleetwise_decoder_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::DecoderManifest" +} + +resource_schema "aws_iotfleetwise_fleet" { + cloudformation_type_name = "AWS::IoTFleetWise::Fleet" +} + +resource_schema "aws_iotfleetwise_model_manifest" { + cloudformation_type_name = "AWS::IoTFleetWise::ModelManifest" +} + +resource_schema "aws_iotfleetwise_signal_catalog" { + cloudformation_type_name = "AWS::IoTFleetWise::SignalCatalog" +} + +resource_schema "aws_iotfleetwise_state_template" { + cloudformation_type_name = "AWS::IoTFleetWise::StateTemplate" +} + +resource_schema "aws_iotfleetwise_vehicle" { + cloudformation_type_name = "AWS::IoTFleetWise::Vehicle" +} + +resource_schema "aws_iotsitewise_access_policy" { + cloudformation_type_name = "AWS::IoTSiteWise::AccessPolicy" +} + +resource_schema "aws_iotsitewise_asset" { + cloudformation_type_name = "AWS::IoTSiteWise::Asset" +} + +resource_schema "aws_iotsitewise_asset_model" { + cloudformation_type_name = "AWS::IoTSiteWise::AssetModel" +} + +resource_schema "aws_iotsitewise_dashboard" { + cloudformation_type_name = "AWS::IoTSiteWise::Dashboard" +} + +resource_schema "aws_iotsitewise_gateway" { + cloudformation_type_name = "AWS::IoTSiteWise::Gateway" +} + +resource_schema "aws_iotsitewise_portal" { + cloudformation_type_name = "AWS::IoTSiteWise::Portal" +} + +resource_schema "aws_iotsitewise_project" { + cloudformation_type_name = "AWS::IoTSiteWise::Project" +} + +resource_schema "aws_iottwinmaker_component_type" { + cloudformation_type_name = "AWS::IoTTwinMaker::ComponentType" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_entity" { + cloudformation_type_name = "AWS::IoTTwinMaker::Entity" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_scene" { + cloudformation_type_name = "AWS::IoTTwinMaker::Scene" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_sync_job" { + cloudformation_type_name = "AWS::IoTTwinMaker::SyncJob" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_iottwinmaker_workspace" { + cloudformation_type_name = "AWS::IoTTwinMaker::Workspace" +} + +resource_schema "aws_iotwireless_destination" { + cloudformation_type_name = "AWS::IoTWireless::Destination" +} + +resource_schema "aws_iotwireless_device_profile" { + cloudformation_type_name = "AWS::IoTWireless::DeviceProfile" +} + +resource_schema "aws_iotwireless_fuota_task" { + cloudformation_type_name = "AWS::IoTWireless::FuotaTask" +} + +resource_schema "aws_iotwireless_multicast_group" { + cloudformation_type_name = "AWS::IoTWireless::MulticastGroup" +} + +resource_schema "aws_iotwireless_network_analyzer_configuration" { + cloudformation_type_name = "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} + +resource_schema "aws_iotwireless_partner_account" { + cloudformation_type_name = "AWS::IoTWireless::PartnerAccount" +} + +resource_schema "aws_iotwireless_service_profile" { + cloudformation_type_name = "AWS::IoTWireless::ServiceProfile" +} + +resource_schema "aws_iotwireless_task_definition" { + cloudformation_type_name = "AWS::IoTWireless::TaskDefinition" +} + +resource_schema "aws_iotwireless_wireless_device" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDevice" +} + +resource_schema "aws_iotwireless_wireless_device_import_task" { + cloudformation_type_name = "AWS::IoTWireless::WirelessDeviceImportTask" +} + +resource_schema "aws_iotwireless_wireless_gateway" { + cloudformation_type_name = "AWS::IoTWireless::WirelessGateway" +} + +resource_schema "aws_kms_alias" { + cloudformation_type_name = "AWS::KMS::Alias" +} + +resource_schema "aws_kms_key" { + cloudformation_type_name = "AWS::KMS::Key" +} + +resource_schema "aws_kms_replica_key" { + cloudformation_type_name = "AWS::KMS::ReplicaKey" +} + +resource_schema "aws_kafkaconnect_connector" { + cloudformation_type_name = "AWS::KafkaConnect::Connector" +} + +resource_schema "aws_kafkaconnect_custom_plugin" { + cloudformation_type_name = "AWS::KafkaConnect::CustomPlugin" +} + +resource_schema "aws_kafkaconnect_worker_configuration" { + cloudformation_type_name = "AWS::KafkaConnect::WorkerConfiguration" +} + +resource_schema "aws_kendra_data_source" { + cloudformation_type_name = "AWS::Kendra::DataSource" +} + +resource_schema "aws_kendra_faq" { + cloudformation_type_name = "AWS::Kendra::Faq" +} + +resource_schema "aws_kendra_index" { + cloudformation_type_name = "AWS::Kendra::Index" +} + +resource_schema "aws_kendraranking_execution_plan" { + cloudformation_type_name = "AWS::KendraRanking::ExecutionPlan" +} + +resource_schema "aws_kinesis_resource_policy" { + cloudformation_type_name = "AWS::Kinesis::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesis_stream" { + cloudformation_type_name = "AWS::Kinesis::Stream" +} + +resource_schema "aws_kinesisanalyticsv2_application" { + cloudformation_type_name = "AWS::KinesisAnalyticsV2::Application" +} + +resource_schema "aws_kinesisfirehose_delivery_stream" { + cloudformation_type_name = "AWS::KinesisFirehose::DeliveryStream" +} + +resource_schema "aws_kinesisvideo_signaling_channel" { + cloudformation_type_name = "AWS::KinesisVideo::SignalingChannel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_kinesisvideo_stream" { + cloudformation_type_name = "AWS::KinesisVideo::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_data_cells_filter" { + cloudformation_type_name = "AWS::LakeFormation::DataCellsFilter" +} + +resource_schema "aws_lakeformation_principal_permissions" { + cloudformation_type_name = "AWS::LakeFormation::PrincipalPermissions" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lakeformation_tag" { + cloudformation_type_name = "AWS::LakeFormation::Tag" +} + +resource_schema "aws_lakeformation_tag_association" { + cloudformation_type_name = "AWS::LakeFormation::TagAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_alias" { + cloudformation_type_name = "AWS::Lambda::Alias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_code_signing_config" { + cloudformation_type_name = "AWS::Lambda::CodeSigningConfig" +} + +resource_schema "aws_lambda_event_invoke_config" { + cloudformation_type_name = "AWS::Lambda::EventInvokeConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_event_source_mapping" { + cloudformation_type_name = "AWS::Lambda::EventSourceMapping" +} + +resource_schema "aws_lambda_function" { + cloudformation_type_name = "AWS::Lambda::Function" +} + +resource_schema "aws_lambda_layer_version" { + cloudformation_type_name = "AWS::Lambda::LayerVersion" +} + +resource_schema "aws_lambda_layer_version_permission" { + cloudformation_type_name = "AWS::Lambda::LayerVersionPermission" +} + +resource_schema "aws_lambda_permission" { + cloudformation_type_name = "AWS::Lambda::Permission" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_url" { + cloudformation_type_name = "AWS::Lambda::Url" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lambda_version" { + cloudformation_type_name = "AWS::Lambda::Version" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_launchwizard_deployment" { + cloudformation_type_name = "AWS::LaunchWizard::Deployment" +} + +resource_schema "aws_lex_bot" { + cloudformation_type_name = "AWS::Lex::Bot" +} + +resource_schema "aws_lex_bot_alias" { + cloudformation_type_name = "AWS::Lex::BotAlias" +} + +resource_schema "aws_lex_bot_version" { + cloudformation_type_name = "AWS::Lex::BotVersion" +} + +resource_schema "aws_lex_resource_policy" { + cloudformation_type_name = "AWS::Lex::ResourcePolicy" +} + +resource_schema "aws_licensemanager_grant" { + cloudformation_type_name = "AWS::LicenseManager::Grant" +} + +resource_schema "aws_licensemanager_license" { + cloudformation_type_name = "AWS::LicenseManager::License" +} + +resource_schema "aws_lightsail_alarm" { + cloudformation_type_name = "AWS::Lightsail::Alarm" +} + +resource_schema "aws_lightsail_bucket" { + cloudformation_type_name = "AWS::Lightsail::Bucket" +} + +resource_schema "aws_lightsail_certificate" { + cloudformation_type_name = "AWS::Lightsail::Certificate" +} + +resource_schema "aws_lightsail_container" { + cloudformation_type_name = "AWS::Lightsail::Container" +} + +resource_schema "aws_lightsail_database" { + cloudformation_type_name = "AWS::Lightsail::Database" +} + +resource_schema "aws_lightsail_disk" { + cloudformation_type_name = "AWS::Lightsail::Disk" +} + +resource_schema "aws_lightsail_distribution" { + cloudformation_type_name = "AWS::Lightsail::Distribution" +} + +resource_schema "aws_lightsail_instance" { + cloudformation_type_name = "AWS::Lightsail::Instance" +} + +resource_schema "aws_lightsail_load_balancer" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancer" +} + +resource_schema "aws_lightsail_load_balancer_tls_certificate" { + cloudformation_type_name = "AWS::Lightsail::LoadBalancerTlsCertificate" +} + +resource_schema "aws_lightsail_static_ip" { + cloudformation_type_name = "AWS::Lightsail::StaticIp" +} + +resource_schema "aws_location_api_key" { + cloudformation_type_name = "AWS::Location::APIKey" +} + +resource_schema "aws_location_geofence_collection" { + cloudformation_type_name = "AWS::Location::GeofenceCollection" +} + +resource_schema "aws_location_map" { + cloudformation_type_name = "AWS::Location::Map" +} + +resource_schema "aws_location_place_index" { + cloudformation_type_name = "AWS::Location::PlaceIndex" +} + +resource_schema "aws_location_route_calculator" { + cloudformation_type_name = "AWS::Location::RouteCalculator" +} + +resource_schema "aws_location_tracker" { + cloudformation_type_name = "AWS::Location::Tracker" +} + +resource_schema "aws_location_tracker_consumer" { + cloudformation_type_name = "AWS::Location::TrackerConsumer" +} + +resource_schema "aws_logs_account_policy" { + cloudformation_type_name = "AWS::Logs::AccountPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_delivery" { + cloudformation_type_name = "AWS::Logs::Delivery" +} + +resource_schema "aws_logs_delivery_destination" { + cloudformation_type_name = "AWS::Logs::DeliveryDestination" +} + +resource_schema "aws_logs_delivery_source" { + cloudformation_type_name = "AWS::Logs::DeliverySource" +} + +resource_schema "aws_logs_destination" { + cloudformation_type_name = "AWS::Logs::Destination" +} + +resource_schema "aws_logs_log_anomaly_detector" { + cloudformation_type_name = "AWS::Logs::LogAnomalyDetector" +} + +resource_schema "aws_logs_log_group" { + cloudformation_type_name = "AWS::Logs::LogGroup" +} + +resource_schema "aws_logs_log_stream" { + cloudformation_type_name = "AWS::Logs::LogStream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_logs_metric_filter" { + cloudformation_type_name = "AWS::Logs::MetricFilter" +} + +resource_schema "aws_logs_query_definition" { + cloudformation_type_name = "AWS::Logs::QueryDefinition" +} + +resource_schema "aws_logs_resource_policy" { + cloudformation_type_name = "AWS::Logs::ResourcePolicy" +} + +resource_schema "aws_logs_subscription_filter" { + cloudformation_type_name = "AWS::Logs::SubscriptionFilter" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_lookoutequipment_inference_scheduler" { + cloudformation_type_name = "AWS::LookoutEquipment::InferenceScheduler" +} + +resource_schema "aws_lookoutmetrics_alert" { + cloudformation_type_name = "AWS::LookoutMetrics::Alert" +} + +resource_schema "aws_lookoutmetrics_anomaly_detector" { + cloudformation_type_name = "AWS::LookoutMetrics::AnomalyDetector" +} + +resource_schema "aws_lookoutvision_project" { + cloudformation_type_name = "AWS::LookoutVision::Project" +} + +resource_schema "aws_m2_application" { + cloudformation_type_name = "AWS::M2::Application" +} + +resource_schema "aws_m2_deployment" { + cloudformation_type_name = "AWS::M2::Deployment" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_m2_environment" { + cloudformation_type_name = "AWS::M2::Environment" +} + +resource_schema "aws_msk_batch_scram_secret" { + cloudformation_type_name = "AWS::MSK::BatchScramSecret" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_cluster" { + cloudformation_type_name = "AWS::MSK::Cluster" +} + +resource_schema "aws_msk_cluster_policy" { + cloudformation_type_name = "AWS::MSK::ClusterPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_msk_configuration" { + cloudformation_type_name = "AWS::MSK::Configuration" +} + +resource_schema "aws_msk_replicator" { + cloudformation_type_name = "AWS::MSK::Replicator" +} + +resource_schema "aws_msk_serverless_cluster" { + cloudformation_type_name = "AWS::MSK::ServerlessCluster" +} + +resource_schema "aws_msk_vpc_connection" { + cloudformation_type_name = "AWS::MSK::VpcConnection" +} + +resource_schema "aws_mwaa_environment" { + cloudformation_type_name = "AWS::MWAA::Environment" +} + +resource_schema "aws_macie_allow_list" { + cloudformation_type_name = "AWS::Macie::AllowList" +} + +resource_schema "aws_macie_custom_data_identifier" { + cloudformation_type_name = "AWS::Macie::CustomDataIdentifier" +} + +resource_schema "aws_macie_findings_filter" { + cloudformation_type_name = "AWS::Macie::FindingsFilter" +} + +resource_schema "aws_macie_session" { + cloudformation_type_name = "AWS::Macie::Session" +} + +resource_schema "aws_managedblockchain_accessor" { + cloudformation_type_name = "AWS::ManagedBlockchain::Accessor" +} + +resource_schema "aws_mediaconnect_bridge" { + cloudformation_type_name = "AWS::MediaConnect::Bridge" +} + +resource_schema "aws_mediaconnect_bridge_output" { + cloudformation_type_name = "AWS::MediaConnect::BridgeOutput" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_bridge_source" { + cloudformation_type_name = "AWS::MediaConnect::BridgeSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediaconnect_flow" { + cloudformation_type_name = "AWS::MediaConnect::Flow" +} + +resource_schema "aws_mediaconnect_flow_entitlement" { + cloudformation_type_name = "AWS::MediaConnect::FlowEntitlement" +} + +resource_schema "aws_mediaconnect_flow_output" { + cloudformation_type_name = "AWS::MediaConnect::FlowOutput" +} + +resource_schema "aws_mediaconnect_flow_source" { + cloudformation_type_name = "AWS::MediaConnect::FlowSource" +} + +resource_schema "aws_mediaconnect_flow_vpc_interface" { + cloudformation_type_name = "AWS::MediaConnect::FlowVpcInterface" +} + +resource_schema "aws_mediaconnect_gateway" { + cloudformation_type_name = "AWS::MediaConnect::Gateway" +} + +resource_schema "aws_medialive_channel_placement_group" { + cloudformation_type_name = "AWS::MediaLive::ChannelPlacementGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_cloudwatch_alarm_template" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplate" +} + +resource_schema "aws_medialive_cloudwatch_alarm_template_group" { + cloudformation_type_name = "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} + +resource_schema "aws_medialive_cluster" { + cloudformation_type_name = "AWS::MediaLive::Cluster" +} + +resource_schema "aws_medialive_event_bridge_rule_template" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplate" +} + +resource_schema "aws_medialive_event_bridge_rule_template_group" { + cloudformation_type_name = "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} + +resource_schema "aws_medialive_multiplex" { + cloudformation_type_name = "AWS::MediaLive::Multiplex" +} + +resource_schema "aws_medialive_multiplexprogram" { + cloudformation_type_name = "AWS::MediaLive::Multiplexprogram" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_medialive_network" { + cloudformation_type_name = "AWS::MediaLive::Network" +} + +resource_schema "aws_medialive_sdi_source" { + cloudformation_type_name = "AWS::MediaLive::SdiSource" +} + +resource_schema "aws_medialive_signal_map" { + cloudformation_type_name = "AWS::MediaLive::SignalMap" +} + +resource_schema "aws_mediapackage_asset" { + cloudformation_type_name = "AWS::MediaPackage::Asset" +} + +resource_schema "aws_mediapackage_channel" { + cloudformation_type_name = "AWS::MediaPackage::Channel" +} + +resource_schema "aws_mediapackage_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackage::OriginEndpoint" +} + +resource_schema "aws_mediapackage_packaging_configuration" { + cloudformation_type_name = "AWS::MediaPackage::PackagingConfiguration" +} + +resource_schema "aws_mediapackage_packaging_group" { + cloudformation_type_name = "AWS::MediaPackage::PackagingGroup" +} + +resource_schema "aws_mediapackagev2_channel" { + cloudformation_type_name = "AWS::MediaPackageV2::Channel" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_channel_group" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelGroup" +} + +resource_schema "aws_mediapackagev2_channel_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpoint" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediapackagev2_origin_endpoint_policy" { + cloudformation_type_name = "AWS::MediaPackageV2::OriginEndpointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_channel" { + cloudformation_type_name = "AWS::MediaTailor::Channel" +} + +resource_schema "aws_mediatailor_channel_policy" { + cloudformation_type_name = "AWS::MediaTailor::ChannelPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_live_source" { + cloudformation_type_name = "AWS::MediaTailor::LiveSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_mediatailor_playback_configuration" { + cloudformation_type_name = "AWS::MediaTailor::PlaybackConfiguration" +} + +resource_schema "aws_mediatailor_source_location" { + cloudformation_type_name = "AWS::MediaTailor::SourceLocation" +} + +resource_schema "aws_mediatailor_vod_source" { + cloudformation_type_name = "AWS::MediaTailor::VodSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_memorydb_acl" { + cloudformation_type_name = "AWS::MemoryDB::ACL" +} + +resource_schema "aws_memorydb_cluster" { + cloudformation_type_name = "AWS::MemoryDB::Cluster" +} + +resource_schema "aws_memorydb_parameter_group" { + cloudformation_type_name = "AWS::MemoryDB::ParameterGroup" +} + +resource_schema "aws_memorydb_subnet_group" { + cloudformation_type_name = "AWS::MemoryDB::SubnetGroup" +} + +resource_schema "aws_memorydb_user" { + cloudformation_type_name = "AWS::MemoryDB::User" +} + +resource_schema "aws_neptune_db_cluster" { + cloudformation_type_name = "AWS::Neptune::DBCluster" +} + +resource_schema "aws_neptunegraph_graph" { + cloudformation_type_name = "AWS::NeptuneGraph::Graph" +} + +resource_schema "aws_neptunegraph_private_graph_endpoint" { + cloudformation_type_name = "AWS::NeptuneGraph::PrivateGraphEndpoint" +} + +resource_schema "aws_networkfirewall_firewall" { + cloudformation_type_name = "AWS::NetworkFirewall::Firewall" +} + +resource_schema "aws_networkfirewall_firewall_policy" { + cloudformation_type_name = "AWS::NetworkFirewall::FirewallPolicy" +} + +resource_schema "aws_networkfirewall_logging_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::LoggingConfiguration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkfirewall_rule_group" { + cloudformation_type_name = "AWS::NetworkFirewall::RuleGroup" +} + +resource_schema "aws_networkfirewall_tls_inspection_configuration" { + cloudformation_type_name = "AWS::NetworkFirewall::TLSInspectionConfiguration" +} + +resource_schema "aws_networkmanager_connect_attachment" { + cloudformation_type_name = "AWS::NetworkManager::ConnectAttachment" +} + +resource_schema "aws_networkmanager_connect_peer" { + cloudformation_type_name = "AWS::NetworkManager::ConnectPeer" +} + +resource_schema "aws_networkmanager_core_network" { + cloudformation_type_name = "AWS::NetworkManager::CoreNetwork" +} + +resource_schema "aws_networkmanager_customer_gateway_association" { + cloudformation_type_name = "AWS::NetworkManager::CustomerGatewayAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_device" { + cloudformation_type_name = "AWS::NetworkManager::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_global_network" { + cloudformation_type_name = "AWS::NetworkManager::GlobalNetwork" +} + +resource_schema "aws_networkmanager_link" { + cloudformation_type_name = "AWS::NetworkManager::Link" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_link_association" { + cloudformation_type_name = "AWS::NetworkManager::LinkAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site" { + cloudformation_type_name = "AWS::NetworkManager::Site" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_site_to_site_vpn_attachment" { + cloudformation_type_name = "AWS::NetworkManager::SiteToSiteVpnAttachment" +} + +resource_schema "aws_networkmanager_transit_gateway_peering" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayPeering" +} + +resource_schema "aws_networkmanager_transit_gateway_registration" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRegistration" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_networkmanager_transit_gateway_route_table_attachment" { + cloudformation_type_name = "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} + +resource_schema "aws_networkmanager_vpc_attachment" { + cloudformation_type_name = "AWS::NetworkManager::VpcAttachment" +} + +resource_schema "aws_osis_pipeline" { + cloudformation_type_name = "AWS::OSIS::Pipeline" +} + +resource_schema "aws_oam_link" { + cloudformation_type_name = "AWS::Oam::Link" +} + +resource_schema "aws_oam_sink" { + cloudformation_type_name = "AWS::Oam::Sink" +} + +resource_schema "aws_omics_annotation_store" { + cloudformation_type_name = "AWS::Omics::AnnotationStore" +} + +resource_schema "aws_omics_reference_store" { + cloudformation_type_name = "AWS::Omics::ReferenceStore" +} + +resource_schema "aws_omics_run_group" { + cloudformation_type_name = "AWS::Omics::RunGroup" +} + +resource_schema "aws_omics_sequence_store" { + cloudformation_type_name = "AWS::Omics::SequenceStore" +} + +resource_schema "aws_omics_variant_store" { + cloudformation_type_name = "AWS::Omics::VariantStore" +} + +resource_schema "aws_omics_workflow" { + cloudformation_type_name = "AWS::Omics::Workflow" +} + +resource_schema "aws_opensearchserverless_access_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::AccessPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_collection" { + cloudformation_type_name = "AWS::OpenSearchServerless::Collection" +} + +resource_schema "aws_opensearchserverless_lifecycle_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::LifecyclePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_config" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityConfig" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_security_policy" { + cloudformation_type_name = "AWS::OpenSearchServerless::SecurityPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opensearchserverless_vpc_endpoint" { + cloudformation_type_name = "AWS::OpenSearchServerless::VpcEndpoint" +} + +resource_schema "aws_opensearchservice_application" { + cloudformation_type_name = "AWS::OpenSearchService::Application" +} + +resource_schema "aws_opensearchservice_domain" { + cloudformation_type_name = "AWS::OpenSearchService::Domain" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_opsworkscm_server" { + cloudformation_type_name = "AWS::OpsWorksCM::Server" +} + +resource_schema "aws_organizations_account" { + cloudformation_type_name = "AWS::Organizations::Account" +} + +resource_schema "aws_organizations_organization" { + cloudformation_type_name = "AWS::Organizations::Organization" +} + +resource_schema "aws_organizations_organizational_unit" { + cloudformation_type_name = "AWS::Organizations::OrganizationalUnit" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_policy" { + cloudformation_type_name = "AWS::Organizations::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_organizations_resource_policy" { + cloudformation_type_name = "AWS::Organizations::ResourcePolicy" +} + +resource_schema "aws_pcaconnectorad_connector" { + cloudformation_type_name = "AWS::PCAConnectorAD::Connector" +} + +resource_schema "aws_pcaconnectorad_directory_registration" { + cloudformation_type_name = "AWS::PCAConnectorAD::DirectoryRegistration" +} + +resource_schema "aws_pcaconnectorad_service_principal_name" { + cloudformation_type_name = "AWS::PCAConnectorAD::ServicePrincipalName" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template" { + cloudformation_type_name = "AWS::PCAConnectorAD::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorad_template_group_access_control_entry" { + cloudformation_type_name = "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_challenge" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Challenge" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_pcaconnectorscep_connector" { + cloudformation_type_name = "AWS::PCAConnectorSCEP::Connector" +} + +resource_schema "aws_panorama_application_instance" { + cloudformation_type_name = "AWS::Panorama::ApplicationInstance" +} + +resource_schema "aws_panorama_package" { + cloudformation_type_name = "AWS::Panorama::Package" +} + +resource_schema "aws_panorama_package_version" { + cloudformation_type_name = "AWS::Panorama::PackageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_paymentcryptography_alias" { + cloudformation_type_name = "AWS::PaymentCryptography::Alias" +} + +resource_schema "aws_paymentcryptography_key" { + cloudformation_type_name = "AWS::PaymentCryptography::Key" +} + +resource_schema "aws_personalize_dataset" { + cloudformation_type_name = "AWS::Personalize::Dataset" +} + +resource_schema "aws_personalize_dataset_group" { + cloudformation_type_name = "AWS::Personalize::DatasetGroup" +} + +resource_schema "aws_personalize_schema" { + cloudformation_type_name = "AWS::Personalize::Schema" +} + +resource_schema "aws_personalize_solution" { + cloudformation_type_name = "AWS::Personalize::Solution" +} + +resource_schema "aws_pinpoint_in_app_template" { + cloudformation_type_name = "AWS::Pinpoint::InAppTemplate" +} + +resource_schema "aws_pipes_pipe" { + cloudformation_type_name = "AWS::Pipes::Pipe" +} + +resource_schema "aws_proton_environment_account_connection" { + cloudformation_type_name = "AWS::Proton::EnvironmentAccountConnection" +} + +resource_schema "aws_proton_environment_template" { + cloudformation_type_name = "AWS::Proton::EnvironmentTemplate" +} + +resource_schema "aws_proton_service_template" { + cloudformation_type_name = "AWS::Proton::ServiceTemplate" +} + +resource_schema "aws_qbusiness_application" { + cloudformation_type_name = "AWS::QBusiness::Application" +} + +resource_schema "aws_qbusiness_data_source" { + cloudformation_type_name = "AWS::QBusiness::DataSource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_index" { + cloudformation_type_name = "AWS::QBusiness::Index" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_plugin" { + cloudformation_type_name = "AWS::QBusiness::Plugin" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_retriever" { + cloudformation_type_name = "AWS::QBusiness::Retriever" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qbusiness_web_experience" { + cloudformation_type_name = "AWS::QBusiness::WebExperience" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_qldb_stream" { + cloudformation_type_name = "AWS::QLDB::Stream" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_analysis" { + cloudformation_type_name = "AWS::QuickSight::Analysis" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_dashboard" { + cloudformation_type_name = "AWS::QuickSight::Dashboard" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_data_set" { + cloudformation_type_name = "AWS::QuickSight::DataSet" +} + +resource_schema "aws_quicksight_data_source" { + cloudformation_type_name = "AWS::QuickSight::DataSource" +} + +resource_schema "aws_quicksight_folder" { + cloudformation_type_name = "AWS::QuickSight::Folder" +} + +resource_schema "aws_quicksight_refresh_schedule" { + cloudformation_type_name = "AWS::QuickSight::RefreshSchedule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_template" { + cloudformation_type_name = "AWS::QuickSight::Template" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_theme" { + cloudformation_type_name = "AWS::QuickSight::Theme" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_quicksight_topic" { + cloudformation_type_name = "AWS::QuickSight::Topic" +} + +resource_schema "aws_quicksight_vpc_connection" { + cloudformation_type_name = "AWS::QuickSight::VPCConnection" +} + +resource_schema "aws_ram_permission" { + cloudformation_type_name = "AWS::RAM::Permission" +} + +resource_schema "aws_rds_custom_db_engine_version" { + cloudformation_type_name = "AWS::RDS::CustomDBEngineVersion" +} + +resource_schema "aws_rds_db_cluster" { + cloudformation_type_name = "AWS::RDS::DBCluster" +} + +resource_schema "aws_rds_db_cluster_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBClusterParameterGroup" +} + +resource_schema "aws_rds_db_instance" { + cloudformation_type_name = "AWS::RDS::DBInstance" +} + +resource_schema "aws_rds_db_parameter_group" { + cloudformation_type_name = "AWS::RDS::DBParameterGroup" +} + +resource_schema "aws_rds_db_proxy" { + cloudformation_type_name = "AWS::RDS::DBProxy" +} + +resource_schema "aws_rds_db_proxy_endpoint" { + cloudformation_type_name = "AWS::RDS::DBProxyEndpoint" +} + +resource_schema "aws_rds_db_proxy_target_group" { + cloudformation_type_name = "AWS::RDS::DBProxyTargetGroup" +} + +resource_schema "aws_rds_db_shard_group" { + cloudformation_type_name = "AWS::RDS::DBShardGroup" +} + +resource_schema "aws_rds_db_subnet_group" { + cloudformation_type_name = "AWS::RDS::DBSubnetGroup" +} + +resource_schema "aws_rds_event_subscription" { + cloudformation_type_name = "AWS::RDS::EventSubscription" +} + +resource_schema "aws_rds_global_cluster" { + cloudformation_type_name = "AWS::RDS::GlobalCluster" +} + +resource_schema "aws_rds_integration" { + cloudformation_type_name = "AWS::RDS::Integration" +} + +resource_schema "aws_rds_option_group" { + cloudformation_type_name = "AWS::RDS::OptionGroup" +} + +resource_schema "aws_rum_app_monitor" { + cloudformation_type_name = "AWS::RUM::AppMonitor" +} + +resource_schema "aws_rbin_rule" { + cloudformation_type_name = "AWS::Rbin::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_redshift_cluster" { + cloudformation_type_name = "AWS::Redshift::Cluster" +} + +resource_schema "aws_redshift_cluster_parameter_group" { + cloudformation_type_name = "AWS::Redshift::ClusterParameterGroup" +} + +resource_schema "aws_redshift_cluster_subnet_group" { + cloudformation_type_name = "AWS::Redshift::ClusterSubnetGroup" +} + +resource_schema "aws_redshift_endpoint_access" { + cloudformation_type_name = "AWS::Redshift::EndpointAccess" +} + +resource_schema "aws_redshift_endpoint_authorization" { + cloudformation_type_name = "AWS::Redshift::EndpointAuthorization" +} + +resource_schema "aws_redshift_event_subscription" { + cloudformation_type_name = "AWS::Redshift::EventSubscription" +} + +resource_schema "aws_redshift_integration" { + cloudformation_type_name = "AWS::Redshift::Integration" +} + +resource_schema "aws_redshift_scheduled_action" { + cloudformation_type_name = "AWS::Redshift::ScheduledAction" +} + +resource_schema "aws_redshiftserverless_namespace" { + cloudformation_type_name = "AWS::RedshiftServerless::Namespace" +} + +resource_schema "aws_redshiftserverless_workgroup" { + cloudformation_type_name = "AWS::RedshiftServerless::Workgroup" +} + +resource_schema "aws_refactorspaces_application" { + cloudformation_type_name = "AWS::RefactorSpaces::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_environment" { + cloudformation_type_name = "AWS::RefactorSpaces::Environment" +} + +resource_schema "aws_refactorspaces_route" { + cloudformation_type_name = "AWS::RefactorSpaces::Route" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_refactorspaces_service" { + cloudformation_type_name = "AWS::RefactorSpaces::Service" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rekognition_collection" { + cloudformation_type_name = "AWS::Rekognition::Collection" +} + +resource_schema "aws_rekognition_project" { + cloudformation_type_name = "AWS::Rekognition::Project" +} + +resource_schema "aws_rekognition_stream_processor" { + cloudformation_type_name = "AWS::Rekognition::StreamProcessor" +} + +resource_schema "aws_resiliencehub_app" { + cloudformation_type_name = "AWS::ResilienceHub::App" +} + +resource_schema "aws_resiliencehub_resiliency_policy" { + cloudformation_type_name = "AWS::ResilienceHub::ResiliencyPolicy" +} + +resource_schema "aws_resourceexplorer2_default_view_association" { + cloudformation_type_name = "AWS::ResourceExplorer2::DefaultViewAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_resourceexplorer2_index" { + cloudformation_type_name = "AWS::ResourceExplorer2::Index" +} + +resource_schema "aws_resourceexplorer2_view" { + cloudformation_type_name = "AWS::ResourceExplorer2::View" +} + +resource_schema "aws_resourcegroups_group" { + cloudformation_type_name = "AWS::ResourceGroups::Group" +} + +resource_schema "aws_resourcegroups_tag_sync_task" { + cloudformation_type_name = "AWS::ResourceGroups::TagSyncTask" +} + +resource_schema "aws_robomaker_fleet" { + cloudformation_type_name = "AWS::RoboMaker::Fleet" +} + +resource_schema "aws_robomaker_robot" { + cloudformation_type_name = "AWS::RoboMaker::Robot" +} + +resource_schema "aws_robomaker_robot_application" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplication" +} + +resource_schema "aws_robomaker_robot_application_version" { + cloudformation_type_name = "AWS::RoboMaker::RobotApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_robomaker_simulation_application" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplication" +} + +resource_schema "aws_robomaker_simulation_application_version" { + cloudformation_type_name = "AWS::RoboMaker::SimulationApplicationVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_rolesanywhere_crl" { + cloudformation_type_name = "AWS::RolesAnywhere::CRL" +} + +resource_schema "aws_rolesanywhere_profile" { + cloudformation_type_name = "AWS::RolesAnywhere::Profile" +} + +resource_schema "aws_rolesanywhere_trust_anchor" { + cloudformation_type_name = "AWS::RolesAnywhere::TrustAnchor" +} + +resource_schema "aws_route53_cidr_collection" { + cloudformation_type_name = "AWS::Route53::CidrCollection" +} + +resource_schema "aws_route53_dnssec" { + cloudformation_type_name = "AWS::Route53::DNSSEC" +} + +resource_schema "aws_route53_health_check" { + cloudformation_type_name = "AWS::Route53::HealthCheck" +} + +resource_schema "aws_route53_hosted_zone" { + cloudformation_type_name = "AWS::Route53::HostedZone" +} + +resource_schema "aws_route53_key_signing_key" { + cloudformation_type_name = "AWS::Route53::KeySigningKey" +} + +resource_schema "aws_route53profiles_profile" { + cloudformation_type_name = "AWS::Route53Profiles::Profile" +} + +resource_schema "aws_route53profiles_profile_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileAssociation" +} + +resource_schema "aws_route53profiles_profile_resource_association" { + cloudformation_type_name = "AWS::Route53Profiles::ProfileResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_cluster" { + cloudformation_type_name = "AWS::Route53RecoveryControl::Cluster" +} + +resource_schema "aws_route53recoverycontrol_control_panel" { + cloudformation_type_name = "AWS::Route53RecoveryControl::ControlPanel" +} + +resource_schema "aws_route53recoverycontrol_routing_control" { + cloudformation_type_name = "AWS::Route53RecoveryControl::RoutingControl" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoverycontrol_safety_rule" { + cloudformation_type_name = "AWS::Route53RecoveryControl::SafetyRule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_route53recoveryreadiness_cell" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::Cell" +} + +resource_schema "aws_route53recoveryreadiness_readiness_check" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ReadinessCheck" +} + +resource_schema "aws_route53recoveryreadiness_recovery_group" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::RecoveryGroup" +} + +resource_schema "aws_route53recoveryreadiness_resource_set" { + cloudformation_type_name = "AWS::Route53RecoveryReadiness::ResourceSet" +} + +resource_schema "aws_route53resolver_firewall_domain_list" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallDomainList" +} + +resource_schema "aws_route53resolver_firewall_rule_group" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroup" +} + +resource_schema "aws_route53resolver_firewall_rule_group_association" { + cloudformation_type_name = "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} + +resource_schema "aws_route53resolver_outpost_resolver" { + cloudformation_type_name = "AWS::Route53Resolver::OutpostResolver" +} + +resource_schema "aws_route53resolver_resolver_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverConfig" +} + +resource_schema "aws_route53resolver_resolver_dnssec_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverDNSSECConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} + +resource_schema "aws_route53resolver_resolver_query_logging_config_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} + +resource_schema "aws_route53resolver_resolver_rule" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRule" +} + +resource_schema "aws_route53resolver_resolver_rule_association" { + cloudformation_type_name = "AWS::Route53Resolver::ResolverRuleAssociation" +} + +resource_schema "aws_s3_access_grant" { + cloudformation_type_name = "AWS::S3::AccessGrant" +} + +resource_schema "aws_s3_access_grants_instance" { + cloudformation_type_name = "AWS::S3::AccessGrantsInstance" +} + +resource_schema "aws_s3_access_grants_location" { + cloudformation_type_name = "AWS::S3::AccessGrantsLocation" +} + +resource_schema "aws_s3_access_point" { + cloudformation_type_name = "AWS::S3::AccessPoint" +} + +resource_schema "aws_s3_bucket" { + cloudformation_type_name = "AWS::S3::Bucket" +} + +resource_schema "aws_s3_bucket_policy" { + cloudformation_type_name = "AWS::S3::BucketPolicy" +} + +resource_schema "aws_s3_multi_region_access_point" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPoint" +} + +resource_schema "aws_s3_multi_region_access_point_policy" { + cloudformation_type_name = "AWS::S3::MultiRegionAccessPointPolicy" +} + +resource_schema "aws_s3_storage_lens" { + cloudformation_type_name = "AWS::S3::StorageLens" +} + +resource_schema "aws_s3_storage_lens_group" { + cloudformation_type_name = "AWS::S3::StorageLensGroup" +} + +resource_schema "aws_s3express_bucket_policy" { + cloudformation_type_name = "AWS::S3Express::BucketPolicy" +} + +resource_schema "aws_s3express_directory_bucket" { + cloudformation_type_name = "AWS::S3Express::DirectoryBucket" +} + +resource_schema "aws_s3objectlambda_access_point" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPoint" +} + +resource_schema "aws_s3objectlambda_access_point_policy" { + cloudformation_type_name = "AWS::S3ObjectLambda::AccessPointPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_access_point" { + cloudformation_type_name = "AWS::S3Outposts::AccessPoint" +} + +resource_schema "aws_s3outposts_bucket" { + cloudformation_type_name = "AWS::S3Outposts::Bucket" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_bucket_policy" { + cloudformation_type_name = "AWS::S3Outposts::BucketPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_s3outposts_endpoint" { + cloudformation_type_name = "AWS::S3Outposts::Endpoint" +} + +resource_schema "aws_ses_configuration_set" { + cloudformation_type_name = "AWS::SES::ConfigurationSet" +} + +resource_schema "aws_ses_configuration_set_event_destination" { + cloudformation_type_name = "AWS::SES::ConfigurationSetEventDestination" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ses_contact_list" { + cloudformation_type_name = "AWS::SES::ContactList" +} + +resource_schema "aws_ses_dedicated_ip_pool" { + cloudformation_type_name = "AWS::SES::DedicatedIpPool" +} + +resource_schema "aws_ses_email_identity" { + cloudformation_type_name = "AWS::SES::EmailIdentity" +} + +resource_schema "aws_ses_mail_manager_addon_instance" { + cloudformation_type_name = "AWS::SES::MailManagerAddonInstance" +} + +resource_schema "aws_ses_mail_manager_addon_subscription" { + cloudformation_type_name = "AWS::SES::MailManagerAddonSubscription" +} + +resource_schema "aws_ses_mail_manager_archive" { + cloudformation_type_name = "AWS::SES::MailManagerArchive" +} + +resource_schema "aws_ses_mail_manager_ingress_point" { + cloudformation_type_name = "AWS::SES::MailManagerIngressPoint" +} + +resource_schema "aws_ses_mail_manager_relay" { + cloudformation_type_name = "AWS::SES::MailManagerRelay" +} + +resource_schema "aws_ses_mail_manager_rule_set" { + cloudformation_type_name = "AWS::SES::MailManagerRuleSet" +} + +resource_schema "aws_ses_mail_manager_traffic_policy" { + cloudformation_type_name = "AWS::SES::MailManagerTrafficPolicy" +} + +resource_schema "aws_ses_template" { + cloudformation_type_name = "AWS::SES::Template" +} + +resource_schema "aws_ses_vdm_attributes" { + cloudformation_type_name = "AWS::SES::VdmAttributes" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sns_subscription" { + cloudformation_type_name = "AWS::SNS::Subscription" +} + +resource_schema "aws_sns_topic" { + cloudformation_type_name = "AWS::SNS::Topic" +} + +resource_schema "aws_sns_topic_inline_policy" { + cloudformation_type_name = "AWS::SNS::TopicInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sqs_queue" { + cloudformation_type_name = "AWS::SQS::Queue" +} + +resource_schema "aws_sqs_queue_inline_policy" { + cloudformation_type_name = "AWS::SQS::QueueInlinePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssm_association" { + cloudformation_type_name = "AWS::SSM::Association" +} + +resource_schema "aws_ssm_document" { + cloudformation_type_name = "AWS::SSM::Document" +} + +resource_schema "aws_ssm_parameter" { + cloudformation_type_name = "AWS::SSM::Parameter" +} + +resource_schema "aws_ssm_patch_baseline" { + cloudformation_type_name = "AWS::SSM::PatchBaseline" +} + +resource_schema "aws_ssm_resource_data_sync" { + cloudformation_type_name = "AWS::SSM::ResourceDataSync" +} + +resource_schema "aws_ssm_resource_policy" { + cloudformation_type_name = "AWS::SSM::ResourcePolicy" +} + +resource_schema "aws_ssmcontacts_contact" { + cloudformation_type_name = "AWS::SSMContacts::Contact" +} + +resource_schema "aws_ssmcontacts_contact_channel" { + cloudformation_type_name = "AWS::SSMContacts::ContactChannel" +} + +resource_schema "aws_ssmcontacts_plan" { + cloudformation_type_name = "AWS::SSMContacts::Plan" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_ssmcontacts_rotation" { + cloudformation_type_name = "AWS::SSMContacts::Rotation" +} + +resource_schema "aws_ssmincidents_replication_set" { + cloudformation_type_name = "AWS::SSMIncidents::ReplicationSet" +} + +resource_schema "aws_ssmincidents_response_plan" { + cloudformation_type_name = "AWS::SSMIncidents::ResponsePlan" +} + +resource_schema "aws_ssmquicksetup_configuration_manager" { + cloudformation_type_name = "AWS::SSMQuickSetup::ConfigurationManager" +} + +resource_schema "aws_sso_application" { + cloudformation_type_name = "AWS::SSO::Application" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sso_application_assignment" { + cloudformation_type_name = "AWS::SSO::ApplicationAssignment" +} + +resource_schema "aws_sso_assignment" { + cloudformation_type_name = "AWS::SSO::Assignment" +} + +resource_schema "aws_sso_instance" { + cloudformation_type_name = "AWS::SSO::Instance" +} + +resource_schema "aws_sso_instance_access_control_attribute_configuration" { + cloudformation_type_name = "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} + +resource_schema "aws_sso_permission_set" { + cloudformation_type_name = "AWS::SSO::PermissionSet" +} + +resource_schema "aws_sagemaker_app" { + cloudformation_type_name = "AWS::SageMaker::App" +} + +resource_schema "aws_sagemaker_app_image_config" { + cloudformation_type_name = "AWS::SageMaker::AppImageConfig" +} + +resource_schema "aws_sagemaker_cluster" { + cloudformation_type_name = "AWS::SageMaker::Cluster" +} + +resource_schema "aws_sagemaker_data_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::DataQualityJobDefinition" +} + +resource_schema "aws_sagemaker_device" { + cloudformation_type_name = "AWS::SageMaker::Device" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_device_fleet" { + cloudformation_type_name = "AWS::SageMaker::DeviceFleet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_domain" { + cloudformation_type_name = "AWS::SageMaker::Domain" +} + +resource_schema "aws_sagemaker_endpoint" { + cloudformation_type_name = "AWS::SageMaker::Endpoint" +} + +resource_schema "aws_sagemaker_feature_group" { + cloudformation_type_name = "AWS::SageMaker::FeatureGroup" +} + +resource_schema "aws_sagemaker_image" { + cloudformation_type_name = "AWS::SageMaker::Image" +} + +resource_schema "aws_sagemaker_image_version" { + cloudformation_type_name = "AWS::SageMaker::ImageVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_sagemaker_inference_component" { + cloudformation_type_name = "AWS::SageMaker::InferenceComponent" +} + +resource_schema "aws_sagemaker_inference_experiment" { + cloudformation_type_name = "AWS::SageMaker::InferenceExperiment" +} + +resource_schema "aws_sagemaker_mlflow_tracking_server" { + cloudformation_type_name = "AWS::SageMaker::MlflowTrackingServer" +} + +resource_schema "aws_sagemaker_model_bias_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelBiasJobDefinition" +} + +resource_schema "aws_sagemaker_model_card" { + cloudformation_type_name = "AWS::SageMaker::ModelCard" +} + +resource_schema "aws_sagemaker_model_explainability_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelExplainabilityJobDefinition" +} + +resource_schema "aws_sagemaker_model_package" { + cloudformation_type_name = "AWS::SageMaker::ModelPackage" +} + +resource_schema "aws_sagemaker_model_package_group" { + cloudformation_type_name = "AWS::SageMaker::ModelPackageGroup" +} + +resource_schema "aws_sagemaker_model_quality_job_definition" { + cloudformation_type_name = "AWS::SageMaker::ModelQualityJobDefinition" +} + +resource_schema "aws_sagemaker_monitoring_schedule" { + cloudformation_type_name = "AWS::SageMaker::MonitoringSchedule" +} + +resource_schema "aws_sagemaker_pipeline" { + cloudformation_type_name = "AWS::SageMaker::Pipeline" +} + +resource_schema "aws_sagemaker_project" { + cloudformation_type_name = "AWS::SageMaker::Project" +} + +resource_schema "aws_sagemaker_space" { + cloudformation_type_name = "AWS::SageMaker::Space" +} + +resource_schema "aws_sagemaker_studio_lifecycle_config" { + cloudformation_type_name = "AWS::SageMaker::StudioLifecycleConfig" +} + +resource_schema "aws_sagemaker_user_profile" { + cloudformation_type_name = "AWS::SageMaker::UserProfile" +} + +resource_schema "aws_scheduler_schedule" { + cloudformation_type_name = "AWS::Scheduler::Schedule" +} + +resource_schema "aws_scheduler_schedule_group" { + cloudformation_type_name = "AWS::Scheduler::ScheduleGroup" +} + +resource_schema "aws_secretsmanager_resource_policy" { + cloudformation_type_name = "AWS::SecretsManager::ResourcePolicy" +} + +resource_schema "aws_secretsmanager_rotation_schedule" { + cloudformation_type_name = "AWS::SecretsManager::RotationSchedule" +} + +resource_schema "aws_secretsmanager_secret" { + cloudformation_type_name = "AWS::SecretsManager::Secret" +} + +resource_schema "aws_secretsmanager_secret_target_attachment" { + cloudformation_type_name = "AWS::SecretsManager::SecretTargetAttachment" +} + +resource_schema "aws_securityhub_automation_rule" { + cloudformation_type_name = "AWS::SecurityHub::AutomationRule" +} + +resource_schema "aws_securityhub_configuration_policy" { + cloudformation_type_name = "AWS::SecurityHub::ConfigurationPolicy" +} + +resource_schema "aws_securityhub_delegated_admin" { + cloudformation_type_name = "AWS::SecurityHub::DelegatedAdmin" +} + +resource_schema "aws_securityhub_finding_aggregator" { + cloudformation_type_name = "AWS::SecurityHub::FindingAggregator" +} + +resource_schema "aws_securityhub_hub" { + cloudformation_type_name = "AWS::SecurityHub::Hub" +} + +resource_schema "aws_securityhub_insight" { + cloudformation_type_name = "AWS::SecurityHub::Insight" +} + +resource_schema "aws_securityhub_organization_configuration" { + cloudformation_type_name = "AWS::SecurityHub::OrganizationConfiguration" +} + +resource_schema "aws_securityhub_policy_association" { + cloudformation_type_name = "AWS::SecurityHub::PolicyAssociation" +} + +resource_schema "aws_securityhub_product_subscription" { + cloudformation_type_name = "AWS::SecurityHub::ProductSubscription" +} + +resource_schema "aws_securityhub_security_control" { + cloudformation_type_name = "AWS::SecurityHub::SecurityControl" +} + +resource_schema "aws_securityhub_standard" { + cloudformation_type_name = "AWS::SecurityHub::Standard" +} + +resource_schema "aws_securitylake_aws_log_source" { + cloudformation_type_name = "AWS::SecurityLake::AwsLogSource" +} + +resource_schema "aws_securitylake_data_lake" { + cloudformation_type_name = "AWS::SecurityLake::DataLake" +} + +resource_schema "aws_securitylake_subscriber" { + cloudformation_type_name = "AWS::SecurityLake::Subscriber" +} + +resource_schema "aws_securitylake_subscriber_notification" { + cloudformation_type_name = "AWS::SecurityLake::SubscriberNotification" +} + +resource_schema "aws_servicecatalog_cloudformation_provisioned_product" { + cloudformation_type_name = "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalog_service_action" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceAction" +} + +resource_schema "aws_servicecatalog_service_action_association" { + cloudformation_type_name = "AWS::ServiceCatalog::ServiceActionAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_application" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::Application" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} + +resource_schema "aws_servicecatalogappregistry_attribute_group_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_servicecatalogappregistry_resource_association" { + cloudformation_type_name = "AWS::ServiceCatalogAppRegistry::ResourceAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_shield_drt_access" { + cloudformation_type_name = "AWS::Shield::DRTAccess" +} + +resource_schema "aws_shield_proactive_engagement" { + cloudformation_type_name = "AWS::Shield::ProactiveEngagement" +} + +resource_schema "aws_shield_protection" { + cloudformation_type_name = "AWS::Shield::Protection" +} + +resource_schema "aws_shield_protection_group" { + cloudformation_type_name = "AWS::Shield::ProtectionGroup" +} + +resource_schema "aws_signer_profile_permission" { + cloudformation_type_name = "AWS::Signer::ProfilePermission" +} + +resource_schema "aws_signer_signing_profile" { + cloudformation_type_name = "AWS::Signer::SigningProfile" +} + +resource_schema "aws_simspaceweaver_simulation" { + cloudformation_type_name = "AWS::SimSpaceWeaver::Simulation" +} + +resource_schema "aws_stepfunctions_activity" { + cloudformation_type_name = "AWS::StepFunctions::Activity" +} + +resource_schema "aws_stepfunctions_state_machine" { + cloudformation_type_name = "AWS::StepFunctions::StateMachine" +} + +resource_schema "aws_stepfunctions_state_machine_alias" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_stepfunctions_state_machine_version" { + cloudformation_type_name = "AWS::StepFunctions::StateMachineVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_supportapp_account_alias" { + cloudformation_type_name = "AWS::SupportApp::AccountAlias" +} + +resource_schema "aws_supportapp_slack_channel_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackChannelConfiguration" +} + +resource_schema "aws_supportapp_slack_workspace_configuration" { + cloudformation_type_name = "AWS::SupportApp::SlackWorkspaceConfiguration" +} + +resource_schema "aws_synthetics_canary" { + cloudformation_type_name = "AWS::Synthetics::Canary" +} + +resource_schema "aws_synthetics_group" { + cloudformation_type_name = "AWS::Synthetics::Group" +} + +resource_schema "aws_systemsmanagersap_application" { + cloudformation_type_name = "AWS::SystemsManagerSAP::Application" +} + +resource_schema "aws_timestream_database" { + cloudformation_type_name = "AWS::Timestream::Database" +} + +resource_schema "aws_timestream_influx_db_instance" { + cloudformation_type_name = "AWS::Timestream::InfluxDBInstance" +} + +resource_schema "aws_timestream_scheduled_query" { + cloudformation_type_name = "AWS::Timestream::ScheduledQuery" +} + +resource_schema "aws_timestream_table" { + cloudformation_type_name = "AWS::Timestream::Table" +} + +resource_schema "aws_transfer_agreement" { + cloudformation_type_name = "AWS::Transfer::Agreement" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_certificate" { + cloudformation_type_name = "AWS::Transfer::Certificate" +} + +resource_schema "aws_transfer_connector" { + cloudformation_type_name = "AWS::Transfer::Connector" +} + +resource_schema "aws_transfer_profile" { + cloudformation_type_name = "AWS::Transfer::Profile" +} + +resource_schema "aws_transfer_server" { + cloudformation_type_name = "AWS::Transfer::Server" +} + +resource_schema "aws_transfer_user" { + cloudformation_type_name = "AWS::Transfer::User" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_transfer_workflow" { + cloudformation_type_name = "AWS::Transfer::Workflow" +} + +resource_schema "aws_verifiedpermissions_identity_source" { + cloudformation_type_name = "AWS::VerifiedPermissions::IdentitySource" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy" { + cloudformation_type_name = "AWS::VerifiedPermissions::Policy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_verifiedpermissions_policy_store" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyStore" +} + +resource_schema "aws_verifiedpermissions_policy_template" { + cloudformation_type_name = "AWS::VerifiedPermissions::PolicyTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_voiceid_domain" { + cloudformation_type_name = "AWS::VoiceID::Domain" +} + +resource_schema "aws_vpclattice_access_log_subscription" { + cloudformation_type_name = "AWS::VpcLattice::AccessLogSubscription" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_auth_policy" { + cloudformation_type_name = "AWS::VpcLattice::AuthPolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_listener" { + cloudformation_type_name = "AWS::VpcLattice::Listener" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_resource_policy" { + cloudformation_type_name = "AWS::VpcLattice::ResourcePolicy" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_rule" { + cloudformation_type_name = "AWS::VpcLattice::Rule" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_vpclattice_service" { + cloudformation_type_name = "AWS::VpcLattice::Service" +} + +resource_schema "aws_vpclattice_service_network" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetwork" +} + +resource_schema "aws_vpclattice_service_network_service_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkServiceAssociation" +} + +resource_schema "aws_vpclattice_service_network_vpc_association" { + cloudformation_type_name = "AWS::VpcLattice::ServiceNetworkVpcAssociation" +} + +resource_schema "aws_vpclattice_target_group" { + cloudformation_type_name = "AWS::VpcLattice::TargetGroup" +} + +resource_schema "aws_wafv2_ip_set" { + cloudformation_type_name = "AWS::WAFv2::IPSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_logging_configuration" { + cloudformation_type_name = "AWS::WAFv2::LoggingConfiguration" +} + +resource_schema "aws_wafv2_regex_pattern_set" { + cloudformation_type_name = "AWS::WAFv2::RegexPatternSet" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_rule_group" { + cloudformation_type_name = "AWS::WAFv2::RuleGroup" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl" { + cloudformation_type_name = "AWS::WAFv2::WebACL" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wafv2_web_acl_association" { + cloudformation_type_name = "AWS::WAFv2::WebACLAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent" { + cloudformation_type_name = "AWS::Wisdom::AIAgent" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_agent_version" { + cloudformation_type_name = "AWS::Wisdom::AIAgentVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt" { + cloudformation_type_name = "AWS::Wisdom::AIPrompt" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_ai_prompt_version" { + cloudformation_type_name = "AWS::Wisdom::AIPromptVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_assistant" { + cloudformation_type_name = "AWS::Wisdom::Assistant" +} + +resource_schema "aws_wisdom_assistant_association" { + cloudformation_type_name = "AWS::Wisdom::AssistantAssociation" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_knowledge_base" { + cloudformation_type_name = "AWS::Wisdom::KnowledgeBase" +} + +resource_schema "aws_wisdom_message_template" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplate" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_wisdom_message_template_version" { + cloudformation_type_name = "AWS::Wisdom::MessageTemplateVersion" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_connection_alias" { + cloudformation_type_name = "AWS::WorkSpaces::ConnectionAlias" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspaces_workspaces_pool" { + cloudformation_type_name = "AWS::WorkSpaces::WorkspacesPool" +} + +resource_schema "aws_workspacesthinclient_environment" { + cloudformation_type_name = "AWS::WorkSpacesThinClient::Environment" +} + +resource_schema "aws_workspacesweb_browser_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::BrowserSettings" +} + +resource_schema "aws_workspacesweb_data_protection_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::DataProtectionSettings" +} + +resource_schema "aws_workspacesweb_identity_provider" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IdentityProvider" + suppress_plural_data_source_generation = true +} + +resource_schema "aws_workspacesweb_ip_access_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::IpAccessSettings" +} + +resource_schema "aws_workspacesweb_network_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::NetworkSettings" +} + +resource_schema "aws_workspacesweb_portal" { + cloudformation_type_name = "AWS::WorkSpacesWeb::Portal" +} + +resource_schema "aws_workspacesweb_trust_store" { + cloudformation_type_name = "AWS::WorkSpacesWeb::TrustStore" +} + +resource_schema "aws_workspacesweb_user_access_logging_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} + +resource_schema "aws_workspacesweb_user_settings" { + cloudformation_type_name = "AWS::WorkSpacesWeb::UserSettings" +} + +resource_schema "aws_xray_group" { + cloudformation_type_name = "AWS::XRay::Group" +} + +resource_schema "aws_xray_resource_policy" { + cloudformation_type_name = "AWS::XRay::ResourcePolicy" +} + +resource_schema "aws_xray_sampling_rule" { + cloudformation_type_name = "AWS::XRay::SamplingRule" +} diff --git a/internal/provider/import_examples_gen.json b/internal/provider/import_examples_gen.json index 4731cc594c..6f14faf2fc 100644 --- a/internal/provider/import_examples_gen.json +++ b/internal/provider/import_examples_gen.json @@ -1004,6 +1004,11 @@ "identifier": ["Id"], "path": "./examples/resources/awscc_cognito_log_delivery_configuration/import.sh" }, + { + "resource": "awscc_cognito_managed_login_branding", + "identifier": ["UserPoolId","ManagedLoginBrandingId"], + "path": "./examples/resources/awscc_cognito_managed_login_branding/import.sh" + }, { "resource": "awscc_cognito_user_pool_client", "identifier": ["UserPoolId","ClientId"], @@ -1859,6 +1864,16 @@ "identifier": ["VpcId"], "path": "./examples/resources/awscc_ec2_vpc/import.sh" }, + { + "resource": "awscc_ec2_vpc_block_public_access_exclusion", + "identifier": ["ExclusionId"], + "path": "./examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh" + }, + { + "resource": "awscc_ec2_vpc_block_public_access_options", + "identifier": ["AccountId"], + "path": "./examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh" + }, { "resource": "awscc_ec2_vpc_cidr_block", "identifier": ["Id","VpcId"], diff --git a/internal/provider/plural_data_sources.go b/internal/provider/plural_data_sources.go index ecd3779eb4..4d4f457344 100644 --- a/internal/provider/plural_data_sources.go +++ b/internal/provider/plural_data_sources.go @@ -259,6 +259,7 @@ //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_route_tables -cftype AWS::EC2::TransitGatewayRouteTable -package ec2 ../aws/ec2/transit_gateway_route_table_plural_data_source_gen.go ../aws/ec2/transit_gateway_route_table_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachments -cftype AWS::EC2::TransitGatewayVpcAttachment -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpcs -cftype AWS::EC2::VPC -package ec2 ../aws/ec2/vpc_plural_data_source_gen.go ../aws/ec2/vpc_plural_data_source_gen_test.go +//go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_exclusions -cftype AWS::EC2::VPCBlockPublicAccessExclusion -package ec2 ../aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go ../aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpcdhcp_options_associations -cftype AWS::EC2::VPCDHCPOptionsAssociation -package ec2 ../aws/ec2/vpcdhcp_options_association_plural_data_source_gen.go ../aws/ec2/vpcdhcp_options_association_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_endpoints -cftype AWS::EC2::VPCEndpoint -package ec2 ../aws/ec2/vpc_endpoint_plural_data_source_gen.go ../aws/ec2/vpc_endpoint_plural_data_source_gen_test.go //go:generate go run generators/plural-data-source/main.go -data-source awscc_ec2_vpc_endpoint_connection_notifications -cftype AWS::EC2::VPCEndpointConnectionNotification -package ec2 ../aws/ec2/vpc_endpoint_connection_notification_plural_data_source_gen.go ../aws/ec2/vpc_endpoint_connection_notification_plural_data_source_gen_test.go diff --git a/internal/provider/resources.go b/internal/provider/resources.go index f1502e65d5..cff0eb0372 100644 --- a/internal/provider/resources.go +++ b/internal/provider/resources.go @@ -203,6 +203,7 @@ //go:generate go run generators/resource/main.go -resource awscc_cognito_identity_pool_principal_tag -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolPrincipalTag.json -package cognito -- ../aws/cognito/identity_pool_principal_tag_resource_gen.go ../aws/cognito/identity_pool_principal_tag_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_identity_pool_role_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolRoleAttachment.json -package cognito -- ../aws/cognito/identity_pool_role_attachment_resource_gen.go ../aws/cognito/identity_pool_role_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_log_delivery_configuration -cfschema ../service/cloudformation/schemas/AWS_Cognito_LogDeliveryConfiguration.json -package cognito -- ../aws/cognito/log_delivery_configuration_resource_gen.go ../aws/cognito/log_delivery_configuration_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_cognito_managed_login_branding -cfschema ../service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json -package cognito -- ../aws/cognito/managed_login_branding_resource_gen.go ../aws/cognito/managed_login_branding_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_client -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolClient.json -package cognito -- ../aws/cognito/user_pool_client_resource_gen.go ../aws/cognito/user_pool_client_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_group -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolGroup.json -package cognito -- ../aws/cognito/user_pool_group_resource_gen.go ../aws/cognito/user_pool_group_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_cognito_user_pool_identity_provider -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json -package cognito -- ../aws/cognito/user_pool_identity_provider_resource_gen.go ../aws/cognito/user_pool_identity_provider_resource_gen_test.go @@ -374,6 +375,8 @@ //go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_route_table_propagation -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayRouteTablePropagation.json -package ec2 -- ../aws/ec2/transit_gateway_route_table_propagation_resource_gen.go ../aws/ec2/transit_gateway_route_table_propagation_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 -- ../aws/ec2/transit_gateway_vpc_attachment_resource_gen.go ../aws/ec2/transit_gateway_vpc_attachment_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc -cfschema ../service/cloudformation/schemas/AWS_EC2_VPC.json -package ec2 -- ../aws/ec2/vpc_resource_gen.go ../aws/ec2/vpc_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_block_public_access_exclusion -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json -package ec2 -- ../aws/ec2/vpc_block_public_access_exclusion_resource_gen.go ../aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go +//go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_block_public_access_options -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json -package ec2 -- ../aws/ec2/vpc_block_public_access_options_resource_gen.go ../aws/ec2/vpc_block_public_access_options_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_cidr_block -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json -package ec2 -- ../aws/ec2/vpc_cidr_block_resource_gen.go ../aws/ec2/vpc_cidr_block_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpcdhcp_options_association -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCDHCPOptionsAssociation.json -package ec2 -- ../aws/ec2/vpcdhcp_options_association_resource_gen.go ../aws/ec2/vpcdhcp_options_association_resource_gen_test.go //go:generate go run generators/resource/main.go -resource awscc_ec2_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json -package ec2 -- ../aws/ec2/vpc_endpoint_resource_gen.go ../aws/ec2/vpc_endpoint_resource_gen_test.go diff --git a/internal/provider/singular_data_sources.go b/internal/provider/singular_data_sources.go index 599e39b9d1..75fa0e77c0 100644 --- a/internal/provider/singular_data_sources.go +++ b/internal/provider/singular_data_sources.go @@ -203,6 +203,7 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_identity_pool_principal_tag -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolPrincipalTag.json -package cognito ../aws/cognito/identity_pool_principal_tag_singular_data_source_gen.go ../aws/cognito/identity_pool_principal_tag_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_identity_pool_role_attachment -cfschema ../service/cloudformation/schemas/AWS_Cognito_IdentityPoolRoleAttachment.json -package cognito ../aws/cognito/identity_pool_role_attachment_singular_data_source_gen.go ../aws/cognito/identity_pool_role_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_log_delivery_configuration -cfschema ../service/cloudformation/schemas/AWS_Cognito_LogDeliveryConfiguration.json -package cognito ../aws/cognito/log_delivery_configuration_singular_data_source_gen.go ../aws/cognito/log_delivery_configuration_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_managed_login_branding -cfschema ../service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json -package cognito ../aws/cognito/managed_login_branding_singular_data_source_gen.go ../aws/cognito/managed_login_branding_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_client -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolClient.json -package cognito ../aws/cognito/user_pool_client_singular_data_source_gen.go ../aws/cognito/user_pool_client_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_group -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolGroup.json -package cognito ../aws/cognito/user_pool_group_singular_data_source_gen.go ../aws/cognito/user_pool_group_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_cognito_user_pool_identity_provider -cfschema ../service/cloudformation/schemas/AWS_Cognito_UserPoolIdentityProvider.json -package cognito ../aws/cognito/user_pool_identity_provider_singular_data_source_gen.go ../aws/cognito/user_pool_identity_provider_singular_data_source_gen_test.go @@ -374,6 +375,8 @@ //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_route_table_propagation -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayRouteTablePropagation.json -package ec2 ../aws/ec2/transit_gateway_route_table_propagation_singular_data_source_gen.go ../aws/ec2/transit_gateway_route_table_propagation_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_transit_gateway_vpc_attachment -cfschema ../service/cloudformation/schemas/AWS_EC2_TransitGatewayVpcAttachment.json -package ec2 ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen.go ../aws/ec2/transit_gateway_vpc_attachment_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc -cfschema ../service/cloudformation/schemas/AWS_EC2_VPC.json -package ec2 ../aws/ec2/vpc_singular_data_source_gen.go ../aws/ec2/vpc_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_exclusion -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json -package ec2 ../aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go ../aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go +//go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_block_public_access_options -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json -package ec2 ../aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go ../aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_cidr_block -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCCidrBlock.json -package ec2 ../aws/ec2/vpc_cidr_block_singular_data_source_gen.go ../aws/ec2/vpc_cidr_block_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpcdhcp_options_association -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCDHCPOptionsAssociation.json -package ec2 ../aws/ec2/vpcdhcp_options_association_singular_data_source_gen.go ../aws/ec2/vpcdhcp_options_association_singular_data_source_gen_test.go //go:generate go run generators/singular-data-source/main.go -data-source awscc_ec2_vpc_endpoint -cfschema ../service/cloudformation/schemas/AWS_EC2_VPCEndpoint.json -package ec2 ../aws/ec2/vpc_endpoint_singular_data_source_gen.go ../aws/ec2/vpc_endpoint_singular_data_source_gen_test.go diff --git a/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json b/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json new file mode 100644 index 0000000000..4a17d51b8e --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_Cognito_ManagedLoginBranding.json @@ -0,0 +1,165 @@ +{ + "typeName": "AWS::Cognito::ManagedLoginBranding", + "description": "Resource Type definition for AWS::Cognito::ManagedLoginBranding", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "definitions": { + "ManagedLoginBrandingIdType": { + "type": "string", + "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" + }, + "CategoryType": { + "type": "string", + "enum": [ + "FAVICON_ICO", + "FAVICON_SVG", + "EMAIL_GRAPHIC", + "SMS_GRAPHIC", + "AUTH_APP_GRAPHIC", + "PASSWORD_GRAPHIC", + "PASSKEY_GRAPHIC", + "PAGE_HEADER_LOGO", + "PAGE_HEADER_BACKGROUND", + "PAGE_FOOTER_LOGO", + "PAGE_FOOTER_BACKGROUND", + "PAGE_BACKGROUND", + "FORM_BACKGROUND", + "FORM_LOGO", + "IDP_BUTTON_ICON" + ] + }, + "ColorModeType": { + "type": "string", + "enum": [ + "LIGHT", + "DARK", + "DYNAMIC" + ] + }, + "ExtensionType": { + "type": "string", + "enum": [ + "ICO", + "JPEG", + "PNG", + "SVG", + "WEBP" + ] + }, + "BytesType": { + "type": "string", + "maxLength": 1000000 + }, + "ResourceIdType": { + "type": "string", + "pattern": "^[\\w\\- ]+$", + "minLength": 1, + "maxLength": 40 + }, + "AssetType": { + "type": "object", + "properties": { + "Category": { + "$ref": "#/definitions/CategoryType" + }, + "ColorMode": { + "$ref": "#/definitions/ColorModeType" + }, + "Extension": { + "$ref": "#/definitions/ExtensionType" + }, + "Bytes": { + "$ref": "#/definitions/BytesType" + }, + "ResourceId": { + "$ref": "#/definitions/ResourceIdType" + } + }, + "additionalProperties": false, + "required": [ + "Category", + "ColorMode", + "Extension" + ] + }, + "AssetList": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetType" + } + } + }, + "properties": { + "UserPoolId": { + "type": "string" + }, + "ClientId": { + "type": "string" + }, + "UseCognitoProvidedValues": { + "type": "boolean" + }, + "Settings": { + "type": "object" + }, + "Assets": { + "$ref": "#/definitions/AssetList" + }, + "ManagedLoginBrandingId": { + "$ref": "#/definitions/ManagedLoginBrandingIdType" + }, + "ReturnMergedResources": { + "type": "boolean" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "additionalProperties": false, + "required": [ + "UserPoolId" + ], + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "readOnlyProperties": [ + "/properties/ManagedLoginBrandingId" + ], + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ManagedLoginBrandingId" + ], + "writeOnlyProperties": [ + "/properties/ClientId", + "/properties/ReturnMergedResources" + ], + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "update": { + "permissions": [ + "cognito-idp:UpdateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteManagedLoginBranding" + ], + "timeoutInMinutes": 2 + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json new file mode 100644 index 0000000000..325d6d7e31 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessExclusion.json @@ -0,0 +1,131 @@ +{ + "typeName": "AWS::EC2::VPCBlockPublicAccessExclusion", + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessexclusion.git", + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "definitions": { + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128 + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256 + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false + } + }, + "properties": { + "ExclusionId": { + "type": "string", + "description": "The ID of the exclusion" + }, + "InternetGatewayExclusionMode": { + "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + "type": "string", + "enum": [ + "allow-bidirectional", + "allow-egress" + ] + }, + "VpcId": { + "type": "string", + "description": "The ID of the vpc. Required only if you don't specify SubnetId." + }, + "SubnetId": { + "type": "string", + "description": "The ID of the subnet. Required only if you don't specify VpcId" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + } + } + }, + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "VpcId" + ] + }, + { + "required": [ + "SubnetId" + ] + } + ], + "required": [ + "InternetGatewayExclusionMode" + ], + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/SubnetId" + ], + "readOnlyProperties": [ + "/properties/ExclusionId" + ], + "primaryIdentifier": [ + "/properties/ExclusionId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:CreateVpcBlockPublicAccessExclusion", + "ec2:CreateTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:ModifyVpcBlockPublicAccessExclusion", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + } + } +} diff --git a/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json new file mode 100644 index 0000000000..a5063a0451 --- /dev/null +++ b/internal/service/cloudformation/schemas/AWS_EC2_VPCBlockPublicAccessOptions.json @@ -0,0 +1,60 @@ +{ + "typeName": "AWS::EC2::VPCBlockPublicAccessOptions", + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessoptions.git", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "properties": { + "InternetGatewayBlockMode": { + "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + "type": "string", + "enum": [ + "block-bidirectional", + "block-ingress" + ] + }, + "AccountId": { + "type": "string", + "description": "The identifier for the specified AWS account." + } + }, + "additionalProperties": false, + "required": [ + "InternetGatewayBlockMode" + ], + "readOnlyProperties": [ + "/properties/AccountId" + ], + "primaryIdentifier": [ + "/properties/AccountId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + } + } +} From b0dbd3301fc530778ede9f7c583dc74e12ff80b1 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 11:48:27 -0500 Subject: [PATCH 3/6] 2024/11/26 CloudFormation schemas in us-east-1; Generate Terraform resource schemas. --- .../scaling_policy_resource_gen.go | 34 + ...eams_channel_configuration_resource_gen.go | 55 +- ...lack_channel_configuration_resource_gen.go | 53 +- .../managed_login_branding_resource_gen.go | 327 +++++++++ ...anaged_login_branding_resource_gen_test.go | 25 + .../aws/connect/task_template_resource_gen.go | 6 +- ...ck_public_access_exclusion_resource_gen.go | 211 ++++++ ...blic_access_exclusion_resource_gen_test.go | 25 + ...lock_public_access_options_resource_gen.go | 101 +++ ...public_access_options_resource_gen_test.go | 25 + internal/aws/eks/cluster_resource_gen.go | 288 ++++++++ .../load_balancer_resource_gen.go | 105 ++- .../iot/domain_configuration_resource_gen.go | 36 + .../aws/organizations/policy_resource_gen.go | 8 +- .../inference_component_resource_gen.go | 41 +- .../aws/wisdom/knowledge_base_resource_gen.go | 654 +++++++++++++++++- 16 files changed, 1902 insertions(+), 92 deletions(-) create mode 100644 internal/aws/cognito/managed_login_branding_resource_gen.go create mode 100644 internal/aws/cognito/managed_login_branding_resource_gen_test.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go create mode 100644 internal/aws/ec2/vpc_block_public_access_options_resource_gen.go create mode 100644 internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go diff --git a/internal/aws/autoscaling/scaling_policy_resource_gen.go b/internal/aws/autoscaling/scaling_policy_resource_gen.go index bee285f1b0..2fe3e622b6 100644 --- a/internal/aws/autoscaling/scaling_policy_resource_gen.go +++ b/internal/aws/autoscaling/scaling_policy_resource_gen.go @@ -1311,6 +1311,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "Stat": { // "type": "string" // }, @@ -1324,6 +1327,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "ReturnData": { // "type": "boolean" // } @@ -1339,6 +1345,9 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { // "Namespace": { // "type": "string" // }, + // "Period": { + // "type": "integer" + // }, // "Statistic": { // "type": "string" // }, @@ -1525,6 +1534,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Stat "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1551,6 +1568,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ReturnData "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1575,6 +1600,14 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Statistic "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ Optional: true, @@ -1705,6 +1738,7 @@ func scalingPolicyResource(ctx context.Context) (resource.Resource, error) { "mode": "Mode", "name": "Name", "namespace": "Namespace", + "period": "Period", "policy_name": "PolicyName", "policy_type": "PolicyType", "predefined_load_metric_specification": "PredefinedLoadMetricSpecification", diff --git a/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go b/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go index 320f4562bf..840d4d7e3a 100644 --- a/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go +++ b/internal/aws/chatbot/microsoft_teams_channel_configuration_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" @@ -69,6 +70,33 @@ func microsoftTeamsChannelConfigurationResource(ctx context.Context) (resource.R stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$"), ""), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -305,19 +333,20 @@ func microsoftTeamsChannelConfigurationResource(ctx context.Context) (resource.R opts = opts.WithCloudFormationTypeName("AWS::Chatbot::MicrosoftTeamsChannelConfiguration").WithTerraformTypeName("awscc_chatbot_microsoft_teams_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "team_id": "TeamId", - "teams_channel_id": "TeamsChannelId", - "teams_tenant_id": "TeamsTenantId", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "team_id": "TeamId", + "teams_channel_id": "TeamsChannelId", + "teams_tenant_id": "TeamsTenantId", + "user_role_required": "UserRoleRequired", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/chatbot/slack_channel_configuration_resource_gen.go b/internal/aws/chatbot/slack_channel_configuration_resource_gen.go index 4299899102..63927daf65 100644 --- a/internal/aws/chatbot/slack_channel_configuration_resource_gen.go +++ b/internal/aws/chatbot/slack_channel_configuration_resource_gen.go @@ -9,6 +9,7 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" @@ -69,6 +70,33 @@ func slackChannelConfigurationResource(ctx context.Context) (resource.Resource, stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.ValueStringsAre( + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$"), ""), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -284,18 +312,19 @@ func slackChannelConfigurationResource(ctx context.Context) (resource.Resource, opts = opts.WithCloudFormationTypeName("AWS::Chatbot::SlackChannelConfiguration").WithTerraformTypeName("awscc_chatbot_slack_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "slack_channel_id": "SlackChannelId", - "slack_workspace_id": "SlackWorkspaceId", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "slack_channel_id": "SlackChannelId", + "slack_workspace_id": "SlackWorkspaceId", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "user_role_required": "UserRoleRequired", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/cognito/managed_login_branding_resource_gen.go b/internal/aws/cognito/managed_login_branding_resource_gen.go new file mode 100644 index 0000000000..2477c5bf7b --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_resource_gen.go @@ -0,0 +1,327 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package cognito + +import ( + "context" + "regexp" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_cognito_managed_login_branding", managedLoginBrandingResource) +} + +// managedLoginBrandingResource returns the Terraform awscc_cognito_managed_login_branding resource. +// This Terraform resource corresponds to the CloudFormation AWS::Cognito::ManagedLoginBranding resource. +func managedLoginBrandingResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Assets + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Bytes": { + // "maxLength": 1000000, + // "type": "string" + // }, + // "Category": { + // "enum": [ + // "FAVICON_ICO", + // "FAVICON_SVG", + // "EMAIL_GRAPHIC", + // "SMS_GRAPHIC", + // "AUTH_APP_GRAPHIC", + // "PASSWORD_GRAPHIC", + // "PASSKEY_GRAPHIC", + // "PAGE_HEADER_LOGO", + // "PAGE_HEADER_BACKGROUND", + // "PAGE_FOOTER_LOGO", + // "PAGE_FOOTER_BACKGROUND", + // "PAGE_BACKGROUND", + // "FORM_BACKGROUND", + // "FORM_LOGO", + // "IDP_BUTTON_ICON" + // ], + // "type": "string" + // }, + // "ColorMode": { + // "enum": [ + // "LIGHT", + // "DARK", + // "DYNAMIC" + // ], + // "type": "string" + // }, + // "Extension": { + // "enum": [ + // "ICO", + // "JPEG", + // "PNG", + // "SVG", + // "WEBP" + // ], + // "type": "string" + // }, + // "ResourceId": { + // "maxLength": 40, + // "minLength": 1, + // "pattern": "^[\\w\\- ]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Category", + // "ColorMode", + // "Extension" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "assets": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Bytes + "bytes": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(1000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Category + "category": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "FAVICON_ICO", + "FAVICON_SVG", + "EMAIL_GRAPHIC", + "SMS_GRAPHIC", + "AUTH_APP_GRAPHIC", + "PASSWORD_GRAPHIC", + "PASSKEY_GRAPHIC", + "PAGE_HEADER_LOGO", + "PAGE_HEADER_BACKGROUND", + "PAGE_FOOTER_LOGO", + "PAGE_FOOTER_BACKGROUND", + "PAGE_BACKGROUND", + "FORM_BACKGROUND", + "FORM_LOGO", + "IDP_BUTTON_ICON", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ColorMode + "color_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "LIGHT", + "DARK", + "DYNAMIC", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Extension + "extension": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "ICO", + "JPEG", + "PNG", + "SVG", + "WEBP", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ResourceId + "resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 40), + stringvalidator.RegexMatches(regexp.MustCompile("^[\\w\\- ]+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ClientId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + // ClientId is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: ManagedLoginBrandingId + // CloudFormation resource type schema: + // + // { + // "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", + // "type": "string" + // } + "managed_login_branding_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ReturnMergedResources + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "return_merged_resources": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + // ReturnMergedResources is a write-only property. + }, /*END ATTRIBUTE*/ + // Property: Settings + // CloudFormation resource type schema: + // + // { + // "type": "object" + // } + "settings": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UseCognitoProvidedValues + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "use_cognito_provided_values": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Required: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.RequiresReplace(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::Cognito::ManagedLoginBranding", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::ManagedLoginBranding").WithTerraformTypeName("awscc_cognito_managed_login_branding") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "assets": "Assets", + "bytes": "Bytes", + "category": "Category", + "client_id": "ClientId", + "color_mode": "ColorMode", + "extension": "Extension", + "managed_login_branding_id": "ManagedLoginBrandingId", + "resource_id": "ResourceId", + "return_merged_resources": "ReturnMergedResources", + "settings": "Settings", + "use_cognito_provided_values": "UseCognitoProvidedValues", + "user_pool_id": "UserPoolId", + }) + + opts = opts.WithWriteOnlyPropertyPaths([]string{ + "/properties/ClientId", + "/properties/ReturnMergedResources", + }) + opts = opts.WithCreateTimeoutInMinutes(2).WithDeleteTimeoutInMinutes(2) + + opts = opts.WithUpdateTimeoutInMinutes(2) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cognito/managed_login_branding_resource_gen_test.go b/internal/aws/cognito/managed_login_branding_resource_gen_test.go new file mode 100644 index 0000000000..0ca1dd351f --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package cognito_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCognitoManagedLoginBranding_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/connect/task_template_resource_gen.go b/internal/aws/connect/task_template_resource_gen.go index 2874561638..cce4cb8e8b 100644 --- a/internal/aws/connect/task_template_resource_gen.go +++ b/internal/aws/connect/task_template_resource_gen.go @@ -502,7 +502,9 @@ func taskTemplateResource(ctx context.Context) (resource.Resource, error) { // "DATE_TIME", // "BOOLEAN", // "SINGLE_SELECT", - // "EMAIL" + // "EMAIL", + // "EXPIRY_DURATION", + // "SELF_ASSIGN" // ], // "type": "string" // } @@ -594,6 +596,8 @@ func taskTemplateResource(ctx context.Context) (resource.Resource, error) { "BOOLEAN", "SINGLE_SELECT", "EMAIL", + "EXPIRY_DURATION", + "SELF_ASSIGN", ), fwvalidators.NotNullString(), }, /*END VALIDATORS*/ diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go new file mode 100644 index 0000000000..afbf6d1f84 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen.go @@ -0,0 +1,211 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" + fwvalidators "github.com/hashicorp/terraform-provider-awscc/internal/validators" +) + +func init() { + registry.AddResourceFactory("awscc_ec2_vpc_block_public_access_exclusion", vPCBlockPublicAccessExclusionResource) +} + +// vPCBlockPublicAccessExclusionResource returns the Terraform awscc_ec2_vpc_block_public_access_exclusion resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExclusionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the exclusion", + // "type": "string" + // } + "exclusion_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the exclusion", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayExclusionMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + // "enum": [ + // "allow-bidirectional", + // "allow-egress" + // ], + // "type": "string" + // } + "internet_gateway_exclusion_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "allow-bidirectional", + "allow-egress", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + // Property: SubnetId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the subnet. Required only if you don't specify VpcId", + // "type": "string" + // } + "subnet_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the subnet. Required only if you don't specify VpcId", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 128), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(0, 256), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: VpcId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + // "type": "string" + // } + "vpc_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the vpc. Required only if you don't specify SubnetId.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusion") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "exclusion_id": "ExclusionId", + "internet_gateway_exclusion_mode": "InternetGatewayExclusionMode", + "key": "Key", + "subnet_id": "SubnetId", + "tags": "Tags", + "value": "Value", + "vpc_id": "VpcId", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go new file mode 100644 index 0000000000..5a0d1ec853 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusion_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go b/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go new file mode 100644 index 0000000000..07783f59b3 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_resource_gen.go @@ -0,0 +1,101 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddResourceFactory("awscc_ec2_vpc_block_public_access_options", vPCBlockPublicAccessOptionsResource) +} + +// vPCBlockPublicAccessOptionsResource returns the Terraform awscc_ec2_vpc_block_public_access_options resource. +// This Terraform resource corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessOptions resource. +func vPCBlockPublicAccessOptionsResource(ctx context.Context) (resource.Resource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier for the specified AWS account.", + // "type": "string" + // } + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier for the specified AWS account.", + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayBlockMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + // "enum": [ + // "block-bidirectional", + // "block-ingress" + // ], + // "type": "string" + // } + "internet_gateway_block_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + Required: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "block-bidirectional", + "block-ingress", + ), + }, /*END VALIDATORS*/ + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + // Corresponds to CloudFormation primaryIdentifier. + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + } + + schema := schema.Schema{ + Description: "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + Version: 1, + Attributes: attributes, + } + + var opts generic.ResourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessOptions").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_options") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "internet_gateway_block_mode": "InternetGatewayBlockMode", + }) + + opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) + + opts = opts.WithUpdateTimeoutInMinutes(0) + + v, err := generic.NewResource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go b/internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go new file mode 100644 index 0000000000..256841a9d4 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_resource_gen_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/resource/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessOptions_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.ResourceTest(t, []resource.TestStep{ + { + Config: td.EmptyConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} diff --git a/internal/aws/eks/cluster_resource_gen.go b/internal/aws/eks/cluster_resource_gen.go index 9b3297bee2..11dcd973d1 100644 --- a/internal/aws/eks/cluster_resource_gen.go +++ b/internal/aws/eks/cluster_resource_gen.go @@ -152,6 +152,71 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // }, + // "NodePools": { + // "description": "Todo: add description", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array" + // }, + // "NodeRoleArn": { + // "description": "Todo: add description", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NodePools + "node_pools": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: NodeRoleArn + "node_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: EncryptionConfig // CloudFormation resource type schema: // @@ -278,6 +343,17 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // "additionalProperties": false, // "description": "The Kubernetes network configuration for the cluster.", // "properties": { + // "ElasticLoadBalancing": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // }, // "IpFamily": { // "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", // "enum": [ @@ -299,6 +375,26 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // } "kubernetes_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ElasticLoadBalancing + "elastic_load_balancing": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: IpFamily "ip_family": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", @@ -565,6 +661,137 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: RemoteNetworkConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + // "properties": { + // "RemoteNodeNetworks": { + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote node CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "RemotePodNetworks": { + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote pod CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "RemoteNodeNetworks" + // ], + // "type": "object" + // } + "remote_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RemoteNodeNetworks + "remote_node_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote node CIDRs.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: RemotePodNetworks + "remote_pod_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote pod CIDRs.", + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + generic.Multiset(), + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + objectplanmodifier.RequiresReplaceIfConfigured(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ResourcesVpcConfig // CloudFormation resource type schema: // @@ -682,6 +909,57 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.RequiresReplace(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: StorageConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "BlockStorage": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "storage_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BlockStorage + "block_storage": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ + boolplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -872,14 +1150,18 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "access_config": "AccessConfig", "arn": "Arn", "authentication_mode": "AuthenticationMode", + "block_storage": "BlockStorage", "bootstrap_cluster_creator_admin_permissions": "BootstrapClusterCreatorAdminPermissions", "bootstrap_self_managed_addons": "BootstrapSelfManagedAddons", "certificate_authority_data": "CertificateAuthorityData", + "cidrs": "Cidrs", "cluster_id": "Id", "cluster_logging": "ClusterLogging", "cluster_security_group_id": "ClusterSecurityGroupId", + "compute_config": "ComputeConfig", "control_plane_instance_type": "ControlPlaneInstanceType", "control_plane_placement": "ControlPlanePlacement", + "elastic_load_balancing": "ElasticLoadBalancing", "enabled": "Enabled", "enabled_types": "EnabledTypes", "encryption_config": "EncryptionConfig", @@ -894,17 +1176,23 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { "kubernetes_network_config": "KubernetesNetworkConfig", "logging": "Logging", "name": "Name", + "node_pools": "NodePools", + "node_role_arn": "NodeRoleArn", "open_id_connect_issuer_url": "OpenIdConnectIssuerUrl", "outpost_arns": "OutpostArns", "outpost_config": "OutpostConfig", "provider": "Provider", "public_access_cidrs": "PublicAccessCidrs", + "remote_network_config": "RemoteNetworkConfig", + "remote_node_networks": "RemoteNodeNetworks", + "remote_pod_networks": "RemotePodNetworks", "resources": "Resources", "resources_vpc_config": "ResourcesVpcConfig", "role_arn": "RoleArn", "security_group_ids": "SecurityGroupIds", "service_ipv_4_cidr": "ServiceIpv4Cidr", "service_ipv_6_cidr": "ServiceIpv6Cidr", + "storage_config": "StorageConfig", "subnet_ids": "SubnetIds", "support_type": "SupportType", "tags": "Tags", diff --git a/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go b/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go index 69263c1721..595d758a53 100644 --- a/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go +++ b/internal/aws/elasticloadbalancingv2/load_balancer_resource_gen.go @@ -10,7 +10,9 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" @@ -61,11 +63,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", // "type": "string" // } "enable_prefix_for_ipv_6_source_nat": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -91,11 +93,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + // "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", // "type": "string" // } "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + Description: "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -128,7 +130,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", // "properties": { // "Key": { - // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", // "type": "string" // }, // "Value": { @@ -146,7 +148,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -199,6 +201,43 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: MinimumLoadBalancerCapacity + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "CapacityUnits": { + // "type": "integer" + // } + // }, + // "required": [ + // "CapacityUnits" + // ], + // "type": "object" + // } + "minimum_load_balancer_capacity": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CapacityUnits + "capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Int64{ /*START VALIDATORS*/ + fwvalidators.NotNullInt64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ + int64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "", + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -219,11 +258,11 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", // "type": "string" // } "scheme": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -256,7 +295,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -275,7 +314,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "SourceNatIpv6Prefix": { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", // "type": "string" // }, // "SubnetId": { @@ -323,7 +362,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: SourceNatIpv6Prefix "source_nat_ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -344,7 +383,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ @@ -355,7 +394,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", // "insertionOrder": false, // "items": { // "type": "string" @@ -365,7 +404,7 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { // } "subnets": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/ @@ -473,27 +512,29 @@ func loadBalancerResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithAttributeNameMap(map[string]string{ "allocation_id": "AllocationId", "canonical_hosted_zone_id": "CanonicalHostedZoneID", + "capacity_units": "CapacityUnits", "dns_name": "DNSName", "enable_prefix_for_ipv_6_source_nat": "EnablePrefixForIpv6SourceNat", "enforce_security_group_inbound_rules_on_private_link_traffic": "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic", - "i_pv_6_address": "IPv6Address", - "ip_address_type": "IpAddressType", - "key": "Key", - "load_balancer_arn": "LoadBalancerArn", - "load_balancer_attributes": "LoadBalancerAttributes", - "load_balancer_full_name": "LoadBalancerFullName", - "load_balancer_name": "LoadBalancerName", - "name": "Name", - "private_i_pv_4_address": "PrivateIPv4Address", - "scheme": "Scheme", - "security_groups": "SecurityGroups", - "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", - "subnet_id": "SubnetId", - "subnet_mappings": "SubnetMappings", - "subnets": "Subnets", - "tags": "Tags", - "type": "Type", - "value": "Value", + "i_pv_6_address": "IPv6Address", + "ip_address_type": "IpAddressType", + "key": "Key", + "load_balancer_arn": "LoadBalancerArn", + "load_balancer_attributes": "LoadBalancerAttributes", + "load_balancer_full_name": "LoadBalancerFullName", + "load_balancer_name": "LoadBalancerName", + "minimum_load_balancer_capacity": "MinimumLoadBalancerCapacity", + "name": "Name", + "private_i_pv_4_address": "PrivateIPv4Address", + "scheme": "Scheme", + "security_groups": "SecurityGroups", + "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", + "subnet_id": "SubnetId", + "subnet_mappings": "SubnetMappings", + "subnets": "Subnets", + "tags": "Tags", + "type": "Type", + "value": "Value", }) opts = opts.WithCreateTimeoutInMinutes(30).WithDeleteTimeoutInMinutes(0) diff --git a/internal/aws/iot/domain_configuration_resource_gen.go b/internal/aws/iot/domain_configuration_resource_gen.go index 4a90fdc405..f9f0308496 100644 --- a/internal/aws/iot/domain_configuration_resource_gen.go +++ b/internal/aws/iot/domain_configuration_resource_gen.go @@ -303,6 +303,17 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) // "properties": { // "EnableOCSPCheck": { // "type": "boolean" + // }, + // "OcspAuthorizedResponderArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + // "type": "string" + // }, + // "OcspLambdaArn": { + // "maxLength": 170, + // "minLength": 1, + // "type": "string" // } // }, // "type": "object" @@ -317,6 +328,29 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: OcspAuthorizedResponderArn + "ocsp_authorized_responder_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OcspLambdaArn + "ocsp_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 170), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Optional: true, Computed: true, @@ -546,6 +580,8 @@ func domainConfigurationResource(ctx context.Context) (resource.Resource, error) "domain_type": "DomainType", "enable_ocsp_check": "EnableOCSPCheck", "key": "Key", + "ocsp_authorized_responder_arn": "OcspAuthorizedResponderArn", + "ocsp_lambda_arn": "OcspLambdaArn", "security_policy": "SecurityPolicy", "server_certificate_arn": "ServerCertificateArn", "server_certificate_arns": "ServerCertificateArns", diff --git a/internal/aws/organizations/policy_resource_gen.go b/internal/aws/organizations/policy_resource_gen.go index 5f953b4e36..6949272ab8 100644 --- a/internal/aws/organizations/policy_resource_gen.go +++ b/internal/aws/organizations/policy_resource_gen.go @@ -239,18 +239,19 @@ func policyResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", // "enum": [ // "SERVICE_CONTROL_POLICY", // "AISERVICES_OPT_OUT_POLICY", // "BACKUP_POLICY", // "TAG_POLICY", - // "CHATBOT_POLICY" + // "CHATBOT_POLICY", + // "RESOURCE_CONTROL_POLICY" // ], // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", Required: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.OneOf( @@ -259,6 +260,7 @@ func policyResource(ctx context.Context) (resource.Resource, error) { "BACKUP_POLICY", "TAG_POLICY", "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ diff --git a/internal/aws/sagemaker/inference_component_resource_gen.go b/internal/aws/sagemaker/inference_component_resource_gen.go index a529e66c24..88f7415485 100644 --- a/internal/aws/sagemaker/inference_component_resource_gen.go +++ b/internal/aws/sagemaker/inference_component_resource_gen.go @@ -227,7 +227,11 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "The runtime config for the inference component", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Specification // CloudFormation resource type schema: @@ -236,6 +240,12 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // "additionalProperties": false, // "description": "The specification for the inference component", // "properties": { + // "BaseInferenceComponentName": { + // "description": "The name of the base inference component", + // "maxLength": 63, + // "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + // "type": "string" + // }, // "ComputeResourceRequirements": { // "additionalProperties": false, // "description": "", @@ -335,13 +345,23 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // "type": "object" // } // }, - // "required": [ - // "ComputeResourceRequirements" - // ], // "type": "object" // } "specification": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BaseInferenceComponentName + "base_inference_component_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the base inference component", + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthAtMost(63), + stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ // Property: ComputeResourceRequirements "compute_resource_requirements": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -391,7 +411,11 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Description: "", - Required: true, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Container "container": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ @@ -598,11 +622,15 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) // } "variant_name": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "The name of the endpoint variant the inference component is associated with", - Required: true, + Optional: true, + Computed: true, Validators: []validator.String{ /*START VALIDATORS*/ stringvalidator.LengthAtMost(63), stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"), ""), }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ @@ -627,6 +655,7 @@ func inferenceComponentResource(ctx context.Context) (resource.Resource, error) opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "artifact_url": "ArtifactUrl", + "base_inference_component_name": "BaseInferenceComponentName", "compute_resource_requirements": "ComputeResourceRequirements", "container": "Container", "container_startup_health_check_timeout_in_seconds": "ContainerStartupHealthCheckTimeoutInSeconds", diff --git a/internal/aws/wisdom/knowledge_base_resource_gen.go b/internal/aws/wisdom/knowledge_base_resource_gen.go index 2ea67309de..53f9e11531 100644 --- a/internal/aws/wisdom/knowledge_base_resource_gen.go +++ b/internal/aws/wisdom/knowledge_base_resource_gen.go @@ -9,10 +9,12 @@ import ( "context" "regexp" + "github.com/hashicorp/terraform-plugin-framework-validators/float64validator" "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" @@ -85,7 +87,8 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // "enum": [ // "EXTERNAL", // "CUSTOM", - // "MESSAGE_TEMPLATES" + // "MESSAGE_TEMPLATES", + // "MANAGED" // ], // "type": "string" // } @@ -96,6 +99,7 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { "EXTERNAL", "CUSTOM", "MESSAGE_TEMPLATES", + "MANAGED", ), }, /*END VALIDATORS*/ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -192,14 +196,6 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "additionalProperties": false, - // "oneOf": [ - // { - // "required": [ - // "AppIntegrations" - // ] - // } - // ], // "properties": { // "AppIntegrations": { // "additionalProperties": false, @@ -226,6 +222,79 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { // "AppIntegrationArn" // ], // "type": "object" + // }, + // "ManagedSourceConfiguration": { + // "properties": { + // "WebCrawlerConfiguration": { + // "additionalProperties": false, + // "properties": { + // "CrawlerLimits": { + // "additionalProperties": false, + // "properties": { + // "RateLimit": { + // "maximum": 3000, + // "minimum": 1, + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ExclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "InclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "Scope": { + // "enum": [ + // "HOST_ONLY", + // "SUBDOMAINS" + // ], + // "type": "string" + // }, + // "UrlConfiguration": { + // "additionalProperties": false, + // "properties": { + // "SeedUrls": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Url": { + // "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "maxItems": 100, + // "minItems": 1, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "UrlConfiguration" + // ], + // "type": "object" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -271,6 +340,130 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { objectplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: ManagedSourceConfiguration + "managed_source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: WebCrawlerConfiguration + "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CrawlerLimits + "crawler_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RateLimit + "rate_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 3000.000000), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ExclusionFilters + "exclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 25), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 1000), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: InclusionFilters + "inclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 25), + listvalidator.ValueStringsAre( + stringvalidator.LengthBetween(1, 1000), + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: Scope + "scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "HOST_ONLY", + "SUBDOMAINS", + ), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: UrlConfiguration + "url_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SeedUrls + "seed_urls": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Url + "url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.RegexMatches(regexp.MustCompile("^https?://[A-Za-z0-9][^\\s]*$"), ""), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(1, 100), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + Validators: []validator.Object{ /*START VALIDATORS*/ + fwvalidators.NotNullObject(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Optional: true, Computed: true, @@ -344,6 +537,389 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { setplanmodifier.RequiresReplaceIfConfigured(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ + // Property: VectorIngestionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "ChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ChunkingStrategy": { + // "enum": [ + // "FIXED_SIZE", + // "NONE", + // "HIERARCHICAL", + // "SEMANTIC" + // ], + // "type": "string" + // }, + // "FixedSizeChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // }, + // "OverlapPercentage": { + // "maximum": 99, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "OverlapPercentage" + // ], + // "type": "object" + // }, + // "HierarchicalChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "LevelConfigurations": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "maximum": 8192, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens" + // ], + // "type": "object" + // }, + // "maxItems": 2, + // "minItems": 2, + // "type": "array" + // }, + // "OverlapTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "LevelConfigurations", + // "OverlapTokens" + // ], + // "type": "object" + // }, + // "SemanticChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BreakpointPercentileThreshold": { + // "maximum": 99, + // "minimum": 50, + // "type": "number" + // }, + // "BufferSize": { + // "maximum": 1, + // "minimum": 0, + // "type": "number" + // }, + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "BufferSize", + // "BreakpointPercentileThreshold" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ChunkingStrategy" + // ], + // "type": "object" + // }, + // "ParsingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BedrockFoundationModelConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ModelArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$", + // "type": "string" + // }, + // "ParsingPrompt": { + // "additionalProperties": false, + // "properties": { + // "ParsingPromptText": { + // "maxLength": 10000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ParsingPromptText" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ModelArn" + // ], + // "type": "object" + // }, + // "ParsingStrategy": { + // "enum": [ + // "BEDROCK_FOUNDATION_MODEL" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ParsingStrategy" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "vector_ingestion_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingConfiguration + "chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingStrategy + "chunking_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: FixedSizeChunkingConfiguration + "fixed_size_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OverlapPercentage + "overlap_percentage": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 99.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: HierarchicalChunkingConfiguration + "hierarchical_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelConfigurations + "level_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(1.000000, 8192.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Optional: true, + Computed: true, + Validators: []validator.List{ /*START VALIDATORS*/ + listvalidator.SizeBetween(2, 2), + fwvalidators.NotNullList(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ + listplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: OverlapTokens + "overlap_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: SemanticChunkingConfiguration + "semantic_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BreakpointPercentileThreshold + "breakpoint_percentile_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(50.000000, 99.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: BufferSize + "buffer_size": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.Between(0.000000, 1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.Float64{ /*START VALIDATORS*/ + float64validator.AtLeast(1.000000), + fwvalidators.NotNullFloat64(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/ + float64planmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ParsingConfiguration + "parsing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BedrockFoundationModelConfiguration + "bedrock_foundation_model_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ModelArn + "model_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 2048), + stringvalidator.RegexMatches(regexp.MustCompile("^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$"), ""), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ParsingPrompt + "parsing_prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParsingPromptText + "parsing_prompt_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.LengthBetween(1, 10000), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + // Property: ParsingStrategy + "parsing_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Optional: true, + Computed: true, + Validators: []validator.String{ /*START VALIDATORS*/ + stringvalidator.OneOf( + "BEDROCK_FOUNDATION_MODEL", + ), + fwvalidators.NotNullString(), + }, /*END VALIDATORS*/ + PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ + stringplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ + objectplanmodifier.UseStateForUnknown(), + }, /*END PLAN MODIFIERS*/ + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ // Corresponds to CloudFormation primaryIdentifier. @@ -366,22 +942,50 @@ func knowledgeBaseResource(ctx context.Context) (resource.Resource, error) { opts = opts.WithCloudFormationTypeName("AWS::Wisdom::KnowledgeBase").WithTerraformTypeName("awscc_wisdom_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "app_integration_arn": "AppIntegrationArn", - "app_integrations": "AppIntegrations", - "description": "Description", - "key": "Key", - "kms_key_id": "KmsKeyId", - "knowledge_base_arn": "KnowledgeBaseArn", - "knowledge_base_id": "KnowledgeBaseId", - "knowledge_base_type": "KnowledgeBaseType", - "name": "Name", - "object_fields": "ObjectFields", - "rendering_configuration": "RenderingConfiguration", - "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", - "source_configuration": "SourceConfiguration", - "tags": "Tags", - "template_uri": "TemplateUri", - "value": "Value", + "app_integration_arn": "AppIntegrationArn", + "app_integrations": "AppIntegrations", + "bedrock_foundation_model_configuration": "BedrockFoundationModelConfiguration", + "breakpoint_percentile_threshold": "BreakpointPercentileThreshold", + "buffer_size": "BufferSize", + "chunking_configuration": "ChunkingConfiguration", + "chunking_strategy": "ChunkingStrategy", + "crawler_limits": "CrawlerLimits", + "description": "Description", + "exclusion_filters": "ExclusionFilters", + "fixed_size_chunking_configuration": "FixedSizeChunkingConfiguration", + "hierarchical_chunking_configuration": "HierarchicalChunkingConfiguration", + "inclusion_filters": "InclusionFilters", + "key": "Key", + "kms_key_id": "KmsKeyId", + "knowledge_base_arn": "KnowledgeBaseArn", + "knowledge_base_id": "KnowledgeBaseId", + "knowledge_base_type": "KnowledgeBaseType", + "level_configurations": "LevelConfigurations", + "managed_source_configuration": "ManagedSourceConfiguration", + "max_tokens": "MaxTokens", + "model_arn": "ModelArn", + "name": "Name", + "object_fields": "ObjectFields", + "overlap_percentage": "OverlapPercentage", + "overlap_tokens": "OverlapTokens", + "parsing_configuration": "ParsingConfiguration", + "parsing_prompt": "ParsingPrompt", + "parsing_prompt_text": "ParsingPromptText", + "parsing_strategy": "ParsingStrategy", + "rate_limit": "RateLimit", + "rendering_configuration": "RenderingConfiguration", + "scope": "Scope", + "seed_urls": "SeedUrls", + "semantic_chunking_configuration": "SemanticChunkingConfiguration", + "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", + "source_configuration": "SourceConfiguration", + "tags": "Tags", + "template_uri": "TemplateUri", + "url": "Url", + "url_configuration": "UrlConfiguration", + "value": "Value", + "vector_ingestion_configuration": "VectorIngestionConfiguration", + "web_crawler_configuration": "WebCrawlerConfiguration", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) From 4b92718caf171d7ed6d21e27aa290cf1592db49a Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 12:07:15 -0500 Subject: [PATCH 4/6] 2024/11/26 CloudFormation schemas in us-east-1; Generate Terraform data source schemas. --- ...scaling_policy_singular_data_source_gen.go | 22 + ..._configuration_singular_data_source_gen.go | 44 +- ..._configuration_singular_data_source_gen.go | 42 +- ...login_branding_singular_data_source_gen.go | 212 +++++++++ ..._branding_singular_data_source_gen_test.go | 36 ++ .../task_template_singular_data_source_gen.go | 4 +- ...access_exclusion_plural_data_source_gen.go | 54 +++ ...s_exclusion_plural_data_source_gen_test.go | 27 ++ ...cess_exclusion_singular_data_source_gen.go | 156 ++++++ ...exclusion_singular_data_source_gen_test.go | 36 ++ ...access_options_singular_data_source_gen.go | 79 ++++ ...s_options_singular_data_source_gen_test.go | 36 ++ .../eks/cluster_singular_data_source_gen.go | 217 +++++++++ .../load_balancer_singular_data_source_gen.go | 92 ++-- ..._configuration_singular_data_source_gen.go | 21 + .../policy_singular_data_source_gen.go | 7 +- ...ence_component_singular_data_source_gen.go | 15 +- ...knowledge_base_singular_data_source_gen.go | 445 +++++++++++++++++- 18 files changed, 1456 insertions(+), 89 deletions(-) create mode 100644 internal/aws/cognito/managed_login_branding_singular_data_source_gen.go create mode 100644 internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go create mode 100644 internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go create mode 100644 internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go create mode 100644 internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go diff --git a/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go b/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go index f6a1db4740..5d5ffec14a 100644 --- a/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go +++ b/internal/aws/autoscaling/scaling_policy_singular_data_source_gen.go @@ -915,6 +915,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "Stat": { // "type": "string" // }, @@ -928,6 +931,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // ], // "type": "object" // }, + // "Period": { + // "type": "integer" + // }, // "ReturnData": { // "type": "boolean" // } @@ -943,6 +949,9 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) // "Namespace": { // "type": "string" // }, + // "Period": { + // "type": "integer" + // }, // "Statistic": { // "type": "string" // }, @@ -1053,6 +1062,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Stat "stat": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1064,6 +1077,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ReturnData "return_data": schema.BoolAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1076,6 +1093,10 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: Period + "period": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Statistic "statistic": schema.StringAttribute{ /*START ATTRIBUTE*/ Computed: true, @@ -1159,6 +1180,7 @@ func scalingPolicyDataSource(ctx context.Context) (datasource.DataSource, error) "mode": "Mode", "name": "Name", "namespace": "Namespace", + "period": "Period", "policy_name": "PolicyName", "policy_type": "PolicyType", "predefined_load_metric_specification": "PredefinedLoadMetricSpecification", diff --git a/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go b/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go index 1cee4251c7..9dedc3cbe1 100644 --- a/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go +++ b/internal/aws/chatbot/microsoft_teams_channel_configuration_singular_data_source_gen.go @@ -49,6 +49,23 @@ func microsoftTeamsChannelConfigurationDataSource(ctx context.Context) (datasour Description: "The name of the configuration", Computed: true, }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -220,19 +237,20 @@ func microsoftTeamsChannelConfigurationDataSource(ctx context.Context) (datasour opts = opts.WithCloudFormationTypeName("AWS::Chatbot::MicrosoftTeamsChannelConfiguration").WithTerraformTypeName("awscc_chatbot_microsoft_teams_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "team_id": "TeamId", - "teams_channel_id": "TeamsChannelId", - "teams_tenant_id": "TeamsTenantId", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "team_id": "TeamId", + "teams_channel_id": "TeamsChannelId", + "teams_tenant_id": "TeamsTenantId", + "user_role_required": "UserRoleRequired", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go b/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go index edb4145a9c..ea65e0aa38 100644 --- a/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go +++ b/internal/aws/chatbot/slack_channel_configuration_singular_data_source_gen.go @@ -49,6 +49,23 @@ func slackChannelConfigurationDataSource(ctx context.Context) (datasource.DataSo Description: "The name of the configuration", Computed: true, }, /*END ATTRIBUTE*/ + // Property: CustomizationResourceArns + // CloudFormation resource type schema: + // + // { + // "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + // "insertionOrder": false, + // "items": { + // "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + // "type": "string" + // }, + // "type": "array" + // } + "customization_resource_arns": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: GuardrailPolicies // CloudFormation resource type schema: // @@ -206,18 +223,19 @@ func slackChannelConfigurationDataSource(ctx context.Context) (datasource.DataSo opts = opts.WithCloudFormationTypeName("AWS::Chatbot::SlackChannelConfiguration").WithTerraformTypeName("awscc_chatbot_slack_channel_configuration") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "arn": "Arn", - "configuration_name": "ConfigurationName", - "guardrail_policies": "GuardrailPolicies", - "iam_role_arn": "IamRoleArn", - "key": "Key", - "logging_level": "LoggingLevel", - "slack_channel_id": "SlackChannelId", - "slack_workspace_id": "SlackWorkspaceId", - "sns_topic_arns": "SnsTopicArns", - "tags": "Tags", - "user_role_required": "UserRoleRequired", - "value": "Value", + "arn": "Arn", + "configuration_name": "ConfigurationName", + "customization_resource_arns": "CustomizationResourceArns", + "guardrail_policies": "GuardrailPolicies", + "iam_role_arn": "IamRoleArn", + "key": "Key", + "logging_level": "LoggingLevel", + "slack_channel_id": "SlackChannelId", + "slack_workspace_id": "SlackWorkspaceId", + "sns_topic_arns": "SnsTopicArns", + "tags": "Tags", + "user_role_required": "UserRoleRequired", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go b/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go new file mode 100644 index 0000000000..562f4ea5da --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_singular_data_source_gen.go @@ -0,0 +1,212 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package cognito + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes" + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_cognito_managed_login_branding", managedLoginBrandingDataSource) +} + +// managedLoginBrandingDataSource returns the Terraform awscc_cognito_managed_login_branding data source. +// This Terraform data source corresponds to the CloudFormation AWS::Cognito::ManagedLoginBranding resource. +func managedLoginBrandingDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Assets + // CloudFormation resource type schema: + // + // { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Bytes": { + // "maxLength": 1000000, + // "type": "string" + // }, + // "Category": { + // "enum": [ + // "FAVICON_ICO", + // "FAVICON_SVG", + // "EMAIL_GRAPHIC", + // "SMS_GRAPHIC", + // "AUTH_APP_GRAPHIC", + // "PASSWORD_GRAPHIC", + // "PASSKEY_GRAPHIC", + // "PAGE_HEADER_LOGO", + // "PAGE_HEADER_BACKGROUND", + // "PAGE_FOOTER_LOGO", + // "PAGE_FOOTER_BACKGROUND", + // "PAGE_BACKGROUND", + // "FORM_BACKGROUND", + // "FORM_LOGO", + // "IDP_BUTTON_ICON" + // ], + // "type": "string" + // }, + // "ColorMode": { + // "enum": [ + // "LIGHT", + // "DARK", + // "DYNAMIC" + // ], + // "type": "string" + // }, + // "Extension": { + // "enum": [ + // "ICO", + // "JPEG", + // "PNG", + // "SVG", + // "WEBP" + // ], + // "type": "string" + // }, + // "ResourceId": { + // "maxLength": 40, + // "minLength": 1, + // "pattern": "^[\\w\\- ]+$", + // "type": "string" + // } + // }, + // "required": [ + // "Category", + // "ColorMode", + // "Extension" + // ], + // "type": "object" + // }, + // "type": "array" + // } + "assets": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Bytes + "bytes": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Category + "category": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ColorMode + "color_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Extension + "extension": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ResourceId + "resource_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ClientId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "client_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ManagedLoginBrandingId + // CloudFormation resource type schema: + // + // { + // "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", + // "type": "string" + // } + "managed_login_branding_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ReturnMergedResources + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "return_merged_resources": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Settings + // CloudFormation resource type schema: + // + // { + // "type": "object" + // } + "settings": schema.StringAttribute{ /*START ATTRIBUTE*/ + CustomType: jsontypes.NormalizedType{}, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UseCognitoProvidedValues + // CloudFormation resource type schema: + // + // { + // "type": "boolean" + // } + "use_cognito_provided_values": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UserPoolId + // CloudFormation resource type schema: + // + // { + // "type": "string" + // } + "user_pool_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::Cognito::ManagedLoginBranding", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::Cognito::ManagedLoginBranding").WithTerraformTypeName("awscc_cognito_managed_login_branding") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "assets": "Assets", + "bytes": "Bytes", + "category": "Category", + "client_id": "ClientId", + "color_mode": "ColorMode", + "extension": "Extension", + "managed_login_branding_id": "ManagedLoginBrandingId", + "resource_id": "ResourceId", + "return_merged_resources": "ReturnMergedResources", + "settings": "Settings", + "use_cognito_provided_values": "UseCognitoProvidedValues", + "user_pool_id": "UserPoolId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go b/internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go new file mode 100644 index 0000000000..0f139af8f8 --- /dev/null +++ b/internal/aws/cognito/managed_login_branding_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package cognito_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSCognitoManagedLoginBrandingDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSCognitoManagedLoginBrandingDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::Cognito::ManagedLoginBranding", "awscc_cognito_managed_login_branding", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/connect/task_template_singular_data_source_gen.go b/internal/aws/connect/task_template_singular_data_source_gen.go index 6126189bae..024600ed21 100644 --- a/internal/aws/connect/task_template_singular_data_source_gen.go +++ b/internal/aws/connect/task_template_singular_data_source_gen.go @@ -367,7 +367,9 @@ func taskTemplateDataSource(ctx context.Context) (datasource.DataSource, error) // "DATE_TIME", // "BOOLEAN", // "SINGLE_SELECT", - // "EMAIL" + // "EMAIL", + // "EXPIRY_DURATION", + // "SELF_ASSIGN" // ], // "type": "string" // } diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go new file mode 100644 index 0000000000..106d55ed3c --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen.go @@ -0,0 +1,54 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_vpc_block_public_access_exclusions", vPCBlockPublicAccessExclusionsDataSource) +} + +// vPCBlockPublicAccessExclusionsDataSource returns the Terraform awscc_ec2_vpc_block_public_access_exclusions data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "Uniquely identifies the data source.", + Computed: true, + }, + "ids": schema.SetAttribute{ + Description: "Set of Resource Identifiers.", + ElementType: types.StringType, + Computed: true, + }, + } + + schema := schema.Schema{ + Description: "Plural Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusions") + opts = opts.WithTerraformSchema(schema) + + v, err := generic.NewPluralDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go new file mode 100644 index 0000000000..d1576b1f44 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_plural_data_source_gen_test.go @@ -0,0 +1,27 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/plural-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusionsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusions", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(fmt.Sprintf("data.%s", td.ResourceName), "ids.#"), + ), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go new file mode 100644 index 0000000000..857d9dd075 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen.go @@ -0,0 +1,156 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_vpc_block_public_access_exclusion", vPCBlockPublicAccessExclusionDataSource) +} + +// vPCBlockPublicAccessExclusionDataSource returns the Terraform awscc_ec2_vpc_block_public_access_exclusion data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessExclusion resource. +func vPCBlockPublicAccessExclusionDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ExclusionId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the exclusion", + // "type": "string" + // } + "exclusion_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the exclusion", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayExclusionMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + // "enum": [ + // "allow-bidirectional", + // "allow-egress" + // ], + // "type": "string" + // } + "internet_gateway_exclusion_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SubnetId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the subnet. Required only if you don't specify VpcId", + // "type": "string" + // } + "subnet_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the subnet. Required only if you don't specify VpcId", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Tags + // CloudFormation resource type schema: + // + // { + // "description": "An array of key-value pairs to apply to this resource.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "A key-value pair to associate with a resource.", + // "properties": { + // "Key": { + // "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 128, + // "minLength": 1, + // "type": "string" + // }, + // "Value": { + // "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + // "maxLength": 256, + // "minLength": 0, + // "type": "string" + // } + // }, + // "required": [ + // "Key", + // "Value" + // ], + // "type": "object" + // }, + // "type": "array", + // "uniqueItems": false + // } + "tags": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Key + "key": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Value + "value": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "An array of key-value pairs to apply to this resource.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: VpcId + // CloudFormation resource type schema: + // + // { + // "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + // "type": "string" + // } + "vpc_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The ID of the vpc. Required only if you don't specify SubnetId.", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessExclusion").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_exclusion") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "exclusion_id": "ExclusionId", + "internet_gateway_exclusion_mode": "InternetGatewayExclusionMode", + "key": "Key", + "subnet_id": "SubnetId", + "tags": "Tags", + "value": "Value", + "vpc_id": "VpcId", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go new file mode 100644 index 0000000000..0f09b81dd5 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_exclusion_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessExclusionDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2VPCBlockPublicAccessExclusionDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessExclusion", "awscc_ec2_vpc_block_public_access_exclusion", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go new file mode 100644 index 0000000000..e087d041b3 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen.go @@ -0,0 +1,79 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2 + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-provider-awscc/internal/generic" + "github.com/hashicorp/terraform-provider-awscc/internal/registry" +) + +func init() { + registry.AddDataSourceFactory("awscc_ec2_vpc_block_public_access_options", vPCBlockPublicAccessOptionsDataSource) +} + +// vPCBlockPublicAccessOptionsDataSource returns the Terraform awscc_ec2_vpc_block_public_access_options data source. +// This Terraform data source corresponds to the CloudFormation AWS::EC2::VPCBlockPublicAccessOptions resource. +func vPCBlockPublicAccessOptionsDataSource(ctx context.Context) (datasource.DataSource, error) { + attributes := map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: AccountId + // CloudFormation resource type schema: + // + // { + // "description": "The identifier for the specified AWS account.", + // "type": "string" + // } + "account_id": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The identifier for the specified AWS account.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InternetGatewayBlockMode + // CloudFormation resource type schema: + // + // { + // "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + // "enum": [ + // "block-bidirectional", + // "block-ingress" + // ], + // "type": "string" + // } + "internet_gateway_block_mode": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + Computed: true, + }, /*END ATTRIBUTE*/ + } /*END SCHEMA*/ + + attributes["id"] = schema.StringAttribute{ + Description: "Uniquely identifies the resource.", + Required: true, + } + + schema := schema.Schema{ + Description: "Data Source schema for AWS::EC2::VPCBlockPublicAccessOptions", + Attributes: attributes, + } + + var opts generic.DataSourceOptions + + opts = opts.WithCloudFormationTypeName("AWS::EC2::VPCBlockPublicAccessOptions").WithTerraformTypeName("awscc_ec2_vpc_block_public_access_options") + opts = opts.WithTerraformSchema(schema) + opts = opts.WithAttributeNameMap(map[string]string{ + "account_id": "AccountId", + "internet_gateway_block_mode": "InternetGatewayBlockMode", + }) + + v, err := generic.NewSingularDataSource(ctx, opts...) + + if err != nil { + return nil, err + } + + return v, nil +} diff --git a/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go new file mode 100644 index 0000000000..dde52220a3 --- /dev/null +++ b/internal/aws/ec2/vpc_block_public_access_options_singular_data_source_gen_test.go @@ -0,0 +1,36 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +// Code generated by generators/singular-data-source/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-awscc/internal/acctest" +) + +func TestAccAWSEC2VPCBlockPublicAccessOptionsDataSource_basic(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.EmptyDataSourceConfig(), + ExpectError: regexp.MustCompile("Missing required argument"), + }, + }) +} + +func TestAccAWSEC2VPCBlockPublicAccessOptionsDataSource_NonExistent(t *testing.T) { + td := acctest.NewTestData(t, "AWS::EC2::VPCBlockPublicAccessOptions", "awscc_ec2_vpc_block_public_access_options", "test") + + td.DataSourceTest(t, []resource.TestStep{ + { + Config: td.DataSourceWithNonExistentIDConfig(), + ExpectError: regexp.MustCompile("Not Found"), + }, + }) +} diff --git a/internal/aws/eks/cluster_singular_data_source_gen.go b/internal/aws/eks/cluster_singular_data_source_gen.go index e5bbb4fe96..6287cf35c8 100644 --- a/internal/aws/eks/cluster_singular_data_source_gen.go +++ b/internal/aws/eks/cluster_singular_data_source_gen.go @@ -106,6 +106,54 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: ComputeConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // }, + // "NodePools": { + // "description": "Todo: add description", + // "insertionOrder": false, + // "items": { + // "type": "string" + // }, + // "type": "array" + // }, + // "NodeRoleArn": { + // "description": "Todo: add description", + // "type": "string" + // } + // }, + // "type": "object" + // } + "compute_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodePools + "node_pools": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: NodeRoleArn + "node_role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: EncryptionConfig // CloudFormation resource type schema: // @@ -204,6 +252,17 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // "additionalProperties": false, // "description": "The Kubernetes network configuration for the cluster.", // "properties": { + // "ElasticLoadBalancing": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // }, // "IpFamily": { // "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", // "enum": [ @@ -225,6 +284,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // } "kubernetes_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ElasticLoadBalancing + "elastic_load_balancing": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: IpFamily "ip_family": schema.StringAttribute{ /*START ATTRIBUTE*/ Description: "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", @@ -403,6 +474,103 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: RemoteNetworkConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + // "properties": { + // "RemoteNodeNetworks": { + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote node CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // }, + // "RemotePodNetworks": { + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "insertionOrder": false, + // "items": { + // "additionalProperties": false, + // "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + // "properties": { + // "Cidrs": { + // "description": "Specifies the list of remote pod CIDRs.", + // "insertionOrder": false, + // "items": { + // "minItems": 1, + // "type": "string" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "Cidrs" + // ], + // "type": "object" + // }, + // "type": "array" + // } + // }, + // "required": [ + // "RemoteNodeNetworks" + // ], + // "type": "object" + // } + "remote_network_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RemoteNodeNetworks + "remote_node_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote node CIDRs.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: RemotePodNetworks + "remote_pod_networks": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Cidrs + "cidrs": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Description: "Specifies the list of remote pod CIDRs.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Description: "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ResourcesVpcConfig // CloudFormation resource type schema: // @@ -496,6 +664,45 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Description: "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", Computed: true, }, /*END ATTRIBUTE*/ + // Property: StorageConfig + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "BlockStorage": { + // "additionalProperties": false, + // "description": "Todo: add description", + // "properties": { + // "Enabled": { + // "description": "Todo: add description", + // "type": "boolean" + // } + // }, + // "type": "object" + // } + // }, + // "type": "object" + // } + "storage_config": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BlockStorage + "block_storage": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Enabled + "enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "Todo: add description", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // @@ -632,14 +839,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "access_config": "AccessConfig", "arn": "Arn", "authentication_mode": "AuthenticationMode", + "block_storage": "BlockStorage", "bootstrap_cluster_creator_admin_permissions": "BootstrapClusterCreatorAdminPermissions", "bootstrap_self_managed_addons": "BootstrapSelfManagedAddons", "certificate_authority_data": "CertificateAuthorityData", + "cidrs": "Cidrs", "cluster_id": "Id", "cluster_logging": "ClusterLogging", "cluster_security_group_id": "ClusterSecurityGroupId", + "compute_config": "ComputeConfig", "control_plane_instance_type": "ControlPlaneInstanceType", "control_plane_placement": "ControlPlanePlacement", + "elastic_load_balancing": "ElasticLoadBalancing", "enabled": "Enabled", "enabled_types": "EnabledTypes", "encryption_config": "EncryptionConfig", @@ -654,17 +865,23 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { "kubernetes_network_config": "KubernetesNetworkConfig", "logging": "Logging", "name": "Name", + "node_pools": "NodePools", + "node_role_arn": "NodeRoleArn", "open_id_connect_issuer_url": "OpenIdConnectIssuerUrl", "outpost_arns": "OutpostArns", "outpost_config": "OutpostConfig", "provider": "Provider", "public_access_cidrs": "PublicAccessCidrs", + "remote_network_config": "RemoteNetworkConfig", + "remote_node_networks": "RemoteNodeNetworks", + "remote_pod_networks": "RemotePodNetworks", "resources": "Resources", "resources_vpc_config": "ResourcesVpcConfig", "role_arn": "RoleArn", "security_group_ids": "SecurityGroupIds", "service_ipv_4_cidr": "ServiceIpv4Cidr", "service_ipv_6_cidr": "ServiceIpv6Cidr", + "storage_config": "StorageConfig", "subnet_ids": "SubnetIds", "support_type": "SupportType", "tags": "Tags", diff --git a/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go b/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go index a7b9d71957..ba863a52f5 100644 --- a/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go +++ b/internal/aws/elasticloadbalancingv2/load_balancer_singular_data_source_gen.go @@ -49,11 +49,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", // "type": "string" // } "enable_prefix_for_ipv_6_source_nat": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", Computed: true, }, /*END ATTRIBUTE*/ // Property: EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic @@ -71,11 +71,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + // "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", // "type": "string" // } "ip_address_type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", + Description: "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", Computed: true, }, /*END ATTRIBUTE*/ // Property: LoadBalancerArn @@ -101,7 +101,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", // "properties": { // "Key": { - // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + // "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", // "type": "string" // }, // "Value": { @@ -119,7 +119,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", + Description: "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Value @@ -154,6 +154,32 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) Description: "", Computed: true, }, /*END ATTRIBUTE*/ + // Property: MinimumLoadBalancerCapacity + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "description": "", + // "properties": { + // "CapacityUnits": { + // "type": "integer" + // } + // }, + // "required": [ + // "CapacityUnits" + // ], + // "type": "object" + // } + "minimum_load_balancer_capacity": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CapacityUnits + "capacity_units": schema.Int64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Description: "", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: Name // CloudFormation resource type schema: // @@ -169,11 +195,11 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + // "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", // "type": "string" // } "scheme": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", + Description: "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SecurityGroups @@ -197,7 +223,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", // "insertionOrder": false, // "items": { // "additionalProperties": false, @@ -216,7 +242,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // "type": "string" // }, // "SourceNatIpv6Prefix": { - // "description": "", + // "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", // "type": "string" // }, // "SubnetId": { @@ -252,7 +278,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ // Property: SourceNatIpv6Prefix "source_nat_ipv_6_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "", + Description: "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", Computed: true, }, /*END ATTRIBUTE*/ // Property: SubnetId @@ -262,14 +288,14 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Subnets // CloudFormation resource type schema: // // { - // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + // "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", // "insertionOrder": false, // "items": { // "type": "string" @@ -279,7 +305,7 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) // } "subnets": schema.SetAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, - Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + Description: "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags @@ -357,27 +383,29 @@ func loadBalancerDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithAttributeNameMap(map[string]string{ "allocation_id": "AllocationId", "canonical_hosted_zone_id": "CanonicalHostedZoneID", + "capacity_units": "CapacityUnits", "dns_name": "DNSName", "enable_prefix_for_ipv_6_source_nat": "EnablePrefixForIpv6SourceNat", "enforce_security_group_inbound_rules_on_private_link_traffic": "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic", - "i_pv_6_address": "IPv6Address", - "ip_address_type": "IpAddressType", - "key": "Key", - "load_balancer_arn": "LoadBalancerArn", - "load_balancer_attributes": "LoadBalancerAttributes", - "load_balancer_full_name": "LoadBalancerFullName", - "load_balancer_name": "LoadBalancerName", - "name": "Name", - "private_i_pv_4_address": "PrivateIPv4Address", - "scheme": "Scheme", - "security_groups": "SecurityGroups", - "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", - "subnet_id": "SubnetId", - "subnet_mappings": "SubnetMappings", - "subnets": "Subnets", - "tags": "Tags", - "type": "Type", - "value": "Value", + "i_pv_6_address": "IPv6Address", + "ip_address_type": "IpAddressType", + "key": "Key", + "load_balancer_arn": "LoadBalancerArn", + "load_balancer_attributes": "LoadBalancerAttributes", + "load_balancer_full_name": "LoadBalancerFullName", + "load_balancer_name": "LoadBalancerName", + "minimum_load_balancer_capacity": "MinimumLoadBalancerCapacity", + "name": "Name", + "private_i_pv_4_address": "PrivateIPv4Address", + "scheme": "Scheme", + "security_groups": "SecurityGroups", + "source_nat_ipv_6_prefix": "SourceNatIpv6Prefix", + "subnet_id": "SubnetId", + "subnet_mappings": "SubnetMappings", + "subnets": "Subnets", + "tags": "Tags", + "type": "Type", + "value": "Value", }) v, err := generic.NewSingularDataSource(ctx, opts...) diff --git a/internal/aws/iot/domain_configuration_singular_data_source_gen.go b/internal/aws/iot/domain_configuration_singular_data_source_gen.go index 8a07fbfcc5..1a82dca6e2 100644 --- a/internal/aws/iot/domain_configuration_singular_data_source_gen.go +++ b/internal/aws/iot/domain_configuration_singular_data_source_gen.go @@ -194,6 +194,17 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, // "properties": { // "EnableOCSPCheck": { // "type": "boolean" + // }, + // "OcspAuthorizedResponderArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", + // "type": "string" + // }, + // "OcspLambdaArn": { + // "maxLength": 170, + // "minLength": 1, + // "type": "string" // } // }, // "type": "object" @@ -204,6 +215,14 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, "enable_ocsp_check": schema.BoolAttribute{ /*START ATTRIBUTE*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: OcspAuthorizedResponderArn + "ocsp_authorized_responder_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OcspLambdaArn + "ocsp_lambda_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ @@ -371,6 +390,8 @@ func domainConfigurationDataSource(ctx context.Context) (datasource.DataSource, "domain_type": "DomainType", "enable_ocsp_check": "EnableOCSPCheck", "key": "Key", + "ocsp_authorized_responder_arn": "OcspAuthorizedResponderArn", + "ocsp_lambda_arn": "OcspLambdaArn", "security_policy": "SecurityPolicy", "server_certificate_arn": "ServerCertificateArn", "server_certificate_arns": "ServerCertificateArns", diff --git a/internal/aws/organizations/policy_singular_data_source_gen.go b/internal/aws/organizations/policy_singular_data_source_gen.go index cd92eba517..6846a6ce78 100644 --- a/internal/aws/organizations/policy_singular_data_source_gen.go +++ b/internal/aws/organizations/policy_singular_data_source_gen.go @@ -174,18 +174,19 @@ func policyDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + // "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", // "enum": [ // "SERVICE_CONTROL_POLICY", // "AISERVICES_OPT_OUT_POLICY", // "BACKUP_POLICY", // "TAG_POLICY", - // "CHATBOT_POLICY" + // "CHATBOT_POLICY", + // "RESOURCE_CONTROL_POLICY" // ], // "type": "string" // } "type": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", + Description: "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY", Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/sagemaker/inference_component_singular_data_source_gen.go b/internal/aws/sagemaker/inference_component_singular_data_source_gen.go index 8131e30256..380776b7a0 100644 --- a/internal/aws/sagemaker/inference_component_singular_data_source_gen.go +++ b/internal/aws/sagemaker/inference_component_singular_data_source_gen.go @@ -174,6 +174,12 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e // "additionalProperties": false, // "description": "The specification for the inference component", // "properties": { + // "BaseInferenceComponentName": { + // "description": "The name of the base inference component", + // "maxLength": 63, + // "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + // "type": "string" + // }, // "ComputeResourceRequirements": { // "additionalProperties": false, // "description": "", @@ -273,13 +279,15 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e // "type": "object" // } // }, - // "required": [ - // "ComputeResourceRequirements" - // ], // "type": "object" // } "specification": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BaseInferenceComponentName + "base_inference_component_name": schema.StringAttribute{ /*START ATTRIBUTE*/ + Description: "The name of the base inference component", + Computed: true, + }, /*END ATTRIBUTE*/ // Property: ComputeResourceRequirements "compute_resource_requirements": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ @@ -451,6 +459,7 @@ func inferenceComponentDataSource(ctx context.Context) (datasource.DataSource, e opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ "artifact_url": "ArtifactUrl", + "base_inference_component_name": "BaseInferenceComponentName", "compute_resource_requirements": "ComputeResourceRequirements", "container": "Container", "container_startup_health_check_timeout_in_seconds": "ContainerStartupHealthCheckTimeoutInSeconds", diff --git a/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go b/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go index 765ef9f3f3..84cda314d3 100644 --- a/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go +++ b/internal/aws/wisdom/knowledge_base_singular_data_source_gen.go @@ -61,7 +61,8 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // "enum": [ // "EXTERNAL", // "CUSTOM", - // "MESSAGE_TEMPLATES" + // "MESSAGE_TEMPLATES", + // "MANAGED" // ], // "type": "string" // } @@ -129,14 +130,6 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // CloudFormation resource type schema: // // { - // "additionalProperties": false, - // "oneOf": [ - // { - // "required": [ - // "AppIntegrations" - // ] - // } - // ], // "properties": { // "AppIntegrations": { // "additionalProperties": false, @@ -163,6 +156,79 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) // "AppIntegrationArn" // ], // "type": "object" + // }, + // "ManagedSourceConfiguration": { + // "properties": { + // "WebCrawlerConfiguration": { + // "additionalProperties": false, + // "properties": { + // "CrawlerLimits": { + // "additionalProperties": false, + // "properties": { + // "RateLimit": { + // "maximum": 3000, + // "minimum": 1, + // "type": "number" + // } + // }, + // "type": "object" + // }, + // "ExclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "InclusionFilters": { + // "items": { + // "maxLength": 1000, + // "minLength": 1, + // "type": "string" + // }, + // "maxItems": 25, + // "minItems": 1, + // "type": "array" + // }, + // "Scope": { + // "enum": [ + // "HOST_ONLY", + // "SUBDOMAINS" + // ], + // "type": "string" + // }, + // "UrlConfiguration": { + // "additionalProperties": false, + // "properties": { + // "SeedUrls": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "Url": { + // "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + // "type": "string" + // } + // }, + // "type": "object" + // }, + // "maxItems": 100, + // "minItems": 1, + // "type": "array" + // } + // }, + // "type": "object" + // } + // }, + // "required": [ + // "UrlConfiguration" + // ], + // "type": "object" + // } + // }, + // "type": "object" // } // }, // "type": "object" @@ -184,6 +250,60 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: ManagedSourceConfiguration + "managed_source_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: WebCrawlerConfiguration + "web_crawler_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: CrawlerLimits + "crawler_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: RateLimit + "rate_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ExclusionFilters + "exclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: InclusionFilters + "inclusion_filters": schema.ListAttribute{ /*START ATTRIBUTE*/ + ElementType: types.StringType, + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: Scope + "scope": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: UrlConfiguration + "url_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: SeedUrls + "seed_urls": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: Url + "url": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ Computed: true, }, /*END ATTRIBUTE*/ @@ -231,6 +351,253 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) }, /*END NESTED OBJECT*/ Computed: true, }, /*END ATTRIBUTE*/ + // Property: VectorIngestionConfiguration + // CloudFormation resource type schema: + // + // { + // "additionalProperties": false, + // "properties": { + // "ChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ChunkingStrategy": { + // "enum": [ + // "FIXED_SIZE", + // "NONE", + // "HIERARCHICAL", + // "SEMANTIC" + // ], + // "type": "string" + // }, + // "FixedSizeChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // }, + // "OverlapPercentage": { + // "maximum": 99, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "OverlapPercentage" + // ], + // "type": "object" + // }, + // "HierarchicalChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "LevelConfigurations": { + // "items": { + // "additionalProperties": false, + // "properties": { + // "MaxTokens": { + // "maximum": 8192, + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens" + // ], + // "type": "object" + // }, + // "maxItems": 2, + // "minItems": 2, + // "type": "array" + // }, + // "OverlapTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "LevelConfigurations", + // "OverlapTokens" + // ], + // "type": "object" + // }, + // "SemanticChunkingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BreakpointPercentileThreshold": { + // "maximum": 99, + // "minimum": 50, + // "type": "number" + // }, + // "BufferSize": { + // "maximum": 1, + // "minimum": 0, + // "type": "number" + // }, + // "MaxTokens": { + // "minimum": 1, + // "type": "number" + // } + // }, + // "required": [ + // "MaxTokens", + // "BufferSize", + // "BreakpointPercentileThreshold" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ChunkingStrategy" + // ], + // "type": "object" + // }, + // "ParsingConfiguration": { + // "additionalProperties": false, + // "properties": { + // "BedrockFoundationModelConfiguration": { + // "additionalProperties": false, + // "properties": { + // "ModelArn": { + // "maxLength": 2048, + // "minLength": 1, + // "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$", + // "type": "string" + // }, + // "ParsingPrompt": { + // "additionalProperties": false, + // "properties": { + // "ParsingPromptText": { + // "maxLength": 10000, + // "minLength": 1, + // "type": "string" + // } + // }, + // "required": [ + // "ParsingPromptText" + // ], + // "type": "object" + // } + // }, + // "required": [ + // "ModelArn" + // ], + // "type": "object" + // }, + // "ParsingStrategy": { + // "enum": [ + // "BEDROCK_FOUNDATION_MODEL" + // ], + // "type": "string" + // } + // }, + // "required": [ + // "ParsingStrategy" + // ], + // "type": "object" + // } + // }, + // "type": "object" + // } + "vector_ingestion_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingConfiguration + "chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ChunkingStrategy + "chunking_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: FixedSizeChunkingConfiguration + "fixed_size_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OverlapPercentage + "overlap_percentage": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: HierarchicalChunkingConfiguration + "hierarchical_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: LevelConfigurations + "level_configurations": schema.ListNestedAttribute{ /*START ATTRIBUTE*/ + NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + }, /*END NESTED OBJECT*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: OverlapTokens + "overlap_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: SemanticChunkingConfiguration + "semantic_chunking_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BreakpointPercentileThreshold + "breakpoint_percentile_threshold": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: BufferSize + "buffer_size": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: MaxTokens + "max_tokens": schema.Float64Attribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingConfiguration + "parsing_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: BedrockFoundationModelConfiguration + "bedrock_foundation_model_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ModelArn + "model_arn": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingPrompt + "parsing_prompt": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ + Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ + // Property: ParsingPromptText + "parsing_prompt_text": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + // Property: ParsingStrategy + "parsing_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ + }, /*END SCHEMA*/ + Computed: true, + }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ attributes["id"] = schema.StringAttribute{ @@ -248,22 +615,50 @@ func knowledgeBaseDataSource(ctx context.Context) (datasource.DataSource, error) opts = opts.WithCloudFormationTypeName("AWS::Wisdom::KnowledgeBase").WithTerraformTypeName("awscc_wisdom_knowledge_base") opts = opts.WithTerraformSchema(schema) opts = opts.WithAttributeNameMap(map[string]string{ - "app_integration_arn": "AppIntegrationArn", - "app_integrations": "AppIntegrations", - "description": "Description", - "key": "Key", - "kms_key_id": "KmsKeyId", - "knowledge_base_arn": "KnowledgeBaseArn", - "knowledge_base_id": "KnowledgeBaseId", - "knowledge_base_type": "KnowledgeBaseType", - "name": "Name", - "object_fields": "ObjectFields", - "rendering_configuration": "RenderingConfiguration", - "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", - "source_configuration": "SourceConfiguration", - "tags": "Tags", - "template_uri": "TemplateUri", - "value": "Value", + "app_integration_arn": "AppIntegrationArn", + "app_integrations": "AppIntegrations", + "bedrock_foundation_model_configuration": "BedrockFoundationModelConfiguration", + "breakpoint_percentile_threshold": "BreakpointPercentileThreshold", + "buffer_size": "BufferSize", + "chunking_configuration": "ChunkingConfiguration", + "chunking_strategy": "ChunkingStrategy", + "crawler_limits": "CrawlerLimits", + "description": "Description", + "exclusion_filters": "ExclusionFilters", + "fixed_size_chunking_configuration": "FixedSizeChunkingConfiguration", + "hierarchical_chunking_configuration": "HierarchicalChunkingConfiguration", + "inclusion_filters": "InclusionFilters", + "key": "Key", + "kms_key_id": "KmsKeyId", + "knowledge_base_arn": "KnowledgeBaseArn", + "knowledge_base_id": "KnowledgeBaseId", + "knowledge_base_type": "KnowledgeBaseType", + "level_configurations": "LevelConfigurations", + "managed_source_configuration": "ManagedSourceConfiguration", + "max_tokens": "MaxTokens", + "model_arn": "ModelArn", + "name": "Name", + "object_fields": "ObjectFields", + "overlap_percentage": "OverlapPercentage", + "overlap_tokens": "OverlapTokens", + "parsing_configuration": "ParsingConfiguration", + "parsing_prompt": "ParsingPrompt", + "parsing_prompt_text": "ParsingPromptText", + "parsing_strategy": "ParsingStrategy", + "rate_limit": "RateLimit", + "rendering_configuration": "RenderingConfiguration", + "scope": "Scope", + "seed_urls": "SeedUrls", + "semantic_chunking_configuration": "SemanticChunkingConfiguration", + "server_side_encryption_configuration": "ServerSideEncryptionConfiguration", + "source_configuration": "SourceConfiguration", + "tags": "Tags", + "template_uri": "TemplateUri", + "url": "Url", + "url_configuration": "UrlConfiguration", + "value": "Value", + "vector_ingestion_configuration": "VectorIngestionConfiguration", + "web_crawler_configuration": "WebCrawlerConfiguration", }) v, err := generic.NewSingularDataSource(ctx, opts...) From 0b5fd851939cc8f8e3a5d2d8510592ab4f2d3028 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 12:09:59 -0500 Subject: [PATCH 5/6] Run 'make docs-all'. --- .../autoscaling_scaling_policy.md | 3 + ...t_microsoft_teams_channel_configuration.md | 1 + .../chatbot_slack_channel_configuration.md | 1 + .../cognito_managed_login_branding.md | 41 ++++++ .../ec2_vpc_block_public_access_exclusion.md | 36 +++++ .../ec2_vpc_block_public_access_exclusions.md | 21 +++ .../ec2_vpc_block_public_access_options.md | 25 ++++ docs/data-sources/eks_cluster.md | 63 +++++++++ .../elasticloadbalancingv2_load_balancer.md | 33 +++-- docs/data-sources/iot_domain_configuration.md | 2 + docs/data-sources/organizations_policy.md | 2 +- .../sagemaker_inference_component.md | 1 + docs/data-sources/wisdom_knowledge_base.md | 125 ++++++++++++++++++ docs/resources/autoscaling_scaling_policy.md | 3 + ...t_microsoft_teams_channel_configuration.md | 1 + .../chatbot_slack_channel_configuration.md | 1 + .../cognito_managed_login_branding.md | 52 ++++++++ .../ec2_vpc_block_public_access_exclusion.md | 47 +++++++ .../ec2_vpc_block_public_access_options.md | 33 +++++ docs/resources/eks_cluster.md | 63 +++++++++ .../elasticloadbalancingv2_load_balancer.md | 33 +++-- docs/resources/iot_domain_configuration.md | 2 + docs/resources/organizations_policy.md | 2 +- .../sagemaker_inference_component.md | 36 +++-- docs/resources/wisdom_knowledge_base.md | 125 ++++++++++++++++++ .../import.sh | 1 + .../import.sh | 1 + .../import.sh | 1 + 28 files changed, 708 insertions(+), 47 deletions(-) create mode 100644 docs/data-sources/cognito_managed_login_branding.md create mode 100644 docs/data-sources/ec2_vpc_block_public_access_exclusion.md create mode 100644 docs/data-sources/ec2_vpc_block_public_access_exclusions.md create mode 100644 docs/data-sources/ec2_vpc_block_public_access_options.md create mode 100644 docs/resources/cognito_managed_login_branding.md create mode 100644 docs/resources/ec2_vpc_block_public_access_exclusion.md create mode 100644 docs/resources/ec2_vpc_block_public_access_options.md create mode 100644 examples/resources/awscc_cognito_managed_login_branding/import.sh create mode 100644 examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh create mode 100644 examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh diff --git a/docs/data-sources/autoscaling_scaling_policy.md b/docs/data-sources/autoscaling_scaling_policy.md index aa8f3fdf13..b71b85e0e2 100644 --- a/docs/data-sources/autoscaling_scaling_policy.md +++ b/docs/data-sources/autoscaling_scaling_policy.md @@ -264,6 +264,7 @@ Read-Only: - `metric_name` (String) - `metrics` (Attributes Set) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics)) - `namespace` (String) +- `period` (Number) - `statistic` (String) - `unit` (String) @@ -285,6 +286,7 @@ Read-Only: - `id` (String) - `label` (String) - `metric_stat` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat)) +- `period` (Number) - `return_data` (Boolean) @@ -293,6 +295,7 @@ Read-Only: Read-Only: - `metric` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat--metric)) +- `period` (Number) - `stat` (String) - `unit` (String) diff --git a/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md b/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md index 1cbf1a77fa..3842b69eec 100644 --- a/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md +++ b/docs/data-sources/chatbot_microsoft_teams_channel_configuration.md @@ -23,6 +23,7 @@ Data Source schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration - `arn` (String) Amazon Resource Name (ARN) of the configuration - `configuration_name` (String) The name of the configuration +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `iam_role_arn` (String) The ARN of the IAM role that defines the permissions for AWS Chatbot - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs diff --git a/docs/data-sources/chatbot_slack_channel_configuration.md b/docs/data-sources/chatbot_slack_channel_configuration.md index 224b28c8cf..37bc966e56 100644 --- a/docs/data-sources/chatbot_slack_channel_configuration.md +++ b/docs/data-sources/chatbot_slack_channel_configuration.md @@ -23,6 +23,7 @@ Data Source schema for AWS::Chatbot::SlackChannelConfiguration - `arn` (String) Amazon Resource Name (ARN) of the configuration - `configuration_name` (String) The name of the configuration +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `iam_role_arn` (String) The ARN of the IAM role that defines the permissions for AWS Chatbot - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs diff --git a/docs/data-sources/cognito_managed_login_branding.md b/docs/data-sources/cognito_managed_login_branding.md new file mode 100644 index 0000000000..e9e5c09dd0 --- /dev/null +++ b/docs/data-sources/cognito_managed_login_branding.md @@ -0,0 +1,41 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_managed_login_branding Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::Cognito::ManagedLoginBranding +--- + +# awscc_cognito_managed_login_branding (Data Source) + +Data Source schema for AWS::Cognito::ManagedLoginBranding + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `assets` (Attributes List) (see [below for nested schema](#nestedatt--assets)) +- `client_id` (String) +- `managed_login_branding_id` (String) +- `return_merged_resources` (Boolean) +- `settings` (String) +- `use_cognito_provided_values` (Boolean) +- `user_pool_id` (String) + + +### Nested Schema for `assets` + +Read-Only: + +- `bytes` (String) +- `category` (String) +- `color_mode` (String) +- `extension` (String) +- `resource_id` (String) diff --git a/docs/data-sources/ec2_vpc_block_public_access_exclusion.md b/docs/data-sources/ec2_vpc_block_public_access_exclusion.md new file mode 100644 index 0000000000..655bd2f518 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_exclusion.md @@ -0,0 +1,36 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusion Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion +--- + +# awscc_ec2_vpc_block_public_access_exclusion (Data Source) + +Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `exclusion_id` (String) The ID of the exclusion +- `internet_gateway_exclusion_mode` (String) The desired Block Public Access Exclusion Mode for a specific VPC/Subnet. +- `subnet_id` (String) The ID of the subnet. Required only if you don't specify VpcId +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `vpc_id` (String) The ID of the vpc. Required only if you don't specify SubnetId. + + +### Nested Schema for `tags` + +Read-Only: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. diff --git a/docs/data-sources/ec2_vpc_block_public_access_exclusions.md b/docs/data-sources/ec2_vpc_block_public_access_exclusions.md new file mode 100644 index 0000000000..78c2acd780 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_exclusions.md @@ -0,0 +1,21 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusions Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Plural Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion +--- + +# awscc_ec2_vpc_block_public_access_exclusions (Data Source) + +Plural Data Source schema for AWS::EC2::VPCBlockPublicAccessExclusion + + + + +## Schema + +### Read-Only + +- `id` (String) Uniquely identifies the data source. +- `ids` (Set of String) Set of Resource Identifiers. diff --git a/docs/data-sources/ec2_vpc_block_public_access_options.md b/docs/data-sources/ec2_vpc_block_public_access_options.md new file mode 100644 index 0000000000..404f445f88 --- /dev/null +++ b/docs/data-sources/ec2_vpc_block_public_access_options.md @@ -0,0 +1,25 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_options Data Source - terraform-provider-awscc" +subcategory: "" +description: |- + Data Source schema for AWS::EC2::VPCBlockPublicAccessOptions +--- + +# awscc_ec2_vpc_block_public_access_options (Data Source) + +Data Source schema for AWS::EC2::VPCBlockPublicAccessOptions + + + + +## Schema + +### Required + +- `id` (String) Uniquely identifies the resource. + +### Read-Only + +- `account_id` (String) The identifier for the specified AWS account. +- `internet_gateway_block_mode` (String) The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value diff --git a/docs/data-sources/eks_cluster.md b/docs/data-sources/eks_cluster.md index 4d9a66ecb8..d6e8b2a895 100644 --- a/docs/data-sources/eks_cluster.md +++ b/docs/data-sources/eks_cluster.md @@ -27,6 +27,7 @@ Data Source schema for AWS::EKS::Cluster - `certificate_authority_data` (String) The certificate-authority-data for your cluster. - `cluster_id` (String) The unique ID given to your cluster. - `cluster_security_group_id` (String) The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication. +- `compute_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--compute_config)) - `encryption_config` (Attributes List) (see [below for nested schema](#nestedatt--encryption_config)) - `encryption_config_key_arn` (String) Amazon Resource Name (ARN) or alias of the customer master key (CMK). - `endpoint` (String) The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com. @@ -35,8 +36,10 @@ Data Source schema for AWS::EKS::Cluster - `name` (String) The unique name to give to your cluster. - `open_id_connect_issuer_url` (String) The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template. - `outpost_config` (Attributes) An object representing the Outpost configuration to use for AWS EKS outpost cluster. (see [below for nested schema](#nestedatt--outpost_config)) +- `remote_network_config` (Attributes) Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation. (see [below for nested schema](#nestedatt--remote_network_config)) - `resources_vpc_config` (Attributes) An object representing the VPC configuration to use for an Amazon EKS cluster. (see [below for nested schema](#nestedatt--resources_vpc_config)) - `role_arn` (String) The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. +- `storage_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config)) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `upgrade_policy` (Attributes) An object representing the Upgrade Policy to use for the cluster. (see [below for nested schema](#nestedatt--upgrade_policy)) - `version` (String) The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used. @@ -51,6 +54,16 @@ Read-Only: - `bootstrap_cluster_creator_admin_permissions` (Boolean) Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster. + +### Nested Schema for `compute_config` + +Read-Only: + +- `enabled` (Boolean) Todo: add description +- `node_pools` (List of String) Todo: add description +- `node_role_arn` (String) Todo: add description + + ### Nested Schema for `encryption_config` @@ -73,10 +86,19 @@ Read-Only: Read-Only: +- `elastic_load_balancing` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--kubernetes_network_config--elastic_load_balancing)) - `ip_family` (String) Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on - `service_ipv_4_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. - `service_ipv_6_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. + +### Nested Schema for `kubernetes_network_config.elastic_load_balancing` + +Read-Only: + +- `enabled` (Boolean) Todo: add description + + ### Nested Schema for `logging` @@ -120,6 +142,31 @@ Read-Only: + +### Nested Schema for `remote_network_config` + +Read-Only: + +- `remote_node_networks` (Attributes List) Network configuration of nodes run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_node_networks)) +- `remote_pod_networks` (Attributes List) Network configuration of pods run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_pod_networks)) + + +### Nested Schema for `remote_network_config.remote_node_networks` + +Read-Only: + +- `cidrs` (List of String) Specifies the list of remote node CIDRs. + + + +### Nested Schema for `remote_network_config.remote_pod_networks` + +Read-Only: + +- `cidrs` (List of String) Specifies the list of remote pod CIDRs. + + + ### Nested Schema for `resources_vpc_config` @@ -132,6 +179,22 @@ Read-Only: - `subnet_ids` (List of String) Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane. + +### Nested Schema for `storage_config` + +Read-Only: + +- `block_storage` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config--block_storage)) + + +### Nested Schema for `storage_config.block_storage` + +Read-Only: + +- `enabled` (Boolean) Todo: add description + + + ### Nested Schema for `tags` diff --git a/docs/data-sources/elasticloadbalancingv2_load_balancer.md b/docs/data-sources/elasticloadbalancingv2_load_balancer.md index 07ced3f7f8..a72ab78ff5 100644 --- a/docs/data-sources/elasticloadbalancingv2_load_balancer.md +++ b/docs/data-sources/elasticloadbalancingv2_load_balancer.md @@ -23,36 +23,35 @@ Data Source schema for AWS::ElasticLoadBalancingV2::LoadBalancer - `canonical_hosted_zone_id` (String) - `dns_name` (String) -- `enable_prefix_for_ipv_6_source_nat` (String) +- `enable_prefix_for_ipv_6_source_nat` (String) [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``. - `enforce_security_group_inbound_rules_on_private_link_traffic` (String) Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink. -- `ip_address_type` (String) Note: Internal load balancers must use the ``ipv4`` IP address type. - [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). - Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors. - [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener. - [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). +- `ip_address_type` (String) The IP address type. Internal load balancers must use ``ipv4``. + [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses). + Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors. + [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses). - `load_balancer_arn` (String) - `load_balancer_attributes` (Attributes Set) The load balancer attributes. (see [below for nested schema](#nestedatt--load_balancer_attributes)) - `load_balancer_full_name` (String) - `load_balancer_name` (String) +- `minimum_load_balancer_capacity` (Attributes) (see [below for nested schema](#nestedatt--minimum_load_balancer_capacity)) - `name` (String) The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with "internal-". If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name. - `scheme` (String) The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. - You cannot specify a scheme for a Gateway Load Balancer. + You can't specify a scheme for a Gateway Load Balancer. - `security_groups` (Set of String) [Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer. - `subnet_mappings` (Attributes Set) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. - [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. + [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) + [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) - `subnets` (Set of String) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. - [Network Load Balancers] You can specify subnets from one or more Availability Zones. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. - `tags` (Attributes List) The tags to assign to the load balancer. (see [below for nested schema](#nestedatt--tags)) - `type` (String) The type of load balancer. The default is ``application``. @@ -64,7 +63,7 @@ Read-Only: - `key` (String) The name of the attribute. The following attributes are supported by all load balancers: + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``. - + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed. + + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``. @@ -97,6 +96,14 @@ Read-Only: - `value` (String) The value of the attribute. + +### Nested Schema for `minimum_load_balancer_capacity` + +Read-Only: + +- `capacity_units` (Number) + + ### Nested Schema for `subnet_mappings` @@ -105,7 +112,7 @@ Read-Only: - `allocation_id` (String) [Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer. - `i_pv_6_address` (String) [Network Load Balancers] The IPv6 address. - `private_i_pv_4_address` (String) [Network Load Balancers] The private IPv4 address for an internal load balancer. -- `source_nat_ipv_6_prefix` (String) +- `source_nat_ipv_6_prefix` (String) [Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block. - `subnet_id` (String) The ID of the subnet. diff --git a/docs/data-sources/iot_domain_configuration.md b/docs/data-sources/iot_domain_configuration.md index 30629a269f..c749da10a1 100644 --- a/docs/data-sources/iot_domain_configuration.md +++ b/docs/data-sources/iot_domain_configuration.md @@ -61,6 +61,8 @@ Read-Only: Read-Only: - `enable_ocsp_check` (Boolean) +- `ocsp_authorized_responder_arn` (String) +- `ocsp_lambda_arn` (String) diff --git a/docs/data-sources/organizations_policy.md b/docs/data-sources/organizations_policy.md index eeccb606bd..1aa06b778f 100644 --- a/docs/data-sources/organizations_policy.md +++ b/docs/data-sources/organizations_policy.md @@ -29,7 +29,7 @@ Data Source schema for AWS::Organizations::Policy - `policy_id` (String) Id of the Policy - `tags` (Attributes Set) A list of tags that you want to attach to the newly created policy. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null. (see [below for nested schema](#nestedatt--tags)) - `target_ids` (Set of String) List of unique identifiers (IDs) of the root, OU, or account that you want to attach the policy to -- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY +- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY ### Nested Schema for `tags` diff --git a/docs/data-sources/sagemaker_inference_component.md b/docs/data-sources/sagemaker_inference_component.md index b7d1c1268b..de4fbc193c 100644 --- a/docs/data-sources/sagemaker_inference_component.md +++ b/docs/data-sources/sagemaker_inference_component.md @@ -49,6 +49,7 @@ Read-Only: Read-Only: +- `base_inference_component_name` (String) The name of the base inference component - `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - `container` (Attributes) (see [below for nested schema](#nestedatt--specification--container)) - `model_name` (String) The name of the model to use with the inference component diff --git a/docs/data-sources/wisdom_knowledge_base.md b/docs/data-sources/wisdom_knowledge_base.md index 8467821fe9..f3ba7bf128 100644 --- a/docs/data-sources/wisdom_knowledge_base.md +++ b/docs/data-sources/wisdom_knowledge_base.md @@ -30,6 +30,7 @@ Data Source schema for AWS::Wisdom::KnowledgeBase - `server_side_encryption_configuration` (Attributes) (see [below for nested schema](#nestedatt--server_side_encryption_configuration)) - `source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration)) - `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) +- `vector_ingestion_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration)) ### Nested Schema for `rendering_configuration` @@ -53,6 +54,7 @@ Read-Only: Read-Only: - `app_integrations` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--app_integrations)) +- `managed_source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration)) ### Nested Schema for `source_configuration.app_integrations` @@ -63,6 +65,50 @@ Read-Only: - `object_fields` (List of String) + +### Nested Schema for `source_configuration.managed_source_configuration` + +Read-Only: + +- `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration` + +Read-Only: + +- `crawler_limits` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--crawler_limits)) +- `exclusion_filters` (List of String) +- `inclusion_filters` (List of String) +- `scope` (String) +- `url_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.crawler_limits` + +Read-Only: + +- `rate_limit` (Number) + + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration` + +Read-Only: + +- `seed_urls` (Attributes List) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration--seed_urls)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration.seed_urls` + +Read-Only: + +- `url` (String) + + + + + ### Nested Schema for `tags` @@ -71,3 +117,82 @@ Read-Only: - `key` (String) - `value` (String) + + + +### Nested Schema for `vector_ingestion_configuration` + +Read-Only: + +- `chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration)) +- `parsing_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration` + +Read-Only: + +- `chunking_strategy` (String) +- `fixed_size_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--fixed_size_chunking_configuration)) +- `hierarchical_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration)) +- `semantic_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--semantic_chunking_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.fixed_size_chunking_configuration` + +Read-Only: + +- `max_tokens` (Number) +- `overlap_percentage` (Number) + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration` + +Read-Only: + +- `level_configurations` (Attributes List) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration--level_configurations)) +- `overlap_tokens` (Number) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration.level_configurations` + +Read-Only: + +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.semantic_chunking_configuration` + +Read-Only: + +- `breakpoint_percentile_threshold` (Number) +- `buffer_size` (Number) +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration` + +Read-Only: + +- `bedrock_foundation_model_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration)) +- `parsing_strategy` (String) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration` + +Read-Only: + +- `model_arn` (String) +- `parsing_prompt` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration--parsing_prompt)) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration.parsing_prompt` + +Read-Only: + +- `parsing_prompt_text` (String) diff --git a/docs/resources/autoscaling_scaling_policy.md b/docs/resources/autoscaling_scaling_policy.md index 4fb6fb4031..f423eb81dc 100644 --- a/docs/resources/autoscaling_scaling_policy.md +++ b/docs/resources/autoscaling_scaling_policy.md @@ -267,6 +267,7 @@ Optional: - `metric_name` (String) - `metrics` (Attributes Set) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics)) - `namespace` (String) +- `period` (Number) - `statistic` (String) - `unit` (String) @@ -288,6 +289,7 @@ Optional: - `id` (String) - `label` (String) - `metric_stat` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat)) +- `period` (Number) - `return_data` (Boolean) @@ -296,6 +298,7 @@ Optional: Optional: - `metric` (Attributes) (see [below for nested schema](#nestedatt--target_tracking_configuration--customized_metric_specification--metrics--metric_stat--metric)) +- `period` (Number) - `stat` (String) - `unit` (String) diff --git a/docs/resources/chatbot_microsoft_teams_channel_configuration.md b/docs/resources/chatbot_microsoft_teams_channel_configuration.md index 0f672742f2..b95890fce9 100644 --- a/docs/resources/chatbot_microsoft_teams_channel_configuration.md +++ b/docs/resources/chatbot_microsoft_teams_channel_configuration.md @@ -25,6 +25,7 @@ Resource schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration. ### Optional +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs - `sns_topic_arns` (List of String) ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications. diff --git a/docs/resources/chatbot_slack_channel_configuration.md b/docs/resources/chatbot_slack_channel_configuration.md index 7e136c3f35..33f589c1f0 100644 --- a/docs/resources/chatbot_slack_channel_configuration.md +++ b/docs/resources/chatbot_slack_channel_configuration.md @@ -52,6 +52,7 @@ resource "awscc_iam_role" "example" { ### Optional +- `customization_resource_arns` (List of String) ARNs of Custom Actions to associate with notifications in the provided chat channel. - `guardrail_policies` (List of String) The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set. - `logging_level` (String) Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs - `sns_topic_arns` (List of String) ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications. diff --git a/docs/resources/cognito_managed_login_branding.md b/docs/resources/cognito_managed_login_branding.md new file mode 100644 index 0000000000..545a870968 --- /dev/null +++ b/docs/resources/cognito_managed_login_branding.md @@ -0,0 +1,52 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_cognito_managed_login_branding Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::Cognito::ManagedLoginBranding +--- + +# awscc_cognito_managed_login_branding (Resource) + +Resource Type definition for AWS::Cognito::ManagedLoginBranding + + + + +## Schema + +### Required + +- `user_pool_id` (String) + +### Optional + +- `assets` (Attributes List) (see [below for nested schema](#nestedatt--assets)) +- `client_id` (String) +- `return_merged_resources` (Boolean) +- `settings` (String) +- `use_cognito_provided_values` (Boolean) + +### Read-Only + +- `id` (String) Uniquely identifies the resource. +- `managed_login_branding_id` (String) + + +### Nested Schema for `assets` + +Optional: + +- `bytes` (String) +- `category` (String) +- `color_mode` (String) +- `extension` (String) +- `resource_id` (String) + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_cognito_managed_login_branding.example "user_pool_id|managed_login_branding_id" +``` diff --git a/docs/resources/ec2_vpc_block_public_access_exclusion.md b/docs/resources/ec2_vpc_block_public_access_exclusion.md new file mode 100644 index 0000000000..b6cb106be2 --- /dev/null +++ b/docs/resources/ec2_vpc_block_public_access_exclusion.md @@ -0,0 +1,47 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_exclusion Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion. +--- + +# awscc_ec2_vpc_block_public_access_exclusion (Resource) + +Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion. + + + + +## Schema + +### Required + +- `internet_gateway_exclusion_mode` (String) The desired Block Public Access Exclusion Mode for a specific VPC/Subnet. + +### Optional + +- `subnet_id` (String) The ID of the subnet. Required only if you don't specify VpcId +- `tags` (Attributes List) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) +- `vpc_id` (String) The ID of the vpc. Required only if you don't specify SubnetId. + +### Read-Only + +- `exclusion_id` (String) The ID of the exclusion +- `id` (String) Uniquely identifies the resource. + + +### Nested Schema for `tags` + +Optional: + +- `key` (String) The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. +- `value` (String) The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_vpc_block_public_access_exclusion.example "exclusion_id" +``` diff --git a/docs/resources/ec2_vpc_block_public_access_options.md b/docs/resources/ec2_vpc_block_public_access_options.md new file mode 100644 index 0000000000..94dfdc3c58 --- /dev/null +++ b/docs/resources/ec2_vpc_block_public_access_options.md @@ -0,0 +1,33 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "awscc_ec2_vpc_block_public_access_options Resource - terraform-provider-awscc" +subcategory: "" +description: |- + Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions +--- + +# awscc_ec2_vpc_block_public_access_options (Resource) + +Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions + + + + +## Schema + +### Required + +- `internet_gateway_block_mode` (String) The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value + +### Read-Only + +- `account_id` (String) The identifier for the specified AWS account. +- `id` (String) Uniquely identifies the resource. + +## Import + +Import is supported using the following syntax: + +```shell +$ terraform import awscc_ec2_vpc_block_public_access_options.example "account_id" +``` diff --git a/docs/resources/eks_cluster.md b/docs/resources/eks_cluster.md index 5c24957b43..2c49e9de23 100644 --- a/docs/resources/eks_cluster.md +++ b/docs/resources/eks_cluster.md @@ -215,11 +215,14 @@ resource "awscc_kms_key" "main" { - `access_config` (Attributes) An object representing the Access Config to use for the cluster. (see [below for nested schema](#nestedatt--access_config)) - `bootstrap_self_managed_addons` (Boolean) Set this value to false to avoid creating the default networking add-ons when the cluster is created. +- `compute_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--compute_config)) - `encryption_config` (Attributes List) (see [below for nested schema](#nestedatt--encryption_config)) - `kubernetes_network_config` (Attributes) The Kubernetes network configuration for the cluster. (see [below for nested schema](#nestedatt--kubernetes_network_config)) - `logging` (Attributes) Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs. (see [below for nested schema](#nestedatt--logging)) - `name` (String) The unique name to give to your cluster. - `outpost_config` (Attributes) An object representing the Outpost configuration to use for AWS EKS outpost cluster. (see [below for nested schema](#nestedatt--outpost_config)) +- `remote_network_config` (Attributes) Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation. (see [below for nested schema](#nestedatt--remote_network_config)) +- `storage_config` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config)) - `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags)) - `upgrade_policy` (Attributes) An object representing the Upgrade Policy to use for the cluster. (see [below for nested schema](#nestedatt--upgrade_policy)) - `version` (String) The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used. @@ -260,6 +263,16 @@ Optional: - `bootstrap_cluster_creator_admin_permissions` (Boolean) Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster. + +### Nested Schema for `compute_config` + +Optional: + +- `enabled` (Boolean) Todo: add description +- `node_pools` (List of String) Todo: add description +- `node_role_arn` (String) Todo: add description + + ### Nested Schema for `encryption_config` @@ -282,6 +295,7 @@ Optional: Optional: +- `elastic_load_balancing` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--kubernetes_network_config--elastic_load_balancing)) - `ip_family` (String) Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on - `service_ipv_4_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. @@ -289,6 +303,14 @@ Read-Only: - `service_ipv_6_cidr` (String) The CIDR block to assign Kubernetes service IP addresses from. + +### Nested Schema for `kubernetes_network_config.elastic_load_balancing` + +Optional: + +- `enabled` (Boolean) Todo: add description + + ### Nested Schema for `logging` @@ -332,6 +354,47 @@ Optional: + +### Nested Schema for `remote_network_config` + +Optional: + +- `remote_node_networks` (Attributes List) Network configuration of nodes run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_node_networks)) +- `remote_pod_networks` (Attributes List) Network configuration of pods run on-premises with EKS Hybrid Nodes. (see [below for nested schema](#nestedatt--remote_network_config--remote_pod_networks)) + + +### Nested Schema for `remote_network_config.remote_node_networks` + +Optional: + +- `cidrs` (List of String) Specifies the list of remote node CIDRs. + + + +### Nested Schema for `remote_network_config.remote_pod_networks` + +Optional: + +- `cidrs` (List of String) Specifies the list of remote pod CIDRs. + + + + +### Nested Schema for `storage_config` + +Optional: + +- `block_storage` (Attributes) Todo: add description (see [below for nested schema](#nestedatt--storage_config--block_storage)) + + +### Nested Schema for `storage_config.block_storage` + +Optional: + +- `enabled` (Boolean) Todo: add description + + + ### Nested Schema for `tags` diff --git a/docs/resources/elasticloadbalancingv2_load_balancer.md b/docs/resources/elasticloadbalancingv2_load_balancer.md index 667bd43154..f01581cf34 100644 --- a/docs/resources/elasticloadbalancingv2_load_balancer.md +++ b/docs/resources/elasticloadbalancingv2_load_balancer.md @@ -153,33 +153,32 @@ resource "awscc_elasticloadbalancingv2_load_balancer" "example" { ### Optional -- `enable_prefix_for_ipv_6_source_nat` (String) +- `enable_prefix_for_ipv_6_source_nat` (String) [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``. - `enforce_security_group_inbound_rules_on_private_link_traffic` (String) Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink. -- `ip_address_type` (String) Note: Internal load balancers must use the ``ipv4`` IP address type. - [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). - Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors. - [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can?t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener. - [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). +- `ip_address_type` (String) The IP address type. Internal load balancers must use ``ipv4``. + [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses). + Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors. + [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses). - `load_balancer_attributes` (Attributes Set) The load balancer attributes. (see [below for nested schema](#nestedatt--load_balancer_attributes)) +- `minimum_load_balancer_capacity` (Attributes) (see [below for nested schema](#nestedatt--minimum_load_balancer_capacity)) - `name` (String) The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with "internal-". If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name. - `scheme` (String) The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. - You cannot specify a scheme for a Gateway Load Balancer. + You can't specify a scheme for a Gateway Load Balancer. - `security_groups` (Set of String) [Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer. - `subnet_mappings` (Attributes Set) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. - [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. + [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) + [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets. (see [below for nested schema](#nestedatt--subnet_mappings)) - `subnets` (Set of String) The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. - [Network Load Balancers] You can specify subnets from one or more Availability Zones. - [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. - `tags` (Attributes List) The tags to assign to the load balancer. (see [below for nested schema](#nestedatt--tags)) - `type` (String) The type of load balancer. The default is ``application``. @@ -200,7 +199,7 @@ Optional: - `key` (String) The name of the attribute. The following attributes are supported by all load balancers: + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``. - + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed. + + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``. @@ -233,6 +232,14 @@ Optional: - `value` (String) The value of the attribute. + +### Nested Schema for `minimum_load_balancer_capacity` + +Optional: + +- `capacity_units` (Number) + + ### Nested Schema for `subnet_mappings` @@ -241,7 +248,7 @@ Optional: - `allocation_id` (String) [Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer. - `i_pv_6_address` (String) [Network Load Balancers] The IPv6 address. - `private_i_pv_4_address` (String) [Network Load Balancers] The private IPv4 address for an internal load balancer. -- `source_nat_ipv_6_prefix` (String) +- `source_nat_ipv_6_prefix` (String) [Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block. - `subnet_id` (String) The ID of the subnet. diff --git a/docs/resources/iot_domain_configuration.md b/docs/resources/iot_domain_configuration.md index c267f357aa..de76e1cbbc 100644 --- a/docs/resources/iot_domain_configuration.md +++ b/docs/resources/iot_domain_configuration.md @@ -61,6 +61,8 @@ Optional: Optional: - `enable_ocsp_check` (Boolean) +- `ocsp_authorized_responder_arn` (String) +- `ocsp_lambda_arn` (String) diff --git a/docs/resources/organizations_policy.md b/docs/resources/organizations_policy.md index 0c0abb707d..aad462f836 100644 --- a/docs/resources/organizations_policy.md +++ b/docs/resources/organizations_policy.md @@ -19,7 +19,7 @@ Policies in AWS Organizations enable you to manage different features of the AWS - `content` (String) The Policy text content. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it. - `name` (String) Name of the Policy -- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY +- `type` (String) The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY ### Optional diff --git a/docs/resources/sagemaker_inference_component.md b/docs/resources/sagemaker_inference_component.md index 688b56650d..4ac3a30e36 100644 --- a/docs/resources/sagemaker_inference_component.md +++ b/docs/resources/sagemaker_inference_component.md @@ -18,15 +18,15 @@ Resource Type definition for AWS::SageMaker::InferenceComponent ### Required - `endpoint_name` (String) The name of the endpoint the inference component is associated with -- `runtime_config` (Attributes) The runtime config for the inference component (see [below for nested schema](#nestedatt--runtime_config)) - `specification` (Attributes) The specification for the inference component (see [below for nested schema](#nestedatt--specification)) -- `variant_name` (String) The name of the endpoint variant the inference component is associated with ### Optional - `endpoint_arn` (String) The Amazon Resource Name (ARN) of the endpoint the inference component is associated with - `inference_component_name` (String) The name of the inference component +- `runtime_config` (Attributes) The runtime config for the inference component (see [below for nested schema](#nestedatt--runtime_config)) - `tags` (Attributes List) An array of tags to apply to the resource (see [below for nested schema](#nestedatt--tags)) +- `variant_name` (String) The name of the endpoint variant the inference component is associated with ### Read-Only @@ -37,28 +37,13 @@ Resource Type definition for AWS::SageMaker::InferenceComponent - `inference_component_status` (String) - `last_modified_time` (String) - -### Nested Schema for `runtime_config` - -Optional: - -- `copy_count` (Number) The number of copies for the inference component - -Read-Only: - -- `current_copy_count` (Number) The number of copies for the inference component -- `desired_copy_count` (Number) The number of copies for the inference component - - ### Nested Schema for `specification` -Required: - -- `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - Optional: +- `base_inference_component_name` (String) The name of the base inference component +- `compute_resource_requirements` (Attributes) (see [below for nested schema](#nestedatt--specification--compute_resource_requirements)) - `container` (Attributes) (see [below for nested schema](#nestedatt--specification--container)) - `model_name` (String) The name of the model to use with the inference component - `startup_parameters` (Attributes) (see [below for nested schema](#nestedatt--specification--startup_parameters)) @@ -108,6 +93,19 @@ Optional: + +### Nested Schema for `runtime_config` + +Optional: + +- `copy_count` (Number) The number of copies for the inference component + +Read-Only: + +- `current_copy_count` (Number) The number of copies for the inference component +- `desired_copy_count` (Number) The number of copies for the inference component + + ### Nested Schema for `tags` diff --git a/docs/resources/wisdom_knowledge_base.md b/docs/resources/wisdom_knowledge_base.md index 4645171d11..4bb2e0170d 100644 --- a/docs/resources/wisdom_knowledge_base.md +++ b/docs/resources/wisdom_knowledge_base.md @@ -27,6 +27,7 @@ Definition of AWS::Wisdom::KnowledgeBase Resource Type - `server_side_encryption_configuration` (Attributes) (see [below for nested schema](#nestedatt--server_side_encryption_configuration)) - `source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration)) - `tags` (Attributes Set) (see [below for nested schema](#nestedatt--tags)) +- `vector_ingestion_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration)) ### Read-Only @@ -56,6 +57,7 @@ Optional: Optional: - `app_integrations` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--app_integrations)) +- `managed_source_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration)) ### Nested Schema for `source_configuration.app_integrations` @@ -66,6 +68,50 @@ Optional: - `object_fields` (List of String) + +### Nested Schema for `source_configuration.managed_source_configuration` + +Optional: + +- `web_crawler_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration` + +Optional: + +- `crawler_limits` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--crawler_limits)) +- `exclusion_filters` (List of String) +- `inclusion_filters` (List of String) +- `scope` (String) +- `url_configuration` (Attributes) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.crawler_limits` + +Optional: + +- `rate_limit` (Number) + + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration` + +Optional: + +- `seed_urls` (Attributes List) (see [below for nested schema](#nestedatt--source_configuration--managed_source_configuration--web_crawler_configuration--url_configuration--seed_urls)) + + +### Nested Schema for `source_configuration.managed_source_configuration.web_crawler_configuration.url_configuration.seed_urls` + +Optional: + +- `url` (String) + + + + + ### Nested Schema for `tags` @@ -75,6 +121,85 @@ Optional: - `key` (String) - `value` (String) + + +### Nested Schema for `vector_ingestion_configuration` + +Optional: + +- `chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration)) +- `parsing_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration` + +Optional: + +- `chunking_strategy` (String) +- `fixed_size_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--fixed_size_chunking_configuration)) +- `hierarchical_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration)) +- `semantic_chunking_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--semantic_chunking_configuration)) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.fixed_size_chunking_configuration` + +Optional: + +- `max_tokens` (Number) +- `overlap_percentage` (Number) + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration` + +Optional: + +- `level_configurations` (Attributes List) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--chunking_configuration--hierarchical_chunking_configuration--level_configurations)) +- `overlap_tokens` (Number) + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.hierarchical_chunking_configuration.level_configurations` + +Optional: + +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.chunking_configuration.semantic_chunking_configuration` + +Optional: + +- `breakpoint_percentile_threshold` (Number) +- `buffer_size` (Number) +- `max_tokens` (Number) + + + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration` + +Optional: + +- `bedrock_foundation_model_configuration` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration)) +- `parsing_strategy` (String) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration` + +Optional: + +- `model_arn` (String) +- `parsing_prompt` (Attributes) (see [below for nested schema](#nestedatt--vector_ingestion_configuration--parsing_configuration--bedrock_foundation_model_configuration--parsing_prompt)) + + +### Nested Schema for `vector_ingestion_configuration.parsing_configuration.bedrock_foundation_model_configuration.parsing_prompt` + +Optional: + +- `parsing_prompt_text` (String) + ## Import Import is supported using the following syntax: diff --git a/examples/resources/awscc_cognito_managed_login_branding/import.sh b/examples/resources/awscc_cognito_managed_login_branding/import.sh new file mode 100644 index 0000000000..c7f00583f3 --- /dev/null +++ b/examples/resources/awscc_cognito_managed_login_branding/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_cognito_managed_login_branding.example "user_pool_id|managed_login_branding_id" \ No newline at end of file diff --git a/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh b/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh new file mode 100644 index 0000000000..3f018bf4f8 --- /dev/null +++ b/examples/resources/awscc_ec2_vpc_block_public_access_exclusion/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_vpc_block_public_access_exclusion.example "exclusion_id" \ No newline at end of file diff --git a/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh b/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh new file mode 100644 index 0000000000..d441adad81 --- /dev/null +++ b/examples/resources/awscc_ec2_vpc_block_public_access_options/import.sh @@ -0,0 +1 @@ +$ terraform import awscc_ec2_vpc_block_public_access_options.example "account_id" \ No newline at end of file From e8fb7ad01425d6f094fa46a66c8a02e917e80dfe Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 27 Nov 2024 12:12:15 -0500 Subject: [PATCH 6/6] Add CHANGELOG entries. --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d3f5acd6c..294685118a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ ## 1.22.0 (Unreleased) + +FEATURES: + +* **New Data Source:** `awscc_cognito_managed_login_branding` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_exclusion` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_exclusions` +* **New Data Source:** `awscc_ec2_vpc_block_public_access_options` +* **New Resource:** `awscc_cognito_managed_login_branding` +* **New Resource:** `awscc_ec2_vpc_block_public_access_exclusion` +* **New Resource:** `awscc_ec2_vpc_block_public_access_options` + ## 1.21.0 (November 22, 2024) +FEATURES: + * **New Data Source:** `awscc_apigateway_base_path_mapping_v2` * **New Data Source:** `awscc_apigateway_domain_name_access_association` * **New Data Source:** `awscc_apigateway_domain_name_access_associations` @@ -53,6 +66,8 @@ ## 1.20.0 (November 8, 2024) +FEATURES: + * **New Data Source:** `awscc_appsync_channel_namespace` * **New Data Source:** `awscc_bedrock_application_inference_profile` * **New Data Source:** `awscc_bedrock_application_inference_profiles`