diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/cdk.out index 145739f539580..188478b55560e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/cdk.out @@ -1 +1 @@ -{"version":"22.0.0"} \ No newline at end of file +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.assets.json index a829f07fccabf..e3ec82f6abcbf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.assets.json @@ -1,7 +1,8 @@ { - "version": "22.0.0", + "version": "41.0.0", "files": { - "cfd1c229f1b6f82ba7c98886bbb9cce3f98c3d07fc1cee4b2525494d7cd8d4bf": { + "269e0e4b08b68c89e95fc53741e7495bb04cc23c8bc41bed114e2ba52d60e848": { + "displayName": "integ-https-redirect-same-region Template", "source": { "path": "integ-https-redirect-same-region.template.json", "packaging": "file" @@ -9,7 +10,7 @@ "destinations": { "current_account-us-east-1": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "cfd1c229f1b6f82ba7c98886bbb9cce3f98c3d07fc1cee4b2525494d7cd8d4bf.json", + "objectKey": "269e0e4b08b68c89e95fc53741e7495bb04cc23c8bc41bed114e2ba52d60e848.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.template.json index c36c3fe38ac1c..918d825f08033 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ-https-redirect-same-region.template.json @@ -45,7 +45,7 @@ "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, - "redirectRedirectDistributionCFDistribution1A4C48E3": { + "redirectRedirectDistribution5423F951": { "Type": "AWS::CloudFront::Distribution", "Properties": { "DistributionConfig": { @@ -54,22 +54,9 @@ ], "Comment": "Redirect to aws.amazon.com from integ-same-region.example.com", "DefaultCacheBehavior": { - "AllowedMethods": [ - "GET", - "HEAD" - ], - "CachedMethods": [ - "GET", - "HEAD" - ], + "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6", "Compress": true, - "ForwardedValues": { - "Cookies": { - "Forward": "none" - }, - "QueryString": false - }, - "TargetOriginId": "origin1", + "TargetOriginId": "integhttpsredirectsameregionredirectRedirectDistributionOrigin1609D30F4", "ViewerProtocolPolicy": "redirect-to-https" }, "DefaultRootObject": "", @@ -78,14 +65,8 @@ "IPV6Enabled": true, "Origins": [ { - "ConnectionAttempts": 3, - "ConnectionTimeout": 10, "CustomOriginConfig": { - "HTTPPort": 80, - "HTTPSPort": 443, - "OriginKeepaliveTimeout": 5, "OriginProtocolPolicy": "http-only", - "OriginReadTimeout": 30, "OriginSSLProtocols": [ "TLSv1.2" ] @@ -106,7 +87,7 @@ } ] }, - "Id": "origin1" + "Id": "integhttpsredirectsameregionredirectRedirectDistributionOrigin1609D30F4" } ], "PriceClass": "PriceClass_All", @@ -114,6 +95,7 @@ "AcmCertificateArn": { "Ref": "redirectRedirectCertificateD6C59F7F" }, + "MinimumProtocolVersion": "TLSv1.2_2021", "SslSupportMethod": "sni-only" } } @@ -122,12 +104,10 @@ "redirectRedirectAliasRecorde7728a9F2A656C": { "Type": "AWS::Route53::RecordSet", "Properties": { - "Name": "integ-same-region.example.com.", - "Type": "A", "AliasTarget": { "DNSName": { "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", + "redirectRedirectDistribution5423F951", "DomainName" ] }, @@ -141,18 +121,18 @@ ] } }, - "HostedZoneId": "Z23ABC4XYZL05B" + "HostedZoneId": "Z23ABC4XYZL05B", + "Name": "integ-same-region.example.com.", + "Type": "A" } }, "redirectRedirectAliasRecordSixe7728a9391F03E": { "Type": "AWS::Route53::RecordSet", "Properties": { - "Name": "integ-same-region.example.com.", - "Type": "AAAA", "AliasTarget": { "DNSName": { "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", + "redirectRedirectDistribution5423F951", "DomainName" ] }, @@ -166,7 +146,9 @@ ] } }, - "HostedZoneId": "Z23ABC4XYZL05B" + "HostedZoneId": "Z23ABC4XYZL05B", + "Name": "integ-same-region.example.com.", + "Type": "AAAA" } } }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ.json index 5fa00cc3de2a0..bb4f031ce06b1 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integ.json @@ -1,6 +1,6 @@ { "enableLookups": true, - "version": "22.0.0", + "version": "41.0.0", "testCases": { "integ-test/DefaultTest": { "stacks": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integtestDefaultTestDeployAssert24D5C536.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integtestDefaultTestDeployAssert24D5C536.assets.json index 6aa47f90e9d7f..e216273e9051a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integtestDefaultTestDeployAssert24D5C536.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/integtestDefaultTestDeployAssert24D5C536.assets.json @@ -1,7 +1,8 @@ { - "version": "22.0.0", + "version": "41.0.0", "files": { "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "integtestDefaultTestDeployAssert24D5C536 Template", "source": { "path": "integtestDefaultTestDeployAssert24D5C536.template.json", "packaging": "file" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/manifest.json index ee2d553282578..fb028d59f9d71 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "22.0.0", + "version": "42.0.0", "artifacts": { "integ-https-redirect-same-region.assets": { "type": "cdk:asset-manifest", @@ -14,10 +14,11 @@ "environment": "aws://unknown-account/us-east-1", "properties": { "templateFile": "integ-https-redirect-same-region.template.json", + "terminationProtection": false, "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/cfd1c229f1b6f82ba7c98886bbb9cce3f98c3d07fc1cee4b2525494d7cd8d4bf.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/269e0e4b08b68c89e95fc53741e7495bb04cc23c8bc41bed114e2ba52d60e848.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -33,22 +34,79 @@ "integ-https-redirect-same-region.assets" ], "metadata": { + "/integ-https-redirect-same-region/redirect/RedirectCertificate": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "domainName": "*", + "subjectAlternativeNames": "*", + "validation": "*" + } + } + ], "/integ-https-redirect-same-region/redirect/RedirectCertificate/Resource": [ { "type": "aws:cdk:logicalId", "data": "redirectRedirectCertificateD6C59F7F" } ], + "/integ-https-redirect-same-region/redirect/RedirectBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "websiteRedirect": { + "hostName": "*", + "protocol": "https" + }, + "removalPolicy": "destroy", + "blockPublicAccess": "*" + } + } + ], "/integ-https-redirect-same-region/redirect/RedirectBucket/Resource": [ { "type": "aws:cdk:logicalId", "data": "redirectRedirectBucketAA44E2FE" } ], - "/integ-https-redirect-same-region/redirect/RedirectDistribution/CFDistribution": [ + "/integ-https-redirect-same-region/redirect/RedirectDistribution": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "defaultRootObject": "*", + "defaultBehavior": { + "origin": "*", + "viewerProtocolPolicy": "redirect-to-https" + }, + "domainNames": "*", + "certificate": "*", + "comment": "*", + "priceClass": "PriceClass_All" + } + } + ], + "/integ-https-redirect-same-region/redirect/RedirectDistribution/Resource": [ { "type": "aws:cdk:logicalId", - "data": "redirectRedirectDistributionCFDistribution1A4C48E3" + "data": "redirectRedirectDistribution5423F951" + } + ], + "/integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } } ], "/integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a/Resource": [ @@ -57,6 +115,24 @@ "data": "redirectRedirectAliasRecorde7728a9F2A656C" } ], + "/integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } + } + ], "/integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a/Resource": [ { "type": "aws:cdk:logicalId", @@ -81,37 +157,10 @@ "data": "CheckBootstrapVersion" } ], - "redirectRedirectCertificateCertificateRequestorFunctionServiceRole9E01E94F": [ - { - "type": "aws:cdk:logicalId", - "data": "redirectRedirectCertificateCertificateRequestorFunctionServiceRole9E01E94F", - "trace": [ - "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" - ] - } - ], - "redirectRedirectCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy7AC24A96": [ - { - "type": "aws:cdk:logicalId", - "data": "redirectRedirectCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy7AC24A96", - "trace": [ - "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" - ] - } - ], - "redirectRedirectCertificateCertificateRequestorFunctionBBD1548C": [ - { - "type": "aws:cdk:logicalId", - "data": "redirectRedirectCertificateCertificateRequestorFunctionBBD1548C", - "trace": [ - "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" - ] - } - ], - "redirectRedirectCertificateCertificateRequestorResourceBB4D62C1": [ + "redirectRedirectDistributionCFDistribution1A4C48E3": [ { "type": "aws:cdk:logicalId", - "data": "redirectRedirectCertificateCertificateRequestorResourceBB4D62C1", + "data": "redirectRedirectDistributionCFDistribution1A4C48E3", "trace": [ "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" ] @@ -133,6 +182,7 @@ "environment": "aws://unknown-account/unknown-region", "properties": { "templateFile": "integtestDefaultTestDeployAssert24D5C536.template.json", + "terminationProtection": false, "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", @@ -173,5 +223,6 @@ "file": "tree.json" } } - } + }, + "minimumCliVersion": "2.1006.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/tree.json index 93f7bbb68dd62..18d9e0789e716 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.js.snapshot/tree.json @@ -1,384 +1 @@ -{ - "version": "tree-0.1", - "tree": { - "id": "App", - "path": "", - "children": { - "integ-https-redirect-same-region": { - "id": "integ-https-redirect-same-region", - "path": "integ-https-redirect-same-region", - "children": { - "HostedZone": { - "id": "HostedZone", - "path": "integ-https-redirect-same-region/HostedZone", - "constructInfo": { - "fqn": "@aws-cdk/core.Resource", - "version": "0.0.0" - } - }, - "redirect": { - "id": "redirect", - "path": "integ-https-redirect-same-region/redirect", - "children": { - "RedirectCertificate": { - "id": "RedirectCertificate", - "path": "integ-https-redirect-same-region/redirect/RedirectCertificate", - "children": { - "Resource": { - "id": "Resource", - "path": "integ-https-redirect-same-region/redirect/RedirectCertificate/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::CertificateManager::Certificate", - "aws:cdk:cloudformation:props": { - "domainName": "integ-same-region.example.com", - "domainValidationOptions": [ - { - "domainName": "integ-same-region.example.com", - "hostedZoneId": "Z23ABC4XYZL05B" - }, - { - "domainName": "integ-same-region.example.com", - "hostedZoneId": "Z23ABC4XYZL05B" - } - ], - "subjectAlternativeNames": [ - "integ-same-region.example.com" - ], - "tags": [ - { - "key": "Name", - "value": "integ-https-redirect-same-region/redirect/RedirectCertificate" - } - ], - "validationMethod": "DNS" - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-certificatemanager.CfnCertificate", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-certificatemanager.Certificate", - "version": "0.0.0" - } - }, - "RedirectBucket": { - "id": "RedirectBucket", - "path": "integ-https-redirect-same-region/redirect/RedirectBucket", - "children": { - "Resource": { - "id": "Resource", - "path": "integ-https-redirect-same-region/redirect/RedirectBucket/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::S3::Bucket", - "aws:cdk:cloudformation:props": { - "publicAccessBlockConfiguration": { - "blockPublicAcls": true, - "blockPublicPolicy": true, - "ignorePublicAcls": true, - "restrictPublicBuckets": true - }, - "websiteConfiguration": { - "redirectAllRequestsTo": { - "hostName": "aws.amazon.com", - "protocol": "https" - } - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-s3.CfnBucket", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-s3.Bucket", - "version": "0.0.0" - } - }, - "RedirectDistribution": { - "id": "RedirectDistribution", - "path": "integ-https-redirect-same-region/redirect/RedirectDistribution", - "children": { - "CFDistribution": { - "id": "CFDistribution", - "path": "integ-https-redirect-same-region/redirect/RedirectDistribution/CFDistribution", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::CloudFront::Distribution", - "aws:cdk:cloudformation:props": { - "distributionConfig": { - "comment": "Redirect to aws.amazon.com from integ-same-region.example.com", - "enabled": true, - "defaultRootObject": "", - "httpVersion": "http2", - "priceClass": "PriceClass_All", - "ipv6Enabled": true, - "origins": [ - { - "id": "origin1", - "domainName": { - "Fn::Select": [ - 2, - { - "Fn::Split": [ - "/", - { - "Fn::GetAtt": [ - "redirectRedirectBucketAA44E2FE", - "WebsiteURL" - ] - } - ] - } - ] - }, - "customOriginConfig": { - "httpPort": 80, - "httpsPort": 443, - "originKeepaliveTimeout": 5, - "originReadTimeout": 30, - "originProtocolPolicy": "http-only", - "originSslProtocols": [ - "TLSv1.2" - ] - }, - "connectionAttempts": 3, - "connectionTimeout": 10 - } - ], - "defaultCacheBehavior": { - "allowedMethods": [ - "GET", - "HEAD" - ], - "cachedMethods": [ - "GET", - "HEAD" - ], - "compress": true, - "forwardedValues": { - "queryString": false, - "cookies": { - "forward": "none" - } - }, - "targetOriginId": "origin1", - "viewerProtocolPolicy": "redirect-to-https" - }, - "aliases": [ - "integ-same-region.example.com" - ], - "viewerCertificate": { - "acmCertificateArn": { - "Ref": "redirectRedirectCertificateD6C59F7F" - }, - "sslSupportMethod": "sni-only" - } - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-cloudfront.CfnDistribution", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-cloudfront.CloudFrontWebDistribution", - "version": "0.0.0" - } - }, - "RedirectAliasRecorde7728a": { - "id": "RedirectAliasRecorde7728a", - "path": "integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a", - "children": { - "Resource": { - "id": "Resource", - "path": "integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Route53::RecordSet", - "aws:cdk:cloudformation:props": { - "name": "integ-same-region.example.com.", - "type": "A", - "aliasTarget": { - "hostedZoneId": { - "Fn::FindInMap": [ - "AWSCloudFrontPartitionHostedZoneIdMap", - { - "Ref": "AWS::Partition" - }, - "zoneId" - ] - }, - "dnsName": { - "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", - "DomainName" - ] - } - }, - "hostedZoneId": "Z23ABC4XYZL05B" - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-route53.CfnRecordSet", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-route53.ARecord", - "version": "0.0.0" - } - }, - "RedirectAliasRecordSixe7728a": { - "id": "RedirectAliasRecordSixe7728a", - "path": "integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a", - "children": { - "Resource": { - "id": "Resource", - "path": "integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Route53::RecordSet", - "aws:cdk:cloudformation:props": { - "name": "integ-same-region.example.com.", - "type": "AAAA", - "aliasTarget": { - "hostedZoneId": { - "Fn::FindInMap": [ - "AWSCloudFrontPartitionHostedZoneIdMap", - { - "Ref": "AWS::Partition" - }, - "zoneId" - ] - }, - "dnsName": { - "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", - "DomainName" - ] - } - }, - "hostedZoneId": "Z23ABC4XYZL05B" - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-route53.CfnRecordSet", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-route53.AaaaRecord", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-route53-patterns.HttpsRedirect", - "version": "0.0.0" - } - }, - "AWSCloudFrontPartitionHostedZoneIdMap": { - "id": "AWSCloudFrontPartitionHostedZoneIdMap", - "path": "integ-https-redirect-same-region/AWSCloudFrontPartitionHostedZoneIdMap", - "constructInfo": { - "fqn": "@aws-cdk/core.CfnMapping", - "version": "0.0.0" - } - }, - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "integ-https-redirect-same-region/BootstrapVersion", - "constructInfo": { - "fqn": "@aws-cdk/core.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "integ-https-redirect-same-region/CheckBootstrapVersion", - "constructInfo": { - "fqn": "@aws-cdk/core.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/core.Stack", - "version": "0.0.0" - } - }, - "integ-test": { - "id": "integ-test", - "path": "integ-test", - "children": { - "DefaultTest": { - "id": "DefaultTest", - "path": "integ-test/DefaultTest", - "children": { - "Default": { - "id": "Default", - "path": "integ-test/DefaultTest/Default", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.168" - } - }, - "DeployAssert": { - "id": "DeployAssert", - "path": "integ-test/DefaultTest/DeployAssert", - "children": { - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "integ-test/DefaultTest/DeployAssert/BootstrapVersion", - "constructInfo": { - "fqn": "@aws-cdk/core.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "integ-test/DefaultTest/DeployAssert/CheckBootstrapVersion", - "constructInfo": { - "fqn": "@aws-cdk/core.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/core.Stack", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests.IntegTestCase", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests.IntegTest", - "version": "0.0.0" - } - }, - "Tree": { - "id": "Tree", - "path": "Tree", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.168" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/core.App", - "version": "0.0.0" - } - } -} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"integ-https-redirect-same-region":{"id":"integ-https-redirect-same-region","path":"integ-https-redirect-same-region","children":{"HostedZone":{"id":"HostedZone","path":"integ-https-redirect-same-region/HostedZone","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"redirect":{"id":"redirect","path":"integ-https-redirect-same-region/redirect","children":{"RedirectCertificate":{"id":"RedirectCertificate","path":"integ-https-redirect-same-region/redirect/RedirectCertificate","children":{"Resource":{"id":"Resource","path":"integ-https-redirect-same-region/redirect/RedirectCertificate/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CertificateManager::Certificate","aws:cdk:cloudformation:props":{"domainName":"integ-same-region.example.com","domainValidationOptions":[{"domainName":"integ-same-region.example.com","hostedZoneId":"Z23ABC4XYZL05B"},{"domainName":"integ-same-region.example.com","hostedZoneId":"Z23ABC4XYZL05B"}],"subjectAlternativeNames":["integ-same-region.example.com"],"tags":[{"key":"Name","value":"integ-https-redirect-same-region/redirect/RedirectCertificate"}],"validationMethod":"DNS"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.CfnCertificate","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.Certificate","version":"0.0.0","metadata":[{"domainName":"*","subjectAlternativeNames":"*","validation":"*"}]}},"RedirectBucket":{"id":"RedirectBucket","path":"integ-https-redirect-same-region/redirect/RedirectBucket","children":{"Resource":{"id":"Resource","path":"integ-https-redirect-same-region/redirect/RedirectBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"websiteConfiguration":{"redirectAllRequestsTo":{"hostName":"aws.amazon.com","protocol":"https"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"websiteRedirect":{"hostName":"*","protocol":"https"},"removalPolicy":"destroy","blockPublicAccess":"*"}]}},"RedirectDistribution":{"id":"RedirectDistribution","path":"integ-https-redirect-same-region/redirect/RedirectDistribution","children":{"Origin1":{"id":"Origin1","path":"integ-https-redirect-same-region/redirect/RedirectDistribution/Origin1","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Resource":{"id":"Resource","path":"integ-https-redirect-same-region/redirect/RedirectDistribution/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CloudFront::Distribution","aws:cdk:cloudformation:props":{"distributionConfig":{"enabled":true,"origins":[{"domainName":{"Fn::Select":[2,{"Fn::Split":["/",{"Fn::GetAtt":["redirectRedirectBucketAA44E2FE","WebsiteURL"]}]}]},"id":"integhttpsredirectsameregionredirectRedirectDistributionOrigin1609D30F4","customOriginConfig":{"originSslProtocols":["TLSv1.2"],"originProtocolPolicy":"http-only"}}],"defaultCacheBehavior":{"pathPattern":"*","targetOriginId":"integhttpsredirectsameregionredirectRedirectDistributionOrigin1609D30F4","cachePolicyId":"658327ea-f89d-4fab-a63d-7e88639e58f6","compress":true,"viewerProtocolPolicy":"redirect-to-https"},"aliases":["integ-same-region.example.com"],"comment":"Redirect to aws.amazon.com from integ-same-region.example.com","defaultRootObject":"","httpVersion":"http2","ipv6Enabled":true,"priceClass":"PriceClass_All","viewerCertificate":{"acmCertificateArn":{"Ref":"redirectRedirectCertificateD6C59F7F"},"minimumProtocolVersion":"TLSv1.2_2021","sslSupportMethod":"sni-only"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CfnDistribution","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.Distribution","version":"0.0.0","metadata":[{"defaultRootObject":"*","defaultBehavior":{"origin":"*","viewerProtocolPolicy":"redirect-to-https"},"domainNames":"*","certificate":"*","comment":"*","priceClass":"PriceClass_All"}]}},"RedirectAliasRecorde7728a":{"id":"RedirectAliasRecorde7728a","path":"integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a","children":{"Resource":{"id":"Resource","path":"integ-https-redirect-same-region/redirect/RedirectAliasRecorde7728a/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistribution5423F951","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ-same-region.example.com.","type":"A"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.ARecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}},"RedirectAliasRecordSixe7728a":{"id":"RedirectAliasRecordSixe7728a","path":"integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a","children":{"Resource":{"id":"Resource","path":"integ-https-redirect-same-region/redirect/RedirectAliasRecordSixe7728a/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistribution5423F951","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ-same-region.example.com.","type":"AAAA"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.AaaaRecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53_patterns.HttpsRedirect","version":"0.0.0"}},"AWSCloudFrontPartitionHostedZoneIdMap":{"id":"AWSCloudFrontPartitionHostedZoneIdMap","path":"integ-https-redirect-same-region/AWSCloudFrontPartitionHostedZoneIdMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-https-redirect-same-region/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-https-redirect-same-region/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"integ-test":{"id":"integ-test","path":"integ-test","children":{"DefaultTest":{"id":"DefaultTest","path":"integ-test/DefaultTest","children":{"Default":{"id":"Default","path":"integ-test/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"integ-test/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.ts index d04bc17e69d96..6ddc2f430ad4b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect-same-region.ts @@ -1,6 +1,6 @@ import { PublicHostedZone } from 'aws-cdk-lib/aws-route53'; import { Stack, App } from 'aws-cdk-lib'; -// import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '@aws-cdk/cx-api'; +import { ROUTE53_PATTERNS_USE_DISTRIBUTION } from 'aws-cdk-lib/cx-api'; import { IntegTest } from '@aws-cdk/integ-tests-alpha'; import { HttpsRedirect } from 'aws-cdk-lib/aws-route53-patterns'; const hostedZoneId = process.env.CDK_INTEG_HOSTED_ZONE_ID ?? process.env.HOSTED_ZONE_ID; @@ -11,10 +11,9 @@ const domainName = process.env.CDK_INTEG_DOMAIN_NAME ?? process.env.DOMAIN_NAME; if (!domainName) throw new Error('For this test you must provide your own DomainName as an env var "DOMAIN_NAME". See framework-integ/README.md for details.'); const app = new App({ - // uncomment this to test the old behavior - // postCliContext: { - // [ROUTE53_PATTERNS_USE_CERTIFICATE]: false, - // }, + postCliContext: { + [ROUTE53_PATTERNS_USE_DISTRIBUTION]: true, + }, }); const testCase = new Stack(app, 'integ-https-redirect-same-region', { env: { region: 'us-east-1' }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/integ-https-redirect.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/integ-https-redirect.template.json index 23254997e43bd..09fe1a65e5252 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/integ-https-redirect.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/integ-https-redirect.template.json @@ -19,7 +19,7 @@ "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, - "redirectRedirectDistributionCFDistribution1A4C48E3": { + "redirectRedirectDistribution5423F951": { "Type": "AWS::CloudFront::Distribution", "Properties": { "DistributionConfig": { @@ -28,22 +28,9 @@ ], "Comment": "Redirect to aws.amazon.com from integ.example.com", "DefaultCacheBehavior": { - "AllowedMethods": [ - "GET", - "HEAD" - ], - "CachedMethods": [ - "GET", - "HEAD" - ], + "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6", "Compress": true, - "ForwardedValues": { - "Cookies": { - "Forward": "none" - }, - "QueryString": false - }, - "TargetOriginId": "origin1", + "TargetOriginId": "integhttpsredirectRedirectDistributionOrigin1D11FF053", "ViewerProtocolPolicy": "redirect-to-https" }, "DefaultRootObject": "", @@ -52,14 +39,8 @@ "IPV6Enabled": true, "Origins": [ { - "ConnectionAttempts": 3, - "ConnectionTimeout": 10, "CustomOriginConfig": { - "HTTPPort": 80, - "HTTPSPort": 443, - "OriginKeepaliveTimeout": 5, "OriginProtocolPolicy": "http-only", - "OriginReadTimeout": 30, "OriginSSLProtocols": [ "TLSv1.2" ] @@ -80,7 +61,7 @@ } ] }, - "Id": "origin1" + "Id": "integhttpsredirectRedirectDistributionOrigin1D11FF053" } ], "PriceClass": "PriceClass_All", @@ -91,6 +72,7 @@ "/cdk/exports/integ-https-redirect/certificateredirectstackc8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61useast1RefRedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76D1272753FE4DCC12" ] }, + "MinimumProtocolVersion": "TLSv1.2_2021", "SslSupportMethod": "sni-only" } } @@ -102,7 +84,7 @@ "AliasTarget": { "DNSName": { "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", + "redirectRedirectDistribution5423F951", "DomainName" ] }, @@ -127,7 +109,7 @@ "AliasTarget": { "DNSName": { "Fn::GetAtt": [ - "redirectRedirectDistributionCFDistribution1A4C48E3", + "redirectRedirectDistribution5423F951", "DomainName" ] }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/manifest.json index 8ff0b7abbe17f..beb4f5a56da14 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/manifest.json @@ -82,7 +82,25 @@ "/integ-https-redirect/redirect/RedirectDistribution/CFDistribution": [ { "type": "aws:cdk:logicalId", - "data": "redirectRedirectDistributionCFDistribution1A4C48E3" + "data": "redirectRedirectDistribution5423F951" + } + ], + "/integ-https-redirect/redirect/RedirectAliasRecord700dc5": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "recordName": "*", + "zone": "*", + "target": "*" + } } ], "/integ-https-redirect/redirect/RedirectAliasRecord700dc5": [ @@ -184,6 +202,15 @@ "type": "aws:cdk:logicalId", "data": "CheckBootstrapVersion" } + ], + "redirectRedirectDistributionCFDistribution1A4C48E3": [ + { + "type": "aws:cdk:logicalId", + "data": "redirectRedirectDistributionCFDistribution1A4C48E3", + "trace": [ + "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" + ] + } ] }, "displayName": "integ-https-redirect" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/tree.json index 63bfc4f0ec0c5..c2f39411ba606 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"integ-https-redirect":{"id":"integ-https-redirect","path":"integ-https-redirect","children":{"HostedZone":{"id":"HostedZone","path":"integ-https-redirect/HostedZone","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"redirect":{"id":"redirect","path":"integ-https-redirect/redirect","children":{"RedirectBucket":{"id":"RedirectBucket","path":"integ-https-redirect/redirect/RedirectBucket","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"websiteConfiguration":{"redirectAllRequestsTo":{"hostName":"aws.amazon.com","protocol":"https"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"websiteRedirect":{"hostName":"*","protocol":"https"},"removalPolicy":"destroy","blockPublicAccess":"*"}]}},"RedirectDistribution":{"id":"RedirectDistribution","path":"integ-https-redirect/redirect/RedirectDistribution","children":{"CFDistribution":{"id":"CFDistribution","path":"integ-https-redirect/redirect/RedirectDistribution/CFDistribution","attributes":{"aws:cdk:cloudformation:type":"AWS::CloudFront::Distribution","aws:cdk:cloudformation:props":{"distributionConfig":{"comment":"Redirect to aws.amazon.com from integ.example.com","enabled":true,"defaultRootObject":"","httpVersion":"http2","priceClass":"PriceClass_All","ipv6Enabled":true,"origins":[{"id":"origin1","domainName":{"Fn::Select":[2,{"Fn::Split":["/",{"Fn::GetAtt":["redirectRedirectBucketAA44E2FE","WebsiteURL"]}]}]},"customOriginConfig":{"httpPort":80,"httpsPort":443,"originKeepaliveTimeout":5,"originReadTimeout":30,"originProtocolPolicy":"http-only","originSslProtocols":["TLSv1.2"]},"connectionAttempts":3,"connectionTimeout":10}],"defaultCacheBehavior":{"allowedMethods":["GET","HEAD"],"cachedMethods":["GET","HEAD"],"compress":true,"forwardedValues":{"queryString":false,"cookies":{"forward":"none"}},"targetOriginId":"origin1","viewerProtocolPolicy":"redirect-to-https"},"aliases":["integ.example.com"],"viewerCertificate":{"acmCertificateArn":{"Fn::GetAtt":["ExportsReader8B249524","/cdk/exports/integ-https-redirect/certificateredirectstackc8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61useast1RefRedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76D1272753FE4DCC12"]},"sslSupportMethod":"sni-only"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CfnDistribution","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CloudFrontWebDistribution","version":"0.0.0","metadata":[{"defaultRootObject":"*","originConfigs":[{"behaviors":[{"isDefaultBehavior":true}],"customOriginSource":{"domainName":"*","originProtocolPolicy":"http-only"}}],"viewerCertificate":"*","comment":"*","priceClass":"PriceClass_All","viewerProtocolPolicy":"redirect-to-https"}]}},"RedirectAliasRecord700dc5":{"id":"RedirectAliasRecord700dc5","path":"integ-https-redirect/redirect/RedirectAliasRecord700dc5","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectAliasRecord700dc5/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistributionCFDistribution1A4C48E3","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ.example.com.","type":"A"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.ARecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}},"RedirectAliasRecordSix700dc5":{"id":"RedirectAliasRecordSix700dc5","path":"integ-https-redirect/redirect/RedirectAliasRecordSix700dc5","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectAliasRecordSix700dc5/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistributionCFDistribution1A4C48E3","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ.example.com.","type":"AAAA"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.AaaaRecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53_patterns.HttpsRedirect","version":"0.0.0"}},"AWSCloudFrontPartitionHostedZoneIdMap":{"id":"AWSCloudFrontPartitionHostedZoneIdMap","path":"integ-https-redirect/AWSCloudFrontPartitionHostedZoneIdMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"ExportsReader":{"id":"ExportsReader","path":"integ-https-redirect/ExportsReader","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/ExportsReader/Resource","children":{"Default":{"id":"Default","path":"integ-https-redirect/ExportsReader/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::CrossRegionExportReaderCustomResourceProvider":{"id":"Custom::CrossRegionExportReaderCustomResourceProvider","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-https-redirect/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-https-redirect/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61":{"id":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61","children":{"RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76":{"id":"RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76","children":{"Resource":{"id":"Resource","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CertificateManager::Certificate","aws:cdk:cloudformation:props":{"domainName":"integ.example.com","domainValidationOptions":[{"domainName":"integ.example.com","hostedZoneId":"Z23ABC4XYZL05B"},{"domainName":"integ.example.com","hostedZoneId":"Z23ABC4XYZL05B"}],"subjectAlternativeNames":["integ.example.com"],"tags":[{"key":"Name","value":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76"}],"validationMethod":"DNS"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.CfnCertificate","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.Certificate","version":"0.0.0","metadata":[{"domainName":"*","subjectAlternativeNames":"*","validation":"*"}]}},"ExportsWriteruseast2828FA26B":{"id":"ExportsWriteruseast2828FA26B","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B","children":{"Resource":{"id":"Resource","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B/Resource","children":{"Default":{"id":"Default","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::CrossRegionExportWriterCustomResourceProvider":{"id":"Custom::CrossRegionExportWriterCustomResourceProvider","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"integ-test":{"id":"integ-test","path":"integ-test","children":{"DefaultTest":{"id":"DefaultTest","path":"integ-test/DefaultTest","children":{"Default":{"id":"Default","path":"integ-test/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"integ-test/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"integ-https-redirect":{"id":"integ-https-redirect","path":"integ-https-redirect","children":{"HostedZone":{"id":"HostedZone","path":"integ-https-redirect/HostedZone","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"redirect":{"id":"redirect","path":"integ-https-redirect/redirect","children":{"RedirectBucket":{"id":"RedirectBucket","path":"integ-https-redirect/redirect/RedirectBucket","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"websiteConfiguration":{"redirectAllRequestsTo":{"hostName":"aws.amazon.com","protocol":"https"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"websiteRedirect":{"hostName":"*","protocol":"https"},"removalPolicy":"destroy","blockPublicAccess":"*"}]}},"RedirectDistribution":{"id":"RedirectDistribution","path":"integ-https-redirect/redirect/RedirectDistribution","children":{"CFDistribution":{"id":"CFDistribution","path":"integ-https-redirect/redirect/RedirectDistribution/CFDistribution","attributes":{"aws:cdk:cloudformation:type":"AWS::CloudFront::Distribution","aws:cdk:cloudformation:props":{"distributionConfig":{"comment":"Redirect to aws.amazon.com from integ.example.com","enabled":true,"defaultRootObject":"","httpVersion":"http2","priceClass":"PriceClass_All","ipv6Enabled":true,"origins":[{"id":"origin1","domainName":{"Fn::Select":[2,{"Fn::Split":["/",{"Fn::GetAtt":["redirectRedirectBucketAA44E2FE","WebsiteURL"]}]}]},"customOriginConfig":{"httpPort":80,"httpsPort":443,"originKeepaliveTimeout":5,"originReadTimeout":30,"originProtocolPolicy":"http-only","originSslProtocols":["TLSv1.2"]},"connectionAttempts":3,"connectionTimeout":10}],"defaultCacheBehavior":{"allowedMethods":["GET","HEAD"],"cachedMethods":["GET","HEAD"],"compress":true,"forwardedValues":{"queryString":false,"cookies":{"forward":"none"}},"targetOriginId":"origin1","viewerProtocolPolicy":"redirect-to-https"},"aliases":["integ.example.com"],"viewerCertificate":{"acmCertificateArn":{"Fn::GetAtt":["ExportsReader8B249524","/cdk/exports/integ-https-redirect/certificateredirectstackc8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61useast1RefRedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76D1272753FE4DCC12"]},"sslSupportMethod":"sni-only"}}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CfnDistribution","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CloudFrontWebDistribution","version":"0.0.0","metadata":[{"defaultRootObject":"*","originConfigs":[{"behaviors":[{"isDefaultBehavior":true}],"customOriginSource":{"domainName":"*","originProtocolPolicy":"http-only"}}],"viewerCertificate":"*","comment":"*","priceClass":"PriceClass_All","viewerProtocolPolicy":"redirect-to-https"}]}},"RedirectAliasRecord700dc5":{"id":"RedirectAliasRecord700dc5","path":"integ-https-redirect/redirect/RedirectAliasRecord700dc5","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectAliasRecord700dc5/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistributionCFDistribution1A4C48E3","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ.example.com.","type":"A"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.ARecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}},"RedirectAliasRecordSix700dc5":{"id":"RedirectAliasRecordSix700dc5","path":"integ-https-redirect/redirect/RedirectAliasRecordSix700dc5","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/redirect/RedirectAliasRecordSix700dc5/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["redirectRedirectDistributionCFDistribution1A4C48E3","DomainName"]}},"hostedZoneId":"Z23ABC4XYZL05B","name":"integ.example.com.","type":"AAAA"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53.AaaaRecord","version":"0.0.0","metadata":[{"recordName":"*","zone":"*","target":"*"},{"recordName":"*","zone":"*","target":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_route53_patterns.HttpsRedirect","version":"0.0.0"}},"AWSCloudFrontPartitionHostedZoneIdMap":{"id":"AWSCloudFrontPartitionHostedZoneIdMap","path":"integ-https-redirect/AWSCloudFrontPartitionHostedZoneIdMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"ExportsReader":{"id":"ExportsReader","path":"integ-https-redirect/ExportsReader","children":{"Resource":{"id":"Resource","path":"integ-https-redirect/ExportsReader/Resource","children":{"Default":{"id":"Default","path":"integ-https-redirect/ExportsReader/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::CrossRegionExportReaderCustomResourceProvider":{"id":"Custom::CrossRegionExportReaderCustomResourceProvider","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"integ-https-redirect/Custom::CrossRegionExportReaderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-https-redirect/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-https-redirect/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61":{"id":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61","children":{"RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76":{"id":"RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76","children":{"Resource":{"id":"Resource","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CertificateManager::Certificate","aws:cdk:cloudformation:props":{"domainName":"integ.example.com","domainValidationOptions":[{"domainName":"integ.example.com","hostedZoneId":"Z23ABC4XYZL05B"},{"domainName":"integ.example.com","hostedZoneId":"Z23ABC4XYZL05B"}],"subjectAlternativeNames":["integ.example.com"],"tags":[{"key":"Name","value":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/RedirectCertificatec8615644f6b8e5372f779988c9aad3c31ec249ee76"}],"validationMethod":"DNS"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.CfnCertificate","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.Certificate","version":"0.0.0","metadata":[{"domainName":"*","subjectAlternativeNames":"*","validation":"*"}]}},"ExportsWriteruseast2828FA26B":{"id":"ExportsWriteruseast2828FA26B","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B","children":{"Resource":{"id":"Resource","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B/Resource","children":{"Default":{"id":"Default","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/ExportsWriteruseast2828FA26B/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::CrossRegionExportWriterCustomResourceProvider":{"id":"Custom::CrossRegionExportWriterCustomResourceProvider","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/Custom::CrossRegionExportWriterCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"certificate-redirect-stack-c8dcaeced090b732e39f9a17bfcca0bf8d20ce4f61/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"integ-test":{"id":"integ-test","path":"integ-test","children":{"DefaultTest":{"id":"DefaultTest","path":"integ-test/DefaultTest","children":{"Default":{"id":"Default","path":"integ-test/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"integ-test/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"integ-test/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.ts index e6484d346314f..884ad4eb6e3b7 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53-patterns/test/integ.hosted-redirect.ts @@ -1,6 +1,6 @@ import { PublicHostedZone } from 'aws-cdk-lib/aws-route53'; import { Stack, App } from 'aws-cdk-lib'; -// import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '@aws-cdk/cx-api'; +import { ROUTE53_PATTERNS_USE_DISTRIBUTION } from 'aws-cdk-lib/cx-api'; import { IntegTest } from '@aws-cdk/integ-tests-alpha'; import { HttpsRedirect } from 'aws-cdk-lib/aws-route53-patterns'; const hostedZoneId = process.env.CDK_INTEG_HOSTED_ZONE_ID ?? process.env.HOSTED_ZONE_ID; @@ -11,10 +11,9 @@ const domainName = process.env.CDK_INTEG_DOMAIN_NAME ?? process.env.DOMAIN_NAME; if (!domainName) throw new Error('For this test you must provide your own DomainName as an env var "DOMAIN_NAME". See framework-integ/README.md for details.'); const app = new App({ - // uncomment this to test the old behavior - // postCliContext: { - // [ROUTE53_PATTERNS_USE_CERTIFICATE]: false, - // }, + postCliContext: { + [ROUTE53_PATTERNS_USE_DISTRIBUTION]: true, + }, }); const testCase = new Stack(app, 'integ-https-redirect', { crossRegionReferences: true, diff --git a/packages/aws-cdk-lib/aws-route53-patterns/README.md b/packages/aws-cdk-lib/aws-route53-patterns/README.md index 93eb92bc8cf9a..85fe4a914da5b 100644 --- a/packages/aws-cdk-lib/aws-route53-patterns/README.md +++ b/packages/aws-cdk-lib/aws-route53-patterns/README.md @@ -72,3 +72,9 @@ new patterns.HttpsRedirect(this, 'Redirect', { It is safe to upgrade to `@aws-cdk/aws-route53-patterns:useCertificate` since the new certificate will be created and updated on the CloudFront distribution before the old certificate is deleted. + +To have `HttpsRedirect` use the `Distribution` construct as the default +created CloudFront distribution instead of the deprecated `CloudFrontWebDistribution` +construct, enable the `@aws-cdk/aws-route53-patters:useDistribution` [feature flag]. + +[feature flag]: https://docs.aws.amazon.com/cdk/latest/guide/featureflags.html diff --git a/packages/aws-cdk-lib/aws-route53-patterns/lib/website-redirect.ts b/packages/aws-cdk-lib/aws-route53-patterns/lib/website-redirect.ts index a9ba11d9aca74..3d95752610453 100644 --- a/packages/aws-cdk-lib/aws-route53-patterns/lib/website-redirect.ts +++ b/packages/aws-cdk-lib/aws-route53-patterns/lib/website-redirect.ts @@ -1,13 +1,14 @@ import { Construct } from 'constructs'; import { DnsValidatedCertificate, ICertificate, Certificate, CertificateValidation } from '../../aws-certificatemanager'; -import { CloudFrontWebDistribution, OriginProtocolPolicy, PriceClass, ViewerCertificate, ViewerProtocolPolicy } from '../../aws-cloudfront'; +import { CloudFrontWebDistribution, Distribution, IDistribution, OriginProtocolPolicy, PriceClass, ViewerCertificate, ViewerProtocolPolicy } from '../../aws-cloudfront'; +import { S3StaticWebsiteOrigin } from '../../aws-cloudfront-origins'; import { ARecord, AaaaRecord, IHostedZone, RecordTarget } from '../../aws-route53'; import { CloudFrontTarget } from '../../aws-route53-targets'; import { BlockPublicAccess, Bucket, RedirectProtocol } from '../../aws-s3'; import { ArnFormat, RemovalPolicy, Stack, Token, FeatureFlags } from '../../core'; import { ValidationError } from '../../core/lib/errors'; import { md5hash } from '../../core/lib/helpers-internal'; -import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '../../cx-api'; +import { ROUTE53_PATTERNS_USE_CERTIFICATE, ROUTE53_PATTERNS_USE_DISTRIBUTION } from '../../cx-api'; /** * Properties to configure an HTTPS Redirect @@ -75,22 +76,39 @@ export class HttpsRedirect extends Construct { removalPolicy: RemovalPolicy.DESTROY, blockPublicAccess: BlockPublicAccess.BLOCK_ALL, }); - const redirectDist = new CloudFrontWebDistribution(this, 'RedirectDistribution', { - defaultRootObject: '', - originConfigs: [{ - behaviors: [{ isDefaultBehavior: true }], - customOriginSource: { - domainName: redirectBucket.bucketWebsiteDomainName, - originProtocolPolicy: OriginProtocolPolicy.HTTP_ONLY, + + let redirectDist: IDistribution; + + if (FeatureFlags.of(this).isEnabled(ROUTE53_PATTERNS_USE_DISTRIBUTION)) { + redirectDist = new Distribution(this, 'RedirectDistribution', { + defaultRootObject: '', + defaultBehavior: { + origin: new S3StaticWebsiteOrigin(redirectBucket), + viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS, }, - }], - viewerCertificate: ViewerCertificate.fromAcmCertificate(redirectCert, { - aliases: domainNames, - }), - comment: `Redirect to ${props.targetDomain} from ${domainNames.join(', ')}`, - priceClass: PriceClass.PRICE_CLASS_ALL, - viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS, - }); + domainNames, + certificate: redirectCert, + comment: `Redirect to ${props.targetDomain} from ${domainNames.join(', ')}`, + priceClass: PriceClass.PRICE_CLASS_ALL, + }); + } else { + redirectDist = new CloudFrontWebDistribution(this, 'RedirectDistribution', { + defaultRootObject: '', + originConfigs: [{ + behaviors: [{ isDefaultBehavior: true }], + customOriginSource: { + domainName: redirectBucket.bucketWebsiteDomainName, + originProtocolPolicy: OriginProtocolPolicy.HTTP_ONLY, + }, + }], + viewerCertificate: ViewerCertificate.fromAcmCertificate(redirectCert, { + aliases: domainNames, + }), + comment: `Redirect to ${props.targetDomain} from ${domainNames.join(', ')}`, + priceClass: PriceClass.PRICE_CLASS_ALL, + viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + }); + } domainNames.forEach((domainName) => { const hash = md5hash(domainName).slice(0, 6); diff --git a/packages/aws-cdk-lib/aws-route53-patterns/test/bucket-website-target.test.ts b/packages/aws-cdk-lib/aws-route53-patterns/test/bucket-website-target.test.ts index 24b528e84e1af..038d7a41e608a 100644 --- a/packages/aws-cdk-lib/aws-route53-patterns/test/bucket-website-target.test.ts +++ b/packages/aws-cdk-lib/aws-route53-patterns/test/bucket-website-target.test.ts @@ -3,7 +3,7 @@ import { Template } from '../../assertions'; import { Certificate } from '../../aws-certificatemanager'; import { HostedZone } from '../../aws-route53'; import { App, Stack } from '../../core'; -import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '../../cx-api'; +import { ROUTE53_PATTERNS_USE_CERTIFICATE, ROUTE53_PATTERNS_USE_DISTRIBUTION } from '../../cx-api'; import { HttpsRedirect } from '../lib'; testDeprecated('create HTTPS redirect', () => { @@ -294,3 +294,136 @@ describe('Uses Certificate when @aws-cdk/aws-route53-patters:useCertificate=true }).toThrow(/When @aws-cdk\/aws-route53-patters:useCertificate is enabled, a region must be defined on the Stack/); }); }); + +test('Uses Distribution when @aws-cdk/aws-route53-patters:useDistribution=true', () => { + // GIVEN + const app = new App({ + context: { + [ROUTE53_PATTERNS_USE_CERTIFICATE]: true, + [ROUTE53_PATTERNS_USE_DISTRIBUTION]: true, + }, + }); + + // WHEN + const stack = new Stack(app, 'test', { env: { region: 'us-east-2' }, crossRegionReferences: true }); + new HttpsRedirect(stack, 'Redirect', { + recordNames: ['foo.example.com'], + targetDomain: 'bar.example.com', + zone: HostedZone.fromHostedZoneAttributes(stack, 'HostedZone', { + hostedZoneId: 'ID', + zoneName: 'example.com', + }), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::CloudFront::Distribution', { + DistributionConfig: { + Aliases: ['foo.example.com'], + DefaultRootObject: '', + DefaultCacheBehavior: { + CachePolicyId: '658327ea-f89d-4fab-a63d-7e88639e58f6', + }, + Origins: [{ + CustomOriginConfig: { + OriginProtocolPolicy: 'http-only', + }, + DomainName: { + 'Fn::Select': [ + 2, + { + 'Fn::Split': [ + '/', + { + 'Fn::GetAtt': [ + 'RedirectRedirectBucketC989E6F1', + 'WebsiteURL', + ], + }, + ], + }, + ], + }, + }], + ViewerCertificate: { + AcmCertificateArn: { + 'Fn::GetAtt': [ + 'ExportsReader8B249524', + '/cdk/exports/test/certificateredirectstackc8e2763df63c0f7e0c9afe0394e299bb731e281e8euseast1RefRedirectCertificatec8693e36481e135aa76e35c2db892ec6a33a94c7461E1B6E15A36EB7DA', + ], + }, + }, + }, + }); +}); + +test('Uses CloudFrontWebDistribution when @aws-cdk/aws-route53-patters:useDistribution=false', () => { + // GIVEN + const app = new App({ + context: { + [ROUTE53_PATTERNS_USE_CERTIFICATE]: true, + [ROUTE53_PATTERNS_USE_DISTRIBUTION]: false, + }, + }); + + // WHEN + const stack = new Stack(app, 'test', { env: { region: 'us-east-2' }, crossRegionReferences: true }); + new HttpsRedirect(stack, 'Redirect', { + recordNames: ['foo.example.com'], + targetDomain: 'bar.example.com', + zone: HostedZone.fromHostedZoneAttributes(stack, 'HostedZone', { + hostedZoneId: 'ID', + zoneName: 'example.com', + }), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::CloudFront::Distribution', { + DistributionConfig: { + Aliases: ['foo.example.com'], + DefaultRootObject: '', + DefaultCacheBehavior: { + AllowedMethods: ['GET', 'HEAD'], + CachedMethods: ['GET', 'HEAD'], + ForwardedValues: { + Cookies: { + Forward: 'none', + }, + QueryString: false, + }, + }, + Origins: [{ + ConnectionAttempts: 3, + ConnectionTimeout: 10, + CustomOriginConfig: { + HTTPPort: 80, + HTTPSPort: 443, + OriginKeepaliveTimeout: 5, + OriginProtocolPolicy: 'http-only', + OriginReadTimeout: 30, + }, + DomainName: { + 'Fn::Select': [ + 2, + { + 'Fn::Split': [ + '/', + { + 'Fn::GetAtt': [ + 'RedirectRedirectBucketC989E6F1', + 'WebsiteURL', + ], + }, + ], + }, + ], + }, + }], + ViewerCertificate: { + AcmCertificateArn: { + 'Fn::GetAtt': [ + 'ExportsReader8B249524', + '/cdk/exports/test/certificateredirectstackc8e2763df63c0f7e0c9afe0394e299bb731e281e8euseast1RefRedirectCertificatec8693e36481e135aa76e35c2db892ec6a33a94c7461E1B6E15A36EB7DA', + ], + }, + }, + }, + }); +}); diff --git a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md index a94504f4d393b..e599edf01e4ee 100644 --- a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +++ b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md @@ -102,6 +102,7 @@ Flags come in three types: | [@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions](#aws-cdks3-notificationsadds3trustkeypolicyforsnssubscriptions) | Add an S3 trust policy to a KMS key resource policy for SNS subscriptions. | 2.195.0 | fix | | [@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway](#aws-cdkaws-ec2requireprivatesubnetsforegressonlyinternetgateway) | When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC. | 2.196.0 | fix | | [@aws-cdk/aws-s3:publicAccessBlockedByDefault](#aws-cdkaws-s3publicaccessblockedbydefault) | When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined. | 2.196.0 | fix | +| [@aws-cdk/aws-route53-patters:useDistribution](#aws-cdkaws-route53-pattersusedistribution) | Use the `Distribution` resource instead of `CloudFrontWebDistribution` | V2NEXT | new default | @@ -187,7 +188,8 @@ The following json shows the current recommended set of flags, as `cdk init` wou "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": true, "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": true, "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": true, - "@aws-cdk/aws-s3:publicAccessBlockedByDefault": true + "@aws-cdk/aws-s3:publicAccessBlockedByDefault": true, + "@aws-cdk/aws-route53-patters:useDistribution": true } } ``` @@ -2142,4 +2144,22 @@ The new behavior from this feature will allow a user, for example, to set 1 of t | 2.196.0 | `false` | `true` | +### @aws-cdk/aws-route53-patters:useDistribution + +*Use the `Distribution` resource instead of `CloudFrontWebDistribution`* + +Flag type: New default behavior + +Enable this feature flag to use the new `Distribution` resource instead +of the deprecated `CloudFrontWebDistribution` construct. + + +| Since | Default | Recommended | +| ----- | ----- | ----- | +| (not in v1) | | | +| V2NEXT | `false` | `true` | + +**Compatibility with old behavior:** Define a `CloudFrontWebDistribution` explicitly + + diff --git a/packages/aws-cdk-lib/cx-api/lib/features.ts b/packages/aws-cdk-lib/cx-api/lib/features.ts index 033eca81439e1..56685690f4071 100644 --- a/packages/aws-cdk-lib/cx-api/lib/features.ts +++ b/packages/aws-cdk-lib/cx-api/lib/features.ts @@ -79,6 +79,7 @@ export const EVENTS_TARGET_QUEUE_SAME_ACCOUNT = '@aws-cdk/aws-events:eventsTarge export const ECS_DISABLE_EXPLICIT_DEPLOYMENT_CONTROLLER_FOR_CIRCUIT_BREAKER = '@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker'; export const S3_SERVER_ACCESS_LOGS_USE_BUCKET_POLICY = '@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy'; export const ROUTE53_PATTERNS_USE_CERTIFICATE = '@aws-cdk/aws-route53-patters:useCertificate'; +export const ROUTE53_PATTERNS_USE_DISTRIBUTION = '@aws-cdk/aws-route53-patters:useDistribution'; export const AWS_CUSTOM_RESOURCE_LATEST_SDK_DEFAULT = '@aws-cdk/customresources:installLatestAwsSdkDefault'; export const DATABASE_PROXY_UNIQUE_RESOURCE_NAME = '@aws-cdk/aws-rds:databaseProxyUniqueResourceName'; export const CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP = '@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup'; @@ -1617,6 +1618,18 @@ export const FLAGS: Record = { introducedIn: { v2: '2.196.0' }, recommendedValue: true, }, + + [ROUTE53_PATTERNS_USE_DISTRIBUTION]: { + type: FlagType.ApiDefault, + summary: 'Use the `Distribution` resource instead of `CloudFrontWebDistribution`', + detailsMd: ` + Enable this feature flag to use the new \`Distribution\` resource instead + of the deprecated \`CloudFrontWebDistribution\` construct. + `, + introducedIn: { v2: 'V2NEXT' }, + recommendedValue: true, + compatibilityWithOldBehaviorMd: 'Define a `CloudFrontWebDistribution` explicitly', + }, }; const CURRENT_MV = 'v2'; diff --git a/packages/aws-cdk-lib/recommended-feature-flags.json b/packages/aws-cdk-lib/recommended-feature-flags.json index 0af7fa64e3b68..866469dc013ef 100644 --- a/packages/aws-cdk-lib/recommended-feature-flags.json +++ b/packages/aws-cdk-lib/recommended-feature-flags.json @@ -73,5 +73,6 @@ "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": true, "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": true, "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": true, - "@aws-cdk/aws-s3:publicAccessBlockedByDefault": true + "@aws-cdk/aws-s3:publicAccessBlockedByDefault": true, + "@aws-cdk/aws-route53-patters:useDistribution": true } \ No newline at end of file