@fjall/components-infrastructure 0.1.11 → 0.1.17
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/identityCenter.d.ts +3 -4
- package/dist/lib/config/aws/identityCenter.js +7 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +10 -0
- package/dist/lib/config/aws/identityCenterGroupMembership.js +96 -0
- package/dist/lib/config/aws/identityCenterUser.js +3 -3
- package/dist/lib/config/aws/index.d.ts +0 -1
- package/dist/lib/config/aws/index.js +1 -2
- package/dist/lib/config/aws/ipamPoolId.d.ts +1 -0
- package/dist/lib/config/aws/ipamPoolId.js +5 -3
- package/dist/lib/config/aws/organisation.d.ts +9 -9
- package/dist/lib/config/aws/organisation.js +31 -61
- package/dist/lib/config/aws/organisationsAccess.d.ts +10 -0
- package/dist/lib/config/aws/organisationsAccess.js +40 -0
- package/dist/lib/patterns/aws/basicApp.d.ts +3 -2
- package/dist/lib/patterns/aws/basicApp.js +5 -5
- package/dist/lib/patterns/aws/buildkite.d.ts +37 -28
- package/dist/lib/patterns/aws/buildkite.js +66 -40
- package/dist/lib/patterns/aws/freeTierApp.d.ts +2 -1
- package/dist/lib/patterns/aws/freeTierApp.js +5 -5
- package/dist/lib/patterns/aws/managedAccount.js +5 -4
- package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +4 -0
- package/dist/lib/patterns/aws/managedIdentityCenter.js +24 -0
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +8 -7
- package/dist/lib/patterns/aws/managedOrganisation.js +22 -16
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +1 -0
- package/dist/lib/patterns/aws/spotInstanceApp.js +4 -4
- package/dist/lib/resources/aws/awsStack.d.ts +2 -2
- package/dist/lib/resources/aws/awsStack.js +3 -3
- package/dist/lib/resources/aws/database/rdsFreeTier.js +2 -2
- package/dist/lib/resources/aws/networking/ipamPool.js +21 -18
- package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
- package/dist/lib/resources/aws/networking/vpc.js +5 -3
- package/dist/lib/resources/aws/secrets/kms.js +2 -2
- package/dist/lib/utils/getAccountId.js +5 -4
- package/dist/lib/utils/getAsync.d.ts +10 -0
- package/dist/lib/utils/getAsync.js +37 -0
- package/dist/lib/utils/getCidr.js +4 -4
- package/dist/lib/utils/getConfig.d.ts +4 -2
- package/dist/lib/utils/getConfig.js +20 -16
- package/dist/lib/utils/usersConfig.js +2 -2
- package/package.json +28 -24
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +0 -5
- package/dist/lib/config/aws/delegateHostedZoneRole.js +0 -77
- package/dist/lib/config/aws/ipamPool.d.ts +0 -5
- package/dist/lib/config/aws/ipamPool.js +0 -56
- package/dist/lib/config/aws/ipamPoolResourceShare.d.ts +0 -5
- package/dist/lib/config/aws/ipamPoolResourceShare.js +0 -42
- package/dist/lib/config/aws/ramEnableSharing.d.ts +0 -5
- package/dist/lib/config/aws/ramEnableSharing.js +0 -35
- package/dist/lib/config/aws/users.d.ts +0 -5
- package/dist/lib/config/aws/users.js +0 -126
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +0 -10
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +0 -25
- package/dist/lib/resources/aws/constant/ecr.d.ts +0 -12
- package/dist/lib/resources/aws/constant/ecr.js +0 -30
- package/dist/lib/resources/aws/constant/vpc.d.ts +0 -26
- package/dist/lib/resources/aws/constant/vpc.js +0 -63
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +0 -21
- package/dist/lib/resources/aws/networking/hostedZone.js +0 -68
- package/dist/lib/resources/aws/store/alias.d.ts +0 -5
- package/dist/lib/resources/aws/store/alias.js +0 -13
- package/dist/lib/resources/aws/store/database.d.ts +0 -18
- package/dist/lib/resources/aws/store/database.js +0 -33
- package/dist/lib/resources/aws/store/index.d.ts +0 -7
- package/dist/lib/resources/aws/store/index.js +0 -24
- package/dist/lib/resources/aws/store/kms.d.ts +0 -14
- package/dist/lib/resources/aws/store/kms.js +0 -34
- package/dist/lib/resources/aws/store/parameter.d.ts +0 -26
- package/dist/lib/resources/aws/store/parameter.js +0 -100
- package/dist/lib/resources/aws/store/rds.d.ts +0 -25
- package/dist/lib/resources/aws/store/rds.js +0 -132
- package/dist/lib/resources/aws/store/s3.d.ts +0 -11
- package/dist/lib/resources/aws/store/s3.js +0 -43
- package/dist/lib/resources/aws/store/secret.d.ts +0 -26
- package/dist/lib/resources/aws/store/secret.js +0 -55
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IpamPoolResourceShare = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const resourceShare_1 = require("../../resources/aws/utilities/resourceShare");
|
|
6
|
-
const getAccountId_1 = require("../../utils/getAccountId");
|
|
7
|
-
const environments = [
|
|
8
|
-
"production",
|
|
9
|
-
"staging",
|
|
10
|
-
"development",
|
|
11
|
-
"businessContinuity"
|
|
12
|
-
];
|
|
13
|
-
const ipamShareProps = environments.map((environment) => {
|
|
14
|
-
return {
|
|
15
|
-
environment: environment,
|
|
16
|
-
accountId: (0, getAccountId_1.default)(environment),
|
|
17
|
-
ipamPoolArn: aws_cdk_lib_1.Fn.importValue(`${environment}IpamPoolArn`)
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
class IpamPoolResourceShare extends aws_cdk_lib_1.Stack {
|
|
21
|
-
constructor(scope, id, props) {
|
|
22
|
-
super(scope, id, props);
|
|
23
|
-
for (const ipamShareProp of ipamShareProps) {
|
|
24
|
-
if (!ipamShareProp.accountId)
|
|
25
|
-
continue;
|
|
26
|
-
new resourceShare_1.ResourceShare(this, `${ipamShareProp.environment}IpamResourceShare`, {
|
|
27
|
-
name: `${ipamShareProp.environment}IpamResourceShare`,
|
|
28
|
-
allowExternalPrincipals: false,
|
|
29
|
-
principals: [ipamShareProp.accountId],
|
|
30
|
-
resourceArns: [ipamShareProp.ipamPoolArn],
|
|
31
|
-
tags: [
|
|
32
|
-
{
|
|
33
|
-
key: "fjall:costAllocation:environment",
|
|
34
|
-
value: `${ipamShareProp.environment}`
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.IpamPoolResourceShare = IpamPoolResourceShare;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xSZXNvdXJjZVNoYXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaXBhbVBvb2xSZXNvdXJjZVNoYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCwrRUFBNEU7QUFDNUUsMkRBQW9EO0FBRXBELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBQ3RELE9BQU87UUFDTCxXQUFXLEVBQUUsV0FBVztRQUN4QixTQUFTLEVBQUUsSUFBQSxzQkFBWSxFQUFDLFdBQVcsQ0FBQztRQUNwQyxXQUFXLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLGFBQWEsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFhLHFCQUFzQixTQUFRLG1CQUFLO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2dCQUFFLFNBQVM7WUFFdkMsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxXQUFXLG1CQUFtQixFQUFFO2dCQUN2RSxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxtQkFBbUI7Z0JBQ3JELHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFO3FCQUN0QztpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBckJELHNEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUHJvcHMsIFN0YWNrLCBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgUmVzb3VyY2VTaGFyZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuY29uc3QgZW52aXJvbm1lbnRzID0gW1xuICBcInByb2R1Y3Rpb25cIixcbiAgXCJzdGFnaW5nXCIsXG4gIFwiZGV2ZWxvcG1lbnRcIixcbiAgXCJidXNpbmVzc0NvbnRpbnVpdHlcIlxuXTtcblxuY29uc3QgaXBhbVNoYXJlUHJvcHMgPSBlbnZpcm9ubWVudHMubWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCxcbiAgICBhY2NvdW50SWQ6IGdldEFjY291bnRJZChlbnZpcm9ubWVudCksXG4gICAgaXBhbVBvb2xBcm46IEZuLmltcG9ydFZhbHVlKGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYClcbiAgfTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xSZXNvdXJjZVNoYXJlIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGZvciAoY29uc3QgaXBhbVNoYXJlUHJvcCBvZiBpcGFtU2hhcmVQcm9wcykge1xuICAgICAgaWYgKCFpcGFtU2hhcmVQcm9wLmFjY291bnRJZCkgY29udGludWU7XG5cbiAgICAgIG5ldyBSZXNvdXJjZVNoYXJlKHRoaXMsIGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLCB7XG4gICAgICAgIG5hbWU6IGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLFxuICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgIHByaW5jaXBhbHM6IFtpcGFtU2hhcmVQcm9wLmFjY291bnRJZF0sXG4gICAgICAgIHJlc291cmNlQXJuczogW2lwYW1TaGFyZVByb3AuaXBhbVBvb2xBcm5dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aXBhbVNoYXJlUHJvcC5lbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RamEnableSharing = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
-
class RamEnableSharing extends aws_cdk_lib_1.Stack {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id, props);
|
|
11
|
-
new awsCustomResource_1.AwsCustomResource(this, "ramEnableSharing", {
|
|
12
|
-
functionName: "ramEnableSharing",
|
|
13
|
-
onCreate: {
|
|
14
|
-
service: "RAM",
|
|
15
|
-
action: "enableSharingWithAwsOrganization",
|
|
16
|
-
parameters: {},
|
|
17
|
-
physicalResourceId: customResources.PhysicalResourceId.of("ramEnableSharing")
|
|
18
|
-
},
|
|
19
|
-
resourceType: "Custom::ramEnableSharing",
|
|
20
|
-
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
21
|
-
new aws_iam_1.PolicyStatement({
|
|
22
|
-
actions: [
|
|
23
|
-
"ram:EnableSharingWithAwsOrganization",
|
|
24
|
-
"iam:CreateServiceLinkedRole",
|
|
25
|
-
"organizations:enableAWSServiceAccess",
|
|
26
|
-
"organizations:DescribeOrganization"
|
|
27
|
-
],
|
|
28
|
-
resources: ["*"] // TODO: Find out the exact pricipal for this
|
|
29
|
-
})
|
|
30
|
-
])
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.RamEnableSharing = RamEnableSharing;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFtRW5hYmxlU2hhcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL3JhbUVuYWJsZVNoYXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBQ2hELGdFQUFnRTtBQUNoRSxpREFBc0Q7QUFHdEQsdUZBQW9GO0FBRXBGLE1BQWEsZ0JBQWlCLFNBQVEsbUJBQUs7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM5QyxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsa0NBQWtDO2dCQUMxQyxVQUFVLEVBQUUsRUFBRTtnQkFDZCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUM1RDtZQUNELFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHNDQUFzQzt3QkFDdEMsNkJBQTZCO3dCQUM3QixzQ0FBc0M7d0JBQ3RDLG9DQUFvQztxQkFDckM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsNkNBQTZDO2lCQUMvRCxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNCRCw0Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFja1Byb3BzLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIFJhbUVuYWJsZVNoYXJpbmcgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwicmFtRW5hYmxlU2hhcmluZ1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwicmFtRW5hYmxlU2hhcmluZ1wiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJSQU1cIixcbiAgICAgICAgYWN0aW9uOiBcImVuYWJsZVNoYXJpbmdXaXRoQXdzT3JnYW5pemF0aW9uXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvUkFNLmh0bWwjZW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb24tcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge30sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwicmFtRW5hYmxlU2hhcmluZ1wiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OnJhbUVuYWJsZVNoYXJpbmdcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJyYW06RW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb25cIixcbiAgICAgICAgICAgIFwiaWFtOkNyZWF0ZVNlcnZpY2VMaW5rZWRSb2xlXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6ZW5hYmxlQVdTU2VydmljZUFjY2Vzc1wiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRlc2NyaWJlT3JnYW5pemF0aW9uXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBGaW5kIG91dCB0aGUgZXhhY3QgcHJpY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Users = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
7
|
-
const identityStoreId = aws_cdk_lib_1.Fn.importValue("identityStoreID");
|
|
8
|
-
// TODO: Will need to customise what group they are assigned to
|
|
9
|
-
const adminGroupId = aws_cdk_lib_1.Fn.importValue("AdministratorAccessGroupId");
|
|
10
|
-
const adminUsers = [
|
|
11
|
-
{
|
|
12
|
-
IdentityStoreId: identityStoreId,
|
|
13
|
-
UserName: "paul@fjall.io",
|
|
14
|
-
DisplayName: "Paul Oram",
|
|
15
|
-
Name: {
|
|
16
|
-
FamilyName: "Oram",
|
|
17
|
-
GivenName: "Paul"
|
|
18
|
-
},
|
|
19
|
-
Emails: [
|
|
20
|
-
{
|
|
21
|
-
Primary: true,
|
|
22
|
-
Value: "paul@fjall.io"
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
IdentityStoreId: identityStoreId,
|
|
28
|
-
UserName: "joseph@fjall.io",
|
|
29
|
-
DisplayName: "Joseph Eigenraam",
|
|
30
|
-
Name: {
|
|
31
|
-
FamilyName: "Eigenraam",
|
|
32
|
-
GivenName: "Joseph"
|
|
33
|
-
},
|
|
34
|
-
Emails: [
|
|
35
|
-
{
|
|
36
|
-
Primary: true,
|
|
37
|
-
Value: "joseph@fjall.io"
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
class Users extends aws_cdk_lib_1.Stack {
|
|
43
|
-
constructor(scope, id, props) {
|
|
44
|
-
super(scope, id, props);
|
|
45
|
-
for (const user of adminUsers) {
|
|
46
|
-
const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${user.DisplayName.replace(/\s/g, "")}`, {
|
|
47
|
-
functionName: "createUsers",
|
|
48
|
-
onCreate: {
|
|
49
|
-
service: "IdentityStore",
|
|
50
|
-
action: "createUser",
|
|
51
|
-
parameters: user,
|
|
52
|
-
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
53
|
-
},
|
|
54
|
-
onUpdate: {
|
|
55
|
-
service: "IdentityStore",
|
|
56
|
-
action: "updateUser",
|
|
57
|
-
parameters: user,
|
|
58
|
-
physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
|
|
59
|
-
},
|
|
60
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
61
|
-
});
|
|
62
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteUser${user.DisplayName.replace(/\s/g, "")}`, {
|
|
63
|
-
functionName: "deleteUsers",
|
|
64
|
-
onDelete: {
|
|
65
|
-
service: "IdentityStore",
|
|
66
|
-
action: "deleteUser",
|
|
67
|
-
parameters: {
|
|
68
|
-
IdentityStoreId: identityStoreId,
|
|
69
|
-
UserId: createUser.getResponseField("UserId")
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
73
|
-
});
|
|
74
|
-
new aws_cdk_lib_1.CfnOutput(this, `${user.DisplayName.replace(/\s/g, "")}UserId`, {
|
|
75
|
-
key: `${user.DisplayName.replace(/\s/g, "")}UserId`,
|
|
76
|
-
value: createUser.getResponseField("UserId"),
|
|
77
|
-
exportName: `${user.DisplayName.replace(/\s/g, "")}UserId`
|
|
78
|
-
});
|
|
79
|
-
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${user.DisplayName.replace(/\s/g, "")}`, {
|
|
80
|
-
functionName: "createGroupMembership",
|
|
81
|
-
onCreate: {
|
|
82
|
-
service: "IdentityStore",
|
|
83
|
-
action: "createGroupMembership",
|
|
84
|
-
parameters: {
|
|
85
|
-
GroupId: adminGroupId,
|
|
86
|
-
IdentityStoreId: identityStoreId,
|
|
87
|
-
MemberId: {
|
|
88
|
-
UserId: createUser.getResponseField("UserId")
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
92
|
-
},
|
|
93
|
-
onUpdate: {
|
|
94
|
-
service: "IdentityStore",
|
|
95
|
-
action: "createGroupMembership",
|
|
96
|
-
parameters: {
|
|
97
|
-
GroupId: adminGroupId,
|
|
98
|
-
IdentityStoreId: identityStoreId,
|
|
99
|
-
MemberId: {
|
|
100
|
-
UserId: createUser.getResponseField("UserId")
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${user.DisplayName.replace(/\s/g, "")}`, {
|
|
107
|
-
functionName: "deleteGroupMembership",
|
|
108
|
-
onDelete: {
|
|
109
|
-
service: "IdentityStore",
|
|
110
|
-
action: "deleteGroupMembership",
|
|
111
|
-
parameters: {
|
|
112
|
-
IdentityStoreId: identityStoreId,
|
|
113
|
-
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
117
|
-
});
|
|
118
|
-
new aws_cdk_lib_1.CfnOutput(this, `${user.DisplayName.replace(/\s/g, "")}GroupMembershipId`, {
|
|
119
|
-
value: groupMembershipId.getResponseField("MembershipId"),
|
|
120
|
-
exportName: `${user.DisplayName.replace(/\s/g, "")}GroupMembershipId`
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
exports.Users = Users;
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy91c2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0Q7QUFDL0QsZ0VBQWdFO0FBRWhFLHVGQUFvRjtBQUVwRixNQUFNLGVBQWUsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzFELCtEQUErRDtBQUMvRCxNQUFNLFlBQVksR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sVUFBVSxHQUFHO0lBQ2pCO1FBQ0UsZUFBZSxFQUFFLGVBQWU7UUFDaEMsUUFBUSxFQUFFLGVBQWU7UUFDekIsV0FBVyxFQUFFLFdBQVc7UUFDeEIsSUFBSSxFQUFFO1lBQ0osVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLE1BQU07U0FDbEI7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsZUFBZTthQUN2QjtTQUNGO0tBQ0Y7SUFDRDtRQUNFLGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixJQUFJLEVBQUU7WUFDSixVQUFVLEVBQUUsV0FBVztZQUN2QixTQUFTLEVBQUUsUUFBUTtTQUNwQjtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxpQkFBaUI7YUFDekI7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQWEsS0FBTSxTQUFRLG1CQUFLO0lBQzlCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUU7WUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxxQ0FBaUIsQ0FDdEMsSUFBSSxFQUNKLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQ2xEO2dCQUNFLFlBQVksRUFBRSxhQUFhO2dCQUMzQixRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN2RDtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN2RDtnQkFDRCxZQUFZLEVBQUUsNkJBQTZCO2FBQzVDLENBQ0YsQ0FBQztZQUVGLElBQUkscUNBQWlCLENBQ25CLElBQUksRUFDSixhQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUNsRDtnQkFDRSxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxlQUFlO29CQUN4QixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFO3dCQUNWLGVBQWUsRUFBRSxlQUFlO3dCQUNoQyxNQUFNLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztxQkFDOUM7aUJBQ0Y7Z0JBQ0QsWUFBWSxFQUFFLDZCQUE2QjthQUM1QyxDQUNGLENBQUM7WUFFRixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUTtnQkFDbkQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQzVDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUTthQUMzRCxDQUFDLENBQUM7WUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQzdDLElBQUksRUFDSix3QkFBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQzdEO2dCQUNFLFlBQVksRUFBRSx1QkFBdUI7Z0JBQ3JDLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsTUFBTSxFQUFFLHVCQUF1QjtvQkFDL0IsVUFBVSxFQUFFO3dCQUNWLE9BQU8sRUFBRSxZQUFZO3dCQUNyQixlQUFlLEVBQUUsZUFBZTt3QkFDaEMsUUFBUSxFQUFFOzRCQUNSLE1BQU0sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO3lCQUM5QztxQkFDRjtvQkFDRCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3ZEO2dCQUNELFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsTUFBTSxFQUFFLHVCQUF1QjtvQkFDL0IsVUFBVSxFQUFFO3dCQUNWLE9BQU8sRUFBRSxZQUFZO3dCQUNyQixlQUFlLEVBQUUsZUFBZTt3QkFDaEMsUUFBUSxFQUFFOzRCQUNSLE1BQU0sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO3lCQUM5QztxQkFDRjtvQkFDRCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3ZEO2FBQ0YsQ0FDRixDQUFDO1lBRUYsSUFBSSxxQ0FBaUIsQ0FDbkIsSUFBSSxFQUNKLHdCQUF3QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDN0Q7Z0JBQ0UsWUFBWSxFQUFFLHVCQUF1QjtnQkFDckMsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxlQUFlO29CQUN4QixNQUFNLEVBQUUsdUJBQXVCO29CQUMvQixVQUFVLEVBQUU7d0JBQ1YsZUFBZSxFQUFFLGVBQWU7d0JBQ2hDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7cUJBQ2pFO2lCQUNGO2dCQUNELFlBQVksRUFBRSw2QkFBNkI7YUFDNUMsQ0FDRixDQUFDO1lBRUYsSUFBSSx1QkFBUyxDQUNYLElBQUksRUFDSixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLEVBQ3pEO2dCQUNFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Z0JBQ3pELFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CO2FBQ3RFLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztDQUNGO0FBaEhELHNCQWdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRm4sIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuXG5jb25zdCBpZGVudGl0eVN0b3JlSWQgPSBGbi5pbXBvcnRWYWx1ZShcImlkZW50aXR5U3RvcmVJRFwiKTtcbi8vIFRPRE86IFdpbGwgbmVlZCB0byBjdXN0b21pc2Ugd2hhdCBncm91cCB0aGV5IGFyZSBhc3NpZ25lZCB0b1xuY29uc3QgYWRtaW5Hcm91cElkID0gRm4uaW1wb3J0VmFsdWUoXCJBZG1pbmlzdHJhdG9yQWNjZXNzR3JvdXBJZFwiKTtcblxuY29uc3QgYWRtaW5Vc2VycyA9IFtcbiAge1xuICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgIFVzZXJOYW1lOiBcInBhdWxAZmphbGwuaW9cIixcbiAgICBEaXNwbGF5TmFtZTogXCJQYXVsIE9yYW1cIixcbiAgICBOYW1lOiB7XG4gICAgICBGYW1pbHlOYW1lOiBcIk9yYW1cIixcbiAgICAgIEdpdmVuTmFtZTogXCJQYXVsXCJcbiAgICB9LFxuICAgIEVtYWlsczogW1xuICAgICAge1xuICAgICAgICBQcmltYXJ5OiB0cnVlLFxuICAgICAgICBWYWx1ZTogXCJwYXVsQGZqYWxsLmlvXCJcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHtcbiAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICBVc2VyTmFtZTogXCJqb3NlcGhAZmphbGwuaW9cIixcbiAgICBEaXNwbGF5TmFtZTogXCJKb3NlcGggRWlnZW5yYWFtXCIsXG4gICAgTmFtZToge1xuICAgICAgRmFtaWx5TmFtZTogXCJFaWdlbnJhYW1cIixcbiAgICAgIEdpdmVuTmFtZTogXCJKb3NlcGhcIlxuICAgIH0sXG4gICAgRW1haWxzOiBbXG4gICAgICB7XG4gICAgICAgIFByaW1hcnk6IHRydWUsXG4gICAgICAgIFZhbHVlOiBcImpvc2VwaEBmamFsbC5pb1wiXG4gICAgICB9XG4gICAgXVxuICB9XG5dO1xuXG5leHBvcnQgY2xhc3MgVXNlcnMgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgZm9yIChjb25zdCB1c2VyIG9mIGFkbWluVXNlcnMpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZVVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBjcmVhdGVVc2VyJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImNyZWF0ZVVzZXJzXCIsXG4gICAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVVzZXJcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9JZGVudGl0eVN0b3JlLmh0bWwjY3JlYXRlVXNlci1wcm9wZXJ0eVxuICAgICAgICAgICAgcGFyYW1ldGVyczogdXNlcixcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImNyZWF0ZVVzZXJzXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwidXBkYXRlVXNlclwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdXNlcixcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcInVwZGF0ZVVzZXJzXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgZGVsZXRlVXNlciR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVVc2Vyc1wiLFxuICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1Vc2VySWRgLCB7XG4gICAgICAgIGtleTogYCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9VXNlcklkYCxcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9VXNlcklkYFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcElkID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogYWRtaW5Hcm91cElkLFxuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogYWRtaW5Hcm91cElkLFxuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGRlbGV0ZUdyb3VwTWVtYmVyc2hpcCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICBvbkRlbGV0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3VzZXIuRGlzcGxheU5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpfUdyb3VwTWVtYmVyc2hpcElkYCxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpLFxuICAgICAgICAgIGV4cG9ydE5hbWU6IGAke3VzZXIuRGlzcGxheU5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpfUdyb3VwTWVtYmVyc2hpcElkYFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Stack } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
export declare class FjallHostedZone extends Stack {
|
|
4
|
-
constructor(scope: Construct, id: string);
|
|
5
|
-
}
|
|
6
|
-
export declare class FjallSubdomainHostedZone extends Stack {
|
|
7
|
-
constructor(scope: Construct, id: string, props: {
|
|
8
|
-
environment?: string;
|
|
9
|
-
});
|
|
10
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FjallSubdomainHostedZone = exports.FjallHostedZone = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const networking_1 = require("../../../resources/aws/networking");
|
|
6
|
-
class FjallHostedZone extends aws_cdk_lib_1.Stack {
|
|
7
|
-
constructor(scope, id) {
|
|
8
|
-
super(scope, id);
|
|
9
|
-
new networking_1.HostedZone(this, "FjallHostedZone", {
|
|
10
|
-
zoneName: "fjall.io"
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.FjallHostedZone = FjallHostedZone;
|
|
15
|
-
class FjallSubdomainHostedZone extends aws_cdk_lib_1.Stack {
|
|
16
|
-
constructor(scope, id, props) {
|
|
17
|
-
super(scope, id);
|
|
18
|
-
new networking_1.SubdomainHostedZone(this, "FjallHostedZone", {
|
|
19
|
-
delegatedZone: `${props.environment}.fjall.io`,
|
|
20
|
-
parentHostedZoneName: "fjall.io"
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.FjallSubdomainHostedZone = FjallSubdomainHostedZone;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGwuaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2ZqYWxsL2hvc3RlZFpvbmVzL2ZqYWxsLmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQyxrRUFHMkM7QUFFM0MsTUFBYSxlQUFnQixTQUFRLG1CQUFLO0lBQ3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0QyxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFSRCwwQ0FRQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsbUJBQUs7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksZ0NBQW1CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQy9DLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLFdBQVc7WUFDOUMsb0JBQW9CLEVBQUUsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFURCw0REFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSG9zdGVkWm9uZSxcbiAgU3ViZG9tYWluSG9zdGVkWm9uZVxufSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nXCI7XG5cbmV4cG9ydCBjbGFzcyBGamFsbEhvc3RlZFpvbmUgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgem9uZU5hbWU6IFwiZmphbGwuaW9cIlxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGamFsbFN1YmRvbWFpbkhvc3RlZFpvbmUgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiB7IGVudmlyb25tZW50Pzogc3RyaW5nIH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IFN1YmRvbWFpbkhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgZGVsZWdhdGVkWm9uZTogYCR7cHJvcHMuZW52aXJvbm1lbnR9LmZqYWxsLmlvYCxcbiAgICAgIHBhcmVudEhvc3RlZFpvbmVOYW1lOiBcImZqYWxsLmlvXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Repository, RepositoryProps } from "aws-cdk-lib/aws-ecr";
|
|
3
|
-
import { StackBuilder } from "../awsStack";
|
|
4
|
-
interface EcrProps {
|
|
5
|
-
}
|
|
6
|
-
export default class Ecr extends Repository {
|
|
7
|
-
private outputs;
|
|
8
|
-
constructor(scope: Construct, id: string, props?: EcrProps);
|
|
9
|
-
static getRepositoryProps(props?: EcrProps): RepositoryProps;
|
|
10
|
-
static build(id: string, props?: EcrProps): (scope: StackBuilder) => Ecr;
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
class Ecr extends aws_ecr_1.Repository {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id, Ecr.getRepositoryProps(props));
|
|
8
|
-
this.outputs = [];
|
|
9
|
-
this.outputs.push(new aws_cdk_lib_1.CfnOutput(this, "ecrRepository", {
|
|
10
|
-
key: "RepositoryName",
|
|
11
|
-
value: this.repositoryName,
|
|
12
|
-
exportName: `${id}RepositoryName`
|
|
13
|
-
}));
|
|
14
|
-
}
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
-
static getRepositoryProps(props) {
|
|
17
|
-
// todo: lifeCycleRules
|
|
18
|
-
// todo: Encryption & EncryptionKey (default is AWS managed KMS key)
|
|
19
|
-
return {
|
|
20
|
-
imageScanOnPush: true,
|
|
21
|
-
imageTagMutability: aws_ecr_1.TagMutability.MUTABLE,
|
|
22
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
static build(id, props) {
|
|
26
|
-
return (scope) => new Ecr(scope.getStack(), id, props);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.default = Ecr;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvZWNyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQU12RCxNQUFxQixHQUFJLFNBQVEsb0JBQVU7SUFHekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQjtRQUN4RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUgxQyxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUtoQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDZixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsZ0JBQWdCO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtTQUNsQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWdCO1FBQ3hDLHVCQUF1QjtRQUN2QixvRUFBb0U7UUFDcEUsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGtCQUFrQixFQUFFLHVCQUFhLENBQUMsT0FBTztZQUN6QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBN0JELHNCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICBSZXBvc2l0b3J5UHJvcHMsXG4gIFRhZ011dGFiaWxpdHlcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5pbXBvcnQgeyBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYXdzU3RhY2tcIjtcblxuaW50ZXJmYWNlIEVjclByb3BzIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjciBleHRlbmRzIFJlcG9zaXRvcnkge1xuICBwcml2YXRlIG91dHB1dHM6IENmbk91dHB1dFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBFY3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgRWNyLmdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcykpO1xuXG4gICAgdGhpcy5vdXRwdXRzLnB1c2goXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiZWNyUmVwb3NpdG9yeVwiLCB7XG4gICAgICAgIGtleTogXCJSZXBvc2l0b3J5TmFtZVwiLFxuICAgICAgICB2YWx1ZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7aWR9UmVwb3NpdG9yeU5hbWVgXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHN0YXRpYyBnZXRSZXBvc2l0b3J5UHJvcHMocHJvcHM/OiBFY3JQcm9wcyk6IFJlcG9zaXRvcnlQcm9wcyB7XG4gICAgLy8gdG9kbzogbGlmZUN5Y2xlUnVsZXNcbiAgICAvLyB0b2RvOiBFbmNyeXB0aW9uICYgRW5jcnlwdGlvbktleSAoZGVmYXVsdCBpcyBBV1MgbWFuYWdlZCBLTVMga2V5KVxuICAgIHJldHVybiB7XG4gICAgICBpbWFnZVNjYW5PblB1c2g6IHRydWUsXG4gICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IFRhZ011dGFiaWxpdHkuTVVUQUJMRSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKTogKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IEVjciB7XG4gICAgcmV0dXJuIChzY29wZTogU3RhY2tCdWlsZGVyKSA9PiBuZXcgRWNyKHNjb3BlLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
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
|
-
}
|
|
10
|
-
export declare class Vpc extends ec2.Vpc {
|
|
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;
|
|
14
|
-
/**
|
|
15
|
-
* Imports a pre-existing VPC Resource into your Stack
|
|
16
|
-
*
|
|
17
|
-
* Before using an import method ensure you have set the account and region props
|
|
18
|
-
* when creating your AwsStack.
|
|
19
|
-
*
|
|
20
|
-
* @param id
|
|
21
|
-
* @param vpcStackName
|
|
22
|
-
* @returns
|
|
23
|
-
*/
|
|
24
|
-
static import(id: string, vpcStackName: string): (sb: StackBuilder) => Construct;
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Vpc = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
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"];
|
|
9
|
-
class Vpc extends ec2.Vpc {
|
|
10
|
-
constructor(scope, id, props) {
|
|
11
|
-
super(scope, `vpc-${id}`, {
|
|
12
|
-
...props,
|
|
13
|
-
vpcName: `vpc-${id}`,
|
|
14
|
-
availabilityZones: AVAILABILITY_ZONES,
|
|
15
|
-
flowLogs: {
|
|
16
|
-
[`${id}VpcFlowLogs`]: {
|
|
17
|
-
destination: ec2.FlowLogDestination.toCloudWatchLogs(new logGroup_1.LogGroup(scope, `${id}FlowLogGroup`, {
|
|
18
|
-
logGroupName: `/vpc/flowlogs/vpc-${id}/`,
|
|
19
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
20
|
-
}))
|
|
21
|
-
}
|
|
22
|
-
},
|
|
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
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
static build(id, props) {
|
|
40
|
-
return (sb) => {
|
|
41
|
-
return new this(sb.getStack(), id, props);
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Imports a pre-existing VPC Resource into your Stack
|
|
46
|
-
*
|
|
47
|
-
* Before using an import method ensure you have set the account and region props
|
|
48
|
-
* when creating your AwsStack.
|
|
49
|
-
*
|
|
50
|
-
* @param id
|
|
51
|
-
* @param vpcStackName
|
|
52
|
-
* @returns
|
|
53
|
-
*/
|
|
54
|
-
static import(id, vpcStackName) {
|
|
55
|
-
return (sb) => {
|
|
56
|
-
return ec2.Vpc.fromLookup(sb.getStack(), id, {
|
|
57
|
-
vpcName: `${vpcStackName}/${id}`
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
exports.Vpc = Vpc;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvdnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUFrRDtBQUNsRCwyQ0FBMkM7QUFHM0Msa0RBQStDO0FBQy9DLGtFQUEyRDtBQVMzRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUV0RSxNQUFhLEdBQUksU0FBUSxHQUFHLENBQUMsR0FBRztJQUM5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUN4QixHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDcEIsaUJBQWlCLEVBQUUsa0JBQWtCO1lBQ3JDLFFBQVEsRUFBRTtnQkFDUixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRTtvQkFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDbEQsSUFBSSxtQkFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO3dCQUN2QyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRzt3QkFDeEMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztxQkFDckMsQ0FBQyxDQUNIO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBRUgscUVBQXFFO1FBQ3JFLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUEsd0JBQWMsRUFDbkMsVUFBVSxFQUNWLEdBQUcsS0FBSyxFQUFFLFdBQVcsWUFBWSxDQUNsQyxDQUFDO1FBRUYseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFdEMsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsOEJBQThCLEVBQUUsRUFBRTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxPQUFPLEVBQUUsR0FBRyxZQUFZLElBQUksRUFBRSxFQUFFO2FBQ2pDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhFRCxrQkFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGFncywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9hd3NTdGFja1wiO1xuaW1wb3J0IHsgTG9nR3JvdXAgfSBmcm9tIFwiLi4vbG9nZ2luZy9sb2dHcm91cFwiO1xuaW1wb3J0IGdldFN0YWNrT3V0cHV0IGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRTdGFja091dHB1dFwiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9lY3NcIjtcblxuaW50ZXJmYWNlIFZwY1Byb3BzIGV4dGVuZHMgZWMyLlZwY1Byb3BzIHtcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG4gIHRhZ3M6IEtleVZhbHVlO1xufVxuXG5jb25zdCBBVkFJTEFCSUxJVFlfWk9ORVMgPSBbXCJ1cy1lYXN0LTFhXCIsIFwidXMtZWFzdC0xYlwiLCBcInVzLWVhc3QtMWNcIl07XG5cbmV4cG9ydCBjbGFzcyBWcGMgZXh0ZW5kcyBlYzIuVnBjIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBgdnBjLSR7aWR9YCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB2cGNOYW1lOiBgdnBjLSR7aWR9YCxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBBVkFJTEFCSUxJVFlfWk9ORVMsXG4gICAgICBmbG93TG9nczoge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvQ2xvdWRXYXRjaExvZ3MoXG4gICAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlwQWRkcmVzc2VzOiBWcGMuaXBBZGRyZXNzZXMocHJvcHMpXG4gICAgfSk7XG5cbiAgICAvLyBSZXF1aXJlZCBmb3IgdGhlIFZQQyB0byB1c2UgdGhlIElQQU0gUG9vbCB0byBwcm92c2lvbiBJUCBhZGRyZXNzZXNcbiAgICBUYWdzLm9mKHRoaXMpLmFkZChcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLCBgJHtwcm9wcz8uZW52aXJvbm1lbnR9YCk7XG4gIH1cblxuICBzdGF0aWMgaXBBZGRyZXNzZXMocHJvcHM/OiBWcGNQcm9wcykge1xuICAgIGNvbnN0IGlwdjRJcGFtUG9vbElkID0gZ2V0U3RhY2tPdXRwdXQoXG4gICAgICBcIklwYW1Qb29sXCIsXG4gICAgICBgJHtwcm9wcz8uZW52aXJvbm1lbnR9SXBhbVBvb2xJZGBcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCB0byB1bnNwZWNpZmllZCBpcEFkZHJlc3NlcyBpZiB1bmFibGUgdG8gcmVhZCBmcm9tIHN0YWNrIG91dHB1dFxuICAgIGlmICghaXB2NElwYW1Qb29sSWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gZWMyLklwQWRkcmVzc2VzLmF3c0lwYW1BbGxvY2F0aW9uKHtcbiAgICAgIGlwdjRJcGFtUG9vbElkOiBpcHY0SXBhbVBvb2xJZCxcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiAyMCxcbiAgICAgIGRlZmF1bHRTdWJuZXRJcHY0TmV0bWFza0xlbmd0aDogMjNcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IFZwY1Byb3BzKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbXBvcnRzIGEgcHJlLWV4aXN0aW5nIFZQQyBSZXNvdXJjZSBpbnRvIHlvdXIgU3RhY2tcbiAgICpcbiAgICogQmVmb3JlIHVzaW5nIGFuIGltcG9ydCBtZXRob2QgZW5zdXJlIHlvdSBoYXZlIHNldCB0aGUgYWNjb3VudCBhbmQgcmVnaW9uIHByb3BzXG4gICAqICB3aGVuIGNyZWF0aW5nIHlvdXIgQXdzU3RhY2suXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdnBjU3RhY2tOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgaW1wb3J0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdnBjU3RhY2tOYW1lOiBzdHJpbmdcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gZWMyLlZwYy5mcm9tTG9va3VwKHNiLmdldFN0YWNrKCksIGlkLCB7XG4gICAgICAgIHZwY05hbWU6IGAke3ZwY1N0YWNrTmFtZX0vJHtpZH1gXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
export interface hostedZoneProps {
|
|
3
|
-
zoneName: string;
|
|
4
|
-
}
|
|
5
|
-
export interface subdomainHostedZoneProps {
|
|
6
|
-
delegatedZone: string;
|
|
7
|
-
parentHostedZoneName: string;
|
|
8
|
-
}
|
|
9
|
-
export interface importedHostedZoneProps {
|
|
10
|
-
hostedZoneId: string;
|
|
11
|
-
hostedZoneName: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class HostedZone extends Construct {
|
|
14
|
-
constructor(scope: Construct, id: string, props: hostedZoneProps);
|
|
15
|
-
}
|
|
16
|
-
export declare class SubdomainHostedZone extends Construct {
|
|
17
|
-
constructor(scope: Construct, id: string, props: subdomainHostedZoneProps);
|
|
18
|
-
}
|
|
19
|
-
export declare class ImportedHostedZone extends Construct {
|
|
20
|
-
constructor(scope: Construct, id: string, props: importedHostedZoneProps);
|
|
21
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImportedHostedZone = exports.SubdomainHostedZone = exports.HostedZone = void 0;
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const route53 = require("aws-cdk-lib/aws-route53");
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
-
const iam_1 = require("../iam");
|
|
8
|
-
const getAccountId_1 = require("../../../utils/getAccountId");
|
|
9
|
-
class HostedZone extends constructs_1.Construct {
|
|
10
|
-
constructor(scope, id, props) {
|
|
11
|
-
super(scope, id);
|
|
12
|
-
const hostedZone = new route53.HostedZone(this, "FjallHostedZone", {
|
|
13
|
-
zoneName: props.zoneName
|
|
14
|
-
});
|
|
15
|
-
const role = iam_1.Role.fromRoleArn(this, "delegateHostedZoneRole", aws_cdk_lib_1.Fn.importValue("DelegateHostedZoneRoleArn"));
|
|
16
|
-
hostedZone.grantDelegation(role);
|
|
17
|
-
new aws_cdk_lib_1.CfnOutput(this, `${props.zoneName.split(".").join("")}HostedZoneId`, {
|
|
18
|
-
key: "HostedZoneId",
|
|
19
|
-
value: hostedZone.hostedZoneId,
|
|
20
|
-
exportName: `${props.zoneName.split(".").join("")}HostedZoneId`
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.HostedZone = HostedZone;
|
|
25
|
-
class SubdomainHostedZone extends constructs_1.Construct {
|
|
26
|
-
constructor(scope, id, props) {
|
|
27
|
-
super(scope, id);
|
|
28
|
-
// DelegationRoleArn
|
|
29
|
-
const delegationRoleArn = aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
30
|
-
account: (0, getAccountId_1.default)("production") || "TODO: Fail Gracefully",
|
|
31
|
-
region: "",
|
|
32
|
-
resource: "role",
|
|
33
|
-
resourceName: "DelegateHostedZoneRole",
|
|
34
|
-
service: "iam"
|
|
35
|
-
});
|
|
36
|
-
// Delegate Hosted Zone Role
|
|
37
|
-
const hostedZoneDelegationRole = iam_1.Role.fromRoleArn(this, "hostedZoneDelegationRole", delegationRoleArn);
|
|
38
|
-
// Subdomains
|
|
39
|
-
const delegatedHostedZone = new route53.HostedZone(this, `${props.delegatedZone}HostedZone`, {
|
|
40
|
-
zoneName: props.delegatedZone
|
|
41
|
-
});
|
|
42
|
-
new route53.CrossAccountZoneDelegationRecord(this, `${props.delegatedZone}DelegationRole`, {
|
|
43
|
-
delegationRole: hostedZoneDelegationRole,
|
|
44
|
-
delegatedZone: delegatedHostedZone,
|
|
45
|
-
parentHostedZoneName: props.parentHostedZoneName
|
|
46
|
-
});
|
|
47
|
-
new aws_cdk_lib_1.CfnOutput(this, `${props.delegatedZone.split(".").join("")}HostedZoneId`, {
|
|
48
|
-
key: "HostedZoneId",
|
|
49
|
-
value: delegatedHostedZone.hostedZoneId,
|
|
50
|
-
exportName: `${props.delegatedZone.split(".").join("")}HostedZoneId`
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.SubdomainHostedZone = SubdomainHostedZone;
|
|
55
|
-
class ImportedHostedZone extends constructs_1.Construct {
|
|
56
|
-
constructor(scope, id, props) {
|
|
57
|
-
super(scope, id);
|
|
58
|
-
const importedHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, "importedHostedZone", {
|
|
59
|
-
hostedZoneId: props.hostedZoneId,
|
|
60
|
-
zoneName: props.hostedZoneName
|
|
61
|
-
});
|
|
62
|
-
// Delegate Hosted Zone Role
|
|
63
|
-
const role = iam_1.Role.fromRoleArn(this, "delegateHostedZoneRole", aws_cdk_lib_1.Fn.importValue("DelegateHostedZoneRoleArn"));
|
|
64
|
-
importedHostedZone.grantDelegation(role);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.ImportedHostedZone = ImportedHostedZone;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsbURBQW1EO0FBQ25ELDZDQUFtRDtBQUNuRCxnQ0FBOEI7QUFDOUIsOERBQXVEO0FBY3ZELE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxVQUFJLENBQUMsV0FBVyxDQUMzQixJQUFJLEVBQ0osd0JBQXdCLEVBQ3hCLGdCQUFFLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLENBQzVDLENBQUM7UUFFRixVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUN2RSxHQUFHLEVBQUUsY0FBYztZQUNuQixLQUFLLEVBQUUsVUFBVSxDQUFDLFlBQVk7WUFDOUIsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjO1NBQ2hFLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRCRCxnQ0FzQkM7QUFFRCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBQ2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixvQkFBb0I7UUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsT0FBTyxFQUFFLElBQUEsc0JBQVksRUFBQyxZQUFZLENBQUMsSUFBSSx1QkFBdUI7WUFDOUQsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsd0JBQXdCO1lBQ3RDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE1BQU0sd0JBQXdCLEdBQUcsVUFBSSxDQUFDLFdBQVcsQ0FDL0MsSUFBSSxFQUNKLDBCQUEwQixFQUMxQixpQkFBaUIsQ0FDbEIsQ0FBQztRQUVGLGFBQWE7UUFDYixNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FDaEQsSUFBSSxFQUNKLEdBQUcsS0FBSyxDQUFDLGFBQWEsWUFBWSxFQUNsQztZQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYTtTQUM5QixDQUNGLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FDMUMsSUFBSSxFQUNKLEdBQUcsS0FBSyxDQUFDLGFBQWEsZ0JBQWdCLEVBQ3RDO1lBQ0UsY0FBYyxFQUFFLHdCQUF3QjtZQUN4QyxhQUFhLEVBQUUsbUJBQW1CO1lBQ2xDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDakQsQ0FDRixDQUFDO1FBRUYsSUFBSSx1QkFBUyxDQUNYLElBQUksRUFDSixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUN4RDtZQUNFLEdBQUcsRUFBRSxjQUFjO1lBQ25CLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxZQUFZO1lBQ3ZDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYztTQUNyRSxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqREQsa0RBaURDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUMvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUNwRSxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCO1lBQ0UsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYztTQUMvQixDQUNGLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsTUFBTSxJQUFJLEdBQUcsVUFBSSxDQUFDLFdBQVcsQ0FDM0IsSUFBSSxFQUNKLHdCQUF3QixFQUN4QixnQkFBRSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4sIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0IGdldEFjY291bnRJZCBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZ2V0QWNjb3VudElkXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgaG9zdGVkWm9uZVByb3BzIHtcbiAgem9uZU5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2Ugc3ViZG9tYWluSG9zdGVkWm9uZVByb3BzIHtcbiAgZGVsZWdhdGVkWm9uZTogc3RyaW5nO1xuICBwYXJlbnRIb3N0ZWRab25lTmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBpbXBvcnRlZEhvc3RlZFpvbmVQcm9wcyB7XG4gIGhvc3RlZFpvbmVJZDogc3RyaW5nO1xuICBob3N0ZWRab25lTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBob3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9IG5ldyByb3V0ZTUzLkhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lXG4gICAgfSk7XG5cbiAgICBjb25zdCByb2xlID0gUm9sZS5mcm9tUm9sZUFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImRlbGVnYXRlSG9zdGVkWm9uZVJvbGVcIixcbiAgICAgIEZuLmltcG9ydFZhbHVlKFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiKVxuICAgICk7XG5cbiAgICBob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBcIkhvc3RlZFpvbmVJZFwiLFxuICAgICAgdmFsdWU6IGhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7cHJvcHMuem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJkb21haW5Ib3N0ZWRab25lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHN1YmRvbWFpbkhvc3RlZFpvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBEZWxlZ2F0aW9uUm9sZUFyblxuICAgIGNvbnN0IGRlbGVnYXRpb25Sb2xlQXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIGFjY291bnQ6IGdldEFjY291bnRJZChcInByb2R1Y3Rpb25cIikgfHwgXCJUT0RPOiBGYWlsIEdyYWNlZnVsbHlcIixcbiAgICAgIHJlZ2lvbjogXCJcIixcbiAgICAgIHJlc291cmNlOiBcInJvbGVcIixcbiAgICAgIHJlc291cmNlTmFtZTogXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlXCIsXG4gICAgICBzZXJ2aWNlOiBcImlhbVwiXG4gICAgfSk7XG5cbiAgICAvLyBEZWxlZ2F0ZSBIb3N0ZWQgWm9uZSBSb2xlXG4gICAgY29uc3QgaG9zdGVkWm9uZURlbGVnYXRpb25Sb2xlID0gUm9sZS5mcm9tUm9sZUFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImhvc3RlZFpvbmVEZWxlZ2F0aW9uUm9sZVwiLFxuICAgICAgZGVsZWdhdGlvblJvbGVBcm5cbiAgICApO1xuXG4gICAgLy8gU3ViZG9tYWluc1xuICAgIGNvbnN0IGRlbGVnYXRlZEhvc3RlZFpvbmUgPSBuZXcgcm91dGU1My5Ib3N0ZWRab25lKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlbGVnYXRlZFpvbmV9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiBwcm9wcy5kZWxlZ2F0ZWRab25lXG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyByb3V0ZTUzLkNyb3NzQWNjb3VudFpvbmVEZWxlZ2F0aW9uUmVjb3JkKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlbGVnYXRlZFpvbmV9RGVsZWdhdGlvblJvbGVgLFxuICAgICAge1xuICAgICAgICBkZWxlZ2F0aW9uUm9sZTogaG9zdGVkWm9uZURlbGVnYXRpb25Sb2xlLFxuICAgICAgICBkZWxlZ2F0ZWRab25lOiBkZWxlZ2F0ZWRIb3N0ZWRab25lLFxuICAgICAgICBwYXJlbnRIb3N0ZWRab25lTmFtZTogcHJvcHMucGFyZW50SG9zdGVkWm9uZU5hbWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbmV3IENmbk91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kZWxlZ2F0ZWRab25lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGAsXG4gICAgICB7XG4gICAgICAgIGtleTogXCJIb3N0ZWRab25lSWRcIixcbiAgICAgICAgdmFsdWU6IGRlbGVnYXRlZEhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5kZWxlZ2F0ZWRab25lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGBcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRlZEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogaW1wb3J0ZWRIb3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGltcG9ydGVkSG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLFxuICAgICAgXCJpbXBvcnRlZEhvc3RlZFpvbmVcIixcbiAgICAgIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lSWQsXG4gICAgICAgIHpvbmVOYW1lOiBwcm9wcy5ob3N0ZWRab25lTmFtZVxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBEZWxlZ2F0ZSBIb3N0ZWQgWm9uZSBSb2xlXG4gICAgY29uc3Qgcm9sZSA9IFJvbGUuZnJvbVJvbGVBcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlXCIsXG4gICAgICBGbi5pbXBvcnRWYWx1ZShcIkRlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5cIilcbiAgICApO1xuXG4gICAgaW1wb3J0ZWRIb3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Alias = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
class Alias extends aws_cdk_lib_1.aws_kms.Alias {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id, {
|
|
8
|
-
...props
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.Alias = Alias;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9hbGlhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBNkM7QUFFN0MsTUFBYSxLQUFNLFNBQVEscUJBQUcsQ0FBQyxLQUFLO0lBQ2xDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFORCxzQkFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBhd3Nfa21zIGFzIGttcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgY2xhc3MgQWxpYXMgZXh0ZW5kcyBrbXMuQWxpYXMge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczoga21zLkFsaWFzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Connections, IConnectable, Vpc } from "aws-cdk-lib/aws-ec2";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { StackBuilder } from "../awsStack";
|
|
4
|
-
import { KeyValue } from "../compute/ecs";
|
|
5
|
-
interface DatabaseProps {
|
|
6
|
-
vpc: Vpc;
|
|
7
|
-
securityGroupIds: string[];
|
|
8
|
-
tags: KeyValue | undefined;
|
|
9
|
-
buildkiteRoleArn?: string;
|
|
10
|
-
}
|
|
11
|
-
export default class Database extends Construct implements IConnectable {
|
|
12
|
-
private readonly resource;
|
|
13
|
-
connections: Connections;
|
|
14
|
-
databaseSecretName: string;
|
|
15
|
-
constructor(scope: Construct, id: string, props: DatabaseProps);
|
|
16
|
-
static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constructs_1 = require("constructs");
|
|
4
|
-
const rds_1 = require("./rds");
|
|
5
|
-
class Database extends constructs_1.Construct {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id);
|
|
8
|
-
this.resource = new rds_1.default(scope, `${id}Rds`, {
|
|
9
|
-
vpc: props.vpc,
|
|
10
|
-
defaultDatabaseName: id.replace("Database", ""),
|
|
11
|
-
tags: props.tags || {},
|
|
12
|
-
securityGroupIds: props.securityGroupIds,
|
|
13
|
-
buildkiteRoleArn: props.buildkiteRoleArn
|
|
14
|
-
});
|
|
15
|
-
this.connections = this.resource.connections;
|
|
16
|
-
}
|
|
17
|
-
//todo: move to generic 'resource' class
|
|
18
|
-
static build(id, props) {
|
|
19
|
-
return (sb) => {
|
|
20
|
-
const newProps = {
|
|
21
|
-
...props,
|
|
22
|
-
...{
|
|
23
|
-
vpc: sb.getNetwork() || props?.vpc,
|
|
24
|
-
securityGroupIds: props?.securityGroupIds ?? [],
|
|
25
|
-
tags: props?.tags
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
return new this(sb.getStack(), id, newProps);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.default = Database;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDJDQUF1QztBQUl2QywrQkFBd0I7QUFTeEIsTUFBcUIsUUFBUyxTQUFRLHNCQUFTO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3pDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ3RCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQy9DLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsTUFBTSxDQUFDLEtBQUssQ0FDVixFQUFVLEVBQ1YsS0FBOEI7UUFFOUIsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixNQUFNLFFBQVEsR0FBa0I7Z0JBQzlCLEdBQUcsS0FBSztnQkFDUixHQUFHO29CQUNELEdBQUcsRUFBRyxFQUFFLENBQUMsVUFBVSxFQUFVLElBQUksS0FBSyxFQUFFLEdBQUc7b0JBQzNDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO29CQUMvQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7aUJBQ2xCO2FBQ0YsQ0FBQztZQUVGLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFyQ0QsMkJBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvbnMsIElDb25uZWN0YWJsZSwgVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9hd3NTdGFja1wiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9lY3NcIjtcbmltcG9ydCBSZHMgZnJvbSBcIi4vcmRzXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdnBjOiBWcGM7XG4gIHNlY3VyaXR5R3JvdXBJZHM6IHN0cmluZ1tdO1xuICB0YWdzOiBLZXlWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgYnVpbGRraXRlUm9sZUFybj86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBSZHM7XG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG4gIHB1YmxpYyBkYXRhYmFzZVNlY3JldE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IFJkcyhzY29wZSwgYCR7aWR9UmRzYCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkZWZhdWx0RGF0YWJhc2VOYW1lOiBpZC5yZXBsYWNlKFwiRGF0YWJhc2VcIiwgXCJcIiksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzIHx8IHt9LFxuICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgIGJ1aWxka2l0ZVJvbGVBcm46IHByb3BzLmJ1aWxka2l0ZVJvbGVBcm5cbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlc291cmNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgLy90b2RvOiBtb3ZlIHRvIGdlbmVyaWMgJ3Jlc291cmNlJyBjbGFzc1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IFBhcnRpYWw8RGF0YWJhc2VQcm9wcz5cbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wczogRGF0YWJhc2VQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IChzYi5nZXROZXR3b3JrKCkgYXMgVnBjKSB8fCBwcm9wcz8udnBjLFxuICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHByb3BzPy5zZWN1cml0eUdyb3VwSWRzID8/IFtdLFxuICAgICAgICAgIHRhZ3M6IHByb3BzPy50YWdzXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgbmV3UHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|