@aws-solutions-constructs/aws-alb-lambda 2.45.0 → 2.47.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.
- package/.jsii +5 -5
- package/lib/index.js +1 -1
- package/package.json +6 -6
- package/test/{integ.privateApiExistingResources.expected.json → integ.alblam-privateApiExistingResources.expected.json} +28 -34
- package/test/integ.alblam-privateApiExistingResources.js +80 -0
- package/test/{integ.privateApiNewResources.expected.json → integ.alblam-privateApiNewResources.expected.json} +15 -21
- package/test/integ.alblam-privateApiNewResources.js +58 -0
- package/test/{integ.publicApiExistingResources.expected.json → integ.alblam-publicApiExistingResources.expected.json} +28 -34
- package/test/integ.alblam-publicApiExistingResources.js +88 -0
- package/test/{integ.publicApiNewResources.expected.json → integ.alblam-publicApiNewResources.expected.json} +27 -33
- package/test/integ.alblam-publicApiNewResources.js +58 -0
- package/test/{integ.twoTargets.expected.json → integ.alblam-twoTargets.expected.json} +28 -34
- package/test/integ.alblam-twoTargets.js +74 -0
- package/test/integ.privateApiExistingResources.js +0 -80
- package/test/integ.privateApiNewResources.js +0 -58
- package/test/integ.publicApiExistingResources.js +0 -88
- package/test/integ.publicApiNewResources.js +0 -58
- package/test/integ.twoTargets.js +0 -74
- /package/test/{integ.privateApiExistingResources.d.ts → integ.alblam-privateApiExistingResources.d.ts} +0 -0
- /package/test/{integ.privateApiNewResources.d.ts → integ.alblam-privateApiNewResources.d.ts} +0 -0
- /package/test/{integ.publicApiExistingResources.d.ts → integ.alblam-publicApiExistingResources.d.ts} +0 -0
- /package/test/{integ.publicApiNewResources.d.ts → integ.alblam-publicApiNewResources.d.ts} +0 -0
- /package/test/{integ.twoTargets.d.ts → integ.alblam-twoTargets.d.ts} +0 -0
|
@@ -47,9 +47,7 @@
|
|
|
47
47
|
"Type": "application"
|
|
48
48
|
},
|
|
49
49
|
"DependsOn": [
|
|
50
|
-
"testoneAutoDeleteObjectsCustomResourceEDE3D2FC",
|
|
51
50
|
"testonePolicyE30853FE",
|
|
52
|
-
"testoneE6ACFBB6",
|
|
53
51
|
"VpcPublicSubnet1DefaultRoute3DA9E72A",
|
|
54
52
|
"VpcPublicSubnet1RouteTableAssociation97140677",
|
|
55
53
|
"VpcPublicSubnet2DefaultRoute97F91067",
|
|
@@ -61,7 +59,7 @@
|
|
|
61
59
|
"testonetestonealbSecurityGroup4DED9E2A": {
|
|
62
60
|
"Type": "AWS::EC2::SecurityGroup",
|
|
63
61
|
"Properties": {
|
|
64
|
-
"GroupDescription": "Automatically created Security Group for ELB
|
|
62
|
+
"GroupDescription": "Automatically created Security Group for ELB alblamtwoTargetstestonetestonealbCEEAAF66",
|
|
65
63
|
"SecurityGroupEgress": [
|
|
66
64
|
{
|
|
67
65
|
"CidrIp": "255.255.255.255/32",
|
|
@@ -84,11 +82,6 @@
|
|
|
84
82
|
"Ref": "Vpc8378EB38"
|
|
85
83
|
}
|
|
86
84
|
},
|
|
87
|
-
"DependsOn": [
|
|
88
|
-
"testoneAutoDeleteObjectsCustomResourceEDE3D2FC",
|
|
89
|
-
"testonePolicyE30853FE",
|
|
90
|
-
"testoneE6ACFBB6"
|
|
91
|
-
],
|
|
92
85
|
"Metadata": {
|
|
93
86
|
"cfn_nag": {
|
|
94
87
|
"rules_to_suppress": [
|
|
@@ -193,6 +186,7 @@
|
|
|
193
186
|
},
|
|
194
187
|
{
|
|
195
188
|
"Action": [
|
|
189
|
+
"s3:PutBucketPolicy",
|
|
196
190
|
"s3:GetBucket*",
|
|
197
191
|
"s3:List*",
|
|
198
192
|
"s3:DeleteObject*"
|
|
@@ -435,7 +429,7 @@
|
|
|
435
429
|
"testoneReplaceDefaultSecurityGroupsecuritygroupE46270FE": {
|
|
436
430
|
"Type": "AWS::EC2::SecurityGroup",
|
|
437
431
|
"Properties": {
|
|
438
|
-
"GroupDescription": "twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group",
|
|
432
|
+
"GroupDescription": "alblam-twoTargets/test-one/ReplaceDefaultSecurityGroup-security-group",
|
|
439
433
|
"SecurityGroupEgress": [
|
|
440
434
|
{
|
|
441
435
|
"CidrIp": "0.0.0.0/0",
|
|
@@ -646,7 +640,7 @@
|
|
|
646
640
|
"Tags": [
|
|
647
641
|
{
|
|
648
642
|
"Key": "Name",
|
|
649
|
-
"Value": "twoTargets/Vpc"
|
|
643
|
+
"Value": "alblam-twoTargets/Vpc"
|
|
650
644
|
}
|
|
651
645
|
]
|
|
652
646
|
}
|
|
@@ -668,7 +662,7 @@
|
|
|
668
662
|
},
|
|
669
663
|
{
|
|
670
664
|
"Key": "Name",
|
|
671
|
-
"Value": "twoTargets/Vpc/PublicSubnet1"
|
|
665
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet1"
|
|
672
666
|
}
|
|
673
667
|
],
|
|
674
668
|
"VpcId": {
|
|
@@ -692,7 +686,7 @@
|
|
|
692
686
|
"Tags": [
|
|
693
687
|
{
|
|
694
688
|
"Key": "Name",
|
|
695
|
-
"Value": "twoTargets/Vpc/PublicSubnet1"
|
|
689
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet1"
|
|
696
690
|
}
|
|
697
691
|
],
|
|
698
692
|
"VpcId": {
|
|
@@ -733,7 +727,7 @@
|
|
|
733
727
|
"Tags": [
|
|
734
728
|
{
|
|
735
729
|
"Key": "Name",
|
|
736
|
-
"Value": "twoTargets/Vpc/PublicSubnet1"
|
|
730
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet1"
|
|
737
731
|
}
|
|
738
732
|
]
|
|
739
733
|
}
|
|
@@ -753,7 +747,7 @@
|
|
|
753
747
|
"Tags": [
|
|
754
748
|
{
|
|
755
749
|
"Key": "Name",
|
|
756
|
-
"Value": "twoTargets/Vpc/PublicSubnet1"
|
|
750
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet1"
|
|
757
751
|
}
|
|
758
752
|
]
|
|
759
753
|
},
|
|
@@ -779,7 +773,7 @@
|
|
|
779
773
|
},
|
|
780
774
|
{
|
|
781
775
|
"Key": "Name",
|
|
782
|
-
"Value": "twoTargets/Vpc/PublicSubnet2"
|
|
776
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet2"
|
|
783
777
|
}
|
|
784
778
|
],
|
|
785
779
|
"VpcId": {
|
|
@@ -803,7 +797,7 @@
|
|
|
803
797
|
"Tags": [
|
|
804
798
|
{
|
|
805
799
|
"Key": "Name",
|
|
806
|
-
"Value": "twoTargets/Vpc/PublicSubnet2"
|
|
800
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet2"
|
|
807
801
|
}
|
|
808
802
|
],
|
|
809
803
|
"VpcId": {
|
|
@@ -844,7 +838,7 @@
|
|
|
844
838
|
"Tags": [
|
|
845
839
|
{
|
|
846
840
|
"Key": "Name",
|
|
847
|
-
"Value": "twoTargets/Vpc/PublicSubnet2"
|
|
841
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet2"
|
|
848
842
|
}
|
|
849
843
|
]
|
|
850
844
|
}
|
|
@@ -864,7 +858,7 @@
|
|
|
864
858
|
"Tags": [
|
|
865
859
|
{
|
|
866
860
|
"Key": "Name",
|
|
867
|
-
"Value": "twoTargets/Vpc/PublicSubnet2"
|
|
861
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet2"
|
|
868
862
|
}
|
|
869
863
|
]
|
|
870
864
|
},
|
|
@@ -890,7 +884,7 @@
|
|
|
890
884
|
},
|
|
891
885
|
{
|
|
892
886
|
"Key": "Name",
|
|
893
|
-
"Value": "twoTargets/Vpc/PublicSubnet3"
|
|
887
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet3"
|
|
894
888
|
}
|
|
895
889
|
],
|
|
896
890
|
"VpcId": {
|
|
@@ -914,7 +908,7 @@
|
|
|
914
908
|
"Tags": [
|
|
915
909
|
{
|
|
916
910
|
"Key": "Name",
|
|
917
|
-
"Value": "twoTargets/Vpc/PublicSubnet3"
|
|
911
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet3"
|
|
918
912
|
}
|
|
919
913
|
],
|
|
920
914
|
"VpcId": {
|
|
@@ -955,7 +949,7 @@
|
|
|
955
949
|
"Tags": [
|
|
956
950
|
{
|
|
957
951
|
"Key": "Name",
|
|
958
|
-
"Value": "twoTargets/Vpc/PublicSubnet3"
|
|
952
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet3"
|
|
959
953
|
}
|
|
960
954
|
]
|
|
961
955
|
}
|
|
@@ -975,7 +969,7 @@
|
|
|
975
969
|
"Tags": [
|
|
976
970
|
{
|
|
977
971
|
"Key": "Name",
|
|
978
|
-
"Value": "twoTargets/Vpc/PublicSubnet3"
|
|
972
|
+
"Value": "alblam-twoTargets/Vpc/PublicSubnet3"
|
|
979
973
|
}
|
|
980
974
|
]
|
|
981
975
|
},
|
|
@@ -1001,7 +995,7 @@
|
|
|
1001
995
|
},
|
|
1002
996
|
{
|
|
1003
997
|
"Key": "Name",
|
|
1004
|
-
"Value": "twoTargets/Vpc/PrivateSubnet1"
|
|
998
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet1"
|
|
1005
999
|
}
|
|
1006
1000
|
],
|
|
1007
1001
|
"VpcId": {
|
|
@@ -1015,7 +1009,7 @@
|
|
|
1015
1009
|
"Tags": [
|
|
1016
1010
|
{
|
|
1017
1011
|
"Key": "Name",
|
|
1018
|
-
"Value": "twoTargets/Vpc/PrivateSubnet1"
|
|
1012
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet1"
|
|
1019
1013
|
}
|
|
1020
1014
|
],
|
|
1021
1015
|
"VpcId": {
|
|
@@ -1063,7 +1057,7 @@
|
|
|
1063
1057
|
},
|
|
1064
1058
|
{
|
|
1065
1059
|
"Key": "Name",
|
|
1066
|
-
"Value": "twoTargets/Vpc/PrivateSubnet2"
|
|
1060
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet2"
|
|
1067
1061
|
}
|
|
1068
1062
|
],
|
|
1069
1063
|
"VpcId": {
|
|
@@ -1077,7 +1071,7 @@
|
|
|
1077
1071
|
"Tags": [
|
|
1078
1072
|
{
|
|
1079
1073
|
"Key": "Name",
|
|
1080
|
-
"Value": "twoTargets/Vpc/PrivateSubnet2"
|
|
1074
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet2"
|
|
1081
1075
|
}
|
|
1082
1076
|
],
|
|
1083
1077
|
"VpcId": {
|
|
@@ -1125,7 +1119,7 @@
|
|
|
1125
1119
|
},
|
|
1126
1120
|
{
|
|
1127
1121
|
"Key": "Name",
|
|
1128
|
-
"Value": "twoTargets/Vpc/PrivateSubnet3"
|
|
1122
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet3"
|
|
1129
1123
|
}
|
|
1130
1124
|
],
|
|
1131
1125
|
"VpcId": {
|
|
@@ -1139,7 +1133,7 @@
|
|
|
1139
1133
|
"Tags": [
|
|
1140
1134
|
{
|
|
1141
1135
|
"Key": "Name",
|
|
1142
|
-
"Value": "twoTargets/Vpc/PrivateSubnet3"
|
|
1136
|
+
"Value": "alblam-twoTargets/Vpc/PrivateSubnet3"
|
|
1143
1137
|
}
|
|
1144
1138
|
],
|
|
1145
1139
|
"VpcId": {
|
|
@@ -1176,7 +1170,7 @@
|
|
|
1176
1170
|
"Tags": [
|
|
1177
1171
|
{
|
|
1178
1172
|
"Key": "Name",
|
|
1179
|
-
"Value": "twoTargets/Vpc"
|
|
1173
|
+
"Value": "alblam-twoTargets/Vpc"
|
|
1180
1174
|
}
|
|
1181
1175
|
]
|
|
1182
1176
|
}
|
|
@@ -1210,7 +1204,7 @@
|
|
|
1210
1204
|
"Tags": [
|
|
1211
1205
|
{
|
|
1212
1206
|
"Key": "Name",
|
|
1213
|
-
"Value": "twoTargets/Vpc/FlowLog"
|
|
1207
|
+
"Value": "alblam-twoTargets/Vpc/FlowLog"
|
|
1214
1208
|
}
|
|
1215
1209
|
]
|
|
1216
1210
|
}
|
|
@@ -1262,7 +1256,7 @@
|
|
|
1262
1256
|
"Tags": [
|
|
1263
1257
|
{
|
|
1264
1258
|
"Key": "Name",
|
|
1265
|
-
"Value": "twoTargets/Vpc/FlowLog"
|
|
1259
|
+
"Value": "alblam-twoTargets/Vpc/FlowLog"
|
|
1266
1260
|
}
|
|
1267
1261
|
]
|
|
1268
1262
|
},
|
|
@@ -1299,7 +1293,7 @@
|
|
|
1299
1293
|
"Tags": [
|
|
1300
1294
|
{
|
|
1301
1295
|
"Key": "Name",
|
|
1302
|
-
"Value": "twoTargets/Vpc/FlowLog"
|
|
1296
|
+
"Value": "alblam-twoTargets/Vpc/FlowLog"
|
|
1303
1297
|
}
|
|
1304
1298
|
],
|
|
1305
1299
|
"TrafficType": "ALL"
|
|
@@ -1334,7 +1328,7 @@
|
|
|
1334
1328
|
"S3Bucket": {
|
|
1335
1329
|
"Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"
|
|
1336
1330
|
},
|
|
1337
|
-
"S3Key": "
|
|
1331
|
+
"S3Key": "b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6.zip"
|
|
1338
1332
|
},
|
|
1339
1333
|
"Timeout": 900,
|
|
1340
1334
|
"MemorySize": 128,
|
|
@@ -1484,7 +1478,7 @@
|
|
|
1484
1478
|
"testtwoReplaceDefaultSecurityGroupsecuritygroupE62CC6C1": {
|
|
1485
1479
|
"Type": "AWS::EC2::SecurityGroup",
|
|
1486
1480
|
"Properties": {
|
|
1487
|
-
"GroupDescription": "twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group",
|
|
1481
|
+
"GroupDescription": "alblam-twoTargets/test-two/ReplaceDefaultSecurityGroup-security-group",
|
|
1488
1482
|
"SecurityGroupEgress": [
|
|
1489
1483
|
{
|
|
1490
1484
|
"CidrIp": "0.0.0.0/0",
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
// Imports
|
|
16
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
17
|
+
const lib_1 = require("../lib");
|
|
18
|
+
const core_1 = require("@aws-solutions-constructs/core");
|
|
19
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
20
|
+
const elb = require("aws-cdk-lib/aws-elasticloadbalancingv2");
|
|
21
|
+
const defaults = require("@aws-solutions-constructs/core");
|
|
22
|
+
// Note: All integration tests for alb are for HTTP APIs, as certificates require
|
|
23
|
+
// validation through DNS and email. This validation is impossible during our integration
|
|
24
|
+
// tests and the stack will fail to launch with an unvalidated certificate.
|
|
25
|
+
// Setup
|
|
26
|
+
const app = new aws_cdk_lib_1.App();
|
|
27
|
+
const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename), {
|
|
28
|
+
env: { account: aws_cdk_lib_1.Aws.ACCOUNT_ID, region: 'us-east-1' },
|
|
29
|
+
});
|
|
30
|
+
stack.templateOptions.description = 'Integration test for alb with 2 Lambda targets';
|
|
31
|
+
const props = {
|
|
32
|
+
lambdaFunctionProps: {
|
|
33
|
+
code: lambda.Code.fromAsset(`${__dirname}/lambda`),
|
|
34
|
+
runtime: lambda.Runtime.NODEJS_16_X,
|
|
35
|
+
handler: 'index.handler'
|
|
36
|
+
},
|
|
37
|
+
listenerProps: {
|
|
38
|
+
protocol: 'HTTP'
|
|
39
|
+
},
|
|
40
|
+
publicApi: true,
|
|
41
|
+
albLoggingBucketProps: {
|
|
42
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
43
|
+
autoDeleteObjects: true
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const firstConstruct = new lib_1.AlbToLambda(stack, 'test-one', props);
|
|
47
|
+
const secondProps = {
|
|
48
|
+
lambdaFunctionProps: {
|
|
49
|
+
code: lambda.Code.fromAsset(`${__dirname}/lambda`),
|
|
50
|
+
runtime: lambda.Runtime.NODEJS_16_X,
|
|
51
|
+
handler: 'index.handler'
|
|
52
|
+
},
|
|
53
|
+
ruleProps: {
|
|
54
|
+
conditions: [elb.ListenerCondition.pathPatterns(["*admin*"])],
|
|
55
|
+
priority: 10
|
|
56
|
+
},
|
|
57
|
+
existingVpc: firstConstruct.vpc,
|
|
58
|
+
existingLoadBalancerObj: firstConstruct.loadBalancer,
|
|
59
|
+
publicApi: true
|
|
60
|
+
};
|
|
61
|
+
new lib_1.AlbToLambda(stack, 'test-two', secondProps);
|
|
62
|
+
defaults.addCfnSuppressRules(firstConstruct.listener, [
|
|
63
|
+
{ id: 'W56', reason: 'All integration tests must be HTTP because of certificate limitations.' },
|
|
64
|
+
]);
|
|
65
|
+
const newSecurityGroup = firstConstruct.loadBalancer.connections.securityGroups[0].node.defaultChild;
|
|
66
|
+
defaults.addCfnSuppressRules(newSecurityGroup, [
|
|
67
|
+
{ id: 'W29', reason: 'CDK created rule that blocks all traffic.' },
|
|
68
|
+
{ id: 'W2', reason: 'Rule does not apply for ELB.' },
|
|
69
|
+
{ id: 'W9', reason: 'Rule does not apply for ELB.' }
|
|
70
|
+
]);
|
|
71
|
+
defaults.suppressAutoDeleteHandlerWarnings(stack);
|
|
72
|
+
// Synth
|
|
73
|
+
app.synth();
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuYWxibGFtLXR3b1RhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5hbGJsYW0tdHdvVGFyZ2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUE2RDtBQUM3RCxnQ0FBdUQ7QUFDdkQseURBQXdFO0FBQ3hFLGlEQUFpRDtBQUNqRCw4REFBOEQ7QUFDOUQsMkRBQTJEO0FBRzNELGlGQUFpRjtBQUNqRix5RkFBeUY7QUFDekYsMkVBQTJFO0FBRTNFLFFBQVE7QUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLDZCQUFzQixDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQy9ELEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0NBQ3RELENBQUMsQ0FBQztBQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLGdEQUFnRCxDQUFDO0FBRXJGLE1BQU0sS0FBSyxHQUFxQjtJQUM5QixtQkFBbUIsRUFBRTtRQUNuQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQztRQUNsRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1FBQ25DLE9BQU8sRUFBRSxlQUFlO0tBQ3pCO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsUUFBUSxFQUFFLE1BQU07S0FDakI7SUFDRCxTQUFTLEVBQUUsSUFBSTtJQUNmLHFCQUFxQixFQUFFO1FBQ3JCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QjtDQUNGLENBQUM7QUFDRixNQUFNLGNBQWMsR0FBRyxJQUFJLGlCQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUVqRSxNQUFNLFdBQVcsR0FBcUI7SUFDcEMsbUJBQW1CLEVBQUU7UUFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxTQUFTLENBQUM7UUFDbEQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztRQUNuQyxPQUFPLEVBQUUsZUFBZTtLQUN6QjtJQUNELFNBQVMsRUFBRTtRQUNULFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzdELFFBQVEsRUFBRSxFQUFFO0tBQ2I7SUFDRCxXQUFXLEVBQUUsY0FBYyxDQUFDLEdBQUc7SUFDL0IsdUJBQXVCLEVBQUUsY0FBYyxDQUFDLFlBQVk7SUFDcEQsU0FBUyxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUNGLElBQUksaUJBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRWhELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFO0lBQ3BELEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsd0VBQXdFLEVBQUU7Q0FDaEcsQ0FBQyxDQUFDO0FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQWdDLENBQUM7QUFDekgsUUFBUSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFO0lBQzdDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsMkNBQTJDLEVBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSw4QkFBOEIsRUFBQztJQUNuRCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUE4QixFQUFDO0NBQ3BELENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXdzLCBBcHAsIFN0YWNrLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBBbGJUb0xhbWJkYSwgQWxiVG9MYW1iZGFQcm9wcyB9IGZyb20gXCIuLi9saWJcIjtcbmltcG9ydCB7IGdlbmVyYXRlSW50ZWdTdGFja05hbWUgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgZWxiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgeyBDZm5TZWN1cml0eUdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcblxuLy8gTm90ZTogQWxsIGludGVncmF0aW9uIHRlc3RzIGZvciBhbGIgYXJlIGZvciBIVFRQIEFQSXMsIGFzIGNlcnRpZmljYXRlcyByZXF1aXJlXG4vLyB2YWxpZGF0aW9uIHRocm91Z2ggRE5TIGFuZCBlbWFpbC4gVGhpcyB2YWxpZGF0aW9uIGlzIGltcG9zc2libGUgZHVyaW5nIG91ciBpbnRlZ3JhdGlvblxuLy8gdGVzdHMgYW5kIHRoZSBzdGFjayB3aWxsIGZhaWwgdG8gbGF1bmNoIHdpdGggYW4gdW52YWxpZGF0ZWQgY2VydGlmaWNhdGUuXG5cbi8vIFNldHVwXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIGdlbmVyYXRlSW50ZWdTdGFja05hbWUoX19maWxlbmFtZSksIHtcbiAgZW52OiB7IGFjY291bnQ6IEF3cy5BQ0NPVU5UX0lELCByZWdpb246ICd1cy1lYXN0LTEnIH0sXG59KTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiB0ZXN0IGZvciBhbGIgd2l0aCAyIExhbWJkYSB0YXJnZXRzJztcblxuY29uc3QgcHJvcHM6IEFsYlRvTGFtYmRhUHJvcHMgPSB7XG4gIGxhbWJkYUZ1bmN0aW9uUHJvcHM6IHtcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKSxcbiAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcidcbiAgfSxcbiAgbGlzdGVuZXJQcm9wczoge1xuICAgIHByb3RvY29sOiAnSFRUUCdcbiAgfSxcbiAgcHVibGljQXBpOiB0cnVlLFxuICBhbGJMb2dnaW5nQnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgfVxufTtcbmNvbnN0IGZpcnN0Q29uc3RydWN0ID0gbmV3IEFsYlRvTGFtYmRhKHN0YWNrLCAndGVzdC1vbmUnLCBwcm9wcyk7XG5cbmNvbnN0IHNlY29uZFByb3BzOiBBbGJUb0xhbWJkYVByb3BzID0ge1xuICBsYW1iZGFGdW5jdGlvblByb3BzOiB7XG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYCksXG4gICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInXG4gIH0sXG4gIHJ1bGVQcm9wczoge1xuICAgIGNvbmRpdGlvbnM6IFtlbGIuTGlzdGVuZXJDb25kaXRpb24ucGF0aFBhdHRlcm5zKFtcIiphZG1pbipcIl0pXSxcbiAgICBwcmlvcml0eTogMTBcbiAgfSxcbiAgZXhpc3RpbmdWcGM6IGZpcnN0Q29uc3RydWN0LnZwYyxcbiAgZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmo6IGZpcnN0Q29uc3RydWN0LmxvYWRCYWxhbmNlcixcbiAgcHVibGljQXBpOiB0cnVlXG59O1xubmV3IEFsYlRvTGFtYmRhKHN0YWNrLCAndGVzdC10d28nLCBzZWNvbmRQcm9wcyk7XG5cbmRlZmF1bHRzLmFkZENmblN1cHByZXNzUnVsZXMoZmlyc3RDb25zdHJ1Y3QubGlzdGVuZXIsIFtcbiAgeyBpZDogJ1c1NicsIHJlYXNvbjogJ0FsbCBpbnRlZ3JhdGlvbiB0ZXN0cyBtdXN0IGJlIEhUVFAgYmVjYXVzZSBvZiBjZXJ0aWZpY2F0ZSBsaW1pdGF0aW9ucy4nIH0sXG5dKTtcblxuY29uc3QgbmV3U2VjdXJpdHlHcm91cCA9IGZpcnN0Q29uc3RydWN0LmxvYWRCYWxhbmNlci5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwc1swXS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5TZWN1cml0eUdyb3VwO1xuZGVmYXVsdHMuYWRkQ2ZuU3VwcHJlc3NSdWxlcyhuZXdTZWN1cml0eUdyb3VwLCBbXG4gIHsgaWQ6ICdXMjknLCByZWFzb246ICdDREsgY3JlYXRlZCBydWxlIHRoYXQgYmxvY2tzIGFsbCB0cmFmZmljLid9LFxuICB7IGlkOiAnVzInLCByZWFzb246ICdSdWxlIGRvZXMgbm90IGFwcGx5IGZvciBFTEIuJ30sXG4gIHsgaWQ6ICdXOScsIHJlYXNvbjogJ1J1bGUgZG9lcyBub3QgYXBwbHkgZm9yIEVMQi4nfVxuXSk7XG5cbmRlZmF1bHRzLnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
-
* with the License. A copy of the License is located at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
-
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
-
* and limitations under the License.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
// Imports
|
|
16
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
17
|
-
const lib_1 = require("../lib");
|
|
18
|
-
const core_1 = require("@aws-solutions-constructs/core");
|
|
19
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
20
|
-
const defaults = require("@aws-solutions-constructs/core");
|
|
21
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
22
|
-
// Note: All integration tests for alb are for HTTP APIs, as certificates require
|
|
23
|
-
// validation through DNS and email. This validation is impossible during our integration
|
|
24
|
-
// tests and the stack will fail to launch with an unvalidated certificate.
|
|
25
|
-
// Setup
|
|
26
|
-
const app = new aws_cdk_lib_1.App();
|
|
27
|
-
const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename), {
|
|
28
|
-
env: { account: aws_cdk_lib_1.Aws.ACCOUNT_ID, region: 'us-east-1' },
|
|
29
|
-
});
|
|
30
|
-
stack.templateOptions.description = 'Integration Test for private HTTP API with a existing function and ALB';
|
|
31
|
-
const myVpc = defaults.getTestVpc(stack);
|
|
32
|
-
const testSg = new aws_ec2_1.SecurityGroup(stack, 'lambda-sg', { vpc: myVpc, allowAllOutbound: false });
|
|
33
|
-
const lambdaFunction = defaults.buildLambdaFunction(stack, {
|
|
34
|
-
lambdaFunctionProps: {
|
|
35
|
-
code: lambda.Code.fromAsset(`${__dirname}/lambda`),
|
|
36
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
37
|
-
handler: 'index.handler',
|
|
38
|
-
vpc: myVpc,
|
|
39
|
-
securityGroups: [testSg]
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
const loadBalancer = defaults.ObtainAlb(stack, 'existing-alb', {
|
|
43
|
-
vpc: myVpc,
|
|
44
|
-
publicApi: false,
|
|
45
|
-
loadBalancerProps: {
|
|
46
|
-
internetFacing: false,
|
|
47
|
-
vpc: myVpc,
|
|
48
|
-
},
|
|
49
|
-
logAccessLogs: true,
|
|
50
|
-
loggingBucketProps: {
|
|
51
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
52
|
-
autoDeleteObjects: true
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
const props = {
|
|
56
|
-
existingLambdaObj: lambdaFunction,
|
|
57
|
-
existingLoadBalancerObj: loadBalancer,
|
|
58
|
-
existingVpc: myVpc,
|
|
59
|
-
listenerProps: {
|
|
60
|
-
protocol: 'HTTP'
|
|
61
|
-
},
|
|
62
|
-
publicApi: false
|
|
63
|
-
};
|
|
64
|
-
const albToLambda = new lib_1.AlbToLambda(stack, 'test-one', props);
|
|
65
|
-
defaults.addCfnSuppressRules(albToLambda.listener, [
|
|
66
|
-
{ id: 'W56', reason: 'All integration tests must be HTTP because of certificate limitations.' },
|
|
67
|
-
]);
|
|
68
|
-
const newSecurityGroup = albToLambda.loadBalancer.connections.securityGroups[0].node.defaultChild;
|
|
69
|
-
defaults.addCfnSuppressRules(newSecurityGroup, [
|
|
70
|
-
{ id: 'W29', reason: 'CDK created rule that blocks all traffic.' },
|
|
71
|
-
{ id: 'W2', reason: 'Rule does not apply for ELB.' },
|
|
72
|
-
{ id: 'W9', reason: 'Rule does not apply for ELB.' }
|
|
73
|
-
]);
|
|
74
|
-
defaults.addCfnSuppressRules(testSg, [
|
|
75
|
-
{ id: 'W29', reason: 'CDK created rule that blocks all traffic.' },
|
|
76
|
-
]);
|
|
77
|
-
defaults.suppressAutoDeleteHandlerWarnings(stack);
|
|
78
|
-
// Synth
|
|
79
|
-
app.synth();
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcucHJpdmF0ZUFwaUV4aXN0aW5nUmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcucHJpdmF0ZUFwaUV4aXN0aW5nUmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQTZEO0FBQzdELGdDQUF1RDtBQUN2RCx5REFBd0U7QUFDeEUsaURBQWlEO0FBQ2pELDJEQUEyRDtBQUMzRCxpREFBc0U7QUFFdEUsaUZBQWlGO0FBQ2pGLHlGQUF5RjtBQUN6RiwyRUFBMkU7QUFFM0UsUUFBUTtBQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsNkJBQXNCLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDL0QsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7Q0FDdEQsQ0FBQyxDQUFDO0FBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsd0VBQXdFLENBQUM7QUFFN0csTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLHVCQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztBQUU3RixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO0lBQ3pELG1CQUFtQixFQUFFO1FBQ25CLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsU0FBUyxDQUFDO1FBQ2xELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7UUFDbkMsT0FBTyxFQUFFLGVBQWU7UUFDeEIsR0FBRyxFQUFFLEtBQUs7UUFDVixjQUFjLEVBQUUsQ0FBRSxNQUFNLENBQUU7S0FDM0I7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7SUFDN0QsR0FBRyxFQUFFLEtBQUs7SUFDVixTQUFTLEVBQUUsS0FBSztJQUNoQixpQkFBaUIsRUFBRTtRQUNqQixjQUFjLEVBQUUsS0FBSztRQUNyQixHQUFHLEVBQUUsS0FBSztLQUNYO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsa0JBQWtCLEVBQUU7UUFDbEIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxLQUFLLEdBQXFCO0lBQzlCLGlCQUFpQixFQUFFLGNBQWM7SUFDakMsdUJBQXVCLEVBQUUsWUFBWTtJQUNyQyxXQUFXLEVBQUUsS0FBSztJQUNsQixhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsTUFBTTtLQUNqQjtJQUNELFNBQVMsRUFBRSxLQUFLO0NBQ2pCLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU5RCxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtJQUNqRCxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLHdFQUF3RSxFQUFFO0NBQ2hHLENBQUMsQ0FBQztBQUVILE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFnQyxDQUFDO0FBQ3RILFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLDJDQUEyQyxFQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQUM7SUFDbkQsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSw4QkFBOEIsRUFBQztDQUNwRCxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFO0lBQ25DLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsMkNBQTJDLEVBQUM7Q0FDbEUsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFFBQVE7QUFDUixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBBd3MsIEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEFsYlRvTGFtYmRhLCBBbGJUb0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSB9IGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCwgQ2ZuU2VjdXJpdHlHcm91cCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbi8vIE5vdGU6IEFsbCBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgYWxiIGFyZSBmb3IgSFRUUCBBUElzLCBhcyBjZXJ0aWZpY2F0ZXMgcmVxdWlyZVxuLy8gdmFsaWRhdGlvbiB0aHJvdWdoIEROUyBhbmQgZW1haWwuIFRoaXMgdmFsaWRhdGlvbiBpcyBpbXBvc3NpYmxlIGR1cmluZyBvdXIgaW50ZWdyYXRpb25cbi8vIHRlc3RzIGFuZCB0aGUgc3RhY2sgd2lsbCBmYWlsIHRvIGxhdW5jaCB3aXRoIGFuIHVudmFsaWRhdGVkIGNlcnRpZmljYXRlLlxuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpLCB7XG4gIGVudjogeyBhY2NvdW50OiBBd3MuQUNDT1VOVF9JRCwgcmVnaW9uOiAndXMtZWFzdC0xJyB9LFxufSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgcHJpdmF0ZSBIVFRQIEFQSSB3aXRoIGEgZXhpc3RpbmcgZnVuY3Rpb24gYW5kIEFMQic7XG5cbmNvbnN0IG15VnBjID0gZGVmYXVsdHMuZ2V0VGVzdFZwYyhzdGFjayk7XG5cbmNvbnN0IHRlc3RTZyA9IG5ldyBTZWN1cml0eUdyb3VwKHN0YWNrLCAnbGFtYmRhLXNnJywgeyB2cGM6IG15VnBjLCBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZX0pO1xuXG5jb25zdCBsYW1iZGFGdW5jdGlvbiA9IGRlZmF1bHRzLmJ1aWxkTGFtYmRhRnVuY3Rpb24oc3RhY2ssIHtcbiAgbGFtYmRhRnVuY3Rpb25Qcm9wczoge1xuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApLFxuICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICB2cGM6IG15VnBjLFxuICAgIHNlY3VyaXR5R3JvdXBzOiBbIHRlc3RTZyBdXG4gIH1cbn0pO1xuXG5jb25zdCBsb2FkQmFsYW5jZXIgPSBkZWZhdWx0cy5PYnRhaW5BbGIoc3RhY2ssICdleGlzdGluZy1hbGInLCB7XG4gIHZwYzogbXlWcGMsXG4gIHB1YmxpY0FwaTogZmFsc2UsXG4gIGxvYWRCYWxhbmNlclByb3BzOiB7XG4gICAgaW50ZXJuZXRGYWNpbmc6IGZhbHNlLFxuICAgIHZwYzogbXlWcGMsXG4gIH0sXG4gIGxvZ0FjY2Vzc0xvZ3M6IHRydWUsXG4gIGxvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9XG59KTtcblxuY29uc3QgcHJvcHM6IEFsYlRvTGFtYmRhUHJvcHMgPSB7XG4gIGV4aXN0aW5nTGFtYmRhT2JqOiBsYW1iZGFGdW5jdGlvbixcbiAgZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmo6IGxvYWRCYWxhbmNlcixcbiAgZXhpc3RpbmdWcGM6IG15VnBjLFxuICBsaXN0ZW5lclByb3BzOiB7XG4gICAgcHJvdG9jb2w6ICdIVFRQJ1xuICB9LFxuICBwdWJsaWNBcGk6IGZhbHNlXG59O1xuXG5jb25zdCBhbGJUb0xhbWJkYSA9IG5ldyBBbGJUb0xhbWJkYShzdGFjaywgJ3Rlc3Qtb25lJywgcHJvcHMpO1xuXG5kZWZhdWx0cy5hZGRDZm5TdXBwcmVzc1J1bGVzKGFsYlRvTGFtYmRhLmxpc3RlbmVyLCBbXG4gIHsgaWQ6ICdXNTYnLCByZWFzb246ICdBbGwgaW50ZWdyYXRpb24gdGVzdHMgbXVzdCBiZSBIVFRQIGJlY2F1c2Ugb2YgY2VydGlmaWNhdGUgbGltaXRhdGlvbnMuJyB9LFxuXSk7XG5cbmNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBhbGJUb0xhbWJkYS5sb2FkQmFsYW5jZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuU2VjdXJpdHlHcm91cDtcbmRlZmF1bHRzLmFkZENmblN1cHByZXNzUnVsZXMobmV3U2VjdXJpdHlHcm91cCwgW1xuICB7IGlkOiAnVzI5JywgcmVhc29uOiAnQ0RLIGNyZWF0ZWQgcnVsZSB0aGF0IGJsb2NrcyBhbGwgdHJhZmZpYy4nfSxcbiAgeyBpZDogJ1cyJywgcmVhc29uOiAnUnVsZSBkb2VzIG5vdCBhcHBseSBmb3IgRUxCLid9LFxuICB7IGlkOiAnVzknLCByZWFzb246ICdSdWxlIGRvZXMgbm90IGFwcGx5IGZvciBFTEIuJ31cbl0pO1xuXG5kZWZhdWx0cy5hZGRDZm5TdXBwcmVzc1J1bGVzKHRlc3RTZywgW1xuICB7IGlkOiAnVzI5JywgcmVhc29uOiAnQ0RLIGNyZWF0ZWQgcnVsZSB0aGF0IGJsb2NrcyBhbGwgdHJhZmZpYy4nfSxcbl0pO1xuXG5kZWZhdWx0cy5zdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2spO1xuLy8gU3ludGhcbmFwcC5zeW50aCgpO1xuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
-
* with the License. A copy of the License is located at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
-
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
-
* and limitations under the License.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
// Imports
|
|
16
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
17
|
-
const lib_1 = require("../lib");
|
|
18
|
-
const core_1 = require("@aws-solutions-constructs/core");
|
|
19
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
20
|
-
const defaults = require("@aws-solutions-constructs/core");
|
|
21
|
-
// Note: All integration tests for alb are for HTTP APIs, as certificates require
|
|
22
|
-
// validation through DNS and email. This validation is impossible during our integration
|
|
23
|
-
// tests and the stack will fail to launch with an unvalidated certificate.
|
|
24
|
-
// Setup
|
|
25
|
-
const app = new aws_cdk_lib_1.App();
|
|
26
|
-
const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename), {
|
|
27
|
-
env: { account: aws_cdk_lib_1.Aws.ACCOUNT_ID, region: 'us-east-1' },
|
|
28
|
-
});
|
|
29
|
-
stack.templateOptions.description = 'Integration Test for HTTP API with a new function and ALB';
|
|
30
|
-
const props = {
|
|
31
|
-
lambdaFunctionProps: {
|
|
32
|
-
code: lambda.Code.fromAsset(`${__dirname}/lambda`),
|
|
33
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
34
|
-
handler: 'index.handler'
|
|
35
|
-
},
|
|
36
|
-
listenerProps: {
|
|
37
|
-
protocol: 'HTTP'
|
|
38
|
-
},
|
|
39
|
-
publicApi: false,
|
|
40
|
-
albLoggingBucketProps: {
|
|
41
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
42
|
-
autoDeleteObjects: true
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const albToLambda = new lib_1.AlbToLambda(stack, 'test-one', props);
|
|
46
|
-
defaults.addCfnSuppressRules(albToLambda.listener, [
|
|
47
|
-
{ id: 'W56', reason: 'All integration tests must be HTTP because of certificate limitations.' },
|
|
48
|
-
]);
|
|
49
|
-
const newSecurityGroup = albToLambda.loadBalancer.connections.securityGroups[0].node.defaultChild;
|
|
50
|
-
defaults.addCfnSuppressRules(newSecurityGroup, [
|
|
51
|
-
{ id: 'W29', reason: 'CDK created rule that blocks all traffic.' },
|
|
52
|
-
{ id: 'W2', reason: 'Rule does not apply for ELB.' },
|
|
53
|
-
{ id: 'W9', reason: 'Rule does not apply for ELB.' }
|
|
54
|
-
]);
|
|
55
|
-
defaults.suppressAutoDeleteHandlerWarnings(stack);
|
|
56
|
-
// Synth
|
|
57
|
-
app.synth();
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcucHJpdmF0ZUFwaU5ld1Jlc291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLnByaXZhdGVBcGlOZXdSZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBNkQ7QUFDN0QsZ0NBQXVEO0FBQ3ZELHlEQUF3RTtBQUN4RSxpREFBaUQ7QUFDakQsMkRBQTJEO0FBRzNELGlGQUFpRjtBQUNqRix5RkFBeUY7QUFDekYsMkVBQTJFO0FBRTNFLFFBQVE7QUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLDZCQUFzQixDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQy9ELEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0NBQ3RELENBQUMsQ0FBQztBQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLDJEQUEyRCxDQUFDO0FBRWhHLE1BQU0sS0FBSyxHQUFxQjtJQUM5QixtQkFBbUIsRUFBRTtRQUNuQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQztRQUNsRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1FBQ25DLE9BQU8sRUFBRSxlQUFlO0tBQ3pCO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsUUFBUSxFQUFFLE1BQU07S0FDakI7SUFDRCxTQUFTLEVBQUUsS0FBSztJQUNoQixxQkFBcUIsRUFBRTtRQUNyQixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLGlCQUFpQixFQUFFLElBQUk7S0FDeEI7Q0FDRixDQUFDO0FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFOUQsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7SUFDakQsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSx3RUFBd0UsRUFBRTtDQUNoRyxDQUFDLENBQUM7QUFFSCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBZ0MsQ0FBQztBQUN0SCxRQUFRLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUU7SUFDN0MsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSwyQ0FBMkMsRUFBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUE4QixFQUFDO0lBQ25ELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQUM7Q0FDcEQsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFFBQVE7QUFDUixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBBd3MsIEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEFsYlRvTGFtYmRhLCBBbGJUb0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSB9IGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0IHsgQ2ZuU2VjdXJpdHlHcm91cCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbi8vIE5vdGU6IEFsbCBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgYWxiIGFyZSBmb3IgSFRUUCBBUElzLCBhcyBjZXJ0aWZpY2F0ZXMgcmVxdWlyZVxuLy8gdmFsaWRhdGlvbiB0aHJvdWdoIEROUyBhbmQgZW1haWwuIFRoaXMgdmFsaWRhdGlvbiBpcyBpbXBvc3NpYmxlIGR1cmluZyBvdXIgaW50ZWdyYXRpb25cbi8vIHRlc3RzIGFuZCB0aGUgc3RhY2sgd2lsbCBmYWlsIHRvIGxhdW5jaCB3aXRoIGFuIHVudmFsaWRhdGVkIGNlcnRpZmljYXRlLlxuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpLCB7XG4gIGVudjogeyBhY2NvdW50OiBBd3MuQUNDT1VOVF9JRCwgcmVnaW9uOiAndXMtZWFzdC0xJyB9LFxufSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgSFRUUCBBUEkgd2l0aCBhIG5ldyBmdW5jdGlvbiBhbmQgQUxCJztcblxuY29uc3QgcHJvcHM6IEFsYlRvTGFtYmRhUHJvcHMgPSB7XG4gIGxhbWJkYUZ1bmN0aW9uUHJvcHM6IHtcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKSxcbiAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcidcbiAgfSxcbiAgbGlzdGVuZXJQcm9wczoge1xuICAgIHByb3RvY29sOiAnSFRUUCdcbiAgfSxcbiAgcHVibGljQXBpOiBmYWxzZSxcbiAgYWxiTG9nZ2luZ0J1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gIH1cbn07XG5jb25zdCBhbGJUb0xhbWJkYSA9IG5ldyBBbGJUb0xhbWJkYShzdGFjaywgJ3Rlc3Qtb25lJywgcHJvcHMpO1xuXG5kZWZhdWx0cy5hZGRDZm5TdXBwcmVzc1J1bGVzKGFsYlRvTGFtYmRhLmxpc3RlbmVyLCBbXG4gIHsgaWQ6ICdXNTYnLCByZWFzb246ICdBbGwgaW50ZWdyYXRpb24gdGVzdHMgbXVzdCBiZSBIVFRQIGJlY2F1c2Ugb2YgY2VydGlmaWNhdGUgbGltaXRhdGlvbnMuJyB9LFxuXSk7XG5cbmNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBhbGJUb0xhbWJkYS5sb2FkQmFsYW5jZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuU2VjdXJpdHlHcm91cDtcbmRlZmF1bHRzLmFkZENmblN1cHByZXNzUnVsZXMobmV3U2VjdXJpdHlHcm91cCwgW1xuICB7IGlkOiAnVzI5JywgcmVhc29uOiAnQ0RLIGNyZWF0ZWQgcnVsZSB0aGF0IGJsb2NrcyBhbGwgdHJhZmZpYy4nfSxcbiAgeyBpZDogJ1cyJywgcmVhc29uOiAnUnVsZSBkb2VzIG5vdCBhcHBseSBmb3IgRUxCLid9LFxuICB7IGlkOiAnVzknLCByZWFzb246ICdSdWxlIGRvZXMgbm90IGFwcGx5IGZvciBFTEIuJ31cbl0pO1xuXG5kZWZhdWx0cy5zdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2spO1xuLy8gU3ludGhcbmFwcC5zeW50aCgpO1xuIl19
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
-
* with the License. A copy of the License is located at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
-
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
-
* and limitations under the License.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
// Imports
|
|
16
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
17
|
-
const lib_1 = require("../lib");
|
|
18
|
-
const core_1 = require("@aws-solutions-constructs/core");
|
|
19
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
20
|
-
const defaults = require("@aws-solutions-constructs/core");
|
|
21
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
22
|
-
// Note: All integration tests for alb are for HTTP APIs, as certificates require
|
|
23
|
-
// validation through DNS and email. This validation is impossible during our integration
|
|
24
|
-
// tests and the stack will fail to launch with an unvalidated certificate.
|
|
25
|
-
// Setup
|
|
26
|
-
const app = new aws_cdk_lib_1.App();
|
|
27
|
-
const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename), {
|
|
28
|
-
env: { account: aws_cdk_lib_1.Aws.ACCOUNT_ID, region: "us-east-1" },
|
|
29
|
-
});
|
|
30
|
-
stack.templateOptions.description =
|
|
31
|
-
"Integration Test for public HTTP API with a existing function and ALB";
|
|
32
|
-
const myVpc = defaults.getTestVpc(stack);
|
|
33
|
-
const testSg = new aws_ec2_1.SecurityGroup(stack, "lambda-sg", {
|
|
34
|
-
vpc: myVpc,
|
|
35
|
-
allowAllOutbound: false,
|
|
36
|
-
});
|
|
37
|
-
const lambdaFunction = defaults.buildLambdaFunction(stack, {
|
|
38
|
-
lambdaFunctionProps: {
|
|
39
|
-
code: lambda.Code.fromAsset(`${__dirname}/lambda`),
|
|
40
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
41
|
-
handler: "index.handler",
|
|
42
|
-
vpc: myVpc,
|
|
43
|
-
securityGroups: [testSg],
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
const loadBalancer = defaults.ObtainAlb(stack, "existing-alb", {
|
|
47
|
-
vpc: myVpc,
|
|
48
|
-
publicApi: false,
|
|
49
|
-
loadBalancerProps: {
|
|
50
|
-
internetFacing: false,
|
|
51
|
-
vpc: myVpc,
|
|
52
|
-
},
|
|
53
|
-
logAccessLogs: true,
|
|
54
|
-
loggingBucketProps: {
|
|
55
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
56
|
-
autoDeleteObjects: true,
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
const props = {
|
|
60
|
-
existingLambdaObj: lambdaFunction,
|
|
61
|
-
existingLoadBalancerObj: loadBalancer,
|
|
62
|
-
existingVpc: myVpc,
|
|
63
|
-
listenerProps: {
|
|
64
|
-
protocol: "HTTP",
|
|
65
|
-
},
|
|
66
|
-
publicApi: true,
|
|
67
|
-
};
|
|
68
|
-
const albToLambda = new lib_1.AlbToLambda(stack, "test-one", props);
|
|
69
|
-
defaults.addCfnSuppressRules(albToLambda.listener, [
|
|
70
|
-
{
|
|
71
|
-
id: "W56",
|
|
72
|
-
reason: "All integration tests must be HTTP because of certificate limitations.",
|
|
73
|
-
},
|
|
74
|
-
]);
|
|
75
|
-
const newSecurityGroup = albToLambda.loadBalancer.connections.securityGroups[0]
|
|
76
|
-
.node.defaultChild;
|
|
77
|
-
defaults.addCfnSuppressRules(newSecurityGroup, [
|
|
78
|
-
{ id: "W29", reason: "CDK created rule that blocks all traffic." },
|
|
79
|
-
{ id: "W2", reason: "Rule does not apply for ELB." },
|
|
80
|
-
{ id: "W9", reason: "Rule does not apply for ELB." },
|
|
81
|
-
]);
|
|
82
|
-
defaults.addCfnSuppressRules(testSg, [
|
|
83
|
-
{ id: "W29", reason: "CDK created rule that blocks all traffic." },
|
|
84
|
-
]);
|
|
85
|
-
defaults.suppressAutoDeleteHandlerWarnings(stack);
|
|
86
|
-
// Synth
|
|
87
|
-
app.synth();
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcucHVibGljQXBpRXhpc3RpbmdSZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5wdWJsaWNBcGlFeGlzdGluZ1Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUE2RDtBQUM3RCxnQ0FBdUQ7QUFDdkQseURBQXdFO0FBQ3hFLGlEQUFpRDtBQUNqRCwyREFBMkQ7QUFDM0QsaURBQXNFO0FBRXRFLGlGQUFpRjtBQUNqRix5RkFBeUY7QUFDekYsMkVBQTJFO0FBRTNFLFFBQVE7QUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLDZCQUFzQixDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQy9ELEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0NBQ3RELENBQUMsQ0FBQztBQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVztJQUMvQix1RUFBdUUsQ0FBQztBQUUxRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXpDLE1BQU0sTUFBTSxHQUFHLElBQUksdUJBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ25ELEdBQUcsRUFBRSxLQUFLO0lBQ1YsZ0JBQWdCLEVBQUUsS0FBSztDQUN4QixDQUFDLENBQUM7QUFFSCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO0lBQ3pELG1CQUFtQixFQUFFO1FBQ25CLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsU0FBUyxDQUFDO1FBQ2xELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7UUFDbkMsT0FBTyxFQUFFLGVBQWU7UUFDeEIsR0FBRyxFQUFFLEtBQUs7UUFDVixjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDekI7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7SUFDN0QsR0FBRyxFQUFFLEtBQUs7SUFDVixTQUFTLEVBQUUsS0FBSztJQUNoQixpQkFBaUIsRUFBRTtRQUNqQixjQUFjLEVBQUUsS0FBSztRQUNyQixHQUFHLEVBQUUsS0FBSztLQUNYO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsa0JBQWtCLEVBQUU7UUFDbEIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxLQUFLLEdBQXFCO0lBQzlCLGlCQUFpQixFQUFFLGNBQWM7SUFDakMsdUJBQXVCLEVBQUUsWUFBWTtJQUNyQyxXQUFXLEVBQUUsS0FBSztJQUNsQixhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsTUFBTTtLQUNqQjtJQUNELFNBQVMsRUFBRSxJQUFJO0NBQ2hCLENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU5RCxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtJQUNqRDtRQUNFLEVBQUUsRUFBRSxLQUFLO1FBQ1QsTUFBTSxFQUNKLHdFQUF3RTtLQUMzRTtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztLQUM1RSxJQUFJLENBQUMsWUFBZ0MsQ0FBQztBQUN6QyxRQUFRLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUU7SUFDN0MsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSwyQ0FBMkMsRUFBRTtJQUNsRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUE4QixFQUFFO0lBQ3BELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQUU7Q0FDckQsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtJQUNuQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLDJDQUEyQyxFQUFFO0NBQ25FLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXdzLCBBcHAsIFN0YWNrLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBBbGJUb0xhbWJkYSwgQWxiVG9MYW1iZGFQcm9wcyB9IGZyb20gXCIuLi9saWJcIjtcbmltcG9ydCB7IGdlbmVyYXRlSW50ZWdTdGFja05hbWUgfSBmcm9tIFwiQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCJAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmVcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAsIENmblNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG4vLyBOb3RlOiBBbGwgaW50ZWdyYXRpb24gdGVzdHMgZm9yIGFsYiBhcmUgZm9yIEhUVFAgQVBJcywgYXMgY2VydGlmaWNhdGVzIHJlcXVpcmVcbi8vIHZhbGlkYXRpb24gdGhyb3VnaCBETlMgYW5kIGVtYWlsLiBUaGlzIHZhbGlkYXRpb24gaXMgaW1wb3NzaWJsZSBkdXJpbmcgb3VyIGludGVncmF0aW9uXG4vLyB0ZXN0cyBhbmQgdGhlIHN0YWNrIHdpbGwgZmFpbCB0byBsYXVuY2ggd2l0aCBhbiB1bnZhbGlkYXRlZCBjZXJ0aWZpY2F0ZS5cblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSwge1xuICBlbnY6IHsgYWNjb3VudDogQXdzLkFDQ09VTlRfSUQsIHJlZ2lvbjogXCJ1cy1lYXN0LTFcIiB9LFxufSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPVxuICBcIkludGVncmF0aW9uIFRlc3QgZm9yIHB1YmxpYyBIVFRQIEFQSSB3aXRoIGEgZXhpc3RpbmcgZnVuY3Rpb24gYW5kIEFMQlwiO1xuXG5jb25zdCBteVZwYyA9IGRlZmF1bHRzLmdldFRlc3RWcGMoc3RhY2spO1xuXG5jb25zdCB0ZXN0U2cgPSBuZXcgU2VjdXJpdHlHcm91cChzdGFjaywgXCJsYW1iZGEtc2dcIiwge1xuICB2cGM6IG15VnBjLFxuICBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBsYW1iZGFGdW5jdGlvbiA9IGRlZmF1bHRzLmJ1aWxkTGFtYmRhRnVuY3Rpb24oc3RhY2ssIHtcbiAgbGFtYmRhRnVuY3Rpb25Qcm9wczoge1xuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApLFxuICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgIHZwYzogbXlWcGMsXG4gICAgc2VjdXJpdHlHcm91cHM6IFt0ZXN0U2ddLFxuICB9LFxufSk7XG5cbmNvbnN0IGxvYWRCYWxhbmNlciA9IGRlZmF1bHRzLk9idGFpbkFsYihzdGFjaywgXCJleGlzdGluZy1hbGJcIiwge1xuICB2cGM6IG15VnBjLFxuICBwdWJsaWNBcGk6IGZhbHNlLFxuICBsb2FkQmFsYW5jZXJQcm9wczoge1xuICAgIGludGVybmV0RmFjaW5nOiBmYWxzZSxcbiAgICB2cGM6IG15VnBjLFxuICB9LFxuICBsb2dBY2Nlc3NMb2dzOiB0cnVlLFxuICBsb2dnaW5nQnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gIH1cbn0pO1xuXG5jb25zdCBwcm9wczogQWxiVG9MYW1iZGFQcm9wcyA9IHtcbiAgZXhpc3RpbmdMYW1iZGFPYmo6IGxhbWJkYUZ1bmN0aW9uLFxuICBleGlzdGluZ0xvYWRCYWxhbmNlck9iajogbG9hZEJhbGFuY2VyLFxuICBleGlzdGluZ1ZwYzogbXlWcGMsXG4gIGxpc3RlbmVyUHJvcHM6IHtcbiAgICBwcm90b2NvbDogXCJIVFRQXCIsXG4gIH0sXG4gIHB1YmxpY0FwaTogdHJ1ZSxcbn07XG5jb25zdCBhbGJUb0xhbWJkYSA9IG5ldyBBbGJUb0xhbWJkYShzdGFjaywgXCJ0ZXN0LW9uZVwiLCBwcm9wcyk7XG5cbmRlZmF1bHRzLmFkZENmblN1cHByZXNzUnVsZXMoYWxiVG9MYW1iZGEubGlzdGVuZXIsIFtcbiAge1xuICAgIGlkOiBcIlc1NlwiLFxuICAgIHJlYXNvbjpcbiAgICAgIFwiQWxsIGludGVncmF0aW9uIHRlc3RzIG11c3QgYmUgSFRUUCBiZWNhdXNlIG9mIGNlcnRpZmljYXRlIGxpbWl0YXRpb25zLlwiLFxuICB9LFxuXSk7XG5cbmNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBhbGJUb0xhbWJkYS5sb2FkQmFsYW5jZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF1cbiAgLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblNlY3VyaXR5R3JvdXA7XG5kZWZhdWx0cy5hZGRDZm5TdXBwcmVzc1J1bGVzKG5ld1NlY3VyaXR5R3JvdXAsIFtcbiAgeyBpZDogXCJXMjlcIiwgcmVhc29uOiBcIkNESyBjcmVhdGVkIHJ1bGUgdGhhdCBibG9ja3MgYWxsIHRyYWZmaWMuXCIgfSxcbiAgeyBpZDogXCJXMlwiLCByZWFzb246IFwiUnVsZSBkb2VzIG5vdCBhcHBseSBmb3IgRUxCLlwiIH0sXG4gIHsgaWQ6IFwiVzlcIiwgcmVhc29uOiBcIlJ1bGUgZG9lcyBub3QgYXBwbHkgZm9yIEVMQi5cIiB9LFxuXSk7XG5cbmRlZmF1bHRzLmFkZENmblN1cHByZXNzUnVsZXModGVzdFNnLCBbXG4gIHsgaWQ6IFwiVzI5XCIsIHJlYXNvbjogXCJDREsgY3JlYXRlZCBydWxlIHRoYXQgYmxvY2tzIGFsbCB0cmFmZmljLlwiIH0sXG5dKTtcblxuZGVmYXVsdHMuc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzKHN0YWNrKTtcbi8vIFN5bnRoXG5hcHAuc3ludGgoKTtcbiJdfQ==
|