From 99fffe5c0d36d7c3393403456ada26e6f9b2792a Mon Sep 17 00:00:00 2001 From: Put Cheung Date: Tue, 20 May 2025 12:55:59 +0000 Subject: [PATCH 1/2] Add props injector test for Construct inheritance --- .../TestStack.assets.json | 4 +- .../TestStack.template.json | 332 ++++++++++++++++-- .../manifest.json | 127 ++++++- .../tree.json | 2 +- .../test/core/test/integ.prop-injectors.ts | 42 ++- 5 files changed, 464 insertions(+), 43 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json index 86fb518ac2dd4..895e3125faa60 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json @@ -29,7 +29,7 @@ } } }, - "f2592d1639788b3707b4fd3760b3dddc238f14e28dc757642a9287dec7c660bb": { + "db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687": { "displayName": "TestStack Template", "source": { "path": "TestStack.template.json", @@ -38,7 +38,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "f2592d1639788b3707b4fd3760b3dddc238f14e28dc757642a9287dec7c660bb.json", + "objectKey": "db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json index e0af88b15f160..0eefeb2358f65 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json @@ -971,117 +971,375 @@ "Version": "2012-10-17" } } + }, + "MyRestAPI3E28346C": { + "Type": "AWS::ApiGateway::RestApi", + "Properties": { + "DisableExecuteApiEndpoint": false, + "EndpointConfiguration": { + "Types": [ + "REGIONAL" + ] + }, + "Name": "my-lambda-rest-api" + } + }, + "MyRestAPIproxy2FB7B099": { + "Type": "AWS::ApiGateway::Resource", + "Properties": { + "ParentId": { + "Fn::GetAtt": [ + "MyRestAPI3E28346C", + "RootResourceId" + ] + }, + "PathPart": "{proxy+}", + "RestApiId": { + "Ref": "MyRestAPI3E28346C" + } + } + }, + "MyRestAPIproxyANYApiPermissionTestStackMyRestAPIC2110DF7ANYproxy61217372": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "Principal": "apigateway.amazonaws.com", + "SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":execute-api:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":", + { + "Ref": "MyRestAPI3E28346C" + }, + "/*/*/*" + ] + ] + } + } + }, + "MyRestAPIproxyANYApiPermissionTestTestStackMyRestAPIC2110DF7ANYproxyAA075AE5": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "Principal": "apigateway.amazonaws.com", + "SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":execute-api:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":", + { + "Ref": "MyRestAPI3E28346C" + }, + "/test-invoke-stage/*/*" + ] + ] + } + } + }, + "MyRestAPIproxyANY2543C5C3": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "ANY", + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "/invocations" + ] + ] + } + }, + "ResourceId": { + "Ref": "MyRestAPIproxy2FB7B099" + }, + "RestApiId": { + "Ref": "MyRestAPI3E28346C" + } + } + }, + "MyRestAPIANYApiPermissionTestStackMyRestAPIC2110DF7ANYB4C9B6E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "Principal": "apigateway.amazonaws.com", + "SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":execute-api:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":", + { + "Ref": "MyRestAPI3E28346C" + }, + "/*/*/" + ] + ] + } + } + }, + "MyRestAPIANYApiPermissionTestTestStackMyRestAPIC2110DF7ANY8F157E85": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "Principal": "apigateway.amazonaws.com", + "SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":execute-api:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":", + { + "Ref": "MyRestAPI3E28346C" + }, + "/test-invoke-stage/*/" + ] + ] + } + } + }, + "MyRestAPIANY1A0443FA": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "ANY", + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "/invocations" + ] + ] + } + }, + "ResourceId": { + "Fn::GetAtt": [ + "MyRestAPI3E28346C", + "RootResourceId" + ] + }, + "RestApiId": { + "Ref": "MyRestAPI3E28346C" + } + } } }, "Mappings": { "LatestNodeRuntimeMap": { "af-south-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-east-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-east-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-northeast-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-northeast-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-northeast-3": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-south-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-south-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-3": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-4": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-5": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ap-southeast-7": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ca-central-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "ca-west-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "cn-north-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "cn-northwest-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-central-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-central-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-isoe-west-1": { "value": "nodejs18.x" }, "eu-north-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-south-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-south-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-west-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-west-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "eu-west-3": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "il-central-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "me-central-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "me-south-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "mx-central-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "sa-east-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-east-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-east-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-gov-east-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-gov-west-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-iso-east-1": { "value": "nodejs18.x" @@ -1096,10 +1354,10 @@ "value": "nodejs18.x" }, "us-west-1": { - "value": "nodejs22.x" + "value": "nodejs20.x" }, "us-west-2": { - "value": "nodejs22.x" + "value": "nodejs20.x" } } }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json index 8ce15b43fae9f..51d9f6a0b3b61 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "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}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/f2592d1639788b3707b4fd3760b3dddc238f14e28dc757642a9287dec7c660bb.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -607,6 +607,129 @@ "data": "Policy23B91518" } ], + "/TestStack/MyRestAPI": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "endpointTypes": [ + "REGIONAL" + ], + "deploy": false, + "restApiName": "*", + "defaultIntegration": "*", + "disableExecuteApiEndpoint": false, + "handler": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "disableExecuteApiEndpoint": false, + "restApiName": "*", + "handler": "*" + } + } + ], + "/TestStack/MyRestAPI/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPI3E28346C" + } + ], + "/TestStack/MyRestAPI/Default": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "parent": "*", + "defaultIntegration": "*", + "defaultMethodOptions": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "parent": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMethod": [ + "*" + ] + } + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIproxy2FB7B099" + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}/ANY": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "resource": "*", + "httpMethod": "*", + "integration": "*", + "options": "*" + } + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}/ANY/ApiPermission.TestStackMyRestAPIC2110DF7.ANY..{proxy+}": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIproxyANYApiPermissionTestStackMyRestAPIC2110DF7ANYproxy61217372" + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}/ANY/ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..{proxy+}": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIproxyANYApiPermissionTestTestStackMyRestAPIC2110DF7ANYproxyAA075AE5" + } + ], + "/TestStack/MyRestAPI/Default/{proxy+}/ANY/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIproxyANY2543C5C3" + } + ], + "/TestStack/MyRestAPI/Default/ANY": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "resource": "*", + "httpMethod": "*", + "integration": "*", + "options": "*" + } + } + ], + "/TestStack/MyRestAPI/Default/ANY/ApiPermission.TestStackMyRestAPIC2110DF7.ANY..": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIANYApiPermissionTestStackMyRestAPIC2110DF7ANYB4C9B6E3" + } + ], + "/TestStack/MyRestAPI/Default/ANY/ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIANYApiPermissionTestTestStackMyRestAPIC2110DF7ANY8F157E85" + } + ], + "/TestStack/MyRestAPI/Default/ANY/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyRestAPIANY1A0443FA" + } + ], "/TestStack/BootstrapVersion": [ { "type": "aws:cdk:logicalId", @@ -677,5 +800,5 @@ } } }, - "minimumCliVersion": "2.1015.0" + "minimumCliVersion": "2.1014.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/tree.json index df3704fd45dd0..4b3f912a7aced 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"TestStack":{"id":"TestStack","path":"TestStack","children":{"LogRetention-Function":{"id":"LogRetention-Function","path":"TestStack/LogRetention-Function","children":{"Resource":{"id":"Resource","path":"TestStack/LogRetention-Function/Resource","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogRetention","version":"0.0.0"}},"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a":{"id":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a","children":{"Code":{"id":"Code","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code","children":{"Stage":{"id":"Stage","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"ServiceRole":{"id":"ServiceRole","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:DeleteRetentionPolicy","logs:PutRetentionPolicy"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB","roles":[{"Ref":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Resource","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"TestStack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"LogGroup-Function":{"id":"LogGroup-Function","path":"TestStack/LogGroup-Function","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Function":{"id":"Function","path":"TestStack/Function","children":{"ServiceRole":{"id":"ServiceRole","path":"TestStack/Function/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"TestStack/Function/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"TestStack/Function/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"TestStack/Function/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"console.log();"},"functionName":"myfunc","handler":"index.handler","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"INFO","logGroup":{"Fn::GetAtt":["LogRetentionFunction3EE8792B","LogGroupName"]}},"role":{"Fn::GetAtt":["FunctionServiceRole675BB04A","Arn"]},"runtime":"nodejs20.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"applicationLogLevelV2":"INFO","loggingFormat":"JSON","functionName":"*","runtime":"*","handler":"*","code":"*","logGroup":"*"}]}},"my-vpc":{"id":"my-vpc","path":"TestStack/my-vpc","children":{"Resource":{"id":"Resource","path":"TestStack/my-vpc/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPC","aws:cdk:cloudformation:props":{"cidrBlock":"10.0.0.0/16","enableDnsHostnames":true,"enableDnsSupport":true,"instanceTenancy":"default","tags":[{"key":"Name","value":"TestStack/my-vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"0.0.0"}},"PublicSubnet1":{"id":"PublicSubnet1","path":"TestStack/my-vpc/PublicSubnet1","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PublicSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.0.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PublicSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PublicSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPublicSubnet1RouteTableDE599B96"},"subnetId":{"Ref":"myvpcPublicSubnet1SubnetC3771936"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PublicSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"myvpcIGW4A95849E"},"routeTableId":{"Ref":"myvpcPublicSubnet1RouteTableDE599B96"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"TestStack/my-vpc/PublicSubnet1/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"TestStack/my-vpc/PublicSubnet1/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["myvpcPublicSubnet1EIP0578958B","AllocationId"]},"subnetId":{"Ref":"myvpcPublicSubnet1SubnetC3771936"},"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PublicSubnet2":{"id":"PublicSubnet2","path":"TestStack/my-vpc/PublicSubnet2","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PublicSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.64.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PublicSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PublicSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPublicSubnet2RouteTableB18E0D14"},"subnetId":{"Ref":"myvpcPublicSubnet2Subnet37BA3C81"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PublicSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"myvpcIGW4A95849E"},"routeTableId":{"Ref":"myvpcPublicSubnet2RouteTableB18E0D14"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"TestStack/my-vpc/PublicSubnet2/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"TestStack/my-vpc/PublicSubnet2/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["myvpcPublicSubnet2EIPD71C33ED","AllocationId"]},"subnetId":{"Ref":"myvpcPublicSubnet2Subnet37BA3C81"},"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"TestStack/my-vpc/PrivateSubnet1","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PrivateSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.128.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PrivateSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PrivateSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPrivateSubnet1RouteTable8E3863F0"},"subnetId":{"Ref":"myvpcPrivateSubnet1Subnet4422433B"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PrivateSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"myvpcPublicSubnet1NATGatewayC582BCAD"},"routeTableId":{"Ref":"myvpcPrivateSubnet1RouteTable8E3863F0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"TestStack/my-vpc/PrivateSubnet2","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PrivateSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.192.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PrivateSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PrivateSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPrivateSubnet2RouteTable00426CE3"},"subnetId":{"Ref":"myvpcPrivateSubnet2Subnet5B02B589"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PrivateSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"myvpcPublicSubnet2NATGateway0EE462BE"},"routeTableId":{"Ref":"myvpcPrivateSubnet2RouteTable00426CE3"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"IGW":{"id":"IGW","path":"TestStack/my-vpc/IGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"0.0.0"}},"VPCGW":{"id":"VPCGW","path":"TestStack/my-vpc/VPCGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"myvpcIGW4A95849E"},"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"0.0.0"}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"TestStack/my-vpc/RestrictDefaultSecurityGroupCustomResource","children":{"Default":{"id":"Default","path":"TestStack/my-vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"vpnGateway":false,"restrictDefaultSecurityGroup":true}]}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"my-sg":{"id":"my-sg","path":"TestStack/my-sg","children":{"Resource":{"id":"Resource","path":"TestStack/my-sg/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"TestStack/my-sg","securityGroupEgress":[{"cidrIp":"255.255.255.255/32","description":"Disallow all traffic","ipProtocol":"icmp","fromPort":252,"toPort":86}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllIpv6Outbound":false,"allowAllOutbound":false}]}},"access-logging-7a1920d61156abc05a60135aefe8bc67":{"id":"access-logging-7a1920d61156abc05a60135aefe8bc67","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67","children":{"Key":{"id":"Key","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Key","children":{"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Key/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Key","aws:cdk:cloudformation:props":{"description":"Created by TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67","enableKeyRotation":true,"keyPolicy":{"Statement":[{"Action":"kms:*","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]}},"Resource":"*"},{"Action":["kms:Decrypt","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Principal":{"Service":"logging.s3.amazonaws.com"},"Resource":"*"}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnKey","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":[{"description":"*","enableKeyRotation":true}]}},"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms","kmsMasterKeyId":{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67KeyE09B8856","Arn"]}}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Policy","children":{"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"accesslogging7a1920d61156abc05a60135aefe8bc67EC504705"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},"/*"]]}]},{"Action":"s3:PutObject","Condition":{"ArnLike":{"aws:SourceArn":{"Fn::GetAtt":["Resource","Arn"]}},"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}}},"Effect":"Allow","Principal":{"Service":"logging.s3.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},"/*"]]}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"accessControl":"*","blockPublicAccess":"*","encryption":"KMS","enforceSSL":true,"publicReadAccess":false,"lifecycleRules":[],"removalPolicy":"retain"}]}},"Default":{"id":"Default","path":"TestStack/Default","children":{"Key":{"id":"Key","path":"TestStack/Default/Key","children":{"Resource":{"id":"Resource","path":"TestStack/Default/Key/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Key","aws:cdk:cloudformation:props":{"description":"Created by TestStack/Default","enableKeyRotation":true,"keyPolicy":{"Statement":[{"Action":"kms:*","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]}},"Resource":"*"}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnKey","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":[{"description":"*","enableKeyRotation":true}]}},"Resource":{"id":"Resource","path":"TestStack/Default/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms","kmsMasterKeyId":{"Fn::GetAtt":["Key961B73FD","Arn"]}}}]},"loggingConfiguration":{"destinationBucketName":{"Ref":"accesslogging7a1920d61156abc05a60135aefe8bc67EC504705"}},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"TestStack/Default/Policy","children":{"Resource":{"id":"Resource","path":"TestStack/Default/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"Resource"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["Resource","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["Resource","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"accessControl":"*","blockPublicAccess":"*","encryption":"KMS","enforceSSL":true,"publicReadAccess":false,"lifecycleRules":[],"serverAccessLogsBucket":"*"}]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"TestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"TestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"PropertyInjectorTest":{"id":"PropertyInjectorTest","path":"PropertyInjectorTest","children":{"DefaultTest":{"id":"DefaultTest","path":"PropertyInjectorTest/DefaultTest","children":{"Default":{"id":"Default","path":"PropertyInjectorTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"PropertyInjectorTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"PropertyInjectorTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PropertyInjectorTest/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":{"TestStack":{"id":"TestStack","path":"TestStack","children":{"LogRetention-Function":{"id":"LogRetention-Function","path":"TestStack/LogRetention-Function","children":{"Resource":{"id":"Resource","path":"TestStack/LogRetention-Function/Resource","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogRetention","version":"0.0.0"}},"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a":{"id":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a","children":{"Code":{"id":"Code","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code","children":{"Stage":{"id":"Stage","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"ServiceRole":{"id":"ServiceRole","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:DeleteRetentionPolicy","logs:PutRetentionPolicy"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB","roles":[{"Ref":"LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"TestStack/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Resource","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"TestStack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"LogGroup-Function":{"id":"LogGroup-Function","path":"TestStack/LogGroup-Function","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Function":{"id":"Function","path":"TestStack/Function","children":{"ServiceRole":{"id":"ServiceRole","path":"TestStack/Function/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"TestStack/Function/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"TestStack/Function/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"TestStack/Function/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"console.log();"},"functionName":"myfunc","handler":"index.handler","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"INFO","logGroup":{"Fn::GetAtt":["LogRetentionFunction3EE8792B","LogGroupName"]}},"role":{"Fn::GetAtt":["FunctionServiceRole675BB04A","Arn"]},"runtime":"nodejs20.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"applicationLogLevelV2":"INFO","loggingFormat":"JSON","functionName":"*","runtime":"*","handler":"*","code":"*","logGroup":"*"}]}},"my-vpc":{"id":"my-vpc","path":"TestStack/my-vpc","children":{"Resource":{"id":"Resource","path":"TestStack/my-vpc/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPC","aws:cdk:cloudformation:props":{"cidrBlock":"10.0.0.0/16","enableDnsHostnames":true,"enableDnsSupport":true,"instanceTenancy":"default","tags":[{"key":"Name","value":"TestStack/my-vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"0.0.0"}},"PublicSubnet1":{"id":"PublicSubnet1","path":"TestStack/my-vpc/PublicSubnet1","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PublicSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.0.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PublicSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PublicSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPublicSubnet1RouteTableDE599B96"},"subnetId":{"Ref":"myvpcPublicSubnet1SubnetC3771936"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PublicSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"myvpcIGW4A95849E"},"routeTableId":{"Ref":"myvpcPublicSubnet1RouteTableDE599B96"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"TestStack/my-vpc/PublicSubnet1/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"TestStack/my-vpc/PublicSubnet1/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["myvpcPublicSubnet1EIP0578958B","AllocationId"]},"subnetId":{"Ref":"myvpcPublicSubnet1SubnetC3771936"},"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PublicSubnet2":{"id":"PublicSubnet2","path":"TestStack/my-vpc/PublicSubnet2","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PublicSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.64.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PublicSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PublicSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPublicSubnet2RouteTableB18E0D14"},"subnetId":{"Ref":"myvpcPublicSubnet2Subnet37BA3C81"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PublicSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"myvpcIGW4A95849E"},"routeTableId":{"Ref":"myvpcPublicSubnet2RouteTableB18E0D14"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"TestStack/my-vpc/PublicSubnet2/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"TestStack/my-vpc/PublicSubnet2/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["myvpcPublicSubnet2EIPD71C33ED","AllocationId"]},"subnetId":{"Ref":"myvpcPublicSubnet2Subnet37BA3C81"},"tags":[{"key":"Name","value":"TestStack/my-vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"TestStack/my-vpc/PrivateSubnet1","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PrivateSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.128.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PrivateSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet1"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PrivateSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPrivateSubnet1RouteTable8E3863F0"},"subnetId":{"Ref":"myvpcPrivateSubnet1Subnet4422433B"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PrivateSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"myvpcPublicSubnet1NATGatewayC582BCAD"},"routeTableId":{"Ref":"myvpcPrivateSubnet1RouteTable8E3863F0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"TestStack/my-vpc/PrivateSubnet2","children":{"Subnet":{"id":"Subnet","path":"TestStack/my-vpc/PrivateSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.192.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"TestStack/my-vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"TestStack/my-vpc/PrivateSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc/PrivateSubnet2"}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"TestStack/my-vpc/PrivateSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"myvpcPrivateSubnet2RouteTable00426CE3"},"subnetId":{"Ref":"myvpcPrivateSubnet2Subnet5B02B589"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"TestStack/my-vpc/PrivateSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"myvpcPublicSubnet2NATGateway0EE462BE"},"routeTableId":{"Ref":"myvpcPrivateSubnet2RouteTable00426CE3"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"IGW":{"id":"IGW","path":"TestStack/my-vpc/IGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"TestStack/my-vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"0.0.0"}},"VPCGW":{"id":"VPCGW","path":"TestStack/my-vpc/VPCGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"myvpcIGW4A95849E"},"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"0.0.0"}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"TestStack/my-vpc/RestrictDefaultSecurityGroupCustomResource","children":{"Default":{"id":"Default","path":"TestStack/my-vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"vpnGateway":false,"restrictDefaultSecurityGroup":true}]}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"TestStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"my-sg":{"id":"my-sg","path":"TestStack/my-sg","children":{"Resource":{"id":"Resource","path":"TestStack/my-sg/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"TestStack/my-sg","securityGroupEgress":[{"cidrIp":"255.255.255.255/32","description":"Disallow all traffic","ipProtocol":"icmp","fromPort":252,"toPort":86}],"vpcId":{"Ref":"myvpc445F9E24"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllIpv6Outbound":false,"allowAllOutbound":false}]}},"access-logging-7a1920d61156abc05a60135aefe8bc67":{"id":"access-logging-7a1920d61156abc05a60135aefe8bc67","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67","children":{"Key":{"id":"Key","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Key","children":{"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Key/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Key","aws:cdk:cloudformation:props":{"description":"Created by TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67","enableKeyRotation":true,"keyPolicy":{"Statement":[{"Action":"kms:*","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]}},"Resource":"*"},{"Action":["kms:Decrypt","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Principal":{"Service":"logging.s3.amazonaws.com"},"Resource":"*"}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnKey","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":[{"description":"*","enableKeyRotation":true}]}},"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms","kmsMasterKeyId":{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67KeyE09B8856","Arn"]}}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Policy","children":{"Resource":{"id":"Resource","path":"TestStack/access-logging-7a1920d61156abc05a60135aefe8bc67/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"accesslogging7a1920d61156abc05a60135aefe8bc67EC504705"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},"/*"]]}]},{"Action":"s3:PutObject","Condition":{"ArnLike":{"aws:SourceArn":{"Fn::GetAtt":["Resource","Arn"]}},"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}}},"Effect":"Allow","Principal":{"Service":"logging.s3.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["accesslogging7a1920d61156abc05a60135aefe8bc67EC504705","Arn"]},"/*"]]}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"accessControl":"*","blockPublicAccess":"*","encryption":"KMS","enforceSSL":true,"publicReadAccess":false,"lifecycleRules":[],"removalPolicy":"retain"}]}},"Default":{"id":"Default","path":"TestStack/Default","children":{"Key":{"id":"Key","path":"TestStack/Default/Key","children":{"Resource":{"id":"Resource","path":"TestStack/Default/Key/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Key","aws:cdk:cloudformation:props":{"description":"Created by TestStack/Default","enableKeyRotation":true,"keyPolicy":{"Statement":[{"Action":"kms:*","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]}},"Resource":"*"}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnKey","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":[{"description":"*","enableKeyRotation":true}]}},"Resource":{"id":"Resource","path":"TestStack/Default/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms","kmsMasterKeyId":{"Fn::GetAtt":["Key961B73FD","Arn"]}}}]},"loggingConfiguration":{"destinationBucketName":{"Ref":"accesslogging7a1920d61156abc05a60135aefe8bc67EC504705"}},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"TestStack/Default/Policy","children":{"Resource":{"id":"Resource","path":"TestStack/Default/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"Resource"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["Resource","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["Resource","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"accessControl":"*","blockPublicAccess":"*","encryption":"KMS","enforceSSL":true,"publicReadAccess":false,"lifecycleRules":[],"serverAccessLogsBucket":"*"}]}},"MyRestAPI":{"id":"MyRestAPI","path":"TestStack/MyRestAPI","children":{"Resource":{"id":"Resource","path":"TestStack/MyRestAPI/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::ApiGateway::RestApi","aws:cdk:cloudformation:props":{"disableExecuteApiEndpoint":false,"endpointConfiguration":{"types":["REGIONAL"]},"name":"my-lambda-rest-api"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.CfnRestApi","version":"0.0.0"}},"Default":{"id":"Default","path":"TestStack/MyRestAPI/Default","children":{"{proxy+}":{"id":"{proxy+}","path":"TestStack/MyRestAPI/Default/{proxy+}","children":{"Resource":{"id":"Resource","path":"TestStack/MyRestAPI/Default/{proxy+}/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::ApiGateway::Resource","aws:cdk:cloudformation:props":{"parentId":{"Fn::GetAtt":["MyRestAPI3E28346C","RootResourceId"]},"pathPart":"{proxy+}","restApiId":{"Ref":"MyRestAPI3E28346C"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.CfnResource","version":"0.0.0"}},"ANY":{"id":"ANY","path":"TestStack/MyRestAPI/Default/{proxy+}/ANY","children":{"ApiPermission.TestStackMyRestAPIC2110DF7.ANY..{proxy+}":{"id":"ApiPermission.TestStackMyRestAPIC2110DF7.ANY..{proxy+}","path":"TestStack/MyRestAPI/Default/{proxy+}/ANY/ApiPermission.TestStackMyRestAPIC2110DF7.ANY..{proxy+}","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["Function76856677","Arn"]},"principal":"apigateway.amazonaws.com","sourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":execute-api:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":",{"Ref":"MyRestAPI3E28346C"},"/*/*/*"]]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}},"ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..{proxy+}":{"id":"ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..{proxy+}","path":"TestStack/MyRestAPI/Default/{proxy+}/ANY/ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..{proxy+}","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["Function76856677","Arn"]},"principal":"apigateway.amazonaws.com","sourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":execute-api:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":",{"Ref":"MyRestAPI3E28346C"},"/test-invoke-stage/*/*"]]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}},"Resource":{"id":"Resource","path":"TestStack/MyRestAPI/Default/{proxy+}/ANY/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::ApiGateway::Method","aws:cdk:cloudformation:props":{"authorizationType":"NONE","httpMethod":"ANY","integration":{"type":"AWS_PROXY","uri":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":apigateway:",{"Ref":"AWS::Region"},":lambda:path/2015-03-31/functions/",{"Fn::GetAtt":["Function76856677","Arn"]},"/invocations"]]},"integrationHttpMethod":"POST"},"resourceId":{"Ref":"MyRestAPIproxy2FB7B099"},"restApiId":{"Ref":"MyRestAPI3E28346C"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.CfnMethod","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.Method","version":"0.0.0","metadata":[{"resource":"*","httpMethod":"*","integration":"*","options":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.ProxyResource","version":"0.0.0","metadata":[{"parent":"*","defaultIntegration":"*","defaultMethodOptions":"*"},{"parent":"*"},{"addMethod":["*"]}]}},"ANY":{"id":"ANY","path":"TestStack/MyRestAPI/Default/ANY","children":{"ApiPermission.TestStackMyRestAPIC2110DF7.ANY..":{"id":"ApiPermission.TestStackMyRestAPIC2110DF7.ANY..","path":"TestStack/MyRestAPI/Default/ANY/ApiPermission.TestStackMyRestAPIC2110DF7.ANY..","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["Function76856677","Arn"]},"principal":"apigateway.amazonaws.com","sourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":execute-api:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":",{"Ref":"MyRestAPI3E28346C"},"/*/*/"]]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}},"ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..":{"id":"ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..","path":"TestStack/MyRestAPI/Default/ANY/ApiPermission.Test.TestStackMyRestAPIC2110DF7.ANY..","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["Function76856677","Arn"]},"principal":"apigateway.amazonaws.com","sourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":execute-api:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":",{"Ref":"MyRestAPI3E28346C"},"/test-invoke-stage/*/"]]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}},"Resource":{"id":"Resource","path":"TestStack/MyRestAPI/Default/ANY/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::ApiGateway::Method","aws:cdk:cloudformation:props":{"authorizationType":"NONE","httpMethod":"ANY","integration":{"type":"AWS_PROXY","uri":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":apigateway:",{"Ref":"AWS::Region"},":lambda:path/2015-03-31/functions/",{"Fn::GetAtt":["Function76856677","Arn"]},"/invocations"]]},"integrationHttpMethod":"POST"},"resourceId":{"Fn::GetAtt":["MyRestAPI3E28346C","RootResourceId"]},"restApiId":{"Ref":"MyRestAPI3E28346C"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.CfnMethod","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.Method","version":"0.0.0","metadata":[{"resource":"*","httpMethod":"*","integration":"*","options":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.ResourceBase","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_apigateway.LambdaRestApi","version":"0.0.0","metadata":[{"endpointTypes":["REGIONAL"],"deploy":false,"restApiName":"*","defaultIntegration":"*","disableExecuteApiEndpoint":false,"handler":"*"},{"disableExecuteApiEndpoint":false,"restApiName":"*","handler":"*"}]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"TestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"TestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"PropertyInjectorTest":{"id":"PropertyInjectorTest","path":"PropertyInjectorTest","children":{"DefaultTest":{"id":"DefaultTest","path":"PropertyInjectorTest/DefaultTest","children":{"Default":{"id":"Default","path":"PropertyInjectorTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"PropertyInjectorTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"PropertyInjectorTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PropertyInjectorTest/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/core/test/integ.prop-injectors.ts b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.ts index 4b01927dee7bc..22ccfc3881af6 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.ts @@ -1,4 +1,5 @@ import * as cdk from 'aws-cdk-lib'; +import * as apigw from 'aws-cdk-lib/aws-apigateway'; import { SecurityGroup, SecurityGroupProps, @@ -151,6 +152,39 @@ class FunctionPropsInjector implements cdk.IPropertyInjector { } } +class RestApiPropsInjector implements cdk.IPropertyInjector { + readonly constructUniqueId: string; + + constructor() { + this.constructUniqueId = apigw.RestApi.PROPERTY_INJECTION_ID; + } + + inject(originalProps: apigw.RestApiProps, _context: cdk.InjectionContext): apigw.RestApiProps { + return { + endpointTypes: [apigw.EndpointType.REGIONAL], + deploy: false, + restApiName: 'my-rest-api', + ...originalProps, + }; + } +} + +class LambdaRestApiPropsInjector implements cdk.IPropertyInjector { + readonly constructUniqueId: string; + + constructor() { + this.constructUniqueId = apigw.LambdaRestApi.PROPERTY_INJECTION_ID; + } + + inject(originalProps: apigw.LambdaRestApiProps, _context: cdk.InjectionContext): apigw.LambdaRestApiProps { + return { + disableExecuteApiEndpoint: false, + restApiName: 'my-lambda-rest-api', + ...originalProps, + }; + } +} + const app = new cdk.App(); const stack = new cdk.Stack(app, 'TestStack', { propertyInjectors: [ @@ -158,10 +192,12 @@ const stack = new cdk.Stack(app, 'TestStack', { new MyBucketPropsInjector(), new SecurityGroupPropsInjector(), new VpcPropsInjector(), + new RestApiPropsInjector(), + new LambdaRestApiPropsInjector(), ], }); -new Function(stack, 'Function', { +const f = new Function(stack, 'Function', { functionName: 'myfunc', runtime: Runtime.NODEJS_20_X, handler: 'index.handler', @@ -178,4 +214,8 @@ new SecurityGroup(stack, 'my-sg', { new Bucket(stack, 'Default', {}); +new apigw.LambdaRestApi(stack, 'MyRestAPI', { + handler: f, +}); + new IntegTest(app, 'PropertyInjectorTest', { testCases: [stack] }); From 3f7de20be11372a4430928e5e9ea046dba8a2186 Mon Sep 17 00:00:00 2001 From: Put Cheung Date: Tue, 20 May 2025 16:25:37 +0000 Subject: [PATCH 2/2] passed yarn integ test --- .../TestStack.assets.json | 4 +- .../TestStack.template.json | 74 +++++++++---------- .../manifest.json | 4 +- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json index 895e3125faa60..afac3ba79b9dd 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.assets.json @@ -29,7 +29,7 @@ } } }, - "db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687": { + "4fdbf1b2c9080f619316c26c3d1752b375e82a9df0ac41bfc486ebc75b6bd2ff": { "displayName": "TestStack Template", "source": { "path": "TestStack.template.json", @@ -38,7 +38,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687.json", + "objectKey": "4fdbf1b2c9080f619316c26c3d1752b375e82a9df0ac41bfc486ebc75b6bd2ff.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json index 0eefeb2358f65..f5760cf5af59b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/TestStack.template.json @@ -1234,112 +1234,112 @@ "Mappings": { "LatestNodeRuntimeMap": { "af-south-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-east-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-east-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-northeast-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-northeast-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-northeast-3": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-south-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-south-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-3": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-4": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-5": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ap-southeast-7": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ca-central-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "ca-west-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "cn-north-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "cn-northwest-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-central-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-central-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-isoe-west-1": { "value": "nodejs18.x" }, "eu-north-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-south-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-south-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-west-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-west-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "eu-west-3": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "il-central-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "me-central-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "me-south-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "mx-central-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "sa-east-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-east-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-east-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-gov-east-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-gov-west-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-iso-east-1": { "value": "nodejs18.x" @@ -1354,10 +1354,10 @@ "value": "nodejs18.x" }, "us-west-1": { - "value": "nodejs20.x" + "value": "nodejs22.x" }, "us-west-2": { - "value": "nodejs20.x" + "value": "nodejs22.x" } } }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json index 51d9f6a0b3b61..265a8100feab7 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.prop-injectors.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "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}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/db45ed35d8039592a983739fe4fa4282c8eebdb1cc68241c2496990c7c196687.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4fdbf1b2c9080f619316c26c3d1752b375e82a9df0ac41bfc486ebc75b6bd2ff.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -800,5 +800,5 @@ } } }, - "minimumCliVersion": "2.1014.0" + "minimumCliVersion": "2.1015.0" } \ No newline at end of file