@fjall/components-infrastructure 0.1.5 → 0.1.10
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/dist/lib/config/aws/costAllocationTags.js +58 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
- package/dist/lib/config/aws/identityCenter.js +107 -0
- package/dist/lib/config/aws/index.d.ts +8 -0
- package/dist/lib/config/aws/index.js +25 -0
- package/dist/lib/config/aws/ipam.d.ts +5 -0
- package/dist/lib/config/aws/ipam.js +30 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +9 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.js +62 -0
- package/dist/lib/config/aws/ipamPool.d.ts +5 -0
- package/dist/lib/config/aws/ipamPool.js +56 -0
- package/dist/lib/config/aws/{base/iamIdentityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
- package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
- package/dist/lib/config/aws/organisationId.d.ts +5 -0
- package/dist/lib/config/aws/organisationId.js +40 -0
- package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
- package/dist/lib/config/aws/ramEnableSharing.js +35 -0
- package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
- package/dist/lib/config/aws/users.js +126 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +4 -1
- package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
- package/dist/lib/patterns/aws/basicApp.js +90 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
- package/dist/lib/patterns/aws/buildkite.js +344 -0
- package/dist/lib/patterns/aws/index.d.ts +2 -2
- package/dist/lib/patterns/aws/index.js +3 -3
- package/dist/lib/patterns/aws/{multiEnvironmentOrganisation.d.ts → managedOrganisation.d.ts} +8 -10
- package/dist/lib/patterns/aws/managedOrganisation.js +159 -0
- package/dist/lib/resources/aws/awsStack.d.ts +5 -0
- package/dist/lib/resources/aws/awsStack.js +11 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecs.js +265 -0
- package/dist/lib/resources/aws/compute/lambda.d.ts +12 -5
- package/dist/lib/resources/aws/compute/lambda.js +23 -5
- package/dist/lib/resources/aws/constant/ecr.js +4 -3
- package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
- package/dist/lib/resources/aws/constant/vpc.js +18 -8
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
- package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
- package/dist/lib/resources/aws/iam/index.d.ts +5 -0
- package/dist/lib/resources/aws/iam/index.js +22 -0
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
- package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
- package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/policy.js +13 -0
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +18 -0
- package/dist/lib/resources/aws/logging/logGroup.d.ts +5 -1
- package/dist/lib/resources/aws/logging/logGroup.js +4 -5
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
- package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
- package/dist/lib/resources/aws/networking/index.d.ts +3 -0
- package/dist/lib/resources/aws/networking/index.js +20 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
- package/dist/lib/resources/aws/networking/ipam.js +3 -3
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +3 -7
- package/dist/lib/resources/aws/networking/ipamPool.js +5 -27
- package/dist/lib/resources/aws/store/alias.d.ts +5 -0
- package/dist/lib/resources/aws/store/alias.js +13 -0
- package/dist/lib/resources/aws/store/database.d.ts +7 -2
- package/dist/lib/resources/aws/store/database.js +9 -5
- package/dist/lib/resources/aws/store/index.d.ts +7 -0
- package/dist/lib/resources/aws/store/index.js +24 -0
- package/dist/lib/resources/aws/store/kms.d.ts +14 -0
- package/dist/lib/resources/aws/store/kms.js +34 -0
- package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/store/parameter.js +100 -0
- package/dist/lib/resources/aws/store/rds.d.ts +15 -15
- package/dist/lib/resources/aws/store/rds.js +110 -68
- package/dist/lib/resources/aws/store/s3.d.ts +11 -0
- package/dist/lib/resources/aws/store/s3.js +43 -0
- package/dist/lib/resources/aws/store/secret.d.ts +26 -0
- package/dist/lib/resources/aws/store/secret.js +55 -0
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
- package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
- package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
- package/dist/lib/resources/aws/utilities/customResource.js +24 -5
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
- package/dist/lib/resources/index.d.ts +1 -0
- package/dist/lib/resources/index.js +18 -0
- package/dist/lib/utils/getAccountId.d.ts +1 -0
- package/dist/lib/utils/getAccountId.js +11 -0
- package/dist/lib/utils/getConfig.d.ts +4 -3
- package/dist/lib/utils/getConfig.js +26 -12
- package/dist/lib/utils/getStackOutput.d.ts +1 -0
- package/dist/lib/utils/getStackOutput.js +20 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +18 -0
- package/dist/lib/utils/tagResource.d.ts +4 -0
- package/dist/lib/utils/tagResource.js +10 -0
- package/package.json +23 -18
- package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
- package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
- package/dist/lib/config/aws/base/identityCenter.js +0 -90
- package/dist/lib/config/aws/base/ipam.js +0 -29
- package/dist/lib/config/aws/base/ipamPool.js +0 -46
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
- package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
- package/dist/lib/examples/cutomResourceExample.js +0 -45
- package/dist/lib/patterns/aws/customResource.d.ts +0 -7
- package/dist/lib/patterns/aws/customResource.js +0 -28
- package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
- package/dist/lib/patterns/aws/webApp.d.ts +0 -17
- package/dist/lib/patterns/aws/webApp.js +0 -36
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
- package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
- package/dist/lib/resources/aws/compute/fargate.js +0 -50
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
- package/dist/lib/resources/aws/iam/assignment.js +0 -13
- package/dist/lib/resources/aws/iam/group.js +0 -15
- package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
- package/dist/lib/resources/aws/iam/iamRole.js +0 -18
- package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
- /package/dist/lib/config/aws/{base/costAllocationTags.d.ts → costAllocationTags.d.ts} +0 -0
- /package/dist/lib/config/aws/{base/identityCenter.d.ts → identityCenter.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScalingType = exports.Protocol = void 0;
|
|
4
|
+
const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
|
|
5
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const aws_elasticloadbalancingv2_1 = require("aws-cdk-lib/aws-elasticloadbalancingv2");
|
|
9
|
+
const tagResource_1 = require("../../../utils/tagResource");
|
|
10
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
11
|
+
const aws_applicationautoscaling_1 = require("aws-cdk-lib/aws-applicationautoscaling");
|
|
12
|
+
const aws_ecs_2 = require("aws-cdk-lib/aws-ecs");
|
|
13
|
+
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
|
14
|
+
const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
|
|
15
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
16
|
+
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
17
|
+
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
18
|
+
var Protocol;
|
|
19
|
+
(function (Protocol) {
|
|
20
|
+
Protocol[Protocol["HTTP"] = 0] = "HTTP";
|
|
21
|
+
Protocol[Protocol["HTTPS"] = 1] = "HTTPS";
|
|
22
|
+
})(Protocol = exports.Protocol || (exports.Protocol = {}));
|
|
23
|
+
var ScalingType;
|
|
24
|
+
(function (ScalingType) {
|
|
25
|
+
ScalingType["CPU"] = "ECSServiceAverageCPUUtilization";
|
|
26
|
+
ScalingType["MEMORY"] = "ECSServiceAverageMemoryUtilization";
|
|
27
|
+
})(ScalingType = exports.ScalingType || (exports.ScalingType = {}));
|
|
28
|
+
class FargateCluster extends constructs_1.Construct {
|
|
29
|
+
constructor(scope, id, props) {
|
|
30
|
+
super(scope, id);
|
|
31
|
+
this.secrets = {};
|
|
32
|
+
this.addCluster(props);
|
|
33
|
+
this.addSecrets(props);
|
|
34
|
+
this.addTaskDefinition(props);
|
|
35
|
+
this.addContainerDefinition(props);
|
|
36
|
+
this.addFargateService(props);
|
|
37
|
+
this.addLoadBalancer(props);
|
|
38
|
+
if (!!props.parentDomain)
|
|
39
|
+
this.addHostedZone(props);
|
|
40
|
+
this.addLoadBalancerListener(props);
|
|
41
|
+
this.registerLoadBalancerTargets(props);
|
|
42
|
+
//todo: fix connections not working automatically
|
|
43
|
+
this.fargateService.connections.allowTo(props.databaseConnection, aws_ec2_1.Port.POSTGRES);
|
|
44
|
+
}
|
|
45
|
+
addCluster(props) {
|
|
46
|
+
this.cluster = new aws_ecs_1.Cluster(this, `${props.clusterName}`, {
|
|
47
|
+
vpc: props.vpc,
|
|
48
|
+
clusterName: props.clusterName,
|
|
49
|
+
containerInsights: true,
|
|
50
|
+
enableFargateCapacityProviders: true
|
|
51
|
+
});
|
|
52
|
+
(0, tagResource_1.default)(this.cluster, props.tags);
|
|
53
|
+
}
|
|
54
|
+
addSecrets(props) {
|
|
55
|
+
// Container Secrets
|
|
56
|
+
const containerSecret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, `${props.clusterName}Secret`, `/${props.clusterName}/${props.serviceName}`);
|
|
57
|
+
for (const secretField in props.containerSecrets) {
|
|
58
|
+
this.secrets[secretField] = aws_ecs_2.Secret.fromSecretsManager(containerSecret, secretField);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
addExecutionRole(props) {
|
|
62
|
+
this.executionRole = new aws_iam_1.Role(this, `${props.serviceName}ExecutionRole`, {
|
|
63
|
+
roleName: `${props.serviceName}ExecutionRole`,
|
|
64
|
+
description: `${props.serviceName} Execution Role`,
|
|
65
|
+
managedPolicies: [
|
|
66
|
+
{
|
|
67
|
+
managedPolicyArn: "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
inlinePolicies: {
|
|
71
|
+
["readSecrets"]: new aws_iam_1.PolicyDocument({
|
|
72
|
+
statements: [
|
|
73
|
+
new aws_iam_1.PolicyStatement({
|
|
74
|
+
actions: [
|
|
75
|
+
"secretsmanager:GetSecretValue",
|
|
76
|
+
"secretsmanager:DescribeSecret"
|
|
77
|
+
],
|
|
78
|
+
resources: ["*"] // TODO: Set this to the secret ARN
|
|
79
|
+
})
|
|
80
|
+
]
|
|
81
|
+
}),
|
|
82
|
+
["decryptSecrets"]: new aws_iam_1.PolicyDocument({
|
|
83
|
+
statements: [
|
|
84
|
+
new aws_iam_1.PolicyStatement({
|
|
85
|
+
actions: ["kms:Decrypt"],
|
|
86
|
+
resources: ["*"] // TODO: Set this to the KMS Arn
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
}),
|
|
90
|
+
["ecsExecuteCommand"]: new aws_iam_1.PolicyDocument({
|
|
91
|
+
statements: [
|
|
92
|
+
new aws_iam_1.PolicyStatement({
|
|
93
|
+
actions: [
|
|
94
|
+
"ssmmessages:CreateControlChannel",
|
|
95
|
+
"ssmmessages:CreateDataChannel",
|
|
96
|
+
"ssmmessages:OpenControlChannel",
|
|
97
|
+
"ssmmessages:OpenDataChannel"
|
|
98
|
+
],
|
|
99
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
100
|
+
resources: ["*"]
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
})
|
|
104
|
+
},
|
|
105
|
+
assumedBy: new aws_iam_1.CompositePrincipal(new aws_iam_1.ServicePrincipal("ecs-tasks.amazonaws.com"))
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
addTaskDefinition(props) {
|
|
109
|
+
this.taskDefinition = new aws_ecs_1.FargateTaskDefinition(this, `${props.serviceName}TaskDefinition`, {
|
|
110
|
+
cpu: props.cpu || 256,
|
|
111
|
+
executionRole: this.executionRole,
|
|
112
|
+
taskRole: new aws_iam_1.Role(this, `${props.serviceName}TaskRole`, {
|
|
113
|
+
roleName: `${props.serviceName}TaskRole`,
|
|
114
|
+
description: `${props.serviceName} Task Role`,
|
|
115
|
+
inlinePolicies: props.taskRoleInlinePolicies,
|
|
116
|
+
managedPolicies: props.taskRoleManagegedPolicies,
|
|
117
|
+
assumedBy: new aws_iam_1.CompositePrincipal(new aws_iam_1.ServicePrincipal("ecs-tasks.amazonaws.com"))
|
|
118
|
+
}),
|
|
119
|
+
memoryLimitMiB: props.memoryLimitMiB || 512
|
|
120
|
+
});
|
|
121
|
+
(0, tagResource_1.default)(this.taskDefinition, props.tags);
|
|
122
|
+
}
|
|
123
|
+
addContainerDefinition(props) {
|
|
124
|
+
this.containerDefinition = this.taskDefinition.addContainer(`${props.serviceName}ContainerDefinition`, {
|
|
125
|
+
image: this.getImage(props),
|
|
126
|
+
containerName: props.serviceName,
|
|
127
|
+
environment: {
|
|
128
|
+
...props.containerEnvironment
|
|
129
|
+
},
|
|
130
|
+
command: props.containerCommand,
|
|
131
|
+
secrets: {
|
|
132
|
+
...this.secrets
|
|
133
|
+
},
|
|
134
|
+
//todo: provide health check options
|
|
135
|
+
// healthCheck: {
|
|
136
|
+
// command: [
|
|
137
|
+
// "CMD-SHELL",
|
|
138
|
+
// `timeout 10s /bin/sh -c ':> /dev/tcp/127.0.0.1/${props.containerPort}' || exit 1`
|
|
139
|
+
// ]
|
|
140
|
+
// },
|
|
141
|
+
logging: new aws_ecs_1.AwsLogDriver({
|
|
142
|
+
streamPrefix: `/ecs/${props.clusterName}/${props.serviceName}`,
|
|
143
|
+
logRetention: 14
|
|
144
|
+
}),
|
|
145
|
+
portMappings: props.containerPort
|
|
146
|
+
? [{ containerPort: props.containerPort }]
|
|
147
|
+
: [{ containerPort: 80 }]
|
|
148
|
+
});
|
|
149
|
+
(0, tagResource_1.default)(this.containerDefinition, props.tags);
|
|
150
|
+
}
|
|
151
|
+
addFargateService(props) {
|
|
152
|
+
this.fargateService = new aws_ecs_1.FargateService(this, `${props.serviceName}FargateService`, {
|
|
153
|
+
circuitBreaker: { rollback: true },
|
|
154
|
+
cluster: this.cluster,
|
|
155
|
+
desiredCount: 2,
|
|
156
|
+
enableECSManagedTags: true,
|
|
157
|
+
enableExecuteCommand: true,
|
|
158
|
+
healthCheckGracePeriod: aws_cdk_lib_1.Duration.seconds(60),
|
|
159
|
+
propagateTags: aws_ecs_1.PropagatedTagSource.SERVICE,
|
|
160
|
+
serviceName: `${props.serviceName}`,
|
|
161
|
+
taskDefinition: this.taskDefinition
|
|
162
|
+
});
|
|
163
|
+
(0, tagResource_1.default)(this.fargateService, props.tags);
|
|
164
|
+
}
|
|
165
|
+
addScalingPolicy(props) {
|
|
166
|
+
this.scalingPolicy = new aws_applicationautoscaling_1.TargetTrackingScalingPolicy(this, `${props.serviceName}ScalingPolicy`, {
|
|
167
|
+
policyName: `${props.serviceName}ScalingPolicy`,
|
|
168
|
+
scalingTarget: new aws_applicationautoscaling_1.ScalableTarget(this, `${props.serviceName}scalableTarget`, {
|
|
169
|
+
maxCapacity: 10,
|
|
170
|
+
minCapacity: 2,
|
|
171
|
+
resourceId: `service/${this.cluster.clusterName}/${this.fargateService.serviceName}`,
|
|
172
|
+
scalableDimension: "ecs:service:DesiredCount",
|
|
173
|
+
serviceNamespace: aws_applicationautoscaling_1.ServiceNamespace.ECS
|
|
174
|
+
}),
|
|
175
|
+
targetValue: 50,
|
|
176
|
+
scaleOutCooldown: aws_cdk_lib_1.Duration.seconds(60),
|
|
177
|
+
scaleInCooldown: aws_cdk_lib_1.Duration.seconds(60),
|
|
178
|
+
predefinedMetric: props.scalingType == ScalingType.MEMORY
|
|
179
|
+
? aws_applicationautoscaling_1.PredefinedMetric.ECS_SERVICE_AVERAGE_MEMORY_UTILIZATION
|
|
180
|
+
: aws_applicationautoscaling_1.PredefinedMetric.ECS_SERVICE_AVERAGE_CPU_UTILIZATION
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
registerLoadBalancerTargets(props) {
|
|
184
|
+
this.fargateService.registerLoadBalancerTargets({
|
|
185
|
+
containerName: this.containerDefinition.containerName,
|
|
186
|
+
containerPort: this.containerDefinition.containerPort,
|
|
187
|
+
newTargetGroupId: `${props.serviceName}TargetGroup`,
|
|
188
|
+
listener: aws_ecs_1.ListenerConfig.applicationListener(this.loadBalancerListener, {
|
|
189
|
+
port: props.containerPort,
|
|
190
|
+
protocol: aws_elasticloadbalancingv2_1.ApplicationProtocol.HTTP,
|
|
191
|
+
healthCheck: {
|
|
192
|
+
interval: aws_cdk_lib_1.Duration.seconds(120),
|
|
193
|
+
path: props.healthCheckPath || "/",
|
|
194
|
+
port: `${props.containerPort}` || "80",
|
|
195
|
+
timeout: aws_cdk_lib_1.Duration.seconds(10)
|
|
196
|
+
}
|
|
197
|
+
})
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
addLoadBalancer(props) {
|
|
201
|
+
this.loadBalancer = new aws_elasticloadbalancingv2_1.ApplicationLoadBalancer(this, `${props.clusterName}LoadBalancer`, {
|
|
202
|
+
vpc: this.cluster.vpc,
|
|
203
|
+
internetFacing: true,
|
|
204
|
+
loadBalancerName: `${props.serviceName}LoadBalancer`,
|
|
205
|
+
vpcSubnets: {
|
|
206
|
+
subnetType: aws_ec2_1.SubnetType.PUBLIC
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
(0, tagResource_1.default)(this.loadBalancer, props.tags);
|
|
210
|
+
}
|
|
211
|
+
addLoadBalancerListener(props) {
|
|
212
|
+
if (!!this.certificate) {
|
|
213
|
+
this.loadBalancerListener = this.loadBalancer.addListener(`${props.serviceName}Listener`, {
|
|
214
|
+
port: props.protocol == Protocol.HTTP ? 80 : 443,
|
|
215
|
+
certificates: [this.certificate]
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this.loadBalancerListener = this.loadBalancer.addListener(`${props.serviceName}Listener`, {
|
|
220
|
+
port: props.protocol == Protocol.HTTP ? 80 : 443,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
(0, tagResource_1.default)(this.loadBalancerListener, props.tags);
|
|
224
|
+
}
|
|
225
|
+
addHostedZone(props) {
|
|
226
|
+
if (!props.parentDomain)
|
|
227
|
+
return;
|
|
228
|
+
this.hostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, "hostedZone", {
|
|
229
|
+
hostedZoneId: aws_cdk_lib_1.Fn.importValue(`${props.parentDomain.split(".").join("")}HostedZoneId`),
|
|
230
|
+
zoneName: props.parentDomain
|
|
231
|
+
});
|
|
232
|
+
this.certificate = new aws_certificatemanager_1.Certificate(this, `${props.serviceName}Certificate`, {
|
|
233
|
+
domainName: `${props.serviceName}.${props.clusterName}.${props.parentDomain}`,
|
|
234
|
+
validation: aws_certificatemanager_1.CertificateValidation.fromDns(this.hostedZone)
|
|
235
|
+
});
|
|
236
|
+
this.aRecord = new aws_route53_1.ARecord(this, `${props.serviceName}.${props.clusterName}.${props.parentDomain}ARecord`, {
|
|
237
|
+
recordName: `${props.serviceName}.${props.clusterName}.${props.parentDomain}`,
|
|
238
|
+
zone: this.hostedZone,
|
|
239
|
+
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.LoadBalancerTarget(this.loadBalancer))
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
getImage(props) {
|
|
243
|
+
if (!props.ecrRepository)
|
|
244
|
+
return aws_ecs_1.ContainerImage.fromRegistry("amazon/amazon-ecs-sample");
|
|
245
|
+
if (props.ecrRepository instanceof aws_ecs_1.ContainerImage)
|
|
246
|
+
return props.ecrRepository;
|
|
247
|
+
if (props.ecrRepository instanceof aws_ecr_1.Repository) {
|
|
248
|
+
return aws_ecs_1.ContainerImage.fromEcrRepository(props.ecrRepository, "latest");
|
|
249
|
+
}
|
|
250
|
+
return aws_ecs_1.ContainerImage.fromRegistry("amazon/amazon-ecs-sample");
|
|
251
|
+
}
|
|
252
|
+
static build(id, props) {
|
|
253
|
+
return (sb) => {
|
|
254
|
+
const newProps = {
|
|
255
|
+
...props,
|
|
256
|
+
...{
|
|
257
|
+
vpc: sb.getNetwork() || props.vpc
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
return new this(sb.getStack(), id, newProps);
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.default = FargateCluster;
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBVTZCO0FBQzdCLGlEQU02QjtBQUM3QiwyQ0FBdUM7QUFFdkMsNkNBQXdEO0FBQ3hELHVGQUlnRDtBQUNoRCw0REFBcUQ7QUFDckQsaURBUTZCO0FBQzdCLHVGQUtnRDtBQUNoRCxpREFBMEQ7QUFDMUQsdUVBQXdEO0FBQ3hELCtFQUc0QztBQUM1Qyx5REFBeUY7QUFDekYseUVBQXFFO0FBQ3JFLGlEQUFpRDtBQUVqRCxJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsdUNBQUksQ0FBQTtJQUNKLHlDQUFLLENBQUE7QUFDUCxDQUFDLEVBSFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFHbkI7QUFFRCxJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsc0RBQTBELENBQUE7SUFDMUQsNERBQWdFLENBQUE7QUFDbEUsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBb0NELE1BQXFCLGNBQWUsU0FBUSxzQkFBUztJQW1CbkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTFgsWUFBTyxHQUVYLEVBQUUsQ0FBQztRQUtMLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QixJQUFJLENBQUMs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LENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FDVixFQUFVLEVBQ1YsS0FBMEI7UUFFMUIsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixNQUFNLFFBQVEsR0FBd0I7Z0JBQ3BDLEdBQUcsS0FBSztnQkFDUixHQUFHO29CQUNELEdBQUcsRUFBRyxFQUFFLENBQUMsVUFBVSxFQUFXLElBQUksS0FBSyxDQUFDLEdBQUc7aUJBQzVDO2FBQ0YsQ0FBQztZQUNGLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3VEQsaUNBNlRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXdzTG9nRHJpdmVyLFxuICBDbHVzdGVyIGFzIENka0NsdXN0ZXIsXG4gIENvbnRhaW5lckltYWdlLFxuICBGYXJnYXRlU2VydmljZSxcbiAgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uLFxuICBMaXN0ZW5lckNvbmZpZyxcbiAgUHJvcGFnYXRlZFRhZ1NvdXJjZSxcbiAgUmVwb3NpdG9yeUltYWdlLFxuICBDb250YWluZXJEZWZpbml0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgSUNvbm5lY3RhYmxlLFxuICBJVnBjLFxuICBQb3J0LFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4sIFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgQXBwbGljYXRpb25Qcm90b2NvbFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB0YWdSZXNvdXJjZSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdGFnUmVzb3VyY2VcIjtcbmltcG9ydCB7XG4gIENvbXBvc2l0ZVByaW5jaXBhbCxcbiAgRWZmZWN0LFxuICBJTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5RG9jdW1lbnQsXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgUm9sZSxcbiAgU2VydmljZVByaW5jaXBhbFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgUHJlZGVmaW5lZE1ldHJpYyxcbiAgU2NhbGFibGVUYXJnZXQsXG4gIFNlcnZpY2VOYW1lc3BhY2UsXG4gIFRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmdcIjtcbmltcG9ydCB7IFNlY3JldCBhcyBFY3NTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGUsXG4gIENlcnRpZmljYXRlVmFsaWRhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgQVJlY29yZCwgSG9zdGVkWm9uZSwgUmVjb3JkVGFyZ2V0LCBJSG9zdGVkWm9uZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgTG9hZEJhbGFuY2VyVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuXG5leHBvcnQgZW51bSBQcm90b2NvbCB7XG4gIEhUVFAsXG4gIEhUVFBTXG59XG5cbmV4cG9ydCBlbnVtIFNjYWxpbmdUeXBlIHtcbiAgQ1BVID0gUHJlZGVmaW5lZE1ldHJpYy5FQ1NfU0VSVklDRV9BVkVSQUdFX0NQVV9VVElMSVpBVElPTixcbiAgTUVNT1JZID0gUHJlZGVmaW5lZE1ldHJpYy5FQ1NfU0VSVklDRV9BVkVSQUdFX01FTU9SWV9VVElMSVpBVElPTlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleVZhbHVlIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclNlY3JldCB7XG4gIFtrZXk6IHN0cmluZ106IFNlY3JldFZhbHVlO1xufVxuXG50eXBlIEZhcmdhdGVDbHVzdGVyUHJvcHMgPSB7XG4gIGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnkgfCBSZXBvc2l0b3J5SW1hZ2U7XG4gIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIGNvbnRhaW5lckNvbW1hbmQ/OiBzdHJpbmdbXTtcbiAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiBLZXlWYWx1ZTtcbiAgY29udGFpbmVyU2VjcmV0cz86IENvbnRhaW5lclNlY3JldDtcbiAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcbiAgY3B1PzogbnVtYmVyO1xuICBkYXRhYmFzZUNvbm5lY3Rpb246IElDb25uZWN0YWJsZTtcbiAgcGFyZW50RG9tYWluPzogc3RyaW5nOyAvLyBUT0RPOiBCcmVhayBvdXQgYSBIVFRQIGFuZCBIVFRQUyBzZXJ2aWNlIHdoZXJlIHRoaXMgaXMgb3B0aW9uYWxcbiAgZGVzaXJlZENvdW50PzogbnVtYmVyO1xuICBoZWFsdGhDaGVja1BhdGg/OiBzdHJpbmc7XG4gIGxpc3RlbmVyUG9ydD86IG51bWJlcjtcbiAgbWVtb3J5TGltaXRNaUI/OiBudW1iZXI7XG4gIHB1YmxpY0xvYWRCYWxhbmNlcj86IGJvb2xlYW47XG4gIHByb3RvY29sOiBQcm90b2NvbDtcbiAgc2NhbGluZ1R5cGU/OiBTY2FsaW5nVHlwZTtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdGFnczogS2V5VmFsdWU7XG4gIHRhc2tSb2xlSW5saW5lUG9saWNpZXM/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IFBvbGljeURvY3VtZW50O1xuICB9O1xuICB0YXNrUm9sZU1hbmFnZWdlZFBvbGljaWVzPzogSU1hbmFnZWRQb2xpY3lbXTtcbiAgdnBjPzogSVZwYztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZhcmdhdGVDbHVzdGVyIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGNsdXN0ZXI6IENka0NsdXN0ZXI7XG4gIHByaXZhdGUgbG9hZEJhbGFuY2VyOiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgcHJpdmF0ZSBleGVjdXRpb25Sb2xlOiBSb2xlO1xuICBwcml2YXRlIHRhc2tEZWZpbml0aW9uOiBGYXJnYXRlVGFza0RlZmluaXRpb247XG4gIHByaXZhdGUgY29udGFpbmVyRGVmaW5pdGlvbjogQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBmYXJnYXRlU2VydmljZTogRmFyZ2F0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc2NhbGluZ1BvbGljeTogVGFyZ2V0VHJhY2tpbmdTY2FsaW5nUG9saWN5O1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lO1xuICBwcml2YXRlIGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZTtcbiAgcHJpdmF0ZSBhUmVjb3JkOiBBUmVjb3JkO1xuICBwcml2YXRlIGxvYWRCYWxhbmNlckxpc3RlbmVyOiBBcHBsaWNhdGlvbkxpc3RlbmVyXG5cbiAgcHJpdmF0ZSBzZWNyZXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogRWNzU2VjcmV0O1xuICB9ID0ge307XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hZGRDbHVzdGVyKHByb3BzKVxuICAgIHRoaXMuYWRkU2VjcmV0cyhwcm9wcylcbiAgICB0aGlzLmFkZFRhc2tEZWZpbml0aW9uKHByb3BzKVxuICAgIHRoaXMuYWRkQ29udGFpbmVyRGVmaW5pdGlvbihwcm9wcylcbiAgICB0aGlzLmFkZEZhcmdhdGVTZXJ2aWNlKHByb3BzKVxuICAgIHRoaXMuYWRkTG9hZEJhbGFuY2VyKHByb3BzKVxuXG4gICAgaWYoISFwcm9wcy5wYXJlbnREb21haW4pIHRoaXMuYWRkSG9zdGVkWm9uZShwcm9wcylcblxuICAgIHRoaXMuYWRkTG9hZEJhbGFuY2VyTGlzdGVuZXIocHJvcHMpXG4gICAgdGhpcy5yZWdpc3RlckxvYWRCYWxhbmNlclRhcmdldHMocHJvcHMpXG5cbiAgICAvL3RvZG86IGZpeCBjb25uZWN0aW9ucyBub3Qgd29ya2luZyBhdXRvbWF0aWNhbGx5XG4gICAgdGhpcy5mYXJnYXRlU2VydmljZS5jb25uZWN0aW9ucy5hbGxvd1RvKHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbiwgUG9ydC5QT1NUR1JFUyk7XG4gIH1cblxuICBhZGRDbHVzdGVyKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5jbHVzdGVyID0gbmV3IENka0NsdXN0ZXIodGhpcywgYCR7cHJvcHMuY2x1c3Rlck5hbWV9YCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBjb250YWluZXJJbnNpZ2h0czogdHJ1ZSxcbiAgICAgIGVuYWJsZUZhcmdhdGVDYXBhY2l0eVByb3ZpZGVyczogdHJ1ZVxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuY2x1c3RlciwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRTZWNyZXRzKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgLy8gQ29udGFpbmVyIFNlY3JldHNcbiAgICBjb25zdCBjb250YWluZXJTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1TZWNyZXRgLFxuICAgICAgYC8ke3Byb3BzLmNsdXN0ZXJOYW1lfS8ke3Byb3BzLnNlcnZpY2VOYW1lfWBcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBzZWNyZXRGaWVsZCBpbiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICB0aGlzLnNlY3JldHNbc2VjcmV0RmllbGRdID0gRWNzU2VjcmV0LmZyb21TZWNyZXRzTWFuYWdlcihcbiAgICAgICAgY29udGFpbmVyU2VjcmV0LFxuICAgICAgICBzZWNyZXRGaWVsZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRFeGVjdXRpb25Sb2xlKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID0gbmV3IFJvbGUodGhpcywgYCR7cHJvcHMuc2VydmljZU5hbWV9RXhlY3V0aW9uUm9sZWAsIHtcbiAgICAgIHJvbGVOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1FeGVjdXRpb25Sb2xlYCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0gRXhlY3V0aW9uIFJvbGVgLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYW5hZ2VkUG9saWN5QXJuOlxuICAgICAgICAgICAgXCJhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3lcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wicmVhZFNlY3JldHNcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcInNlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlXCIsXG4gICAgICAgICAgICAgICAgXCJzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldFwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBTZXQgdGhpcyB0byB0aGUgc2VjcmV0IEFSTlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJkZWNyeXB0U2VjcmV0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wia21zOkRlY3J5cHRcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBTZXQgdGhpcyB0byB0aGUgS01TIEFyblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJlY3NFeGVjdXRlQ29tbWFuZFwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6Q3JlYXRlQ29udHJvbENoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZURhdGFDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuQ29udHJvbENoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5EYXRhQ2hhbm5lbFwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IENvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJlY3MtdGFza3MuYW1hem9uYXdzLmNvbVwiKVxuICAgICAgKVxuICAgIH0pO1xuICB9XG5cbiAgYWRkVGFza0RlZmluaXRpb24ocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IEZhcmdhdGVUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIGNwdTogcHJvcHMuY3B1IHx8IDI1NixcbiAgICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlLFxuICAgICAgICB0YXNrUm9sZTogbmV3IFJvbGUodGhpcywgYCR7cHJvcHMuc2VydmljZU5hbWV9VGFza1JvbGVgLCB7XG4gICAgICAgICAgcm9sZU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhc2tSb2xlYCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7cHJvcHMuc2VydmljZU5hbWV9IFRhc2sgUm9sZWAsXG4gICAgICAgICAgaW5saW5lUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlSW5saW5lUG9saWNpZXMsXG4gICAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBwcm9wcy50YXNrUm9sZU1hbmFnZWdlZFBvbGljaWVzLFxuICAgICAgICAgIGFzc3VtZWRCeTogbmV3IENvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiZWNzLXRhc2tzLmFtYXpvbmF3cy5jb21cIilcbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIgfHwgNTEyXG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLnRhc2tEZWZpbml0aW9uLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZENvbnRhaW5lckRlZmluaXRpb24ocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmNvbnRhaW5lckRlZmluaXRpb24gPSB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfUNvbnRhaW5lckRlZmluaXRpb25gLFxuICAgICAge1xuICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZShwcm9wcyksXG4gICAgICAgIGNvbnRhaW5lck5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLnByb3BzLmNvbnRhaW5lckVudmlyb25tZW50XG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1hbmQ6IHByb3BzLmNvbnRhaW5lckNvbW1hbmQsXG4gICAgICAgIHNlY3JldHM6IHtcbiAgICAgICAgICAuLi50aGlzLnNlY3JldHNcbiAgICAgICAgfSxcbiAgICAgICAgLy90b2RvOiBwcm92aWRlIGhlYWx0aCBjaGVjayBvcHRpb25zXG4gICAgICAgIC8vIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIC8vICAgY29tbWFuZDogW1xuICAgICAgICAvLyAgICAgXCJDTUQtU0hFTExcIixcbiAgICAgICAgLy8gICAgIGB0aW1lb3V0IDEwcyAvYmluL3NoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvJHtwcm9wcy5jb250YWluZXJQb3J0fScgfHwgZXhpdCAxYFxuICAgICAgICAvLyAgIF1cbiAgICAgICAgLy8gfSxcbiAgICAgICAgbG9nZ2luZzogbmV3IEF3c0xvZ0RyaXZlcih7XG4gICAgICAgICAgc3RyZWFtUHJlZml4OiBgL2Vjcy8ke3Byb3BzLmNsdXN0ZXJOYW1lfS8ke3Byb3BzLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgbG9nUmV0ZW50aW9uOiAxNFxuICAgICAgICB9KSxcbiAgICAgICAgcG9ydE1hcHBpbmdzOiBwcm9wcy5jb250YWluZXJQb3J0XG4gICAgICAgICAgPyBbeyBjb250YWluZXJQb3J0OiBwcm9wcy5jb250YWluZXJQb3J0IH1dXG4gICAgICAgICAgOiBbeyBjb250YWluZXJQb3J0OiA4MCB9XVxuICAgICAgfVxuICAgICk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5jb250YWluZXJEZWZpbml0aW9uLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZEZhcmdhdGVTZXJ2aWNlKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5mYXJnYXRlU2VydmljZSA9IG5ldyBGYXJnYXRlU2VydmljZShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1GYXJnYXRlU2VydmljZWAsXG4gICAgICB7XG4gICAgICAgIGNpcmN1aXRCcmVha2VyOiB7IHJvbGxiYWNrOiB0cnVlIH0sXG4gICAgICAgIGNsdXN0ZXI6IHRoaXMuY2x1c3RlcixcbiAgICAgICAgZGVzaXJlZENvdW50OiAyLFxuICAgICAgICBlbmFibGVFQ1NNYW5hZ2VkVGFnczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXG4gICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBwcm9wYWdhdGVUYWdzOiBQcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1gLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvblxuICAgICAgfVxuICAgICk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5mYXJnYXRlU2VydmljZSwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRTY2FsaW5nUG9saWN5KHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5zY2FsaW5nUG9saWN5ID0gbmV3IFRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1TY2FsaW5nUG9saWN5YCwge1xuICAgICAgcG9saWN5TmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9U2NhbGluZ1BvbGljeWAsXG4gICAgICBzY2FsaW5nVGFyZ2V0OiBuZXcgU2NhbGFibGVUYXJnZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfXNjYWxhYmxlVGFyZ2V0YCxcbiAgICAgICAge1xuICAgICAgICAgIG1heENhcGFjaXR5OiAxMCxcbiAgICAgICAgICBtaW5DYXBhY2l0eTogMixcbiAgICAgICAgICByZXNvdXJjZUlkOiBgc2VydmljZS8ke3RoaXMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHt0aGlzLmZhcmdhdGVTZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgc2NhbGFibGVEaW1lbnNpb246IFwiZWNzOnNlcnZpY2U6RGVzaXJlZENvdW50XCIsXG4gICAgICAgICAgc2VydmljZU5hbWVzcGFjZTogU2VydmljZU5hbWVzcGFjZS5FQ1NcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHRhcmdldFZhbHVlOiA1MCxcbiAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgc2NhbGVJbkNvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIHByZWRlZmluZWRNZXRyaWM6XG4gICAgICAgIHByb3BzLnNjYWxpbmdUeXBlID09IFNjYWxpbmdUeXBlLk1FTU9SWVxuICAgICAgICAgID8gUHJlZGVmaW5lZE1ldHJpYy5FQ1NfU0VSVklDRV9BVkVSQUdFX01FTU9SWV9VVElMSVpBVElPTlxuICAgICAgICAgIDogUHJlZGVmaW5lZE1ldHJpYy5FQ1NfU0VSVklDRV9BVkVSQUdFX0NQVV9VVElMSVpBVElPTlxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5mYXJnYXRlU2VydmljZS5yZWdpc3RlckxvYWRCYWxhbmNlclRhcmdldHMoe1xuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5jb250YWluZXJEZWZpbml0aW9uLmNvbnRhaW5lck5hbWUsXG4gICAgICBjb250YWluZXJQb3J0OiB0aGlzLmNvbnRhaW5lckRlZmluaXRpb24uY29udGFpbmVyUG9ydCxcbiAgICAgIG5ld1RhcmdldEdyb3VwSWQ6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhcmdldEdyb3VwYCxcbiAgICAgIGxpc3RlbmVyOiBMaXN0ZW5lckNvbmZpZy5hcHBsaWNhdGlvbkxpc3RlbmVyKHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIsIHtcbiAgICAgICAgcG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMjApLFxuICAgICAgICAgIHBhdGg6IHByb3BzLmhlYWx0aENoZWNrUGF0aCB8fCBcIi9cIixcbiAgICAgICAgICBwb3J0OiBgJHtwcm9wcy5jb250YWluZXJQb3J0fWAgfHwgXCI4MFwiLFxuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICBhZGRMb2FkQmFsYW5jZXIocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmxvYWRCYWxhbmNlciA9IG5ldyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1Mb2FkQmFsYW5jZXJgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMuY2x1c3Rlci52cGMsXG4gICAgICAgIGludGVybmV0RmFjaW5nOiB0cnVlLFxuICAgICAgICBsb2FkQmFsYW5jZXJOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1Mb2FkQmFsYW5jZXJgLFxuICAgICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5sb2FkQmFsYW5jZXIsIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkTG9hZEJhbGFuY2VyTGlzdGVuZXIocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICBpZiAoISF0aGlzLmNlcnRpZmljYXRlKSB7XG4gICAgICB0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyID0gdGhpcy5sb2FkQmFsYW5jZXIuYWRkTGlzdGVuZXIoYCR7cHJvcHMuc2VydmljZU5hbWV9TGlzdGVuZXJgLCB7XG4gICAgICAgIHBvcnQ6IHByb3BzLnByb3RvY29sID09IFByb3RvY29sLkhUVFAgPyA4MCA6IDQ0MyxcbiAgICAgICAgY2VydGlmaWNhdGVzOiBbdGhpcy5jZXJ0aWZpY2F0ZV1cbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIgPSB0aGlzLmxvYWRCYWxhbmNlci5hZGRMaXN0ZW5lcihgJHtwcm9wcy5zZXJ2aWNlTmFtZX1MaXN0ZW5lcmAsIHtcbiAgICAgICAgcG9ydDogcHJvcHMucHJvdG9jb2wgPT0gUHJvdG9jb2wuSFRUUCA/IDgwIDogNDQzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGFnUmVzb3VyY2UodGhpcy5sb2FkQmFsYW5jZXJMaXN0ZW5lciwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRIb3N0ZWRab25lKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy5wYXJlbnREb21haW4pIHJldHVybjtcblxuICAgIHRoaXMuaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsIFwiaG9zdGVkWm9uZVwiLCB7XG4gICAgICBob3N0ZWRab25lSWQ6IEZuLmltcG9ydFZhbHVlKFxuICAgICAgICBgJHtwcm9wcy5wYXJlbnREb21haW4uc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYFxuICAgICAgKSxcbiAgICAgIHpvbmVOYW1lOiBwcm9wcy5wYXJlbnREb21haW5cbiAgICB9KTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBuZXcgQ2VydGlmaWNhdGUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q2VydGlmaWNhdGVgLFxuICAgICAge1xuICAgICAgICBkb21haW5OYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59YCxcbiAgICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmFSZWNvcmQgPSBuZXcgQVJlY29yZChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59QVJlY29yZGAsXG4gICAgICB7XG4gICAgICAgIHJlY29yZE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1gLFxuICAgICAgICB6b25lOiB0aGlzLmhvc3RlZFpvbmUsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KHRoaXMubG9hZEJhbGFuY2VyKSlcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0SW1hZ2UocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpOiBDb250YWluZXJJbWFnZSB7XG4gICAgaWYgKCFwcm9wcy5lY3JSZXBvc2l0b3J5KVxuICAgICAgcmV0dXJuIENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiKTtcbiAgICBpZiAocHJvcHMuZWNyUmVwb3NpdG9yeSBpbnN0YW5jZW9mIENvbnRhaW5lckltYWdlKVxuICAgICAgcmV0dXJuIHByb3BzLmVjclJlcG9zaXRvcnk7XG4gICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSB7XG4gICAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbUVjclJlcG9zaXRvcnkocHJvcHMuZWNyUmVwb3NpdG9yeSwgXCJsYXRlc3RcIik7XG4gICAgfVxuICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIik7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBJVnBjKSB8fCBwcm9wcy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgbmV3UHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
import { SingletonFunction, Code, Runtime } from "aws-cdk-lib/aws-lambda";
|
|
1
|
+
import { SingletonFunction, Function, Code, Runtime } from "aws-cdk-lib/aws-lambda";
|
|
2
2
|
import { PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
3
3
|
import { Construct } from "constructs";
|
|
4
4
|
import { Role } from "../iam/role";
|
|
5
|
-
export interface
|
|
5
|
+
export interface lambdaFunctionProps {
|
|
6
6
|
code: Code;
|
|
7
7
|
handler: string;
|
|
8
|
+
lambdaDescription: string;
|
|
8
9
|
roleDescription: string;
|
|
9
10
|
runtime: Runtime;
|
|
10
|
-
uuid?: string;
|
|
11
11
|
inlinePolicy: {
|
|
12
12
|
[name: string]: PolicyDocument;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export interface singletonFunctionProps extends lambdaFunctionProps {
|
|
16
|
+
uuid?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class singletonFunction extends SingletonFunction {
|
|
19
|
+
role: Role;
|
|
20
|
+
constructor(scope: Construct, id: string, props: singletonFunctionProps);
|
|
21
|
+
}
|
|
22
|
+
export declare class lambdaFunction extends Function {
|
|
16
23
|
role: Role;
|
|
17
|
-
constructor(scope: Construct, id: string, props:
|
|
24
|
+
constructor(scope: Construct, id: string, props: lambdaFunctionProps);
|
|
18
25
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.lambdaFunction = exports.singletonFunction = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
6
6
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
7
|
const uuid_1 = require("uuid");
|
|
8
8
|
const role_1 = require("../iam/role");
|
|
9
|
-
class
|
|
9
|
+
class singletonFunction extends aws_lambda_1.SingletonFunction {
|
|
10
10
|
constructor(scope, id, props) {
|
|
11
11
|
super(scope, id, {
|
|
12
12
|
...props,
|
|
13
13
|
uuid: (0, uuid_1.v4)(),
|
|
14
14
|
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
15
|
-
|
|
15
|
+
description: props.lambdaDescription || `${id} singleton lambda`
|
|
16
16
|
});
|
|
17
17
|
this.role = new role_1.Role(this, `${id}LambdaRole`, {
|
|
18
18
|
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
|
@@ -24,5 +24,23 @@ class lambdaSingletonFunction extends aws_lambda_1.SingletonFunction {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
exports.
|
|
28
|
-
|
|
27
|
+
exports.singletonFunction = singletonFunction;
|
|
28
|
+
class lambdaFunction extends aws_lambda_1.Function {
|
|
29
|
+
constructor(scope, id, props) {
|
|
30
|
+
super(scope, id, {
|
|
31
|
+
...props,
|
|
32
|
+
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
33
|
+
description: props.lambdaDescription || `${id} Lambda`
|
|
34
|
+
});
|
|
35
|
+
this.role = new role_1.Role(this, `${id}LambdaRole`, {
|
|
36
|
+
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
|
37
|
+
description: props.roleDescription || `${id} lambda IAM role`,
|
|
38
|
+
inlinePolicies: props.inlinePolicy,
|
|
39
|
+
managedPolicies: [
|
|
40
|
+
aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole")
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.lambdaFunction = lambdaFunction;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLHVEQUtnQztBQUNoQyxpREFJNkI7QUFFN0IsK0JBQWtDO0FBRWxDLHNDQUFtQztBQWlCbkMsTUFBYSxpQkFBa0IsU0FBUSw4QkFBaUI7SUFFdEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxJQUFBLFNBQUksR0FBRTtZQUNaLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUUsbUJBQW1CO1NBQ2pFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7WUFDNUMsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsV0FBVyxFQUFFLEtBQUssQ0FBQyxlQUFlLElBQUksR0FBRyxFQUFFLGtCQUFrQjtZQUM3RCxjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDbEMsZUFBZSxFQUFFO2dCQUNmLHVCQUFhLENBQUMsd0JBQXdCLENBQ3BDLDBDQUEwQyxDQUMzQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBckJELDhDQXFCQztBQUVELE1BQWEsY0FBZSxTQUFRLHFCQUFRO0lBRTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsaUJBQWlCLElBQUksR0FBRyxFQUFFLFNBQVM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtZQUM1QyxTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUN2RCxXQUFXLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxHQUFHLEVBQUUsa0JBQWtCO1lBQzdELGNBQWMsRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNsQyxlQUFlLEVBQUU7Z0JBQ2YsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FDcEMsMENBQTBDLENBQzNDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwQkQsd0NBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFNpbmdsZXRvbkZ1bmN0aW9uLFxuICBGdW5jdGlvbixcbiAgQ29kZSxcbiAgUnVudGltZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtcbiAgUG9saWN5RG9jdW1lbnQsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG4gIE1hbmFnZWRQb2xpY3lcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi9pYW0vcm9sZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIGxhbWJkYUZ1bmN0aW9uUHJvcHMge1xuICBjb2RlOiBDb2RlO1xuICBoYW5kbGVyOiBzdHJpbmc7XG4gIGxhbWJkYURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJvbGVEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBydW50aW1lOiBSdW50aW1lO1xuICBpbmxpbmVQb2xpY3k6IHtcbiAgICBbbmFtZTogc3RyaW5nXTogUG9saWN5RG9jdW1lbnQ7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2Ugc2luZ2xldG9uRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYUZ1bmN0aW9uUHJvcHMge1xuICB1dWlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3Mgc2luZ2xldG9uRnVuY3Rpb24gZXh0ZW5kcyBTaW5nbGV0b25GdW5jdGlvbiB7XG4gIHB1YmxpYyByb2xlOiBSb2xlO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogc2luZ2xldG9uRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB1dWlkOiB1dWlkKCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMubGFtYmRhRGVzY3JpcHRpb24gfHwgYCR7aWR9IHNpbmdsZXRvbiBsYW1iZGFgXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgJHtpZH1MYW1iZGFSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLnJvbGVEZXNjcmlwdGlvbiB8fCBgJHtpZH0gTGFtYmRhIElBTSByb2xlYCxcbiAgICAgIGlubGluZVBvbGljaWVzOiBwcm9wcy5pbmxpbmVQb2xpY3ksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlXCJcbiAgICAgICAgKVxuICAgICAgXVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBsYW1iZGFGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgcHVibGljIHJvbGU6IFJvbGU7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBsYW1iZGFGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5sYW1iZGFEZXNjcmlwdGlvbiB8fCBgJHtpZH0gTGFtYmRhYFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gbmV3IFJvbGUodGhpcywgYCR7aWR9TGFtYmRhUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5yb2xlRGVzY3JpcHRpb24gfHwgYCR7aWR9IGxhbWJkYSBJQU0gcm9sZWAsXG4gICAgICBpbmxpbmVQb2xpY2llczogcHJvcHMuaW5saW5lUG9saWN5LFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgIFwic2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZVwiXG4gICAgICAgIClcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -6,9 +6,10 @@ class Ecr extends aws_ecr_1.Repository {
|
|
|
6
6
|
constructor(scope, id, props) {
|
|
7
7
|
super(scope, id, Ecr.getRepositoryProps(props));
|
|
8
8
|
this.outputs = [];
|
|
9
|
-
this.outputs.push(new aws_cdk_lib_1.CfnOutput(this, "
|
|
9
|
+
this.outputs.push(new aws_cdk_lib_1.CfnOutput(this, "ecrRepository", {
|
|
10
|
+
key: "RepositoryName",
|
|
10
11
|
value: this.repositoryName,
|
|
11
|
-
exportName:
|
|
12
|
+
exportName: `${id}RepositoryName`
|
|
12
13
|
}));
|
|
13
14
|
}
|
|
14
15
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -26,4 +27,4 @@ class Ecr extends aws_ecr_1.Repository {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
exports.default = Ecr;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvZWNyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQU12RCxNQUFxQixHQUFJLFNBQVEsb0JBQVU7SUFHekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQjtRQUN4RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUgxQyxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUtoQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDZixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsZ0JBQWdCO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtTQUNsQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWdCO1FBQ3hDLHVCQUF1QjtRQUN2QixvRUFBb0U7UUFDcEUsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGtCQUFrQixFQUFFLHVCQUFhLENBQUMsT0FBTztZQUN6QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBN0JELHNCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICBSZXBvc2l0b3J5UHJvcHMsXG4gIFRhZ011dGFiaWxpdHlcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5pbXBvcnQgeyBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYXdzU3RhY2tcIjtcblxuaW50ZXJmYWNlIEVjclByb3BzIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjciBleHRlbmRzIFJlcG9zaXRvcnkge1xuICBwcml2YXRlIG91dHB1dHM6IENmbk91dHB1dFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBFY3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgRWNyLmdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcykpO1xuXG4gICAgdGhpcy5vdXRwdXRzLnB1c2goXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiZWNyUmVwb3NpdG9yeVwiLCB7XG4gICAgICAgIGtleTogXCJSZXBvc2l0b3J5TmFtZVwiLFxuICAgICAgICB2YWx1ZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7aWR9UmVwb3NpdG9yeU5hbWVgXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHN0YXRpYyBnZXRSZXBvc2l0b3J5UHJvcHMocHJvcHM/OiBFY3JQcm9wcyk6IFJlcG9zaXRvcnlQcm9wcyB7XG4gICAgLy8gdG9kbzogbGlmZUN5Y2xlUnVsZXNcbiAgICAvLyB0b2RvOiBFbmNyeXB0aW9uICYgRW5jcnlwdGlvbktleSAoZGVmYXVsdCBpcyBBV1MgbWFuYWdlZCBLTVMga2V5KVxuICAgIHJldHVybiB7XG4gICAgICBpbWFnZVNjYW5PblB1c2g6IHRydWUsXG4gICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IFRhZ011dGFiaWxpdHkuTVVUQUJMRSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKTogKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IEVjciB7XG4gICAgcmV0dXJuIChzY29wZTogU3RhY2tCdWlsZGVyKSA9PiBuZXcgRWNyKHNjb3BlLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { Construct } from "constructs";
|
|
2
2
|
import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
3
3
|
import { StackBuilder } from "../awsStack";
|
|
4
|
+
import { KeyValue } from "../compute/ecs";
|
|
5
|
+
interface VpcProps extends ec2.VpcProps {
|
|
6
|
+
environment?: string;
|
|
7
|
+
availabilityZones?: string[];
|
|
8
|
+
tags: KeyValue;
|
|
9
|
+
}
|
|
4
10
|
export declare class Vpc extends ec2.Vpc {
|
|
5
|
-
constructor(scope: Construct, id: string, props?:
|
|
6
|
-
static
|
|
11
|
+
constructor(scope: Construct, id: string, props?: VpcProps);
|
|
12
|
+
static ipAddresses(props?: VpcProps): ec2.IIpAddresses | undefined;
|
|
13
|
+
static build(id: string, props?: VpcProps): (sb: StackBuilder) => Construct;
|
|
7
14
|
/**
|
|
8
15
|
* Imports a pre-existing VPC Resource into your Stack
|
|
9
16
|
*
|
|
@@ -16,3 +23,4 @@ export declare class Vpc extends ec2.Vpc {
|
|
|
16
23
|
*/
|
|
17
24
|
static import(id: string, vpcStackName: string): (sb: StackBuilder) => Construct;
|
|
18
25
|
}
|
|
26
|
+
export {};
|
|
@@ -4,12 +4,14 @@ exports.Vpc = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
6
6
|
const logGroup_1 = require("../logging/logGroup");
|
|
7
|
+
const getStackOutput_1 = require("../../../utils/getStackOutput");
|
|
8
|
+
const AVAILABILITY_ZONES = ["us-east-1a", "us-east-1b", "us-east-1c"];
|
|
7
9
|
class Vpc extends ec2.Vpc {
|
|
8
10
|
constructor(scope, id, props) {
|
|
9
11
|
super(scope, `vpc-${id}`, {
|
|
10
12
|
...props,
|
|
11
13
|
vpcName: `vpc-${id}`,
|
|
12
|
-
availabilityZones:
|
|
14
|
+
availabilityZones: AVAILABILITY_ZONES,
|
|
13
15
|
flowLogs: {
|
|
14
16
|
[`${id}VpcFlowLogs`]: {
|
|
15
17
|
destination: ec2.FlowLogDestination.toCloudWatchLogs(new logGroup_1.LogGroup(scope, `${id}FlowLogGroup`, {
|
|
@@ -18,13 +20,21 @@ class Vpc extends ec2.Vpc {
|
|
|
18
20
|
}))
|
|
19
21
|
}
|
|
20
22
|
},
|
|
21
|
-
ipAddresses:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
ipAddresses: Vpc.ipAddresses(props)
|
|
24
|
+
});
|
|
25
|
+
// Required for the VPC to use the IPAM Pool to provsion IP addresses
|
|
26
|
+
aws_cdk_lib_1.Tags.of(this).add("fjall:operations:pool", `${props?.environment}`);
|
|
27
|
+
}
|
|
28
|
+
static ipAddresses(props) {
|
|
29
|
+
const ipv4IpamPoolId = (0, getStackOutput_1.default)("IpamPool", `${props?.environment}IpamPoolId`);
|
|
30
|
+
// Default to unspecified ipAddresses if unable to read from stack output
|
|
31
|
+
if (!ipv4IpamPoolId)
|
|
32
|
+
return undefined;
|
|
33
|
+
return ec2.IpAddresses.awsIpamAllocation({
|
|
34
|
+
ipv4IpamPoolId: ipv4IpamPoolId,
|
|
35
|
+
ipv4NetmaskLength: 20,
|
|
36
|
+
defaultSubnetIpv4NetmaskLength: 23
|
|
26
37
|
});
|
|
27
|
-
aws_cdk_lib_1.Tags.of(this).add("Pool", "Production");
|
|
28
38
|
}
|
|
29
39
|
static build(id, props) {
|
|
30
40
|
return (sb) => {
|
|
@@ -50,4 +60,4 @@ class Vpc extends ec2.Vpc {
|
|
|
50
60
|
}
|
|
51
61
|
}
|
|
52
62
|
exports.Vpc = Vpc;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvdnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUFrRDtBQUNsRCwyQ0FBMkM7QUFHM0Msa0RBQStDO0FBQy9DLGtFQUEyRDtBQVMzRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUV0RSxNQUFhLEdBQUksU0FBUSxHQUFHLENBQUMsR0FBRztJQUM5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUN4QixHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDcEIsaUJBQWlCLEVBQUUsa0JBQWtCO1lBQ3JDLFFBQVEsRUFBRTtnQkFDUixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRTtvQkFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDbEQsSUFBSSxtQkFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO3dCQUN2QyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRzt3QkFDeEMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztxQkFDckMsQ0FBQyxDQUNIO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBRUgscUVBQXFFO1FBQ3JFLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUEsd0JBQWMsRUFDbkMsVUFBVSxFQUNWLEdBQUcsS0FBSyxFQUFFLFdBQVcsWUFBWSxDQUNsQyxDQUFDO1FBRUYseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFdEMsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsOEJBQThCLEVBQUUsRUFBRTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxPQUFPLEVBQUUsR0FBRyxZQUFZLElBQUksRUFBRSxFQUFFO2FBQ2pDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhFRCxrQkFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGFncywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9hd3NTdGFja1wiO1xuaW1wb3J0IHsgTG9nR3JvdXAgfSBmcm9tIFwiLi4vbG9nZ2luZy9sb2dHcm91cFwiO1xuaW1wb3J0IGdldFN0YWNrT3V0cHV0IGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRTdGFja091dHB1dFwiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9lY3NcIjtcblxuaW50ZXJmYWNlIFZwY1Byb3BzIGV4dGVuZHMgZWMyLlZwY1Byb3BzIHtcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG4gIHRhZ3M6IEtleVZhbHVlO1xufVxuXG5jb25zdCBBVkFJTEFCSUxJVFlfWk9ORVMgPSBbXCJ1cy1lYXN0LTFhXCIsIFwidXMtZWFzdC0xYlwiLCBcInVzLWVhc3QtMWNcIl07XG5cbmV4cG9ydCBjbGFzcyBWcGMgZXh0ZW5kcyBlYzIuVnBjIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBgdnBjLSR7aWR9YCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB2cGNOYW1lOiBgdnBjLSR7aWR9YCxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBBVkFJTEFCSUxJVFlfWk9ORVMsXG4gICAgICBmbG93TG9nczoge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvQ2xvdWRXYXRjaExvZ3MoXG4gICAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlwQWRkcmVzc2VzOiBWcGMuaXBBZGRyZXNzZXMocHJvcHMpXG4gICAgfSk7XG5cbiAgICAvLyBSZXF1aXJlZCBmb3IgdGhlIFZQQyB0byB1c2UgdGhlIElQQU0gUG9vbCB0byBwcm92c2lvbiBJUCBhZGRyZXNzZXNcbiAgICBUYWdzLm9mKHRoaXMpLmFkZChcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLCBgJHtwcm9wcz8uZW52aXJvbm1lbnR9YCk7XG4gIH1cblxuICBzdGF0aWMgaXBBZGRyZXNzZXMocHJvcHM/OiBWcGNQcm9wcykge1xuICAgIGNvbnN0IGlwdjRJcGFtUG9vbElkID0gZ2V0U3RhY2tPdXRwdXQoXG4gICAgICBcIklwYW1Qb29sXCIsXG4gICAgICBgJHtwcm9wcz8uZW52aXJvbm1lbnR9SXBhbVBvb2xJZGBcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCB0byB1bnNwZWNpZmllZCBpcEFkZHJlc3NlcyBpZiB1bmFibGUgdG8gcmVhZCBmcm9tIHN0YWNrIG91dHB1dFxuICAgIGlmICghaXB2NElwYW1Qb29sSWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gZWMyLklwQWRkcmVzc2VzLmF3c0lwYW1BbGxvY2F0aW9uKHtcbiAgICAgIGlwdjRJcGFtUG9vbElkOiBpcHY0SXBhbVBvb2xJZCxcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiAyMCxcbiAgICAgIGRlZmF1bHRTdWJuZXRJcHY0TmV0bWFza0xlbmd0aDogMjNcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IFZwY1Byb3BzKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbXBvcnRzIGEgcHJlLWV4aXN0aW5nIFZQQyBSZXNvdXJjZSBpbnRvIHlvdXIgU3RhY2tcbiAgICpcbiAgICogQmVmb3JlIHVzaW5nIGFuIGltcG9ydCBtZXRob2QgZW5zdXJlIHlvdSBoYXZlIHNldCB0aGUgYWNjb3VudCBhbmQgcmVnaW9uIHByb3BzXG4gICAqICB3aGVuIGNyZWF0aW5nIHlvdXIgQXdzU3RhY2suXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdnBjU3RhY2tOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgaW1wb3J0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdnBjU3RhY2tOYW1lOiBzdHJpbmdcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gZWMyLlZwYy5mcm9tTG9va3VwKHNiLmdldFN0YWNrKCksIGlkLCB7XG4gICAgICAgIHZwY05hbWU6IGAke3ZwY1N0YWNrTmFtZX0vJHtpZH1gXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Assignment = void 0;
|
|
4
|
+
const aws_sso_1 = require("aws-cdk-lib/aws-sso");
|
|
5
|
+
class Assignment extends aws_sso_1.CfnAssignment {
|
|
6
|
+
constructor(scope, id, props) {
|
|
7
|
+
super(scope, id, {
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.Assignment = Assignment;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hc3NpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUF3RTtBQUd4RSxNQUFhLFVBQVcsU0FBUSx1QkFBYTtJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBTkQsZ0NBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Bc3NpZ25tZW50LCBDZm5Bc3NpZ25tZW50UHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzb1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnQgZXh0ZW5kcyBDZm5Bc3NpZ25tZW50IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENmbkFzc2lnbm1lbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Group = void 0;
|
|
4
|
+
const aws_identitystore_1 = require("aws-cdk-lib/aws-identitystore");
|
|
5
|
+
class Group extends aws_identitystore_1.CfnGroup {
|
|
6
|
+
constructor(scope, id, props) {
|
|
7
|
+
super(scope, id, {
|
|
8
|
+
...props,
|
|
9
|
+
description: props.description || `${props.displayName} IAM identity center group `,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Group = Group;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXdFO0FBR3hFLE1BQWEsS0FBTSxTQUFRLDRCQUFRO0lBQ2pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLDZCQUE2QjtTQUNwRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxzQkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkdyb3VwLCBDZm5Hcm91cFByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlkZW50aXR5c3RvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIEdyb3VwIGV4dGVuZHMgQ2ZuR3JvdXAge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2ZuR3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7cHJvcHMuZGlzcGxheU5hbWV9IElBTSBpZGVudGl0eSBjZW50ZXIgZ3JvdXAgYCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PermissionSet = void 0;
|
|
4
|
+
const aws_sso_1 = require("aws-cdk-lib/aws-sso");
|
|
5
|
+
class PermissionSet extends aws_sso_1.CfnPermissionSet {
|
|
6
|
+
constructor(scope, id, props) {
|
|
7
|
+
super(scope, id, {
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.PermissionSet = PermissionSet;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvblNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9wZXJtaXNzaW9uU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE4RTtBQUc5RSxNQUFhLGFBQWMsU0FBUSwwQkFBZ0I7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuUGVybWlzc2lvblNldCwgQ2ZuUGVybWlzc2lvblNldFByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc29cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2V0IGV4dGVuZHMgQ2ZuUGVybWlzc2lvblNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDZm5QZXJtaXNzaW9uU2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./instanceProfile"), exports);
|
|
18
|
+
__exportStar(require("./managedPolicy"), exports);
|
|
19
|
+
__exportStar(require("./policy"), exports);
|
|
20
|
+
__exportStar(require("./securityGroup"), exports);
|
|
21
|
+
__exportStar(require("./role"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pYW0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFrQztBQUNsQyxrREFBZ0M7QUFDaEMsMkNBQXlCO0FBQ3pCLGtEQUFnQztBQUNoQyx5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pbnN0YW5jZVByb2ZpbGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hbmFnZWRQb2xpY3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VjdXJpdHlHcm91cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZVwiO1xuIl19
|