@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.
Files changed (122) hide show
  1. package/dist/lib/app.d.ts +2 -1
  2. package/dist/lib/app.js +4 -2
  3. package/dist/lib/config/aws/accountId.d.ts +6 -0
  4. package/dist/lib/config/aws/accountId.js +33 -0
  5. package/dist/lib/config/aws/cloudTrail.d.ts +10 -0
  6. package/dist/lib/config/aws/cloudTrail.js +22 -0
  7. package/dist/lib/config/aws/costAllocationTags.d.ts +2 -3
  8. package/dist/lib/config/aws/costAllocationTags.js +6 -5
  9. package/dist/lib/config/aws/ecrDefaultImage.d.ts +11 -0
  10. package/dist/lib/config/aws/ecrDefaultImage.js +127 -0
  11. package/dist/lib/config/aws/eventBus.d.ts +7 -0
  12. package/dist/lib/config/aws/eventBus.js +24 -0
  13. package/dist/lib/config/aws/identityCenter.d.ts +11 -3
  14. package/dist/lib/config/aws/identityCenter.js +24 -29
  15. package/dist/lib/config/aws/identityCenterUser.d.ts +16 -0
  16. package/dist/lib/config/aws/identityCenterUser.js +125 -0
  17. package/dist/lib/config/aws/index.d.ts +8 -4
  18. package/dist/lib/config/aws/index.js +9 -5
  19. package/dist/lib/config/aws/ipam.d.ts +2 -2
  20. package/dist/lib/config/aws/ipam.js +25 -7
  21. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +4 -5
  22. package/dist/lib/config/aws/ipamDelegateAdmin.js +9 -13
  23. package/dist/lib/config/aws/ipamPoolId.d.ts +10 -0
  24. package/dist/lib/config/aws/ipamPoolId.js +38 -0
  25. package/dist/lib/config/aws/organisation.d.ts +28 -0
  26. package/dist/lib/config/aws/organisation.js +112 -0
  27. package/dist/lib/config/aws/organisationId.d.ts +4 -2
  28. package/dist/lib/config/aws/organisationId.js +13 -7
  29. package/dist/lib/config/aws/ramSharing.d.ts +4 -0
  30. package/dist/lib/config/aws/ramSharing.js +35 -0
  31. package/dist/lib/patterns/aws/basicApp.d.ts +5 -4
  32. package/dist/lib/patterns/aws/basicApp.js +18 -18
  33. package/dist/lib/patterns/aws/buildkite.d.ts +40 -31
  34. package/dist/lib/patterns/aws/buildkite.js +74 -46
  35. package/dist/lib/patterns/aws/freeTierApp.d.ts +47 -0
  36. package/dist/lib/patterns/aws/freeTierApp.js +95 -0
  37. package/dist/lib/patterns/aws/hostedZone.d.ts +11 -0
  38. package/dist/lib/patterns/aws/hostedZone.js +73 -0
  39. package/dist/lib/patterns/aws/index.d.ts +3 -0
  40. package/dist/lib/patterns/aws/index.js +4 -1
  41. package/dist/lib/patterns/aws/managedAccount.d.ts +13 -0
  42. package/dist/lib/patterns/aws/managedAccount.js +40 -0
  43. package/dist/lib/patterns/aws/managedOrganisation.d.ts +14 -24
  44. package/dist/lib/patterns/aws/managedOrganisation.js +39 -146
  45. package/dist/lib/patterns/aws/managedPlatform.d.ts +13 -0
  46. package/dist/lib/patterns/aws/managedPlatform.js +22 -0
  47. package/dist/lib/patterns/aws/spotInstanceApp.d.ts +47 -0
  48. package/dist/lib/patterns/aws/spotInstanceApp.js +95 -0
  49. package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +9 -0
  50. package/dist/lib/patterns/aws/subdomainHostedZone.js +39 -0
  51. package/dist/lib/resources/aws/awsStack.d.ts +2 -2
  52. package/dist/lib/resources/aws/awsStack.js +3 -3
  53. package/dist/lib/resources/aws/compute/ecs.d.ts +2 -4
  54. package/dist/lib/resources/aws/compute/ecs.js +10 -6
  55. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +76 -0
  56. package/dist/lib/resources/aws/compute/ecsFreeTier.js +352 -0
  57. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +76 -0
  58. package/dist/lib/resources/aws/compute/ecsSpot.js +334 -0
  59. package/dist/lib/resources/aws/compute/index.d.ts +2 -0
  60. package/dist/lib/resources/aws/compute/index.js +19 -0
  61. package/dist/lib/resources/aws/compute/lambda.d.ts +7 -7
  62. package/dist/lib/resources/aws/compute/lambda.js +8 -7
  63. package/dist/lib/resources/aws/database/database.d.ts +16 -0
  64. package/dist/lib/resources/aws/database/database.js +30 -0
  65. package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +17 -0
  66. package/dist/lib/resources/aws/database/databaseFreeTier.js +31 -0
  67. package/dist/lib/resources/aws/database/databaseInstance.d.ts +17 -0
  68. package/dist/lib/resources/aws/database/databaseInstance.js +32 -0
  69. package/dist/lib/resources/aws/database/index.d.ts +2 -0
  70. package/dist/lib/resources/aws/database/index.js +19 -0
  71. package/dist/lib/resources/aws/database/rds.d.ts +23 -0
  72. package/dist/lib/resources/aws/database/rds.js +130 -0
  73. package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +36 -0
  74. package/dist/lib/resources/aws/database/rdsFreeTier.js +80 -0
  75. package/dist/lib/resources/aws/database/rdsInstance.d.ts +42 -0
  76. package/dist/lib/resources/aws/database/rdsInstance.js +173 -0
  77. package/dist/lib/resources/aws/logging/cloudTrail.d.ts +18 -0
  78. package/dist/lib/resources/aws/logging/cloudTrail.js +46 -0
  79. package/dist/lib/resources/aws/logging/logGroup.d.ts +3 -3
  80. package/dist/lib/resources/aws/logging/logGroup.js +3 -3
  81. package/dist/lib/resources/aws/networking/index.d.ts +1 -1
  82. package/dist/lib/resources/aws/networking/index.js +2 -2
  83. package/dist/lib/resources/aws/networking/ipamPool.d.ts +16 -3
  84. package/dist/lib/resources/aws/networking/ipamPool.js +78 -6
  85. package/dist/lib/resources/aws/networking/vpc.d.ts +29 -0
  86. package/dist/lib/resources/aws/networking/vpc.js +66 -0
  87. package/dist/lib/resources/aws/secrets/alias.d.ts +5 -0
  88. package/dist/lib/resources/aws/secrets/alias.js +13 -0
  89. package/dist/lib/resources/aws/secrets/index.d.ts +5 -0
  90. package/dist/lib/resources/aws/secrets/index.js +22 -0
  91. package/dist/lib/resources/aws/secrets/kms.d.ts +14 -0
  92. package/dist/lib/resources/aws/secrets/kms.js +34 -0
  93. package/dist/lib/resources/aws/secrets/parameter.d.ts +26 -0
  94. package/dist/lib/resources/aws/secrets/parameter.js +100 -0
  95. package/dist/lib/resources/aws/secrets/secret.d.ts +24 -0
  96. package/dist/lib/resources/aws/secrets/secret.js +53 -0
  97. package/dist/lib/resources/aws/storage/ecr.d.ts +12 -0
  98. package/dist/lib/resources/aws/storage/ecr.js +31 -0
  99. package/dist/lib/resources/aws/storage/index.d.ts +2 -0
  100. package/dist/lib/resources/aws/storage/index.js +19 -0
  101. package/dist/lib/resources/aws/storage/s3.d.ts +11 -0
  102. package/dist/lib/resources/aws/storage/s3.js +44 -0
  103. package/dist/lib/resources/aws/utilities/codeBuild.d.ts +15 -0
  104. package/dist/lib/resources/aws/utilities/codeBuild.js +28 -0
  105. package/dist/lib/resources/aws/utilities/customResource.js +2 -2
  106. package/dist/lib/types.d.ts +3 -0
  107. package/dist/lib/types.js +3 -0
  108. package/dist/lib/utils/capitalizeString.d.ts +1 -0
  109. package/dist/lib/utils/capitalizeString.js +8 -0
  110. package/dist/lib/utils/getAccountId.d.ts +1 -1
  111. package/dist/lib/utils/getAccountId.js +7 -5
  112. package/dist/lib/utils/getAsync.d.ts +10 -0
  113. package/dist/lib/utils/getAsync.js +37 -0
  114. package/dist/lib/utils/getCidr.d.ts +8 -0
  115. package/dist/lib/utils/getCidr.js +42 -0
  116. package/dist/lib/utils/getConfig.d.ts +6 -3
  117. package/dist/lib/utils/getConfig.js +32 -14
  118. package/dist/lib/utils/stripAndCamelCase.d.ts +1 -0
  119. package/dist/lib/utils/stripAndCamelCase.js +17 -0
  120. package/dist/lib/utils/usersConfig.d.ts +7 -0
  121. package/dist/lib/utils/usersConfig.js +18 -0
  122. 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==
@@ -1,2 +1,5 @@
1
1
  export * from "./managedOrganisation";
2
+ export * from "./managedPlatform";
3
+ export * from "./managedAccount";
2
4
  export * from "./basicApp";
5
+ export * from "./buildkite";
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBc0M7QUFDdEMsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZE9yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzaWNBcHBcIjtcbiJdfQ==
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 { Construct } from "constructs";
3
- import { Account } from "@pepperize/cdk-organizations";
4
- interface ManagedOrganisationProps {
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
- accountEmail: string;
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 ManagedOrganisationStack extends Stack {
28
- private resource;
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.ManagedOrganisationStack = exports.ManagedOrganisation = void 0;
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 cdk_organizations_1 = require("@pepperize/cdk-organizations");
9
- const addSuffixToEmail_1 = require("../../utils/addSuffixToEmail");
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 construct for creating multi environment organisations with a production, staging and development account.
13
+ * A stack for creating multi environment organisations with a production, staging and development account.
12
14
  */
13
- class ManagedOrganisation extends constructs_1.Construct {
14
- constructor(scope, id, props) {
15
- super(scope, id);
16
- this.organisationalUnits = [];
17
- this.accounts = [];
18
- this.props = props;
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
- addOrganisationalUnit(id, name) {
108
- const ou = new cdk_organizations_1.OrganizationalUnit(this, id, {
109
- organizationalUnitName: name,
110
- parent: this.organisation.root,
111
- removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY //todo: validate if this is best practice
112
- // defaults
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.organisationalUnits.push(ou);
116
- return ou;
117
- }
118
- addAccount(id, name, email, tags, organisationalUnit) {
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
- this.accounts.push(acc);
125
- for (const tag in tags) {
126
- aws_cdk_lib_2.Tags.of(acc).add(tag, tags[tag]);
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
- exports.default = ManagedOrganisation;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLDZDQUFtQztBQUVuQyxtQ0FBNEI7QUFFNUIsb0VBTXNDO0FBRXRDLG1FQUE0RDtBQW1CNUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBT2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUpYLHdCQUFtQixHQUF5QixFQUFFLENBQUM7UUFDL0MsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUkvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFFdkMsMEVBQTBFO1FBQzFFLGtHQUFrRztRQUNsRyx3RUFBd0U7UUFDeEUsYUFBYTtRQUNiLDhDQUE4QztRQUM5QyxjQUFjO0lBQ2hCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQ3RFLFVBQVUsRUFBRSw4QkFBVSxDQUFDLEdBQUc7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxtQkFBbUIsR0FBaUI7WUFDeEMsOEJBQVUsQ0FBQyxzQkFBc0I7WUFDakMsOEJBQVUsQ0FBQyxVQUFVO1lBQ3JCLDhCQUFVLENBQUMsYUFBYTtZQUN4Qiw4QkFBVSxDQUFDLHlCQUF5QjtTQUNyQyxDQUFDO1FBRUYsS0FBSyxNQUFNLFVBQVUsSUFBSSxtQkFBbUIsRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxNQUFNLFlBQVksR0FBNEI7WUFDNUM7Z0JBQ0UsRUFBRSxFQUFFLDhCQUE4QjtnQkFDbEMsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxFQUFFLEVBQUUsbUJBQW1CO3dCQUN2QixJQUFJLEVBQUUsWUFBWTt3QkFDbEIsS0FBSyxFQUFFLElBQUEsMEJBQWdCLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO3FCQUMvRDtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLDJCQUEyQjtnQkFDL0IsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFO29CQUNSO3dCQUNFLEVBQUUsRUFBRSxnQkFBZ0I7d0JBQ3BCLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQztxQkFDNUQ7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSwrQkFBK0I7Z0JBQ25DLElBQUksRUFBRSxhQUFhO2dCQUNuQixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsRUFBRSxFQUFFLG9CQUFvQjt3QkFDeEIsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLEtBQUssRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztxQkFDaEU7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSw0QkFBNEI7Z0JBQ2hDLElBQUksRUFBRSxVQUFVO2dCQUNoQixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsRUFBRSxFQUFFLGlCQUFpQjt3QkFDckIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLEtBQUssRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztxQkFDN0Q7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxFQUFFLEVBQUUsMkJBQTJCO3dCQUMvQixJQUFJLEVBQUUsb0JBQW9CO3dCQUMxQixLQUFLLEVBQUUsSUFBQSwwQkFBZ0IsRUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQ3ZCLG9CQUFvQixDQUNyQjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7WUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUN4QyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQ25CLGdCQUFnQixDQUFDLElBQUksQ0FDdEIsQ0FBQztZQUVGLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxVQUFVLENBQ2IsZ0JBQWdCLENBQUMsRUFBRSxFQUNuQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQ3JCLGdCQUFnQixDQUFDLEtBQUssRUFDdEIsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFDbEQsT0FBTyxDQUNSLENBQUM7YUFDSDtTQUNGO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEVBQVUsRUFBRSxJQUFZO1FBQ3BELE1BQU0sRUFBRSxHQUFHLElBQUksc0NBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMxQyxzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDOUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTyxDQUFDLHlDQUF5QztZQUM5RSxXQUFXO1lBQ1gsd0ZBQXdGO1NBQ3pGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sVUFBVSxDQUNoQixFQUFVLEVBQ1YsSUFBWSxFQUNaLEtBQWEsRUFDYixJQUErQixFQUMvQixrQkFBc0M7UUFFdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDaEMsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsa0JBQWtCO1NBQzNCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLGtCQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7WUFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDOUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUF2S0Qsa0RBdUtDO0FBQ0Qsa0JBQWUsbUJBQW1CLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLG1CQUFLO0lBR2pELFlBQVksRUFBVSxFQUFFLEtBQStCO1FBQ3JELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVhELDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7XG4gIEFjY291bnQsXG4gIEZlYXR1cmVTZXQsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uYWxVbml0LFxuICBQb2xpY3lUeXBlXG59IGZyb20gXCJAcGVwcGVyaXplL2Nkay1vcmdhbml6YXRpb25zXCI7XG5cbmltcG9ydCBhZGRTdWZmaXhUb0VtYWlsIGZyb20gXCIuLi8uLi91dGlscy9hZGRTdWZmaXhUb0VtYWlsXCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIGFjY291bnRFbWFpbDogc3RyaW5nO1xufVxuXG50eXBlIEFjY291bnRTdHJ1Y3R1cmUgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbn07XG5cbnR5cGUgT3JnYW5pc2F0aW9uU3RydWN0dXJlID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFjY291bnRzOiBBY2NvdW50U3RydWN0dXJlW107XG59O1xuXG4vKipcbiAqIEEgY29uc3RydWN0IGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE9yZ2FuaXNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzO1xuXG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb247XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uYWxVbml0czogT3JnYW5pemF0aW9uYWxVbml0W10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NvdW50czogQWNjb3VudFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb24oKTtcbiAgICB0aGlzLmFkZE9yZ2FuaXNhdGlvblVuaXRzQW5kQWNjb3VudHMoKTtcblxuICAgIC8vdG9kbzogQ29uc2lkZXIgYWRkaW5nIHRoZSByZW1haW5pbmcgQVdTIHJlY29tbWVuZGVkIG9yZ2FuaXNhdGlvbmFsIHVuaXRzXG4gICAgLy8gaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9ibG9ncy9tdC9iZXN0LXByYWN0aWNlcy1mb3Itb3JnYW5pemF0aW9uYWwtdW5pdHMtd2l0aC1hd3Mtb3JnYW5pemF0aW9ucy9cbiAgICAvLyAtIGRlcGxveW1lbnRzIChidWlsZCBhZ2VudHMgLSBhY2NvdW50cyBtYXkgYmUgc3BlY2lmaWMgcGVyICdzZXJ2aWNlJylcbiAgICAvLyAtIHNlY3VyaXR5XG4gICAgLy8gLSBzYW5kYm94IChlcXVpdmFsZW50IHRvIGRldmVsb3BtZW50IHVuaXQ/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;