@aws-solutions-constructs/aws-alb-lambda 2.101.0 → 2.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/.jsii +252 -4
  2. package/lib/index.js +1 -1
  3. package/package.json +7 -7
  4. package/test/integ.alblam-privateApiExistingResources.js.snapshot/alblam-privateApiExistingResources.assets.json +8 -8
  5. package/test/integ.alblam-privateApiExistingResources.js.snapshot/alblam-privateApiExistingResources.metadata.json +763 -0
  6. package/test/integ.alblam-privateApiExistingResources.js.snapshot/alblam-privateApiExistingResources.template.json +3 -3
  7. package/test/integ.alblam-privateApiExistingResources.js.snapshot/alblamprivateApiExistingResourcesIntegDefaultTestDeployAssertC865AE59.assets.json +1 -1
  8. package/test/integ.alblam-privateApiExistingResources.js.snapshot/alblamprivateApiExistingResourcesIntegDefaultTestDeployAssertC865AE59.metadata.json +14 -0
  9. package/test/integ.alblam-privateApiExistingResources.js.snapshot/asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093/__entrypoint__.js +1 -0
  10. package/test/integ.alblam-privateApiExistingResources.js.snapshot/cdk.out +1 -1
  11. package/test/integ.alblam-privateApiExistingResources.js.snapshot/integ.json +2 -2
  12. package/test/integ.alblam-privateApiExistingResources.js.snapshot/manifest.json +37 -768
  13. package/test/integ.alblam-privateApiExistingResources.js.snapshot/tree.json +1 -1
  14. package/test/integ.alblam-privateApiNewResources.js.snapshot/alblam-privateApiNewResources.assets.json +8 -8
  15. package/test/integ.alblam-privateApiNewResources.js.snapshot/alblam-privateApiNewResources.metadata.json +594 -0
  16. package/test/integ.alblam-privateApiNewResources.js.snapshot/alblam-privateApiNewResources.template.json +3 -3
  17. package/test/integ.alblam-privateApiNewResources.js.snapshot/alblamprivateApiNewResourcesIntegDefaultTestDeployAssertB0CCE59F.assets.json +1 -1
  18. package/test/integ.alblam-privateApiNewResources.js.snapshot/alblamprivateApiNewResourcesIntegDefaultTestDeployAssertB0CCE59F.metadata.json +14 -0
  19. package/test/integ.alblam-privateApiNewResources.js.snapshot/asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093/__entrypoint__.js +1 -0
  20. package/test/integ.alblam-privateApiNewResources.js.snapshot/cdk.out +1 -1
  21. package/test/integ.alblam-privateApiNewResources.js.snapshot/integ.json +2 -2
  22. package/test/integ.alblam-privateApiNewResources.js.snapshot/manifest.json +37 -599
  23. package/test/integ.alblam-privateApiNewResources.js.snapshot/tree.json +1 -1
  24. package/test/integ.alblam-publicApiExistingResources.js.snapshot/alblam-publicApiExistingResources.assets.json +8 -8
  25. package/test/integ.alblam-publicApiExistingResources.js.snapshot/alblam-publicApiExistingResources.metadata.json +763 -0
  26. package/test/integ.alblam-publicApiExistingResources.js.snapshot/alblam-publicApiExistingResources.template.json +3 -3
  27. package/test/integ.alblam-publicApiExistingResources.js.snapshot/alblampublicApiExistingResourcesIntegDefaultTestDeployAssert22C8EEFD.assets.json +1 -1
  28. package/test/integ.alblam-publicApiExistingResources.js.snapshot/alblampublicApiExistingResourcesIntegDefaultTestDeployAssert22C8EEFD.metadata.json +14 -0
  29. package/test/integ.alblam-publicApiExistingResources.js.snapshot/asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093/__entrypoint__.js +1 -0
  30. package/test/integ.alblam-publicApiExistingResources.js.snapshot/cdk.out +1 -1
  31. package/test/integ.alblam-publicApiExistingResources.js.snapshot/integ.json +2 -2
  32. package/test/integ.alblam-publicApiExistingResources.js.snapshot/manifest.json +37 -768
  33. package/test/integ.alblam-publicApiExistingResources.js.snapshot/tree.json +1 -1
  34. package/test/integ.alblam-publicApiNewResources.js.snapshot/alblam-publicApiNewResources.assets.json +8 -8
  35. package/test/integ.alblam-publicApiNewResources.js.snapshot/alblam-publicApiNewResources.metadata.json +759 -0
  36. package/test/integ.alblam-publicApiNewResources.js.snapshot/alblam-publicApiNewResources.template.json +3 -3
  37. package/test/integ.alblam-publicApiNewResources.js.snapshot/alblampublicApiNewResourcesIntegDefaultTestDeployAssert43CC63D2.assets.json +1 -1
  38. package/test/integ.alblam-publicApiNewResources.js.snapshot/alblampublicApiNewResourcesIntegDefaultTestDeployAssert43CC63D2.metadata.json +14 -0
  39. package/test/integ.alblam-publicApiNewResources.js.snapshot/asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093/__entrypoint__.js +1 -0
  40. package/test/integ.alblam-publicApiNewResources.js.snapshot/cdk.out +1 -1
  41. package/test/integ.alblam-publicApiNewResources.js.snapshot/integ.json +2 -2
  42. package/test/integ.alblam-publicApiNewResources.js.snapshot/manifest.json +37 -764
  43. package/test/integ.alblam-publicApiNewResources.js.snapshot/tree.json +1 -1
  44. package/test/integ.alblam-twoTargets.js.snapshot/alblam-twoTargets.assets.json +8 -8
  45. package/test/integ.alblam-twoTargets.js.snapshot/alblam-twoTargets.metadata.json +970 -0
  46. package/test/integ.alblam-twoTargets.js.snapshot/alblam-twoTargets.template.json +3 -3
  47. package/test/integ.alblam-twoTargets.js.snapshot/alblamtwoTargetsIntegDefaultTestDeployAssert4F811416.assets.json +1 -1
  48. package/test/integ.alblam-twoTargets.js.snapshot/alblamtwoTargetsIntegDefaultTestDeployAssert4F811416.metadata.json +14 -0
  49. package/test/integ.alblam-twoTargets.js.snapshot/asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093/__entrypoint__.js +1 -0
  50. package/test/integ.alblam-twoTargets.js.snapshot/cdk.out +1 -1
  51. package/test/integ.alblam-twoTargets.js.snapshot/integ.json +2 -2
  52. package/test/integ.alblam-twoTargets.js.snapshot/manifest.json +37 -975
  53. package/test/integ.alblam-twoTargets.js.snapshot/tree.json +1 -1
  54. package/test/integ.alblam-privateApiExistingResources.js.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +0 -1
  55. package/test/integ.alblam-privateApiNewResources.js.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +0 -1
  56. package/test/integ.alblam-publicApiExistingResources.js.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +0 -1
  57. package/test/integ.alblam-publicApiNewResources.js.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +0 -1
  58. package/test/integ.alblam-twoTargets.js.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +0 -1
  59. /package/test/integ.alblam-privateApiExistingResources.js.snapshot/{asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200 → asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093}/index.js +0 -0
  60. /package/test/integ.alblam-privateApiNewResources.js.snapshot/{asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200 → asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093}/index.js +0 -0
  61. /package/test/integ.alblam-publicApiExistingResources.js.snapshot/{asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200 → asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093}/index.js +0 -0
  62. /package/test/integ.alblam-publicApiNewResources.js.snapshot/{asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200 → asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093}/index.js +0 -0
  63. /package/test/integ.alblam-twoTargets.js.snapshot/{asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200 → asset.02b51ab524e7bcf8f477de3e71e5f9a72e448301b26ba62e9e75a14f9c55a093}/index.js +0 -0
@@ -1 +1 @@
1
- {"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.239.0"},"children":{"alblam-twoTargets":{"id":"alblam-twoTargets","path":"alblam-twoTargets","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.239.0"},"children":{"test-one":{"id":"test-one","path":"alblam-twoTargets/test-one","constructInfo":{"fqn":"@aws-solutions-constructs/aws-alb-lambda.AlbToLambda","version":"2.99.0"},"children":{"test-one-alb":{"id":"test-one-alb","path":"alblam-twoTargets/test-one/test-one-alb","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-alb/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnLoadBalancer","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::LoadBalancer","aws:cdk:cloudformation:props":{"loadBalancerAttributes":[{"key":"deletion_protection.enabled","value":"false"},{"key":"access_logs.s3.enabled","value":"true"},{"key":"access_logs.s3.bucket","value":{"Ref":"testoneE6ACFBB6"}},{"key":"access_logs.s3.prefix","value":""}],"scheme":"internet-facing","securityGroups":[{"Fn::GetAtt":["testonetestonealbSecurityGroup4DED9E2A","GroupId"]}],"subnets":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"type":"application"}}},"SecurityGroup":{"id":"SecurityGroup","path":"alblam-twoTargets/test-one/test-one-alb/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-alb/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatically created Security Group for ELB alblamtwoTargetstestonetestonealbCEEAAF66","securityGroupEgress":[{"cidrIp":"255.255.255.255/32","description":"Disallow all traffic","ipProtocol":"icmp","fromPort":252,"toPort":86}],"securityGroupIngress":[{"cidrIp":"0.0.0.0/0","ipProtocol":"tcp","fromPort":80,"toPort":80,"description":"Allow from anyone on port 80"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}}}},"test-one":{"id":"test-one","path":"alblam-twoTargets/test-one/test-one","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"AES256"}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"}],"versioningConfiguration":{"status":"Enabled"}}}},"Policy":{"id":"Policy","path":"alblam-twoTargets/test-one/test-one/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"testoneE6ACFBB6"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/*"]]}]},{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/*"]]}]},{"Action":"s3:PutObject","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::127311923021:root"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/AWSLogs/",{"Ref":"AWS::AccountId"},"/*"]]}},{"Action":"s3:PutObject","Condition":{"StringEquals":{"s3:x-amz-acl":"bucket-owner-full-control"}},"Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/AWSLogs/",{"Ref":"AWS::AccountId"},"/*"]]}},{"Action":"s3:GetBucketAcl","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Resource":{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]}}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"alblam-twoTargets/test-one/test-one/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.239.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/test-one/test-one/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}}}}}},"LambdaFunctionServiceRole":{"id":"LambdaFunctionServiceRole","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.239.0"},"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"},"policies":[{"policyName":"LambdaFunctionServiceRolePolicy","policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/lambda/*"]]}}],"Version":"2012-10-17"}}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:AssignPrivateIpAddresses","ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeNetworkInterfaces","ec2:UnassignPrivateIpAddresses"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testoneLambdaFunctionServiceRoleDefaultPolicy6025A173","roles":[{"Ref":"testoneLambdaFunctionServiceRoleE92573D3"}]}}}}}}},"ReplaceDefaultSecurityGroup-security-group":{"id":"ReplaceDefaultSecurityGroup-security-group","path":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"LambdaFunction":{"id":"LambdaFunction","path":"alblam-twoTargets/test-one/LambdaFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"exports.handler = async (event) => { console.log(event); return {'statusCode': 200, 'body': ''}; }"},"environment":{"variables":{"AWS_NODEJS_CONNECTION_REUSE_ENABLED":"1"}},"handler":"index.handler","role":{"Fn::GetAtt":["testoneLambdaFunctionServiceRoleE92573D3","Arn"]},"runtime":"nodejs22.x","tracingConfig":{"mode":"Active"},"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["testoneReplaceDefaultSecurityGroupsecuritygroupE46270FE","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"alblam-twoTargets/test-one/LambdaFunction/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunction/inlinePolicyAddedToExecutionRole-0/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["xray:PutTelemetryRecords","xray:PutTraceSegments"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testoneLambdaFunctioninlinePolicyAddedToExecutionRole028251896","roles":[{"Ref":"testoneLambdaFunctionServiceRoleE92573D3"}]}}}}},"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=":{"id":"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","path":"alblam-twoTargets/test-one/LambdaFunction/Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["testoneLambdaFunctionCC9B03E1","Arn"]},"principal":"elasticloadbalancing.amazonaws.com"}}}}},"test-one-listener":{"id":"test-one-listener","path":"alblam-twoTargets/test-one/test-one-listener","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-listener/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnListener","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::Listener","aws:cdk:cloudformation:props":{"defaultActions":[{"type":"forward","targetGroupArn":{"Ref":"testonetg2tg6459EC7C"}}],"loadBalancerArn":{"Ref":"testonetestonealb4F263E42"},"port":80,"protocol":"HTTP"}}},"test-two-targetsRule":{"id":"test-two-targetsRule","path":"alblam-twoTargets/test-one/test-one-listener/test-two-targetsRule","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListenerRule","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-listener/test-two-targetsRule/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnListenerRule","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::ListenerRule","aws:cdk:cloudformation:props":{"actions":[{"type":"forward","targetGroupArn":{"Ref":"testtwotg2tg35BE6697"}}],"conditions":[{"field":"path-pattern","pathPatternConfig":{"values":["*admin*"]}}],"listenerArn":{"Ref":"testonetestonelistener51CF582F"},"priority":10}}}}}}},"tg2-tg":{"id":"tg2-tg","path":"alblam-twoTargets/test-one/tg2-tg","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/tg2-tg/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnTargetGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::TargetGroup","aws:cdk:cloudformation:props":{"targets":[{"id":{"Fn::GetAtt":["testoneLambdaFunctionCC9B03E1","Arn"]}}],"targetType":"lambda"}}}}}}},"Vpc":{"id":"Vpc","path":"alblam-twoTargets/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"2.239.0"},"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":"alblam-twoTargets/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"alblam-twoTargets/Vpc/PublicSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"2.239.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PublicSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.239.0"},"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":"alblam-twoTargets/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.239.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PublicSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PublicSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PublicSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"}}}},"EIP":{"id":"EIP","path":"alblam-twoTargets/Vpc/PublicSubnet1/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"alblam-twoTargets/Vpc/PublicSubnet1/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet1EIPD7E02669","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"alblam-twoTargets/Vpc/PublicSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"2.239.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PublicSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.239.0"},"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":"alblam-twoTargets/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.239.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PublicSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PublicSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PublicSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"}}}},"EIP":{"id":"EIP","path":"alblam-twoTargets/Vpc/PublicSubnet2/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"alblam-twoTargets/Vpc/PublicSubnet2/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet2EIP3C605A87","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"alblam-twoTargets/Vpc/PrivateSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"2.239.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PrivateSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.239.0"},"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":"alblam-twoTargets/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.239.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PrivateSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PrivateSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"},"subnetId":{"Ref":"VpcPrivateSubnet1Subnet536B997A"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PrivateSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"alblam-twoTargets/Vpc/PrivateSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"2.239.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PrivateSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.239.0"},"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":"alblam-twoTargets/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.239.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PrivateSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PrivateSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"},"subnetId":{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PrivateSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet2NATGateway9182C01D"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"alblam-twoTargets/Vpc/IGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"alblam-twoTargets/Vpc/VPCGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"VpcIGWD7BA715C"},"vpcId":{"Ref":"Vpc8378EB38"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"alblam-twoTargets/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.239.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}}}},"FlowLog":{"id":"FlowLog","path":"alblam-twoTargets/Vpc/FlowLog","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.FlowLog","version":"2.239.0"},"children":{"IAMRole":{"id":"IAMRole","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"vpc-flow-logs.amazonaws.com"}}],"Version":"2012-10-17"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogStream","logs:DescribeLogStreams","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["VpcFlowLogLogGroup7B5C56B9","Arn"]}}],"Version":"2012-10-17"},"policyName":"VpcFlowLogIAMRoleDefaultPolicy406FB995","roles":[{"Ref":"VpcFlowLogIAMRole6A475D41"}]}}}}}}},"LogGroup":{"id":"LogGroup","path":"alblam-twoTargets/Vpc/FlowLog/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"retentionInDays":731,"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}]}}}}},"FlowLog":{"id":"FlowLog","path":"alblam-twoTargets/Vpc/FlowLog/FlowLog","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnFlowLog","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::FlowLog","aws:cdk:cloudformation:props":{"deliverLogsPermissionArn":{"Fn::GetAtt":["VpcFlowLogIAMRole6A475D41","Arn"]},"logDestinationType":"cloud-watch-logs","logGroupName":{"Ref":"VpcFlowLogLogGroup7B5C56B9"},"resourceId":{"Ref":"Vpc8378EB38"},"resourceType":"VPC","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}],"trafficType":"ALL"}}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"2.239.0"},"children":{"Staging":{"id":"Staging","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.239.0"}},"Role":{"id":"Role","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}},"Handler":{"id":"Handler","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}}}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"2.239.0"},"children":{"Staging":{"id":"Staging","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.239.0"}},"Role":{"id":"Role","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}},"Handler":{"id":"Handler","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.239.0"}}}},"test-two":{"id":"test-two","path":"alblam-twoTargets/test-two","constructInfo":{"fqn":"@aws-solutions-constructs/aws-alb-lambda.AlbToLambda","version":"2.99.0"},"children":{"LambdaFunctionServiceRole":{"id":"LambdaFunctionServiceRole","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.239.0"},"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"},"policies":[{"policyName":"LambdaFunctionServiceRolePolicy","policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/lambda/*"]]}}],"Version":"2012-10-17"}}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:AssignPrivateIpAddresses","ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeNetworkInterfaces","ec2:UnassignPrivateIpAddresses"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testtwoLambdaFunctionServiceRoleDefaultPolicy3BCA0DDD","roles":[{"Ref":"testtwoLambdaFunctionServiceRoleD100E5F8"}]}}}}}}},"ReplaceDefaultSecurityGroup-security-group":{"id":"ReplaceDefaultSecurityGroup-security-group","path":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"LambdaFunction":{"id":"LambdaFunction","path":"alblam-twoTargets/test-two/LambdaFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"exports.handler = async (event) => { console.log(event); return {'statusCode': 200, 'body': ''}; }"},"environment":{"variables":{"AWS_NODEJS_CONNECTION_REUSE_ENABLED":"1"}},"handler":"index.handler","role":{"Fn::GetAtt":["testtwoLambdaFunctionServiceRoleD100E5F8","Arn"]},"runtime":"nodejs22.x","tracingConfig":{"mode":"Active"},"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["testtwoReplaceDefaultSecurityGroupsecuritygroupE62CC6C1","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"alblam-twoTargets/test-two/LambdaFunction/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunction/inlinePolicyAddedToExecutionRole-0/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["xray:PutTelemetryRecords","xray:PutTraceSegments"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testtwoLambdaFunctioninlinePolicyAddedToExecutionRole00A7D0170","roles":[{"Ref":"testtwoLambdaFunctionServiceRoleD100E5F8"}]}}}}},"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=":{"id":"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","path":"alblam-twoTargets/test-two/LambdaFunction/Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["testtwoLambdaFunction0418AA26","Arn"]},"principal":"elasticloadbalancing.amazonaws.com"}}}}},"tg2-tg":{"id":"tg2-tg","path":"alblam-twoTargets/test-two/tg2-tg","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup","version":"2.239.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/tg2-tg/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnTargetGroup","version":"2.239.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::TargetGroup","aws:cdk:cloudformation:props":{"targets":[{"id":{"Fn::GetAtt":["testtwoLambdaFunction0418AA26","Arn"]}}],"targetType":"lambda"}}}}}}},"Integ":{"id":"Integ","path":"alblam-twoTargets/Integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"2.239.0-alpha.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"alblam-twoTargets/Integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"2.239.0-alpha.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/Integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.5.1"}},"DeployAssert":{"id":"DeployAssert","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.239.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.239.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.239.0"}}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"alblam-twoTargets/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.239.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"alblam-twoTargets/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.239.0"}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.5.1"}}}}}
1
+ {"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.259.0"},"children":{"alblam-twoTargets":{"id":"alblam-twoTargets","path":"alblam-twoTargets","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.259.0"},"children":{"test-one":{"id":"test-one","path":"alblam-twoTargets/test-one","constructInfo":{"fqn":"@aws-solutions-constructs/aws-alb-lambda.AlbToLambda","version":"2.102.0"},"children":{"test-one-alb":{"id":"test-one-alb","path":"alblam-twoTargets/test-one/test-one-alb","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-alb/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnLoadBalancer","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::LoadBalancer","aws:cdk:cloudformation:logicalId":"testonetestonealb4F263E42","aws:cdk:cloudformation:props":{"loadBalancerAttributes":[{"key":"deletion_protection.enabled","value":"false"},{"key":"access_logs.s3.enabled","value":"true"},{"key":"access_logs.s3.bucket","value":{"Ref":"testoneE6ACFBB6"}},{"key":"access_logs.s3.prefix","value":""}],"scheme":"internet-facing","securityGroups":[{"Fn::GetAtt":["testonetestonealbSecurityGroup4DED9E2A","GroupId"]}],"subnets":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"type":"application"}}},"SecurityGroup":{"id":"SecurityGroup","path":"alblam-twoTargets/test-one/test-one-alb/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-alb/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:logicalId":"testonetestonealbSecurityGroup4DED9E2A","aws:cdk:cloudformation:props":{"groupDescription":"Automatically created Security Group for ELB alblamtwoTargetstestonetestonealbCEEAAF66","securityGroupEgress":[{"cidrIp":"255.255.255.255/32","description":"Disallow all traffic","ipProtocol":"icmp","fromPort":252,"toPort":86}],"securityGroupIngress":[{"cidrIp":"0.0.0.0/0","ipProtocol":"tcp","fromPort":80,"toPort":80,"description":"Allow from anyone on port 80"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}}}},"test-one":{"id":"test-one","path":"alblam-twoTargets/test-one/test-one","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:logicalId":"testoneE6ACFBB6","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"AES256"}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"}],"versioningConfiguration":{"status":"Enabled"}}}},"Policy":{"id":"Policy","path":"alblam-twoTargets/test-one/test-one/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:logicalId":"testonePolicyE30853FE","aws:cdk:cloudformation:props":{"bucket":{"Ref":"testoneE6ACFBB6"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/*"]]}]},{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/*"]]}]},{"Action":"s3:PutObject","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::127311923021:root"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/AWSLogs/",{"Ref":"AWS::AccountId"},"/*"]]}},{"Action":"s3:PutObject","Condition":{"StringEquals":{"s3:x-amz-acl":"bucket-owner-full-control"}},"Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]},"/AWSLogs/",{"Ref":"AWS::AccountId"},"/*"]]}},{"Action":"s3:GetBucketAcl","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Resource":{"Fn::GetAtt":["testoneE6ACFBB6","Arn"]}}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"alblam-twoTargets/test-one/test-one/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.259.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/test-one/test-one/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}}}}}},"LambdaFunctionServiceRole":{"id":"LambdaFunctionServiceRole","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:logicalId":"testoneLambdaFunctionServiceRoleE92573D3","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"policies":[{"policyName":"LambdaFunctionServiceRolePolicy","policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/lambda/*"]]}}],"Version":"2012-10-17"}}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunctionServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"testoneLambdaFunctionServiceRoleDefaultPolicy6025A173","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:AssignPrivateIpAddresses","ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeNetworkInterfaces","ec2:UnassignPrivateIpAddresses"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testoneLambdaFunctionServiceRoleDefaultPolicy6025A173","roles":[{"Ref":"testoneLambdaFunctionServiceRoleE92573D3"}]}}}}}}},"ReplaceDefaultSecurityGroup-security-group":{"id":"ReplaceDefaultSecurityGroup-security-group","path":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:logicalId":"testoneReplaceDefaultSecurityGroupsecuritygroupE46270FE","aws:cdk:cloudformation:props":{"groupDescription":"alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"LambdaFunction":{"id":"LambdaFunction","path":"alblam-twoTargets/test-one/LambdaFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:logicalId":"testoneLambdaFunctionCC9B03E1","aws:cdk:cloudformation:props":{"code":{"zipFile":"exports.handler = async (event) => { console.log(event); return {'statusCode': 200, 'body': ''}; }"},"environment":{"variables":{"AWS_NODEJS_CONNECTION_REUSE_ENABLED":"1"}},"handler":"index.handler","role":{"Fn::GetAtt":["testoneLambdaFunctionServiceRoleE92573D3","Arn"]},"runtime":"nodejs22.x","tracingConfig":{"mode":"Active"},"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["testoneReplaceDefaultSecurityGroupsecuritygroupE46270FE","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"alblam-twoTargets/test-one/LambdaFunction/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/LambdaFunction/inlinePolicyAddedToExecutionRole-0/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"testoneLambdaFunctioninlinePolicyAddedToExecutionRole028251896","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["xray:PutTelemetryRecords","xray:PutTraceSegments"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testoneLambdaFunctioninlinePolicyAddedToExecutionRole028251896","roles":[{"Ref":"testoneLambdaFunctionServiceRoleE92573D3"}]}}}}},"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=":{"id":"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","path":"alblam-twoTargets/test-one/LambdaFunction/Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:logicalId":"testoneLambdaFunctionInvoke2UTWxhlfyqbT5FTn5jvgbLgjFfJwzswGk55DU1HY508A8518","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["testoneLambdaFunctionCC9B03E1","Arn"]},"principal":"elasticloadbalancing.amazonaws.com"}}}}},"test-one-listener":{"id":"test-one-listener","path":"alblam-twoTargets/test-one/test-one-listener","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-listener/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnListener","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::Listener","aws:cdk:cloudformation:logicalId":"testonetestonelistener51CF582F","aws:cdk:cloudformation:props":{"defaultActions":[{"type":"forward","targetGroupArn":{"Ref":"testonetg2tg6459EC7C"}}],"loadBalancerArn":{"Ref":"testonetestonealb4F263E42"},"port":80,"protocol":"HTTP"}}},"test-two-targetsRule":{"id":"test-two-targetsRule","path":"alblam-twoTargets/test-one/test-one-listener/test-two-targetsRule","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListenerRule","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/test-one-listener/test-two-targetsRule/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnListenerRule","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::ListenerRule","aws:cdk:cloudformation:logicalId":"testonetestonelistenertesttwotargetsRule3ACCF5EF","aws:cdk:cloudformation:props":{"actions":[{"type":"forward","targetGroupArn":{"Ref":"testtwotg2tg35BE6697"}}],"conditions":[{"field":"path-pattern","pathPatternConfig":{"values":["*admin*"]}}],"listenerArn":{"Ref":"testonetestonelistener51CF582F"},"priority":10}}}}}}},"tg2-tg":{"id":"tg2-tg","path":"alblam-twoTargets/test-one/tg2-tg","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-one/tg2-tg/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnTargetGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::TargetGroup","aws:cdk:cloudformation:logicalId":"testonetg2tg6459EC7C","aws:cdk:cloudformation:props":{"targets":[{"id":{"Fn::GetAtt":["testoneLambdaFunctionCC9B03E1","Arn"]}}],"targetType":"lambda"}}}}}}},"Vpc":{"id":"Vpc","path":"alblam-twoTargets/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPC","aws:cdk:cloudformation:logicalId":"Vpc8378EB38","aws:cdk:cloudformation:props":{"cidrBlock":"10.0.0.0/16","enableDnsHostnames":true,"enableDnsSupport":true,"instanceTenancy":"default","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"alblam-twoTargets/Vpc/PublicSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"2.259.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PublicSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1Subnet5C2D37C4","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":"alblam-twoTargets/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.259.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PublicSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1RouteTable6C95E38E","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PublicSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1RouteTableAssociation97140677","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PublicSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1DefaultRoute3DA9E72A","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"}}}},"EIP":{"id":"EIP","path":"alblam-twoTargets/Vpc/PublicSubnet1/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1EIPD7E02669","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"alblam-twoTargets/Vpc/PublicSubnet1/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet1NATGateway4D7517AA","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet1EIPD7E02669","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"alblam-twoTargets/Vpc/PublicSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"2.259.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PublicSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2Subnet691E08A3","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":"alblam-twoTargets/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.259.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PublicSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2RouteTable94F7E489","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PublicSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2RouteTableAssociationDD5762D8","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PublicSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2DefaultRoute97F91067","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"}}}},"EIP":{"id":"EIP","path":"alblam-twoTargets/Vpc/PublicSubnet2/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2EIP3C605A87","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"alblam-twoTargets/Vpc/PublicSubnet2/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:logicalId":"VpcPublicSubnet2NATGateway9182C01D","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet2EIP3C605A87","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"alblam-twoTargets/Vpc/PrivateSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"2.259.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PrivateSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet1Subnet536B997A","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":"alblam-twoTargets/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.259.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PrivateSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet1RouteTableB2C5B500","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PrivateSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet1RouteTableAssociation70C59FA6","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"},"subnetId":{"Ref":"VpcPrivateSubnet1Subnet536B997A"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PrivateSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet1DefaultRouteBE02A9ED","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"alblam-twoTargets/Vpc/PrivateSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"2.259.0"},"children":{"Subnet":{"id":"Subnet","path":"alblam-twoTargets/Vpc/PrivateSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet2Subnet3788AAA1","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":"alblam-twoTargets/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"alblam-twoTargets/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.259.0"}},"RouteTable":{"id":"RouteTable","path":"alblam-twoTargets/Vpc/PrivateSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet2RouteTableA678073B","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"alblam-twoTargets/Vpc/PrivateSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet2RouteTableAssociationA89CAD56","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"},"subnetId":{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"alblam-twoTargets/Vpc/PrivateSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:logicalId":"VpcPrivateSubnet2DefaultRoute060D2087","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet2NATGateway9182C01D"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"alblam-twoTargets/Vpc/IGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:logicalId":"VpcIGWD7BA715C","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"alblam-twoTargets/Vpc/VPCGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:logicalId":"VpcVPCGWBF912B6E","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"VpcIGWD7BA715C"},"vpcId":{"Ref":"Vpc8378EB38"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"alblam-twoTargets/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.259.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}}}},"FlowLog":{"id":"FlowLog","path":"alblam-twoTargets/Vpc/FlowLog","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.FlowLog","version":"2.259.0"},"children":{"IAMRole":{"id":"IAMRole","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:logicalId":"VpcFlowLogIAMRole6A475D41","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"vpc-flow-logs.amazonaws.com"}}],"Version":"2012-10-17"},"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/IAMRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"VpcFlowLogIAMRoleDefaultPolicy406FB995","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogStream","logs:DescribeLogStreams","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["VpcFlowLogLogGroup7B5C56B9","Arn"]}}],"Version":"2012-10-17"},"policyName":"VpcFlowLogIAMRoleDefaultPolicy406FB995","roles":[{"Ref":"VpcFlowLogIAMRole6A475D41"}]}}}}}}},"LogGroup":{"id":"LogGroup","path":"alblam-twoTargets/Vpc/FlowLog/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/Vpc/FlowLog/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:logicalId":"VpcFlowLogLogGroup7B5C56B9","aws:cdk:cloudformation:props":{"retentionInDays":731,"tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}]}}}}},"FlowLog":{"id":"FlowLog","path":"alblam-twoTargets/Vpc/FlowLog/FlowLog","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnFlowLog","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::FlowLog","aws:cdk:cloudformation:logicalId":"VpcFlowLog8FF33A73","aws:cdk:cloudformation:props":{"deliverLogsPermissionArn":{"Fn::GetAtt":["VpcFlowLogIAMRole6A475D41","Arn"]},"logDestinationType":"cloud-watch-logs","logGroupName":{"Ref":"VpcFlowLogLogGroup7B5C56B9"},"resourceId":{"Ref":"Vpc8378EB38"},"resourceType":"VPC","tags":[{"key":"Name","value":"alblam-twoTargets/Vpc/FlowLog"}],"trafficType":"ALL"}}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"2.259.0"},"children":{"Staging":{"id":"Staging","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.259.0"}},"Role":{"id":"Role","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}},"Handler":{"id":"Handler","path":"alblam-twoTargets/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}}}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"2.259.0"},"children":{"Staging":{"id":"Staging","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.259.0"}},"Role":{"id":"Role","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}},"Handler":{"id":"Handler","path":"alblam-twoTargets/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.259.0"}}}},"test-two":{"id":"test-two","path":"alblam-twoTargets/test-two","constructInfo":{"fqn":"@aws-solutions-constructs/aws-alb-lambda.AlbToLambda","version":"2.102.0"},"children":{"LambdaFunctionServiceRole":{"id":"LambdaFunctionServiceRole","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:logicalId":"testtwoLambdaFunctionServiceRoleD100E5F8","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"policies":[{"policyName":"LambdaFunctionServiceRolePolicy","policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/lambda/*"]]}}],"Version":"2012-10-17"}}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunctionServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"testtwoLambdaFunctionServiceRoleDefaultPolicy3BCA0DDD","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:AssignPrivateIpAddresses","ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeNetworkInterfaces","ec2:UnassignPrivateIpAddresses"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testtwoLambdaFunctionServiceRoleDefaultPolicy3BCA0DDD","roles":[{"Ref":"testtwoLambdaFunctionServiceRoleD100E5F8"}]}}}}}}},"ReplaceDefaultSecurityGroup-security-group":{"id":"ReplaceDefaultSecurityGroup-security-group","path":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:logicalId":"testtwoReplaceDefaultSecurityGroupsecuritygroupE62CC6C1","aws:cdk:cloudformation:props":{"groupDescription":"alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"LambdaFunction":{"id":"LambdaFunction","path":"alblam-twoTargets/test-two/LambdaFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:logicalId":"testtwoLambdaFunction0418AA26","aws:cdk:cloudformation:props":{"code":{"zipFile":"exports.handler = async (event) => { console.log(event); return {'statusCode': 200, 'body': ''}; }"},"environment":{"variables":{"AWS_NODEJS_CONNECTION_REUSE_ENABLED":"1"}},"handler":"index.handler","role":{"Fn::GetAtt":["testtwoLambdaFunctionServiceRoleD100E5F8","Arn"]},"runtime":"nodejs22.x","tracingConfig":{"mode":"Active"},"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["testtwoReplaceDefaultSecurityGroupsecuritygroupE62CC6C1","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"alblam-twoTargets/test-two/LambdaFunction/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/LambdaFunction/inlinePolicyAddedToExecutionRole-0/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"testtwoLambdaFunctioninlinePolicyAddedToExecutionRole00A7D0170","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["xray:PutTelemetryRecords","xray:PutTraceSegments"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"testtwoLambdaFunctioninlinePolicyAddedToExecutionRole00A7D0170","roles":[{"Ref":"testtwoLambdaFunctionServiceRoleD100E5F8"}]}}}}},"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=":{"id":"Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","path":"alblam-twoTargets/test-two/LambdaFunction/Invoke2UTWxhlfyqbT5FTn--5jvgbLgj+FfJwzswGk55DU1H--Y=","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:logicalId":"testtwoLambdaFunctionInvoke2UTWxhlfyqbT5FTn5jvgbLgjFfJwzswGk55DU1HY068D8D47","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["testtwoLambdaFunction0418AA26","Arn"]},"principal":"elasticloadbalancing.amazonaws.com"}}}}},"tg2-tg":{"id":"tg2-tg","path":"alblam-twoTargets/test-two/tg2-tg","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup","version":"2.259.0"},"children":{"Resource":{"id":"Resource","path":"alblam-twoTargets/test-two/tg2-tg/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_elasticloadbalancingv2.CfnTargetGroup","version":"2.259.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::ElasticLoadBalancingV2::TargetGroup","aws:cdk:cloudformation:logicalId":"testtwotg2tg35BE6697","aws:cdk:cloudformation:props":{"targets":[{"id":{"Fn::GetAtt":["testtwoLambdaFunction0418AA26","Arn"]}}],"targetType":"lambda"}}}}}}},"Integ":{"id":"Integ","path":"alblam-twoTargets/Integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"2.259.0-alpha.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"alblam-twoTargets/Integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"2.259.0-alpha.0"},"children":{"Default":{"id":"Default","path":"alblam-twoTargets/Integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.5.1"}},"DeployAssert":{"id":"DeployAssert","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.259.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.259.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"alblam-twoTargets/Integ/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.259.0"}}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"alblam-twoTargets/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.259.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"alblam-twoTargets/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.259.0"}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.5.1"}}}}}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.external=void 0,exports.handler=handler,exports.withRetries=withRetries;const https=require("https"),url=require("url");exports.external={sendHttpRequest:defaultSendHttpRequest,log:defaultLog,includeStackTraces:!0,userHandlerIndex:"./index"};const CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function handler(event,context){const sanitizedEvent={...event,ResponseURL:"..."};if(exports.external.log(JSON.stringify(sanitizedEvent,void 0,2)),event.RequestType==="Delete"&&event.PhysicalResourceId===CREATE_FAILED_PHYSICAL_ID_MARKER){exports.external.log("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{const userHandler=require(exports.external.userHandlerIndex).handler,result=await userHandler(sanitizedEvent,context),responseEvent=renderResponse(event,result);await submitResponse("SUCCESS",responseEvent)}catch(e){const resp={...event,Reason:exports.external.includeStackTraces?e.stack:e.message};resp.PhysicalResourceId||(event.RequestType==="Create"?(exports.external.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),resp.PhysicalResourceId=CREATE_FAILED_PHYSICAL_ID_MARKER):exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`)),await submitResponse("FAILED",resp)}}function renderResponse(cfnRequest,handlerResponse={}){const physicalResourceId=handlerResponse.PhysicalResourceId??cfnRequest.PhysicalResourceId??cfnRequest.RequestId;if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);return{...cfnRequest,...handlerResponse,PhysicalResourceId:physicalResourceId}}async function submitResponse(status,event){const json={Status:status,Reason:event.Reason??status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:event.NoEcho,Data:event.Data},parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;exports.external.log("submit response to cloudformation",loggingSafeUrl,json);const responseBody=JSON.stringify(json),req={hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}};await withRetries({attempts:5,sleep:1e3},exports.external.sendHttpRequest)(req,responseBody)}async function defaultSendHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}function defaultLog(fmt,...params){console.log(fmt,...params)}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.external=void 0,exports.handler=handler,exports.withRetries=withRetries;const https=require("https"),url=require("url");exports.external={sendHttpRequest:defaultSendHttpRequest,log:defaultLog,includeStackTraces:!0,userHandlerIndex:"./index"};const CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function handler(event,context){const sanitizedEvent={...event,ResponseURL:"..."};if(exports.external.log(JSON.stringify(sanitizedEvent,void 0,2)),event.RequestType==="Delete"&&event.PhysicalResourceId===CREATE_FAILED_PHYSICAL_ID_MARKER){exports.external.log("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{const userHandler=require(exports.external.userHandlerIndex).handler,result=await userHandler(sanitizedEvent,context),responseEvent=renderResponse(event,result);await submitResponse("SUCCESS",responseEvent)}catch(e){const resp={...event,Reason:exports.external.includeStackTraces?e.stack:e.message};resp.PhysicalResourceId||(event.RequestType==="Create"?(exports.external.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),resp.PhysicalResourceId=CREATE_FAILED_PHYSICAL_ID_MARKER):exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`)),await submitResponse("FAILED",resp)}}function renderResponse(cfnRequest,handlerResponse={}){const physicalResourceId=handlerResponse.PhysicalResourceId??cfnRequest.PhysicalResourceId??cfnRequest.RequestId;if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);return{...cfnRequest,...handlerResponse,PhysicalResourceId:physicalResourceId}}async function submitResponse(status,event){const json={Status:status,Reason:event.Reason??status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:event.NoEcho,Data:event.Data},parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;exports.external.log("submit response to cloudformation",loggingSafeUrl,json);const responseBody=JSON.stringify(json),req={hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}};await withRetries({attempts:5,sleep:1e3},exports.external.sendHttpRequest)(req,responseBody)}async function defaultSendHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}function defaultLog(fmt,...params){console.log(fmt,...params)}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.external=void 0,exports.handler=handler,exports.withRetries=withRetries;const https=require("https"),url=require("url");exports.external={sendHttpRequest:defaultSendHttpRequest,log:defaultLog,includeStackTraces:!0,userHandlerIndex:"./index"};const CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function handler(event,context){const sanitizedEvent={...event,ResponseURL:"..."};if(exports.external.log(JSON.stringify(sanitizedEvent,void 0,2)),event.RequestType==="Delete"&&event.PhysicalResourceId===CREATE_FAILED_PHYSICAL_ID_MARKER){exports.external.log("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{const userHandler=require(exports.external.userHandlerIndex).handler,result=await userHandler(sanitizedEvent,context),responseEvent=renderResponse(event,result);await submitResponse("SUCCESS",responseEvent)}catch(e){const resp={...event,Reason:exports.external.includeStackTraces?e.stack:e.message};resp.PhysicalResourceId||(event.RequestType==="Create"?(exports.external.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),resp.PhysicalResourceId=CREATE_FAILED_PHYSICAL_ID_MARKER):exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`)),await submitResponse("FAILED",resp)}}function renderResponse(cfnRequest,handlerResponse={}){const physicalResourceId=handlerResponse.PhysicalResourceId??cfnRequest.PhysicalResourceId??cfnRequest.RequestId;if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);return{...cfnRequest,...handlerResponse,PhysicalResourceId:physicalResourceId}}async function submitResponse(status,event){const json={Status:status,Reason:event.Reason??status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:event.NoEcho,Data:event.Data},parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;exports.external.log("submit response to cloudformation",loggingSafeUrl,json);const responseBody=JSON.stringify(json),req={hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}};await withRetries({attempts:5,sleep:1e3},exports.external.sendHttpRequest)(req,responseBody)}async function defaultSendHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}function defaultLog(fmt,...params){console.log(fmt,...params)}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.external=void 0,exports.handler=handler,exports.withRetries=withRetries;const https=require("https"),url=require("url");exports.external={sendHttpRequest:defaultSendHttpRequest,log:defaultLog,includeStackTraces:!0,userHandlerIndex:"./index"};const CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function handler(event,context){const sanitizedEvent={...event,ResponseURL:"..."};if(exports.external.log(JSON.stringify(sanitizedEvent,void 0,2)),event.RequestType==="Delete"&&event.PhysicalResourceId===CREATE_FAILED_PHYSICAL_ID_MARKER){exports.external.log("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{const userHandler=require(exports.external.userHandlerIndex).handler,result=await userHandler(sanitizedEvent,context),responseEvent=renderResponse(event,result);await submitResponse("SUCCESS",responseEvent)}catch(e){const resp={...event,Reason:exports.external.includeStackTraces?e.stack:e.message};resp.PhysicalResourceId||(event.RequestType==="Create"?(exports.external.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),resp.PhysicalResourceId=CREATE_FAILED_PHYSICAL_ID_MARKER):exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`)),await submitResponse("FAILED",resp)}}function renderResponse(cfnRequest,handlerResponse={}){const physicalResourceId=handlerResponse.PhysicalResourceId??cfnRequest.PhysicalResourceId??cfnRequest.RequestId;if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);return{...cfnRequest,...handlerResponse,PhysicalResourceId:physicalResourceId}}async function submitResponse(status,event){const json={Status:status,Reason:event.Reason??status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:event.NoEcho,Data:event.Data},parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;exports.external.log("submit response to cloudformation",loggingSafeUrl,json);const responseBody=JSON.stringify(json),req={hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}};await withRetries({attempts:5,sleep:1e3},exports.external.sendHttpRequest)(req,responseBody)}async function defaultSendHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}function defaultLog(fmt,...params){console.log(fmt,...params)}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.external=void 0,exports.handler=handler,exports.withRetries=withRetries;const https=require("https"),url=require("url");exports.external={sendHttpRequest:defaultSendHttpRequest,log:defaultLog,includeStackTraces:!0,userHandlerIndex:"./index"};const CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function handler(event,context){const sanitizedEvent={...event,ResponseURL:"..."};if(exports.external.log(JSON.stringify(sanitizedEvent,void 0,2)),event.RequestType==="Delete"&&event.PhysicalResourceId===CREATE_FAILED_PHYSICAL_ID_MARKER){exports.external.log("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{const userHandler=require(exports.external.userHandlerIndex).handler,result=await userHandler(sanitizedEvent,context),responseEvent=renderResponse(event,result);await submitResponse("SUCCESS",responseEvent)}catch(e){const resp={...event,Reason:exports.external.includeStackTraces?e.stack:e.message};resp.PhysicalResourceId||(event.RequestType==="Create"?(exports.external.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),resp.PhysicalResourceId=CREATE_FAILED_PHYSICAL_ID_MARKER):exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`)),await submitResponse("FAILED",resp)}}function renderResponse(cfnRequest,handlerResponse={}){const physicalResourceId=handlerResponse.PhysicalResourceId??cfnRequest.PhysicalResourceId??cfnRequest.RequestId;if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);return{...cfnRequest,...handlerResponse,PhysicalResourceId:physicalResourceId}}async function submitResponse(status,event){const json={Status:status,Reason:event.Reason??status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:event.NoEcho,Data:event.Data},parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;exports.external.log("submit response to cloudformation",loggingSafeUrl,json);const responseBody=JSON.stringify(json),req={hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}};await withRetries({attempts:5,sleep:1e3},exports.external.sendHttpRequest)(req,responseBody)}async function defaultSendHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}function defaultLog(fmt,...params){console.log(fmt,...params)}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}