@fjall/components-infrastructure 0.1.10 → 0.1.16
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/app.d.ts +2 -1
- package/dist/lib/app.js +4 -2
- package/dist/lib/config/aws/accountId.d.ts +6 -0
- package/dist/lib/config/aws/accountId.js +33 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +10 -0
- package/dist/lib/config/aws/cloudTrail.js +22 -0
- package/dist/lib/config/aws/costAllocationTags.d.ts +2 -3
- package/dist/lib/config/aws/costAllocationTags.js +6 -5
- package/dist/lib/config/aws/ecrDefaultImage.d.ts +11 -0
- package/dist/lib/config/aws/ecrDefaultImage.js +127 -0
- package/dist/lib/config/aws/eventBus.d.ts +7 -0
- package/dist/lib/config/aws/eventBus.js +24 -0
- package/dist/lib/config/aws/identityCenter.d.ts +11 -3
- package/dist/lib/config/aws/identityCenter.js +24 -29
- package/dist/lib/config/aws/identityCenterUser.d.ts +16 -0
- package/dist/lib/config/aws/identityCenterUser.js +125 -0
- package/dist/lib/config/aws/index.d.ts +8 -4
- package/dist/lib/config/aws/index.js +9 -5
- package/dist/lib/config/aws/ipam.d.ts +2 -2
- package/dist/lib/config/aws/ipam.js +25 -7
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +4 -5
- package/dist/lib/config/aws/ipamDelegateAdmin.js +9 -13
- package/dist/lib/config/aws/ipamPoolId.d.ts +10 -0
- package/dist/lib/config/aws/ipamPoolId.js +38 -0
- package/dist/lib/config/aws/organisation.d.ts +28 -0
- package/dist/lib/config/aws/organisation.js +112 -0
- package/dist/lib/config/aws/organisationId.d.ts +4 -2
- package/dist/lib/config/aws/organisationId.js +13 -7
- package/dist/lib/config/aws/ramSharing.d.ts +4 -0
- package/dist/lib/config/aws/ramSharing.js +35 -0
- package/dist/lib/patterns/aws/basicApp.d.ts +5 -4
- package/dist/lib/patterns/aws/basicApp.js +18 -18
- package/dist/lib/patterns/aws/buildkite.d.ts +40 -31
- package/dist/lib/patterns/aws/buildkite.js +74 -46
- package/dist/lib/patterns/aws/freeTierApp.d.ts +47 -0
- package/dist/lib/patterns/aws/freeTierApp.js +95 -0
- package/dist/lib/patterns/aws/hostedZone.d.ts +11 -0
- package/dist/lib/patterns/aws/hostedZone.js +73 -0
- package/dist/lib/patterns/aws/index.d.ts +3 -0
- package/dist/lib/patterns/aws/index.js +4 -1
- package/dist/lib/patterns/aws/managedAccount.d.ts +13 -0
- package/dist/lib/patterns/aws/managedAccount.js +40 -0
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +14 -24
- package/dist/lib/patterns/aws/managedOrganisation.js +39 -146
- package/dist/lib/patterns/aws/managedPlatform.d.ts +13 -0
- package/dist/lib/patterns/aws/managedPlatform.js +22 -0
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +47 -0
- package/dist/lib/patterns/aws/spotInstanceApp.js +95 -0
- package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +9 -0
- package/dist/lib/patterns/aws/subdomainHostedZone.js +39 -0
- package/dist/lib/resources/aws/awsStack.d.ts +2 -2
- package/dist/lib/resources/aws/awsStack.js +3 -3
- package/dist/lib/resources/aws/compute/ecs.d.ts +2 -4
- package/dist/lib/resources/aws/compute/ecs.js +10 -6
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +352 -0
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecsSpot.js +334 -0
- package/dist/lib/resources/aws/compute/index.d.ts +2 -0
- package/dist/lib/resources/aws/compute/index.js +19 -0
- package/dist/lib/resources/aws/compute/lambda.d.ts +7 -7
- package/dist/lib/resources/aws/compute/lambda.js +8 -7
- package/dist/lib/resources/aws/database/database.d.ts +16 -0
- package/dist/lib/resources/aws/database/database.js +30 -0
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +17 -0
- package/dist/lib/resources/aws/database/databaseFreeTier.js +31 -0
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +17 -0
- package/dist/lib/resources/aws/database/databaseInstance.js +32 -0
- package/dist/lib/resources/aws/database/index.d.ts +2 -0
- package/dist/lib/resources/aws/database/index.js +19 -0
- package/dist/lib/resources/aws/database/rds.d.ts +23 -0
- package/dist/lib/resources/aws/database/rds.js +130 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +36 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.js +80 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +42 -0
- package/dist/lib/resources/aws/database/rdsInstance.js +173 -0
- package/dist/lib/resources/aws/logging/cloudTrail.d.ts +18 -0
- package/dist/lib/resources/aws/logging/cloudTrail.js +46 -0
- package/dist/lib/resources/aws/logging/logGroup.d.ts +3 -3
- package/dist/lib/resources/aws/logging/logGroup.js +3 -3
- package/dist/lib/resources/aws/networking/index.d.ts +1 -1
- package/dist/lib/resources/aws/networking/index.js +2 -2
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +16 -3
- package/dist/lib/resources/aws/networking/ipamPool.js +78 -6
- package/dist/lib/resources/aws/networking/vpc.d.ts +29 -0
- package/dist/lib/resources/aws/networking/vpc.js +66 -0
- package/dist/lib/resources/aws/secrets/alias.d.ts +5 -0
- package/dist/lib/resources/aws/secrets/alias.js +13 -0
- package/dist/lib/resources/aws/secrets/index.d.ts +5 -0
- package/dist/lib/resources/aws/secrets/index.js +22 -0
- package/dist/lib/resources/aws/secrets/kms.d.ts +14 -0
- package/dist/lib/resources/aws/secrets/kms.js +34 -0
- package/dist/lib/resources/aws/secrets/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/secrets/parameter.js +100 -0
- package/dist/lib/resources/aws/secrets/secret.d.ts +24 -0
- package/dist/lib/resources/aws/secrets/secret.js +53 -0
- package/dist/lib/resources/aws/storage/ecr.d.ts +12 -0
- package/dist/lib/resources/aws/storage/ecr.js +31 -0
- package/dist/lib/resources/aws/storage/index.d.ts +2 -0
- package/dist/lib/resources/aws/storage/index.js +19 -0
- package/dist/lib/resources/aws/storage/s3.d.ts +11 -0
- package/dist/lib/resources/aws/storage/s3.js +44 -0
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +15 -0
- package/dist/lib/resources/aws/utilities/codeBuild.js +28 -0
- package/dist/lib/resources/aws/utilities/customResource.js +2 -2
- package/dist/lib/types.d.ts +3 -0
- package/dist/lib/types.js +3 -0
- package/dist/lib/utils/capitalizeString.d.ts +1 -0
- package/dist/lib/utils/capitalizeString.js +8 -0
- package/dist/lib/utils/getAccountId.d.ts +1 -1
- package/dist/lib/utils/getAccountId.js +7 -5
- package/dist/lib/utils/getAsync.d.ts +10 -0
- package/dist/lib/utils/getAsync.js +37 -0
- package/dist/lib/utils/getCidr.d.ts +8 -0
- package/dist/lib/utils/getCidr.js +42 -0
- package/dist/lib/utils/getConfig.d.ts +6 -3
- package/dist/lib/utils/getConfig.js +32 -14
- package/dist/lib/utils/stripAndCamelCase.d.ts +1 -0
- package/dist/lib/utils/stripAndCamelCase.js +17 -0
- package/dist/lib/utils/usersConfig.d.ts +7 -0
- package/dist/lib/utils/usersConfig.js +18 -0
- package/package.json +7 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HostedZone = void 0;
|
|
4
|
+
const route53 = require("aws-cdk-lib/aws-route53");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const iam_1 = require("../../resources/aws/iam");
|
|
7
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
8
|
+
const tagResource_1 = require("../../utils/tagResource");
|
|
9
|
+
class HostedZone extends aws_cdk_lib_1.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id);
|
|
12
|
+
if (props.importExisting) {
|
|
13
|
+
this.hostedZone = route53.HostedZone.fromHostedZoneAttributes(this, "importedHostedZone", {
|
|
14
|
+
hostedZoneId: props.importedHostedZoneId || "",
|
|
15
|
+
zoneName: props.zoneName
|
|
16
|
+
});
|
|
17
|
+
(0, tagResource_1.default)(this.hostedZone, {
|
|
18
|
+
"fjall:costAllocation:environment": "management",
|
|
19
|
+
"fjall:costAllocation:service": "hostedZone",
|
|
20
|
+
"fjall:costAllocation:domain": `${props.zoneName}`
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.hostedZone = new route53.HostedZone(this, "HostedZone", {
|
|
25
|
+
zoneName: props.zoneName,
|
|
26
|
+
comment: `Hosted Zone for ${props.zoneName}`
|
|
27
|
+
});
|
|
28
|
+
(0, tagResource_1.default)(this.hostedZone, {
|
|
29
|
+
"fjall:costAllocation:environment": "management",
|
|
30
|
+
"fjall:costAllocation:service": "hostedZone",
|
|
31
|
+
"fjall:costAllocation:domain": `${props.zoneName}`
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const domainName = this.hostedZone.zoneName.split(".", 1);
|
|
35
|
+
const role = new iam_1.Role(this, `${domainName}DelegateHostedZoneRole`, {
|
|
36
|
+
assumedBy: new aws_iam_1.OrganizationPrincipal(aws_cdk_lib_1.Fn.importValue("OrganisationId")),
|
|
37
|
+
roleName: `${domainName}DelegateHostedZoneRole`,
|
|
38
|
+
inlinePolicies: {
|
|
39
|
+
["listHostedZones"]: new aws_iam_1.PolicyDocument({
|
|
40
|
+
statements: [
|
|
41
|
+
new aws_iam_1.PolicyStatement({
|
|
42
|
+
actions: ["route53:ListHostedZonesByName"],
|
|
43
|
+
resources: ["*"]
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
}),
|
|
47
|
+
["changeResourceRecordSets"]: new aws_iam_1.PolicyDocument({
|
|
48
|
+
statements: [
|
|
49
|
+
new aws_iam_1.PolicyStatement({
|
|
50
|
+
actions: ["route53:ChangeResourceRecordSets"],
|
|
51
|
+
resources: [
|
|
52
|
+
`arn:aws:route53:::hostedzone/${this.hostedZone.hostedZoneId}`
|
|
53
|
+
]
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
new aws_cdk_lib_1.CfnOutput(this, "DelegateHostedZoneRoleArn", {
|
|
60
|
+
key: `${domainName}DelegateHostedZoneRoleArn`,
|
|
61
|
+
value: role.roleArn,
|
|
62
|
+
exportName: `${domainName}DelegateHostedZoneRoleArn`
|
|
63
|
+
});
|
|
64
|
+
this.hostedZone.grantDelegation(role);
|
|
65
|
+
new aws_cdk_lib_1.CfnOutput(this, `${props.zoneName.split(".").join("")}HostedZoneId`, {
|
|
66
|
+
key: "HostedZoneId",
|
|
67
|
+
value: this.hostedZone.hostedZoneId,
|
|
68
|
+
exportName: `${props.zoneName.split(".").join("")}HostedZoneId`
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.HostedZone = HostedZone;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBbUQ7QUFDbkQsNkNBQW1EO0FBQ25ELGlEQUErQztBQUMvQyxpREFJNkI7QUFFN0IseURBQWtEO0FBUWxELE1BQWEsVUFBVyxTQUFRLG1CQUFLO0lBRW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUMzRCxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCO2dCQUNFLFlBQVksRUFBRSxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRTtnQkFDOUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCLENBQ0YsQ0FBQztZQUNGLElBQUEscUJBQVcsRUFBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUMzQixrQ0FBa0MsRUFBRSxZQUFZO2dCQUNoRCw4QkFBOEIsRUFBRSxZQUFZO2dCQUM1Qyw2QkFBNkIsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUU7YUFDbkQsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdDLENBQUMsQ0FBQztZQUNILElBQUEscUJBQVcsRUFBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUMzQixrQ0FBa0MsRUFBRSxZQUFZO2dCQUNoRCw4QkFBOEIsRUFBRSxZQUFZO2dCQUM1Qyw2QkFBNkIsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUU7YUFDbkQsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUFHLElBQUksVUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLFVBQVUsd0JBQXdCLEVBQUU7WUFDakUsU0FBUyxFQUFFLElBQUksK0JBQXFCLENBQUMsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0RSxRQUFRLEVBQUUsR0FBRyxVQUFVLHdCQUF3QjtZQUMvQyxjQUFjLEVBQUU7Z0JBQ2QsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDdEMsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7NEJBQzFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzt5QkFDakIsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2dCQUNGLENBQUMsMEJBQTBCLENBQUMsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQy9DLFVBQVUsRUFBRTt3QkFDVixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDOzRCQUM3QyxTQUFTLEVBQUU7Z0NBQ1QsZ0NBQWdDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFOzZCQUMvRDt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUU7WUFDL0MsR0FBRyxFQUFFLEdBQUcsVUFBVSwyQkFBMkI7WUFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLFVBQVUsRUFBRSxHQUFHLFVBQVUsMkJBQTJCO1NBQ3JELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUN2RSxHQUFHLEVBQUUsY0FBYztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO1lBQ25DLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYztTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2RUQsZ0NBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIEZuLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJSG9zdGVkWm9uZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIGhvc3RlZFpvbmVQcm9wcyB7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIGltcG9ydEV4aXN0aW5nPzogYm9vbGVhbjtcbiAgaW1wb3J0ZWRIb3N0ZWRab25lSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBIb3N0ZWRab25lIGV4dGVuZHMgU3RhY2sge1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lIHwgSG9zdGVkWm9uZTtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGhvc3RlZFpvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuaW1wb3J0RXhpc3RpbmcpIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiaW1wb3J0ZWRIb3N0ZWRab25lXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmltcG9ydGVkSG9zdGVkWm9uZUlkIHx8IFwiXCIsIC8vIFRPRE86IGZpeCBzbyB0aGlzIGNhbiByZWFsbHkgYmUgYW4gb3B0aW9uYWwgcHJvcFxuICAgICAgICAgIHpvbmVOYW1lOiBwcm9wcy56b25lTmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGFnUmVzb3VyY2UodGhpcy5ob3N0ZWRab25lLCB7XG4gICAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogXCJtYW5hZ2VtZW50XCIsXG4gICAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOiBcImhvc3RlZFpvbmVcIixcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpkb21haW5cIjogYCR7cHJvcHMuem9uZU5hbWV9YFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IG5ldyByb3V0ZTUzLkhvc3RlZFpvbmUodGhpcywgXCJIb3N0ZWRab25lXCIsIHtcbiAgICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lLFxuICAgICAgICBjb21tZW50OiBgSG9zdGVkIFpvbmUgZm9yICR7cHJvcHMuem9uZU5hbWV9YFxuICAgICAgfSk7XG4gICAgICB0YWdSZXNvdXJjZSh0aGlzLmhvc3RlZFpvbmUsIHtcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiOiBcIm1hbmFnZW1lbnRcIixcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IFwiaG9zdGVkWm9uZVwiLFxuICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmRvbWFpblwiOiBgJHtwcm9wcy56b25lTmFtZX1gXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gdGhpcy5ob3N0ZWRab25lLnpvbmVOYW1lLnNwbGl0KFwiLlwiLCAxKTtcbiAgICBjb25zdCByb2xlID0gbmV3IFJvbGUodGhpcywgYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZWAsXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbXCJsaXN0SG9zdGVkWm9uZXNcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcInJvdXRlNTM6TGlzdEhvc3RlZFpvbmVzQnlOYW1lXCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wiY2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgYGFybjphd3M6cm91dGU1Mzo6Omhvc3RlZHpvbmUvJHt0aGlzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkfWBcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiLCB7XG4gICAgICBrZXk6IGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmAsXG4gICAgICB2YWx1ZTogcm9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYFxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBcIkhvc3RlZFpvbmVJZFwiLFxuICAgICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZS5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy56b25lTmFtZS5zcGxpdChcIi5cIikuam9pbihcIlwiKX1Ib3N0ZWRab25lSWRgXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -15,5 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./managedOrganisation"), exports);
|
|
18
|
+
__exportStar(require("./managedPlatform"), exports);
|
|
19
|
+
__exportStar(require("./managedAccount"), exports);
|
|
18
20
|
__exportStar(require("./basicApp"), exports);
|
|
19
|
-
|
|
21
|
+
__exportStar(require("./buildkite"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBc0M7QUFDdEMsb0RBQWtDO0FBQ2xDLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZE9yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZFBsYXRmb3JtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkQWNjb3VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzaWNBcHBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1aWxka2l0ZVwiO1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Stack, StackProps } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export interface ManagedAccountProps extends StackProps {
|
|
4
|
+
accountId: string;
|
|
5
|
+
accountName: string;
|
|
6
|
+
region: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A stack for deploying defaults into a new account.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ManagedAccount extends Stack {
|
|
12
|
+
constructor(scope: Construct, id: string, props: ManagedAccountProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ManagedAccount = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_1 = require("../../config/aws");
|
|
6
|
+
const cloudTrail_1 = require("../../config/aws/cloudTrail");
|
|
7
|
+
const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
|
|
8
|
+
/**
|
|
9
|
+
* A stack for deploying defaults into a new account.
|
|
10
|
+
*/
|
|
11
|
+
class ManagedAccount extends aws_cdk_lib_1.Stack {
|
|
12
|
+
constructor(scope, id, props) {
|
|
13
|
+
super(scope, id, props);
|
|
14
|
+
const organisation = new aws_1.OrganisationId(this, "OrganisationId");
|
|
15
|
+
const account = new aws_1.AccountId(this, "AccountId");
|
|
16
|
+
const eventBus = new aws_1.DefaultEventBus(this, "EventBus");
|
|
17
|
+
if (id === "ManagedAccount") {
|
|
18
|
+
new aws_1.IpamPoolId(this, "IpamPoolId", {
|
|
19
|
+
accountName: props.accountName,
|
|
20
|
+
region: props.region,
|
|
21
|
+
ownerId: organisation.organisationAccountArn.value.split(":")[4]
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
new cloudTrail_1.ManagementEventsTrail(this, "CloudTrail", {
|
|
25
|
+
accountId: account.accountId.value
|
|
26
|
+
});
|
|
27
|
+
new aws_1.EcrDefaultImage(this, "EcrDefaultImage", {
|
|
28
|
+
region: props.region,
|
|
29
|
+
accountId: account.accountId.value,
|
|
30
|
+
eventBusArn: eventBus.defaultEventBusArn.value
|
|
31
|
+
});
|
|
32
|
+
new cfnOutput_1.CfnOutput(this, `AccountName`, {
|
|
33
|
+
key: `AccountName`,
|
|
34
|
+
value: props.accountName,
|
|
35
|
+
exportName: `AccountName`
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.ManagedAccount = ManagedAccount;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZEFjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL21hbmFnZWRBY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRDtBQUNoRCwwQ0FNMEI7QUFHMUIsNERBQW9FO0FBQ3BFLHVFQUFvRTtBQVFwRTs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLG1CQUFLO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBUyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLHFCQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXZELElBQUksRUFBRSxLQUFLLGdCQUFnQixFQUFFO1lBQzNCLElBQUksZ0JBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUNqQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDcEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRSxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksa0NBQXFCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUM1QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO1NBQ25DLENBQUMsQ0FBQztRQUVILElBQUkscUJBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFDbEMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLO1NBQy9DLENBQUMsQ0FBQztRQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVztZQUN4QixVQUFVLEVBQUUsYUFBYTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsQ0Qsd0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIE9yZ2FuaXNhdGlvbklkLFxuICBBY2NvdW50SWQsXG4gIElwYW1Qb29sSWQsXG4gIEVjckRlZmF1bHRJbWFnZSxcbiAgRGVmYXVsdEV2ZW50QnVzXG59IGZyb20gXCIuLi8uLi9jb25maWcvYXdzXCI7XG5pbXBvcnQge30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VtZW50RXZlbnRzVHJhaWwgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9jbG91ZFRyYWlsXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY2ZuT3V0cHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZEFjY291bnRQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzdGFjayBmb3IgZGVwbG95aW5nIGRlZmF1bHRzIGludG8gYSBuZXcgYWNjb3VudC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmFnZWRBY2NvdW50IGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWFuYWdlZEFjY291bnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgY29uc3Qgb3JnYW5pc2F0aW9uID0gbmV3IE9yZ2FuaXNhdGlvbklkKHRoaXMsIFwiT3JnYW5pc2F0aW9uSWRcIik7XG5cbiAgICBjb25zdCBhY2NvdW50ID0gbmV3IEFjY291bnRJZCh0aGlzLCBcIkFjY291bnRJZFwiKTtcblxuICAgIGNvbnN0IGV2ZW50QnVzID0gbmV3IERlZmF1bHRFdmVudEJ1cyh0aGlzLCBcIkV2ZW50QnVzXCIpO1xuXG4gICAgaWYgKGlkID09PSBcIk1hbmFnZWRBY2NvdW50XCIpIHtcbiAgICAgIG5ldyBJcGFtUG9vbElkKHRoaXMsIFwiSXBhbVBvb2xJZFwiLCB7XG4gICAgICAgIGFjY291bnROYW1lOiBwcm9wcy5hY2NvdW50TmFtZSxcbiAgICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICAgIG93bmVySWQ6IG9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25BY2NvdW50QXJuLnZhbHVlLnNwbGl0KFwiOlwiKVs0XVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IE1hbmFnZW1lbnRFdmVudHNUcmFpbCh0aGlzLCBcIkNsb3VkVHJhaWxcIiwge1xuICAgICAgYWNjb3VudElkOiBhY2NvdW50LmFjY291bnRJZC52YWx1ZVxuICAgIH0pO1xuXG4gICAgbmV3IEVjckRlZmF1bHRJbWFnZSh0aGlzLCBcIkVjckRlZmF1bHRJbWFnZVwiLCB7XG4gICAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICAgIGFjY291bnRJZDogYWNjb3VudC5hY2NvdW50SWQudmFsdWUsXG4gICAgICBldmVudEJ1c0FybjogZXZlbnRCdXMuZGVmYXVsdEV2ZW50QnVzQXJuLnZhbHVlXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBBY2NvdW50TmFtZWAsIHtcbiAgICAgIGtleTogYEFjY291bnROYW1lYCxcbiAgICAgIHZhbHVlOiBwcm9wcy5hY2NvdW50TmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IGBBY2NvdW50TmFtZWBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,31 +1,21 @@
|
|
|
1
|
-
import { Stack } from "aws-cdk-lib";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Environment, Stack, StackProps } from "aws-cdk-lib";
|
|
2
|
+
import { Account } from "@aws-sdk/client-organizations";
|
|
3
|
+
type ExtendedStackProps = Omit<StackProps, "env"> & {
|
|
4
|
+
env: Required<Pick<Environment, "region">> & Partial<Omit<Environment, "region">>;
|
|
5
|
+
};
|
|
6
|
+
interface ManagedOrganisationProps extends ExtendedStackProps {
|
|
5
7
|
organisationName: string;
|
|
6
|
-
|
|
8
|
+
orgAccounts: string[];
|
|
9
|
+
platformAccount: string;
|
|
10
|
+
orgEmail: string;
|
|
11
|
+
identityCenter?: boolean;
|
|
12
|
+
existingAccounts?: Account[];
|
|
7
13
|
}
|
|
8
|
-
/**
|
|
9
|
-
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
10
|
-
*/
|
|
11
|
-
export declare class ManagedOrganisation extends Construct {
|
|
12
|
-
props: ManagedOrganisationProps;
|
|
13
|
-
private organisation;
|
|
14
|
-
private organisationalUnits;
|
|
15
|
-
private accounts;
|
|
16
|
-
constructor(scope: Construct, id: string, props: ManagedOrganisationProps);
|
|
17
|
-
private addOrganisation;
|
|
18
|
-
private addOrganisationUnitsAndAccounts;
|
|
19
|
-
private addOrganisationalUnit;
|
|
20
|
-
private addAccount;
|
|
21
|
-
getAccounts(): Account[];
|
|
22
|
-
}
|
|
23
|
-
export default ManagedOrganisation;
|
|
24
14
|
/**
|
|
25
15
|
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
26
16
|
*/
|
|
27
|
-
export declare class
|
|
28
|
-
private
|
|
17
|
+
export declare class ManagedOrganisation extends Stack {
|
|
18
|
+
private organisation;
|
|
29
19
|
constructor(id: string, props: ManagedOrganisationProps);
|
|
30
|
-
getAccounts(): Account[];
|
|
31
20
|
}
|
|
21
|
+
export {};
|
|
@@ -1,159 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ManagedOrganisation = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const constructs_1 = require("constructs");
|
|
6
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
7
5
|
const app_1 = require("../../app");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
6
|
+
const identityCenter_1 = require("../../config/aws/identityCenter");
|
|
7
|
+
const ipamDelegateAdmin_1 = require("../../config/aws/ipamDelegateAdmin");
|
|
8
|
+
const ramSharing_1 = require("../../config/aws/ramSharing");
|
|
9
|
+
const costAllocationTags_1 = require("../../config/aws/costAllocationTags");
|
|
10
|
+
const organisation_1 = require("../../config/aws/organisation");
|
|
11
|
+
const identityCenterUser_1 = require("../../config/aws/identityCenterUser");
|
|
10
12
|
/**
|
|
11
|
-
* A
|
|
13
|
+
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
12
14
|
*/
|
|
13
|
-
class ManagedOrganisation extends
|
|
14
|
-
constructor(
|
|
15
|
-
super(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.addOrganisation();
|
|
20
|
-
this.addOrganisationUnitsAndAccounts();
|
|
21
|
-
//todo: Consider adding the remaining AWS recommended organisational units
|
|
22
|
-
// https://aws.amazon.com/blogs/mt/best-practices-for-organizational-units-with-aws-organizations/
|
|
23
|
-
// - deployments (build agents - accounts may be specific per 'service')
|
|
24
|
-
// - security
|
|
25
|
-
// - sandbox (equivalent to development unit?)
|
|
26
|
-
// - workloads
|
|
27
|
-
}
|
|
28
|
-
addOrganisation() {
|
|
29
|
-
this.organisation = new cdk_organizations_1.Organization(this, this.props.organisationName, {
|
|
30
|
-
featureSet: cdk_organizations_1.FeatureSet.ALL
|
|
31
|
-
});
|
|
32
|
-
const enforcedPolicyTypes = [
|
|
33
|
-
cdk_organizations_1.PolicyType.SERVICE_CONTROL_POLICY,
|
|
34
|
-
cdk_organizations_1.PolicyType.TAG_POLICY,
|
|
35
|
-
cdk_organizations_1.PolicyType.BACKUP_POLICY,
|
|
36
|
-
cdk_organizations_1.PolicyType.AISERVICES_OPT_OUT_POLICY
|
|
37
|
-
];
|
|
38
|
-
for (const policyType of enforcedPolicyTypes) {
|
|
39
|
-
this.organisation.enablePolicyType(policyType);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
addOrganisationUnitsAndAccounts() {
|
|
43
|
-
const orgStructure = [
|
|
44
|
-
{
|
|
45
|
-
id: "productionOrganizationalUnit",
|
|
46
|
-
name: "Production",
|
|
47
|
-
accounts: [
|
|
48
|
-
{
|
|
49
|
-
id: "productionAccount",
|
|
50
|
-
name: "Production",
|
|
51
|
-
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "production")
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: "stagingOrganizationalUnit",
|
|
57
|
-
name: "Staging",
|
|
58
|
-
accounts: [
|
|
59
|
-
{
|
|
60
|
-
id: "stagingAccount",
|
|
61
|
-
name: "Staging",
|
|
62
|
-
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "staging")
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
id: "developmentOrganizationalUnit",
|
|
68
|
-
name: "Development",
|
|
69
|
-
accounts: [
|
|
70
|
-
{
|
|
71
|
-
id: "developmentAccount",
|
|
72
|
-
name: "Development",
|
|
73
|
-
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "development")
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
id: "platformOrganizationalUnit",
|
|
79
|
-
name: "Platform",
|
|
80
|
-
accounts: [
|
|
81
|
-
{
|
|
82
|
-
id: "platformAccount",
|
|
83
|
-
name: "Platform",
|
|
84
|
-
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "platform")
|
|
85
|
-
}
|
|
86
|
-
]
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
id: "businessContinuityOrganizationalUnit",
|
|
90
|
-
name: "BusinessContinuity",
|
|
91
|
-
accounts: [
|
|
92
|
-
{
|
|
93
|
-
id: "businessContinuityAccount",
|
|
94
|
-
name: "BusinessContinuity",
|
|
95
|
-
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "businessContinuity")
|
|
96
|
-
}
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
];
|
|
100
|
-
for (const orgUnitStructure of orgStructure) {
|
|
101
|
-
const orgUnit = this.addOrganisationalUnit(orgUnitStructure.id, orgUnitStructure.name);
|
|
102
|
-
for (const accountStructure of orgUnitStructure.accounts) {
|
|
103
|
-
this.addAccount(accountStructure.id, accountStructure.name, accountStructure.email, { env: orgUnitStructure.name.toLocaleLowerCase() }, orgUnit);
|
|
104
|
-
}
|
|
15
|
+
class ManagedOrganisation extends aws_cdk_lib_1.Stack {
|
|
16
|
+
constructor(id, props) {
|
|
17
|
+
super(app_1.default.getInstance(), id, props);
|
|
18
|
+
// Error out if the platform account is not listed in account names
|
|
19
|
+
if (!props.orgAccounts.includes(props.platformAccount)) {
|
|
20
|
+
throw new Error(`Platform account "${props.platformAccount}" is not listed in account names.`);
|
|
105
21
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// importOnDuplicate: false, //todo: should we import pre-existing organisational units?
|
|
22
|
+
this.organisation = new organisation_1.default(this, id, {
|
|
23
|
+
organisationName: props.organisationName,
|
|
24
|
+
orgAccounts: props.orgAccounts,
|
|
25
|
+
platformAccount: props.platformAccount,
|
|
26
|
+
orgEmail: props.orgEmail,
|
|
27
|
+
env: props.env,
|
|
28
|
+
existingAccounts: props.existingAccounts
|
|
114
29
|
});
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const acc = new cdk_organizations_1.Account(this, id, {
|
|
120
|
-
accountName: name,
|
|
121
|
-
email: email,
|
|
122
|
-
parent: organisationalUnit
|
|
30
|
+
const orgAccounts = this.organisation.getAccounts();
|
|
31
|
+
// Delegate IPAM to the Platform account
|
|
32
|
+
new ipamDelegateAdmin_1.IpamDelegateAdmin(this, "IpamDelegateAdmin", {
|
|
33
|
+
accountId: orgAccounts[props.platformAccount]
|
|
123
34
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
35
|
+
// Enable RAM Sharing
|
|
36
|
+
new ramSharing_1.RamSharing(this, "RamSharing");
|
|
37
|
+
// Enable Cost Allocation Tags
|
|
38
|
+
new costAllocationTags_1.CostAllocationTags(this, "CostAllocationTags");
|
|
39
|
+
if (props.identityCenter) {
|
|
40
|
+
// Setup Identity Center
|
|
41
|
+
const identityCenter = new identityCenter_1.IdentityCenter(this, "IdentityCenter", {
|
|
42
|
+
accounts: orgAccounts
|
|
43
|
+
});
|
|
44
|
+
new identityCenterUser_1.IdentityCenterUser(this, "IdentityCenterUser", {
|
|
45
|
+
identityStoreId: identityCenter.identityStoreId,
|
|
46
|
+
identityCenterGroups: identityCenter.identityCenterGroups
|
|
47
|
+
});
|
|
127
48
|
}
|
|
128
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Id`, {
|
|
129
|
-
key: `${id}Id`,
|
|
130
|
-
value: acc.accountId,
|
|
131
|
-
exportName: `${id}Id`
|
|
132
|
-
});
|
|
133
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Arn`, {
|
|
134
|
-
key: `${id}Arn`,
|
|
135
|
-
value: acc.accountId,
|
|
136
|
-
exportName: `${id}Arn`
|
|
137
|
-
});
|
|
138
|
-
return acc;
|
|
139
|
-
}
|
|
140
|
-
getAccounts() {
|
|
141
|
-
return this.accounts;
|
|
142
49
|
}
|
|
143
50
|
}
|
|
144
51
|
exports.ManagedOrganisation = ManagedOrganisation;
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
148
|
-
*/
|
|
149
|
-
class ManagedOrganisationStack extends aws_cdk_lib_1.Stack {
|
|
150
|
-
constructor(id, props) {
|
|
151
|
-
super(app_1.default.getInstance(), id);
|
|
152
|
-
this.resource = new ManagedOrganisation(this, id, props);
|
|
153
|
-
}
|
|
154
|
-
getAccounts() {
|
|
155
|
-
return this.resource.getAccounts();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.ManagedOrganisationStack = ManagedOrganisationStack;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLDZDQUFtQztBQUVuQyxtQ0FBNEI7QUFFNUIsb0VBTXNDO0FBRXRDLG1FQUE0RDtBQW1CNUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBT2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUpYLHdCQUFtQixHQUF5QixFQUFFLENBQUM7UUFDL0MsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUkvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFFdkMsMEVBQTBFO1FBQzFFLGtHQUFrRztRQUNsRyx3RUFBd0U7UUFDeEUsYUFBYTtRQUNiLDhDQUE4QztRQUM5QyxjQUFjO0lBQ2hCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQ3RFLFVBQVUsRUFBRSw4QkFBVSxDQUFDLEdBQUc7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxtQkFBbUIsR0FBaUI7WUFDeEMsOEJBQVUsQ0FBQyxzQkFBc0I7WUFDakMsOEJBQVUsQ0FBQyxVQUFVO1lBQ3JCLDhCQUFVLENBQUMsYUFBYTtZQUN4Qiw4QkFBVSxDQUFDLHlCQUF5QjtTQUNyQyxDQUFDO1FBRUYsS0FBSyxNQUFNLFVBQVUsSUFBSSxtQkFBbUIsRUFBRTtZQUM1QyxJ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QUFhLHdCQUF5QixTQUFRLG1CQUFLO0lBR2pELFlBQVksRUFBVSxFQUFFLEtBQStCO1FBQ3JELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVhELDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7XG4gIEFjY291bnQsXG4gIEZlYXR1cmVTZXQsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uYWxVbml0LFxuICBQb2xpY3lUeXBlXG59IGZyb20gXCJAcGVwcGVyaXplL2Nkay1vcmdhbml6YXRpb25zXCI7XG5cbmltcG9ydCBhZGRTdWZmaXhUb0VtYWlsIGZyb20gXCIuLi8uLi91dGlscy9hZGRTdWZmaXhUb0VtYWlsXCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIGFjY291bnRFbWFpbDogc3RyaW5nO1xufVxuXG50eXBlIEFjY291bnRTdHJ1Y3R1cmUgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbn07XG5cbnR5cGUgT3JnYW5pc2F0aW9uU3RydWN0dXJlID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFjY291bnRzOiBBY2NvdW50U3RydWN0dXJlW107XG59O1xuXG4vKipcbiAqIEEgY29uc3RydWN0IGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE9yZ2FuaXNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzO1xuXG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb247XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uYWxVbml0czogT3JnYW5pemF0aW9uYWxVbml0W10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NvdW50czogQWNjb3VudFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb24oKTtcbiAgICB0aGlzLmFkZE9yZ2FuaXNhdGlvblVuaXRzQW5kQWNjb3VudHMoKTtcblxuICAgIC8vdG9kbzogQ29uc2lkZXIgYWRkaW5nIHRoZSByZW1haW5pbmcgQVdTIHJlY29tbWVuZGVkIG9yZ2FuaXNhdGlvbmFsIHVuaXRzXG4gICAgLy8gaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9ibG9ncy9tdC9iZXN0LXByYWN0aWNlcy1mb3Itb3JnYW5pemF0aW9uYWwtdW5pdHMtd2l0aC1hd3Mtb3JnYW5pemF0aW9ucy9cbiAgICAvLyAtIGRlcGxveW1lbnRzIChidWlsZCBhZ2VudHMgLSBhY2NvdW50cyBtYXkgYmUgc3BlY2lmaWMgcGVyICdzZXJ2aWNlJylcbiAgICAvLyAtIHNlY3VyaXR5XG4gICAgLy8gLSBzYW5kYm94IChlcXVpdmFsZW50IHRvIGRldmVsb3BtZW50IHVuaXQ/KVxuICAgIC8vIC0gd29ya2xvYWRzXG4gIH1cblxuICBwcml2YXRlIGFkZE9yZ2FuaXNhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbiA9IG5ldyBPcmdhbml6YXRpb24odGhpcywgdGhpcy5wcm9wcy5vcmdhbmlzYXRpb25OYW1lLCB7XG4gICAgICBmZWF0dXJlU2V0OiBGZWF0dXJlU2V0LkFMTFxuICAgIH0pO1xuXG4gICAgY29uc3QgZW5mb3JjZWRQb2xpY3lUeXBlczogUG9saWN5VHlwZVtdID0gW1xuICAgICAgUG9saWN5VHlwZS5TRVJWSUNFX0NPTlRST0xfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5UQUdfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5CQUNLVVBfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5BSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgcG9saWN5VHlwZSBvZiBlbmZvcmNlZFBvbGljeVR5cGVzKSB7XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbi5lbmFibGVQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uVW5pdHNBbmRBY2NvdW50cygpIHtcbiAgICBjb25zdCBvcmdTdHJ1Y3R1cmU6IE9yZ2FuaXNhdGlvblN0cnVjdHVyZVtdID0gW1xuICAgICAge1xuICAgICAgICBpZDogXCJwcm9kdWN0aW9uT3JnYW5pemF0aW9uYWxVbml0XCIsXG4gICAgICAgIG5hbWU6IFwiUHJvZHVjdGlvblwiLFxuICAgICAgICBhY2NvdW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcInByb2R1Y3Rpb25BY2NvdW50XCIsXG4gICAgICAgICAgICBuYW1lOiBcIlByb2R1Y3Rpb25cIixcbiAgICAgICAgICAgIGVtYWlsOiBhZGRTdWZmaXhUb0VtYWlsKHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLCBcInByb2R1Y3Rpb25cIilcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBcInN0YWdpbmdPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJTdGFnaW5nXCIsXG4gICAgICAgIGFjY291bnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFwic3RhZ2luZ0FjY291bnRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiU3RhZ2luZ1wiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwodGhpcy5wcm9wcy5hY2NvdW50RW1haWwsIFwic3RhZ2luZ1wiKVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IFwiZGV2ZWxvcG1lbnRPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJEZXZlbG9wbWVudFwiLFxuICAgICAgICBhY2NvdW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImRldmVsb3BtZW50QWNjb3VudFwiLFxuICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wbWVudFwiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwodGhpcy5wcm9wcy5hY2NvdW50RW1haWwsIFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBcInBsYXRmb3JtT3JnYW5pemF0aW9uYWxVbml0XCIsXG4gICAgICAgIG5hbWU6IFwiUGxhdGZvcm1cIixcbiAgICAgICAgYWNjb3VudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJwbGF0Zm9ybUFjY291bnRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiUGxhdGZvcm1cIixcbiAgICAgICAgICAgIGVtYWlsOiBhZGRTdWZmaXhUb0VtYWlsKHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLCBcInBsYXRmb3JtXCIpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogXCJidXNpbmVzc0NvbnRpbnVpdHlPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJCdXNpbmVzc0NvbnRpbnVpdHlcIixcbiAgICAgICAgYWNjb3VudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJidXNpbmVzc0NvbnRpbnVpdHlBY2NvdW50XCIsXG4gICAgICAgICAgICBuYW1lOiBcIkJ1c2luZXNzQ29udGludWl0eVwiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwoXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLFxuICAgICAgICAgICAgICBcImJ1c2luZXNzQ29udGludWl0eVwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcblxuICAgIGZvciAoY29uc3Qgb3JnVW5pdFN0cnVjdHVyZSBvZiBvcmdTdHJ1Y3R1cmUpIHtcbiAgICAgIGNvbnN0IG9yZ1VuaXQgPSB0aGlzLmFkZE9yZ2FuaXNhdGlvbmFsVW5pdChcbiAgICAgICAgb3JnVW5pdFN0cnVjdHVyZS5pZCxcbiAgICAgICAgb3JnVW5pdFN0cnVjdHVyZS5uYW1lXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnRTdHJ1Y3R1cmUgb2Ygb3JnVW5pdFN0cnVjdHVyZS5hY2NvdW50cykge1xuICAgICAgICB0aGlzLmFkZEFjY291bnQoXG4gICAgICAgICAgYWNjb3VudFN0cnVjdHVyZS5pZCxcbiAgICAgICAgICBhY2NvdW50U3RydWN0dXJlLm5hbWUsXG4gICAgICAgICAgYWNjb3VudFN0cnVjdHVyZS5lbWFpbCxcbiAgICAgICAgICB7IGVudjogb3JnVW5pdFN0cnVjdHVyZS5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkgfSxcbiAgICAgICAgICBvcmdVbml0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRPcmdhbmlzYXRpb25hbFVuaXQoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogT3JnYW5pemF0aW9uYWxVbml0IHtcbiAgICBjb25zdCBvdSA9IG5ldyBPcmdhbml6YXRpb25hbFVuaXQodGhpcywgaWQsIHtcbiAgICAgIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IG5hbWUsXG4gICAgICBwYXJlbnQ6IHRoaXMub3JnYW5pc2F0aW9uLnJvb3QsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1kgLy90b2RvOiB2YWxpZGF0ZSBpZiB0aGlzIGlzIGJlc3QgcHJhY3RpY2VcbiAgICAgIC8vIGRlZmF1bHRzXG4gICAgICAvLyBpbXBvcnRPbkR1cGxpY2F0ZTogZmFsc2UsIC8vdG9kbzogc2hvdWxkIHdlIGltcG9ydCBwcmUtZXhpc3Rpbmcgb3JnYW5pc2F0aW9uYWwgdW5pdHM/XG4gICAgfSk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdHMucHVzaChvdSk7XG4gICAgcmV0dXJuIG91O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBY2NvdW50KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBvcmdhbmlzYXRpb25hbFVuaXQ6IE9yZ2FuaXphdGlvbmFsVW5pdFxuICApOiBBY2NvdW50IHtcbiAgICBjb25zdCBhY2MgPSBuZXcgQWNjb3VudCh0aGlzLCBpZCwge1xuICAgICAgYWNjb3VudE5hbWU6IG5hbWUsXG4gICAgICBlbWFpbDogZW1haWwsXG4gICAgICBwYXJlbnQ6IG9yZ2FuaXNhdGlvbmFsVW5pdFxuICAgIH0pO1xuICAgIHRoaXMuYWNjb3VudHMucHVzaChhY2MpO1xuXG4gICAgZm9yIChjb25zdCB0YWcgaW4gdGFncykge1xuICAgICAgVGFncy5vZihhY2MpLmFkZCh0YWcsIHRhZ3NbdGFnXSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1JZGAsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IGFjYy5hY2NvdW50SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QXJuYCxcbiAgICAgIHZhbHVlOiBhY2MuYWNjb3VudElkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFjYztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2NvdW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50cztcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgTWFuYWdlZE9yZ2FuaXNhdGlvbjtcblxuLyoqXG4gKiBBIHN0YWNrIGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE9yZ2FuaXNhdGlvblN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwcml2YXRlIHJlc291cmNlOiBNYW5hZ2VkT3JnYW5pc2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHByb3BzOiBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihBcHAuZ2V0SW5zdGFuY2UoKSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgTWFuYWdlZE9yZ2FuaXNhdGlvbih0aGlzLCBpZCwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIGdldEFjY291bnRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmdldEFjY291bnRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkQ7QUFFN0QsbUNBQTRCO0FBRTVCLG9FQUFpRTtBQUNqRSwwRUFBdUU7QUFDdkUsNERBQXlEO0FBQ3pELDRFQUF5RTtBQUN6RSxnRUFBeUQ7QUFDekQsNEVBQXlFO0FBaUJ6RTs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsbUJBQUs7SUFHNUMsWUFBWSxFQUFVLEVBQUUsS0FBK0I7UUFDckQsS0FBSyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFcEMsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYixxQkFBcUIsS0FBSyxDQUFDLGVBQWUsbUNBQW1DLENBQzlFLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDN0MsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEQsd0NBQXdDO1FBQ3hDLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQy9DLFNBQVMsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztTQUM5QyxDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVuQyw4QkFBOEI7UUFDOUIsSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUVuRCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDeEIsd0JBQXdCO1lBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksK0JBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2hFLFFBQVEsRUFBRSxXQUFXO2FBQ3RCLENBQUMsQ0FBQztZQUVILElBQUksdUNBQWtCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO2dCQUNqRCxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWU7Z0JBQy9DLG9CQUFvQixFQUFFLGNBQWMsQ0FBQyxvQkFBb0I7YUFDMUQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUEvQ0Qsa0RBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnQsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuXG5pbXBvcnQgeyBJZGVudGl0eUNlbnRlciB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2lkZW50aXR5Q2VudGVyXCI7XG5pbXBvcnQgeyBJcGFtRGVsZWdhdGVBZG1pbiB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2lwYW1EZWxlZ2F0ZUFkbWluXCI7XG5pbXBvcnQgeyBSYW1TaGFyaW5nIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvcmFtU2hhcmluZ1wiO1xuaW1wb3J0IHsgQ29zdEFsbG9jYXRpb25UYWdzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvY29zdEFsbG9jYXRpb25UYWdzXCI7XG5pbXBvcnQgT3JnYW5pc2F0aW9uIGZyb20gXCIuLi8uLi9jb25maWcvYXdzL29yZ2FuaXNhdGlvblwiO1xuaW1wb3J0IHsgSWRlbnRpdHlDZW50ZXJVc2VyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyXCI7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1vcmdhbml6YXRpb25zXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52OiBSZXF1aXJlZDxQaWNrPEVudmlyb25tZW50LCBcInJlZ2lvblwiPj4gJlxuICAgIFBhcnRpYWw8T21pdDxFbnZpcm9ubWVudCwgXCJyZWdpb25cIj4+O1xufTtcblxuaW50ZXJmYWNlIE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcyBleHRlbmRzIEV4dGVuZGVkU3RhY2tQcm9wcyB7XG4gIG9yZ2FuaXNhdGlvbk5hbWU6IHN0cmluZztcbiAgb3JnQWNjb3VudHM6IHN0cmluZ1tdO1xuICBwbGF0Zm9ybUFjY291bnQ6IHN0cmluZztcbiAgb3JnRW1haWw6IHN0cmluZztcbiAgaWRlbnRpdHlDZW50ZXI/OiBib29sZWFuO1xuICBleGlzdGluZ0FjY291bnRzPzogQWNjb3VudFtdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgZm9yIGNyZWF0aW5nIG11bHRpIGVudmlyb25tZW50IG9yZ2FuaXNhdGlvbnMgd2l0aCBhIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50IGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkT3JnYW5pc2F0aW9uIGV4dGVuZHMgU3RhY2sge1xuICBwcml2YXRlIG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHByb3BzOiBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihBcHAuZ2V0SW5zdGFuY2UoKSwgaWQsIHByb3BzKTtcblxuICAgIC8vIEVycm9yIG91dCBpZiB0aGUgcGxhdGZvcm0gYWNjb3VudCBpcyBub3QgbGlzdGVkIGluIGFjY291bnQgbmFtZXNcbiAgICBpZiAoIXByb3BzLm9yZ0FjY291bnRzLmluY2x1ZGVzKHByb3BzLnBsYXRmb3JtQWNjb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFBsYXRmb3JtIGFjY291bnQgXCIke3Byb3BzLnBsYXRmb3JtQWNjb3VudH1cIiBpcyBub3QgbGlzdGVkIGluIGFjY291bnQgbmFtZXMuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbiA9IG5ldyBPcmdhbmlzYXRpb24odGhpcywgaWQsIHtcbiAgICAgIG9yZ2FuaXNhdGlvbk5hbWU6IHByb3BzLm9yZ2FuaXNhdGlvbk5hbWUsXG4gICAgICBvcmdBY2NvdW50czogcHJvcHMub3JnQWNjb3VudHMsXG4gICAgICBwbGF0Zm9ybUFjY291bnQ6IHByb3BzLnBsYXRmb3JtQWNjb3VudCxcbiAgICAgIG9yZ0VtYWlsOiBwcm9wcy5vcmdFbWFpbCxcbiAgICAgIGVudjogcHJvcHMuZW52LFxuICAgICAgZXhpc3RpbmdBY2NvdW50czogcHJvcHMuZXhpc3RpbmdBY2NvdW50c1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3JnQWNjb3VudHMgPSB0aGlzLm9yZ2FuaXNhdGlvbi5nZXRBY2NvdW50cygpO1xuXG4gICAgLy8gRGVsZWdhdGUgSVBBTSB0byB0aGUgUGxhdGZvcm0gYWNjb3VudFxuICAgIG5ldyBJcGFtRGVsZWdhdGVBZG1pbih0aGlzLCBcIklwYW1EZWxlZ2F0ZUFkbWluXCIsIHtcbiAgICAgIGFjY291bnRJZDogb3JnQWNjb3VudHNbcHJvcHMucGxhdGZvcm1BY2NvdW50XVxuICAgIH0pO1xuXG4gICAgLy8gRW5hYmxlIFJBTSBTaGFyaW5nXG4gICAgbmV3IFJhbVNoYXJpbmcodGhpcywgXCJSYW1TaGFyaW5nXCIpO1xuXG4gICAgLy8gRW5hYmxlIENvc3QgQWxsb2NhdGlvbiBUYWdzXG4gICAgbmV3IENvc3RBbGxvY2F0aW9uVGFncyh0aGlzLCBcIkNvc3RBbGxvY2F0aW9uVGFnc1wiKTtcblxuICAgIGlmIChwcm9wcy5pZGVudGl0eUNlbnRlcikge1xuICAgICAgLy8gU2V0dXAgSWRlbnRpdHkgQ2VudGVyXG4gICAgICBjb25zdCBpZGVudGl0eUNlbnRlciA9IG5ldyBJZGVudGl0eUNlbnRlcih0aGlzLCBcIklkZW50aXR5Q2VudGVyXCIsIHtcbiAgICAgICAgYWNjb3VudHM6IG9yZ0FjY291bnRzXG4gICAgICB9KTtcblxuICAgICAgbmV3IElkZW50aXR5Q2VudGVyVXNlcih0aGlzLCBcIklkZW50aXR5Q2VudGVyVXNlclwiLCB7XG4gICAgICAgIGlkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlDZW50ZXIuaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICBpZGVudGl0eUNlbnRlckdyb3VwczogaWRlbnRpdHlDZW50ZXIuaWRlbnRpdHlDZW50ZXJHcm91cHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { ManagedAccount, ManagedAccountProps } from "./managedAccount";
|
|
3
|
+
interface ManagedPlatformProps extends ManagedAccountProps {
|
|
4
|
+
orgAccounts: string[];
|
|
5
|
+
region: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ManagedPlatform extends ManagedAccount {
|
|
11
|
+
constructor(scope: Construct, id: string, props: ManagedPlatformProps);
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ManagedPlatform = void 0;
|
|
4
|
+
const ipam_1 = require("../../config/aws/ipam");
|
|
5
|
+
const ipamPool_1 = require("../../resources/aws/networking/ipamPool");
|
|
6
|
+
const managedAccount_1 = require("./managedAccount");
|
|
7
|
+
/**
|
|
8
|
+
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
9
|
+
*/
|
|
10
|
+
class ManagedPlatform extends managedAccount_1.ManagedAccount {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
const ipam = new ipam_1.Ipam(this, "Ipam");
|
|
14
|
+
new ipamPool_1.IpamPool(this, "IpamPool", {
|
|
15
|
+
orgAccounts: props.orgAccounts,
|
|
16
|
+
region: props.region,
|
|
17
|
+
ipamScope: ipam.privateDefaultScopeId
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.ManagedPlatform = ManagedPlatform;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9tYW5hZ2VkUGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTZDO0FBQzdDLHNFQUFtRTtBQUVuRSxxREFBdUU7QUFPdkU7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsK0JBQWM7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElwYW0gfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9pcGFtXCI7XG5pbXBvcnQgeyBJcGFtUG9vbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkQWNjb3VudCwgTWFuYWdlZEFjY291bnRQcm9wcyB9IGZyb20gXCIuL21hbmFnZWRBY2NvdW50XCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkUGxhdGZvcm1Qcm9wcyBleHRlbmRzIE1hbmFnZWRBY2NvdW50UHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgZm9yIGNyZWF0aW5nIG11bHRpIGVudmlyb25tZW50IG9yZ2FuaXNhdGlvbnMgd2l0aCBhIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50IGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkUGxhdGZvcm0gZXh0ZW5kcyBNYW5hZ2VkQWNjb3VudCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNYW5hZ2VkUGxhdGZvcm1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgY29uc3QgaXBhbSA9IG5ldyBJcGFtKHRoaXMsIFwiSXBhbVwiKTtcblxuICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBcIklwYW1Qb29sXCIsIHtcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgaXBhbVNjb3BlOiBpcGFtLnByaXZhdGVEZWZhdWx0U2NvcGVJZFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AwsStackProps } from "../../resources/aws/awsStack";
|
|
2
|
+
import { ScalingType } from "../../resources/aws/compute/ecs";
|
|
3
|
+
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
4
|
+
import { KeyValue } from "../../types";
|
|
5
|
+
/**
|
|
6
|
+
* Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
7
|
+
* to treat these as required properties and avoid constant null checking.
|
|
8
|
+
*/
|
|
9
|
+
export interface BasicAppPropDefaults {
|
|
10
|
+
tags: KeyValue;
|
|
11
|
+
serviceName: string;
|
|
12
|
+
clusterName: string;
|
|
13
|
+
scalingType: ScalingType;
|
|
14
|
+
containerPort: number;
|
|
15
|
+
}
|
|
16
|
+
export interface BasicAppProps {
|
|
17
|
+
account?: string;
|
|
18
|
+
clusterName?: string;
|
|
19
|
+
containerEntryPoint?: string[];
|
|
20
|
+
containerCommand?: string[];
|
|
21
|
+
containerEnvironment?: KeyValue;
|
|
22
|
+
containerPort?: number;
|
|
23
|
+
containerSecrets?: string[];
|
|
24
|
+
accountName: string;
|
|
25
|
+
owner?: string;
|
|
26
|
+
parentDomain?: string;
|
|
27
|
+
environment: string;
|
|
28
|
+
listenerPort?: number;
|
|
29
|
+
region?: string;
|
|
30
|
+
scalingType?: ScalingType;
|
|
31
|
+
serviceName?: string;
|
|
32
|
+
taskRoleInlinePolicies?: {
|
|
33
|
+
[name: string]: PolicyDocument;
|
|
34
|
+
};
|
|
35
|
+
taskRoleManagedPolicies?: IManagedPolicy[];
|
|
36
|
+
tags?: KeyValue;
|
|
37
|
+
}
|
|
38
|
+
export declare class BasicApp {
|
|
39
|
+
private vpcStack;
|
|
40
|
+
private databaseStack;
|
|
41
|
+
private secretStack;
|
|
42
|
+
private computeStack;
|
|
43
|
+
constructor(id: string, rawProps: BasicAppProps);
|
|
44
|
+
getStackProps(props: BasicAppProps): AwsStackProps | undefined;
|
|
45
|
+
getProps(id: string, rawProps: BasicAppProps): BasicAppProps & BasicAppPropDefaults;
|
|
46
|
+
}
|
|
47
|
+
export default BasicApp;
|