@fjall/components-infrastructure 0.1.5 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/lib/config/aws/costAllocationTags.js +58 -0
  2. package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
  3. package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
  4. package/dist/lib/config/aws/identityCenter.js +107 -0
  5. package/dist/lib/config/aws/index.d.ts +8 -0
  6. package/dist/lib/config/aws/index.js +25 -0
  7. package/dist/lib/config/aws/ipam.d.ts +5 -0
  8. package/dist/lib/config/aws/ipam.js +30 -0
  9. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +9 -0
  10. package/dist/lib/config/aws/ipamDelegateAdmin.js +62 -0
  11. package/dist/lib/config/aws/ipamPool.d.ts +5 -0
  12. package/dist/lib/config/aws/ipamPool.js +56 -0
  13. package/dist/lib/config/aws/{base/iamIdentityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
  14. package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
  15. package/dist/lib/config/aws/organisationId.d.ts +5 -0
  16. package/dist/lib/config/aws/organisationId.js +40 -0
  17. package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
  18. package/dist/lib/config/aws/ramEnableSharing.js +35 -0
  19. package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
  20. package/dist/lib/config/aws/users.js +126 -0
  21. package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
  22. package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
  23. package/dist/lib/index.d.ts +3 -0
  24. package/dist/lib/index.js +4 -1
  25. package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
  26. package/dist/lib/patterns/aws/basicApp.js +90 -0
  27. package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
  28. package/dist/lib/patterns/aws/buildkite.js +344 -0
  29. package/dist/lib/patterns/aws/index.d.ts +2 -2
  30. package/dist/lib/patterns/aws/index.js +3 -3
  31. package/dist/lib/patterns/aws/{multiEnvironmentOrganisation.d.ts → managedOrganisation.d.ts} +8 -10
  32. package/dist/lib/patterns/aws/managedOrganisation.js +159 -0
  33. package/dist/lib/resources/aws/awsStack.d.ts +5 -0
  34. package/dist/lib/resources/aws/awsStack.js +11 -1
  35. package/dist/lib/resources/aws/compute/ecs.d.ts +76 -0
  36. package/dist/lib/resources/aws/compute/ecs.js +265 -0
  37. package/dist/lib/resources/aws/compute/lambda.d.ts +12 -5
  38. package/dist/lib/resources/aws/compute/lambda.js +23 -5
  39. package/dist/lib/resources/aws/constant/ecr.js +4 -3
  40. package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
  41. package/dist/lib/resources/aws/constant/vpc.js +18 -8
  42. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
  43. package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
  44. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
  45. package/dist/lib/resources/aws/iam/index.d.ts +5 -0
  46. package/dist/lib/resources/aws/iam/index.js +22 -0
  47. package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
  48. package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
  49. package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
  50. package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
  51. package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
  52. package/dist/lib/resources/aws/iam/policy.js +13 -0
  53. package/dist/lib/resources/aws/iam/role.js +2 -7
  54. package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
  55. package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
  56. package/dist/lib/resources/aws/index.d.ts +1 -0
  57. package/dist/lib/resources/aws/index.js +18 -0
  58. package/dist/lib/resources/aws/logging/logGroup.d.ts +5 -1
  59. package/dist/lib/resources/aws/logging/logGroup.js +4 -5
  60. package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
  61. package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
  62. package/dist/lib/resources/aws/networking/index.d.ts +3 -0
  63. package/dist/lib/resources/aws/networking/index.js +20 -0
  64. package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
  65. package/dist/lib/resources/aws/networking/ipam.js +3 -3
  66. package/dist/lib/resources/aws/networking/ipamPool.d.ts +3 -7
  67. package/dist/lib/resources/aws/networking/ipamPool.js +5 -27
  68. package/dist/lib/resources/aws/store/alias.d.ts +5 -0
  69. package/dist/lib/resources/aws/store/alias.js +13 -0
  70. package/dist/lib/resources/aws/store/database.d.ts +7 -2
  71. package/dist/lib/resources/aws/store/database.js +9 -5
  72. package/dist/lib/resources/aws/store/index.d.ts +7 -0
  73. package/dist/lib/resources/aws/store/index.js +24 -0
  74. package/dist/lib/resources/aws/store/kms.d.ts +14 -0
  75. package/dist/lib/resources/aws/store/kms.js +34 -0
  76. package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
  77. package/dist/lib/resources/aws/store/parameter.js +100 -0
  78. package/dist/lib/resources/aws/store/rds.d.ts +15 -15
  79. package/dist/lib/resources/aws/store/rds.js +110 -68
  80. package/dist/lib/resources/aws/store/s3.d.ts +11 -0
  81. package/dist/lib/resources/aws/store/s3.js +43 -0
  82. package/dist/lib/resources/aws/store/secret.d.ts +26 -0
  83. package/dist/lib/resources/aws/store/secret.js +55 -0
  84. package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
  85. package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
  86. package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
  87. package/dist/lib/resources/aws/utilities/customResource.js +24 -5
  88. package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
  89. package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
  90. package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
  91. package/dist/lib/resources/index.d.ts +1 -0
  92. package/dist/lib/resources/index.js +18 -0
  93. package/dist/lib/utils/getAccountId.d.ts +1 -0
  94. package/dist/lib/utils/getAccountId.js +11 -0
  95. package/dist/lib/utils/getConfig.d.ts +4 -3
  96. package/dist/lib/utils/getConfig.js +26 -12
  97. package/dist/lib/utils/getStackOutput.d.ts +1 -0
  98. package/dist/lib/utils/getStackOutput.js +20 -0
  99. package/dist/lib/utils/index.d.ts +1 -0
  100. package/dist/lib/utils/index.js +18 -0
  101. package/dist/lib/utils/tagResource.d.ts +4 -0
  102. package/dist/lib/utils/tagResource.js +10 -0
  103. package/package.json +23 -18
  104. package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
  105. package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
  106. package/dist/lib/config/aws/base/identityCenter.js +0 -90
  107. package/dist/lib/config/aws/base/ipam.js +0 -29
  108. package/dist/lib/config/aws/base/ipamPool.js +0 -46
  109. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
  110. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
  111. package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
  112. package/dist/lib/examples/cutomResourceExample.js +0 -45
  113. package/dist/lib/patterns/aws/customResource.d.ts +0 -7
  114. package/dist/lib/patterns/aws/customResource.js +0 -28
  115. package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
  116. package/dist/lib/patterns/aws/webApp.d.ts +0 -17
  117. package/dist/lib/patterns/aws/webApp.js +0 -36
  118. package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
  119. package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
  120. package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
  121. package/dist/lib/resources/aws/compute/fargate.js +0 -50
  122. package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
  123. package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
  124. package/dist/lib/resources/aws/iam/assignment.js +0 -13
  125. package/dist/lib/resources/aws/iam/group.js +0 -15
  126. package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
  127. package/dist/lib/resources/aws/iam/iamRole.js +0 -18
  128. package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
  129. /package/dist/lib/config/aws/{base/costAllocationTags.d.ts → costAllocationTags.d.ts} +0 -0
  130. /package/dist/lib/config/aws/{base/identityCenter.d.ts → identityCenter.d.ts} +0 -0
  131. /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
  132. /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
  133. /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CostAllocationTags = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const customResources = require("aws-cdk-lib/custom-resources");
6
+ const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
7
+ const costAllocationTags = [
8
+ "aws:cloudformation:logical-id",
9
+ "aws:cloudformation:stack-id",
10
+ "aws:cloudformation:stack-name",
11
+ "aws:createdBy"
12
+ // "fjall:operations:pool"
13
+ // "fjall:costAllocation:environment",
14
+ // "fjall:costAllocation:service",
15
+ // "fjall:costAllocation:owner"
16
+ ];
17
+ function toggleCostTag(tags, tagStatus) {
18
+ return tags.map((tag) => {
19
+ return {
20
+ TagKey: tag,
21
+ Status: tagStatus
22
+ };
23
+ });
24
+ }
25
+ class CostAllocationTags extends aws_cdk_lib_1.Stack {
26
+ constructor(scope, id, props) {
27
+ super(scope, id, props);
28
+ new awsCustomResource_1.AwsCustomResource(this, "costAllocationTags", {
29
+ functionName: "enableCostAllocationTags",
30
+ onCreate: {
31
+ service: "CostExplorer",
32
+ action: "updateCostAllocationTagsStatus",
33
+ parameters: {
34
+ CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Active")
35
+ },
36
+ physicalResourceId: customResources.PhysicalResourceId.of("enableCostAllocationTags")
37
+ },
38
+ onUpdate: {
39
+ service: "CostExplorer",
40
+ action: "updateCostAllocationTagsStatus",
41
+ parameters: {
42
+ CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Active")
43
+ },
44
+ physicalResourceId: customResources.PhysicalResourceId.of("updateCostAllocationTags")
45
+ },
46
+ onDelete: {
47
+ service: "CostExplorer",
48
+ action: "updateCostAllocationTagsStatus",
49
+ parameters: {
50
+ CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Inactive")
51
+ }
52
+ },
53
+ resourceType: "Custom::CostAllocationTags"
54
+ });
55
+ }
56
+ }
57
+ exports.CostAllocationTags = CostAllocationTags;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdEFsbG9jYXRpb25UYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvY29zdEFsbG9jYXRpb25UYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRDtBQUNoRCxnRUFBZ0U7QUFHaEUsdUZBQW9GO0FBRXBGLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLDBCQUEwQjtJQUMxQixzQ0FBc0M7SUFDdEMsa0NBQWtDO0lBQ2xDLCtCQUErQjtDQUNoQyxDQUFDO0FBRUYsU0FBUyxhQUFhLENBQUMsSUFBYyxFQUFFLFNBQWlCO0lBQ3RELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3RCLE9BQU87WUFDTCxNQUFNLEVBQUUsR0FBRztZQUNYLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFhLGtCQUFtQixTQUFRLG1CQUFLO0lBQzNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDaEQsWUFBWSxFQUFFLDBCQUEwQjtZQUN4QyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVix3QkFBd0IsRUFBRSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO2lCQUN0RTtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCwwQkFBMEIsQ0FDM0I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsY0FBYztnQkFDdkIsTUFBTSxFQUFFLGdDQUFnQztnQkFDeEMsVUFBVSxFQUFFO29CQUNWLHdCQUF3QixFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7aUJBQ3RFO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELDBCQUEwQixDQUMzQjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixNQUFNLEVBQUUsZ0NBQWdDO2dCQUN4QyxVQUFVLEVBQUU7b0JBQ1Ysd0JBQXdCLEVBQUUsYUFBYSxDQUNyQyxrQkFBa0IsRUFDbEIsVUFBVSxDQUNYO2lCQUNGO2FBQ0Y7WUFDRCxZQUFZLEVBQUUsNEJBQTRCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXZDRCxnREF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuXG5jb25zdCBjb3N0QWxsb2NhdGlvblRhZ3MgPSBbXG4gIFwiYXdzOmNsb3VkZm9ybWF0aW9uOmxvZ2ljYWwtaWRcIixcbiAgXCJhd3M6Y2xvdWRmb3JtYXRpb246c3RhY2staWRcIixcbiAgXCJhd3M6Y2xvdWRmb3JtYXRpb246c3RhY2stbmFtZVwiLFxuICBcImF3czpjcmVhdGVkQnlcIlxuICAvLyBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiXG4gIC8vIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgLy8gXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCIsXG4gIC8vIFwiZmphbGw6Y29zdEFsbG9jYXRpb246b3duZXJcIlxuXTtcblxuZnVuY3Rpb24gdG9nZ2xlQ29zdFRhZyh0YWdzOiBzdHJpbmdbXSwgdGFnU3RhdHVzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHRhZ3MubWFwKCh0YWcpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgVGFnS2V5OiB0YWcsXG4gICAgICBTdGF0dXM6IHRhZ1N0YXR1c1xuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgQ29zdEFsbG9jYXRpb25UYWdzIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcImNvc3RBbGxvY2F0aW9uVGFnc1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwiZW5hYmxlQ29zdEFsbG9jYXRpb25UYWdzXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkNvc3RFeHBsb3JlclwiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXM6IHRvZ2dsZUNvc3RUYWcoY29zdEFsbG9jYXRpb25UYWdzLCBcIkFjdGl2ZVwiKVxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJlbmFibGVDb3N0QWxsb2NhdGlvblRhZ3NcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJDb3N0RXhwbG9yZXJcIixcbiAgICAgICAgYWN0aW9uOiBcInVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzOiB0b2dnbGVDb3N0VGFnKGNvc3RBbGxvY2F0aW9uVGFncywgXCJBY3RpdmVcIilcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwidXBkYXRlQ29zdEFsbG9jYXRpb25UYWdzXCJcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQ29zdEV4cGxvcmVyXCIsXG4gICAgICAgIGFjdGlvbjogXCJ1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIENvc3RBbGxvY2F0aW9uVGFnc1N0YXR1czogdG9nZ2xlQ29zdFRhZyhcbiAgICAgICAgICAgIGNvc3RBbGxvY2F0aW9uVGFncyxcbiAgICAgICAgICAgIFwiSW5hY3RpdmVcIlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OkNvc3RBbGxvY2F0aW9uVGFnc1wiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Stack } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class DelegateHostedZoneRole extends Stack {
4
+ constructor(scope: Construct, id: string);
5
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DelegateHostedZoneRole = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const iam_1 = require("../../resources/aws/iam");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ const customResources = require("aws-cdk-lib/custom-resources");
8
+ const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
9
+ // TODO: Automatically import when a domain is imported, updated or created
10
+ const domains = ["Z08225072O6SFKZASVL1U"];
11
+ class DelegateHostedZoneRole extends aws_cdk_lib_1.Stack {
12
+ constructor(scope, id) {
13
+ super(scope, id);
14
+ const getHostedZoneArn = (domains) => {
15
+ const hostedZoneArn = [];
16
+ for (const domain of domains) {
17
+ hostedZoneArn.push(`arn:aws:route53:::hostedzone/${domain}`);
18
+ }
19
+ return hostedZoneArn;
20
+ };
21
+ const listHostedZones = new awsCustomResource_1.AwsCustomResource(this, "listHostedZones", {
22
+ functionName: "listHostedZones",
23
+ onCreate: {
24
+ service: "route-53",
25
+ action: "ListHostedZonesByNameCommand",
26
+ physicalResourceId: customResources.PhysicalResourceId.of("listHostedZones")
27
+ },
28
+ onUpdate: {
29
+ service: "route-53",
30
+ action: "ListHostedZonesByNameCommand",
31
+ physicalResourceId: customResources.PhysicalResourceId.of("HostedZoneId")
32
+ },
33
+ resourceType: "Custom::ListHostedZones",
34
+ policy: customResources.AwsCustomResourcePolicy.fromStatements([
35
+ new aws_iam_1.PolicyStatement({
36
+ actions: ["route53:ListHostedZonesByName"],
37
+ resources: ["*"],
38
+ effect: aws_iam_1.Effect.ALLOW
39
+ })
40
+ ])
41
+ });
42
+ new aws_cdk_lib_1.CfnOutput(this, "HostedZoneIds", {
43
+ key: "HostedZoneIds",
44
+ value: listHostedZones.getResponseField("HostedZoneId"),
45
+ exportName: "HostedZoneIds"
46
+ });
47
+ const role = new iam_1.Role(this, "DelegateHostedZoneRole", {
48
+ assumedBy: new aws_iam_1.OrganizationPrincipal(aws_cdk_lib_1.Fn.importValue("OrganisationId")),
49
+ roleName: "DelegateHostedZoneRole",
50
+ inlinePolicies: {
51
+ ["listHostedZones"]: new aws_iam_1.PolicyDocument({
52
+ statements: [
53
+ new aws_iam_1.PolicyStatement({
54
+ actions: ["route53:ListHostedZonesByName"],
55
+ resources: ["*"]
56
+ })
57
+ ]
58
+ }),
59
+ ["changeResourceRecordSets"]: new aws_iam_1.PolicyDocument({
60
+ statements: [
61
+ new aws_iam_1.PolicyStatement({
62
+ actions: ["route53:ChangeResourceRecordSets"],
63
+ resources: getHostedZoneArn(domains)
64
+ })
65
+ ]
66
+ })
67
+ }
68
+ });
69
+ new aws_cdk_lib_1.CfnOutput(this, "DelegateHostedZoneRoleArn", {
70
+ key: "DelegateHostedZoneRoleArn",
71
+ value: role.roleArn,
72
+ exportName: "DelegateHostedZoneRoleArn"
73
+ });
74
+ }
75
+ }
76
+ exports.DelegateHostedZoneRole = DelegateHostedZoneRole;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVIb3N0ZWRab25lUm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2RlbGVnYXRlSG9zdGVkWm9uZVJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1EO0FBRW5ELGlEQUErQztBQUMvQyxpREFLNkI7QUFDN0IsZ0VBQWdFO0FBQ2hFLHVGQUFvRjtBQUVwRiwyRUFBMkU7QUFDM0UsTUFBTSxPQUFPLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTFDLE1BQWEsc0JBQXVCLFNBQVEsbUJBQUs7SUFDL0MsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBaUIsRUFBRSxFQUFFO1lBQzdDLE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztZQUVuQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUIsYUFBYSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUM5RDtZQUNELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3JFLFlBQVksRUFBRSxpQkFBaUI7WUFDL0IsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixNQUFNLEVBQUUsOEJBQThCO2dCQUN0QyxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUMzRDtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsTUFBTSxFQUFFLDhCQUE4QjtnQkFDdEMsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQ3hEO1lBQ0QsWUFBWSxFQUFFLHlCQUF5QjtZQUN2QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNoQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2lCQUNyQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ25DLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1lBQ3ZELFVBQVUsRUFBRSxlQUFlO1NBQzVCLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLElBQUksVUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUNwRCxTQUFTLEVBQUUsSUFBSSwrQkFBcUIsQ0FBQyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RFLFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsY0FBYyxFQUFFO2dCQUNkLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQ3RDLFVBQVUsRUFBRTt3QkFDVixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDOzRCQUMxQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7eUJBQ2pCLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQztnQkFDRixDQUFDLDBCQUEwQixDQUFDLEVBQUUsSUFBSSx3QkFBYyxDQUFDO29CQUMvQyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixPQUFPLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQzs0QkFDN0MsU0FBUyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQzt5QkFDckMsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLDJCQUEyQixFQUFFO1lBQy9DLEdBQUcsRUFBRSwyQkFBMkI7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLFVBQVUsRUFBRSwyQkFBMkI7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBeEVELHdEQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRm4sIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHtcbiAgRWZmZWN0LFxuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLy8gVE9ETzogQXV0b21hdGljYWxseSBpbXBvcnQgd2hlbiBhIGRvbWFpbiBpcyBpbXBvcnRlZCwgdXBkYXRlZCBvciBjcmVhdGVkXG5jb25zdCBkb21haW5zID0gW1wiWjA4MjI1MDcyTzZTRktaQVNWTDFVXCJdO1xuXG5leHBvcnQgY2xhc3MgRGVsZWdhdGVIb3N0ZWRab25lUm9sZSBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBnZXRIb3N0ZWRab25lQXJuID0gKGRvbWFpbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBob3N0ZWRab25lQXJuOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGRvbWFpbiBvZiBkb21haW5zKSB7XG4gICAgICAgIGhvc3RlZFpvbmVBcm4ucHVzaChgYXJuOmF3czpyb3V0ZTUzOjo6aG9zdGVkem9uZS8ke2RvbWFpbn1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBob3N0ZWRab25lQXJuO1xuICAgIH07XG5cbiAgICBjb25zdCBsaXN0SG9zdGVkWm9uZXMgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJsaXN0SG9zdGVkWm9uZXNcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImxpc3RIb3N0ZWRab25lc1wiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJyb3V0ZS01M1wiLFxuICAgICAgICBhY3Rpb246IFwiTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1JvdXRlNTMuaHRtbCNsaXN0SG9zdGVkWm9uZXMtcHJvcGVydHlcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJsaXN0SG9zdGVkWm9uZXNcIilcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcInJvdXRlLTUzXCIsXG4gICAgICAgIGFjdGlvbjogXCJMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvUm91dGU1My5odG1sI2xpc3RIb3N0ZWRab25lcy1wcm9wZXJ0eVxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcIkhvc3RlZFpvbmVJZFwiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Okxpc3RIb3N0ZWRab25lc1wiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiSG9zdGVkWm9uZUlkc1wiLCB7XG4gICAgICBrZXk6IFwiSG9zdGVkWm9uZUlkc1wiLFxuICAgICAgdmFsdWU6IGxpc3RIb3N0ZWRab25lcy5nZXRSZXNwb25zZUZpZWxkKFwiSG9zdGVkWm9uZUlkXCIpLFxuICAgICAgZXhwb3J0TmFtZTogXCJIb3N0ZWRab25lSWRzXCJcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIkRlbGVnYXRlSG9zdGVkWm9uZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLCAvLyBUT0RPOiBTb3VyY2UgZnJvbSBsb2NhbCBjb25maWcsIHJhdGhlciB0aGFuIGRlcGxveWluZyBpbiBlYWNoIHJlZ2lvblxuICAgICAgcm9sZU5hbWU6IFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZVwiLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogZ2V0SG9zdGVkWm9uZUFybihkb21haW5zKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiLCB7XG4gICAgICBrZXk6IFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiLFxuICAgICAgdmFsdWU6IHJvbGUucm9sZUFybixcbiAgICAgIGV4cG9ydE5hbWU6IFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityCenter = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const customResources = require("aws-cdk-lib/custom-resources");
6
+ const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
7
+ const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
+ const group_1 = require("../../resources/aws/iam/identityCenter/group");
9
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
10
+ const permissionSet_1 = require("../../resources/aws/iam/identityCenter/permissionSet");
11
+ const assignment_1 = require("../../resources/aws/iam/identityCenter/assignment");
12
+ const getAccountId_1 = require("../../utils/getAccountId");
13
+ // TODO: Potentially have this class take in custom permission sets and policies to overide our defaults
14
+ class IdentityCenter extends aws_cdk_lib_1.Stack {
15
+ constructor(scope, id, props) {
16
+ super(scope, id, props);
17
+ const defaultPermissionSets = {
18
+ AdministratorAccess: {
19
+ Policy: "arn:aws:iam::aws:policy/AdministratorAccess"
20
+ },
21
+ Billing: {
22
+ Policy: "arn:aws:iam::aws:policy/job-function/Billing"
23
+ },
24
+ ReadOnlyAccess: {
25
+ Policy: "arn:aws:iam::aws:policy/ReadOnlyAccess"
26
+ },
27
+ SystemAdministrator: {
28
+ Policy: "arn:aws:iam::aws:policy/job-function/SystemAdministrator"
29
+ }
30
+ };
31
+ // TODO: What's the easier way to pass all accounts into the stack?
32
+ const accounts = {
33
+ management: (0, getAccountId_1.default)("management"),
34
+ production: (0, getAccountId_1.default)("production"),
35
+ staging: (0, getAccountId_1.default)("staging"),
36
+ development: (0, getAccountId_1.default)("development"),
37
+ platform: (0, getAccountId_1.default)("platform"),
38
+ businessContinuity: (0, getAccountId_1.default)("businessContinuity")
39
+ };
40
+ const customResource = new awsCustomResource_1.AwsCustomResource(this, "listIdentityCenterInstance", {
41
+ functionName: "listIdentityCenterInstance",
42
+ onCreate: {
43
+ service: "SSOAdmin",
44
+ action: "listInstances",
45
+ parameters: {
46
+ MaxResults: 1
47
+ },
48
+ physicalResourceId: customResources.PhysicalResourceId.of("listIdentityCenterInstance")
49
+ },
50
+ policy: customResources.AwsCustomResourcePolicy.fromStatements([
51
+ new aws_iam_1.PolicyStatement({
52
+ actions: ["sso:ListInstances"],
53
+ resources: ["*"]
54
+ })
55
+ ]),
56
+ resourceType: "Custom::IamIdentityCenter"
57
+ });
58
+ new cfnOutput_1.CfnOutput(this, "identityCenterArn", {
59
+ key: "identityCenterArn",
60
+ value: customResource.getResponseField("Instances.0.InstanceArn"),
61
+ exportName: "identityCenterArn"
62
+ });
63
+ new cfnOutput_1.CfnOutput(this, "identityStoreID", {
64
+ key: "identityStoreID",
65
+ value: customResource.getResponseField("Instances.0.IdentityStoreId"),
66
+ exportName: "identityStoreID"
67
+ });
68
+ for (const [permissionSet, permissionSetAssociation] of Object.entries(defaultPermissionSets)) {
69
+ const permSet = new permissionSet_1.PermissionSet(this, `${permissionSet}PermissionSet`, {
70
+ name: permissionSet,
71
+ instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
72
+ description: `Permission set for associated ${permissionSet} policy`,
73
+ managedPolicies: [permissionSetAssociation.Policy],
74
+ tags: [
75
+ {
76
+ key: "fjall:costAllocation:environments",
77
+ value: "management"
78
+ }
79
+ ]
80
+ });
81
+ const group = new group_1.Group(this, `${permissionSet}Group`, {
82
+ displayName: permissionSet,
83
+ identityStoreId: customResource.getResponseField("Instances.0.IdentityStoreId"),
84
+ description: `Group for associated ${permissionSet} permission set`
85
+ });
86
+ new cfnOutput_1.CfnOutput(this, `${permissionSet}GroupId`, {
87
+ key: `${permissionSet}GroupId`,
88
+ value: group.attrGroupId,
89
+ exportName: `${permissionSet}GroupId`
90
+ });
91
+ for (const [account, accountArn] of Object.entries(accounts)) {
92
+ if (!accountArn)
93
+ continue;
94
+ new assignment_1.Assignment(this, `${account}${permissionSet}Association`, {
95
+ instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
96
+ permissionSetArn: permSet.attrPermissionSetArn,
97
+ principalType: "GROUP",
98
+ principalId: group.attrGroupId,
99
+ targetType: "AWS_ACCOUNT",
100
+ targetId: accountArn
101
+ });
102
+ }
103
+ }
104
+ }
105
+ }
106
+ exports.IdentityCenter = IdentityCenter;
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0Q7QUFDaEQsZ0VBQWdFO0FBR2hFLHVFQUFvRTtBQUNwRSx1RkFBb0Y7QUFDcEYsd0VBQXFFO0FBQ3JFLGlEQUFzRDtBQUN0RCx3RkFBcUY7QUFDckYsa0ZBQStFO0FBQy9FLDJEQUFvRDtBQUVwRCx3R0FBd0c7QUFDeEcsTUFBYSxjQUFlLFNBQVEsbUJBQUs7SUFDdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLHFCQUFxQixHQUFHO1lBQzVCLG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsNkNBQTZDO2FBQ3REO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSw4Q0FBOEM7YUFDdkQ7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLHdDQUF3QzthQUNqRDtZQUNELG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsMERBQTBEO2FBQ25FO1NBQ0YsQ0FBQztRQUVGLG1FQUFtRTtRQUNuRSxNQUFNLFFBQVEsR0FBRztZQUNmLFVBQVUsRUFBRSxJQUFBLHNCQUFZLEVBQUMsWUFBWSxDQUFDO1lBQ3RDLFVBQVUsRUFBRSxJQUFBLHNCQUFZLEVBQUMsWUFBWSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxJQUFBLHNCQUFZLEVBQUMsU0FBUyxDQUFDO1lBQ2hDLFdBQVcsRUFBRSxJQUFBLHNCQUFZLEVBQUMsYUFBYSxDQUFDO1lBQ3hDLFFBQVEsRUFBRSxJQUFBLHNCQUFZLEVBQUMsVUFBVSxDQUFDO1lBQ2xDLGtCQUFrQixFQUFFLElBQUEsc0JBQVksRUFBQyxvQkFBb0IsQ0FBQztTQUN2RCxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsSUFBSSxxQ0FBaUIsQ0FDMUMsSUFBSSxFQUNKLDRCQUE0QixFQUM1QjtZQUNFLFlBQVksRUFBRSw0QkFBNEI7WUFDMUMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixNQUFNLEVBQUUsZUFBZTtnQkFDdkIsVUFBVSxFQUFFO29CQUNWLFVBQVUsRUFBRSxDQUFDO2lCQUNkO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELDRCQUE0QixDQUM3QjthQUNGO1lBQ0QsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNILENBQUM7WUFDRixZQUFZLEVBQUUsMkJBQTJCO1NBQzFDLENBQ0YsQ0FBQztRQUVGLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDdkMsR0FBRyxFQUFFLG1CQUFtQjtZQUN4QixLQUFLLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO1lBQ2pFLFVBQVUsRUFBRSxtQkFBbUI7U0FDaEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNyQyxHQUFHLEVBQUUsaUJBQWlCO1lBQ3RCLEtBQUssRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUM7WUFDckUsVUFBVSxFQUFFLGlCQUFpQjtTQUM5QixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUNwRSxxQkFBcUIsQ0FDdEIsRUFBRTtZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksNkJBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLGVBQWUsRUFBRTtnQkFDdkUsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLFdBQVcsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7Z0JBQ3ZFLFdBQVcsRUFBRSxpQ0FBaUMsYUFBYSxTQUFTO2dCQUNwRSxlQUFlLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7Z0JBQ2xELElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsbUNBQW1DO3dCQUN4QyxLQUFLLEVBQUUsWUFBWTtxQkFDcEI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLE9BQU8sRUFBRTtnQkFDckQsV0FBVyxFQUFFLGFBQWE7Z0JBQzFCLGVBQWUsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQzlDLDZCQUE2QixDQUM5QjtnQkFDRCxXQUFXLEVBQUUsd0JBQXdCLGFBQWEsaUJBQWlCO2FBQ3BFLENBQUMsQ0FBQztZQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLFNBQVMsRUFBRTtnQkFDN0MsR0FBRyxFQUFFLEdBQUcsYUFBYSxTQUFTO2dCQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQ3hCLFVBQVUsRUFBRSxHQUFHLGFBQWEsU0FBUzthQUN0QyxDQUFDLENBQUM7WUFFSCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLFVBQVU7b0JBQUUsU0FBUztnQkFFMUIsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sR0FBRyxhQUFhLGFBQWEsRUFBRTtvQkFDNUQsV0FBVyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FDMUMseUJBQXlCLENBQzFCO29CQUNELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7b0JBQzlDLGFBQWEsRUFBRSxPQUFPO29CQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLFVBQVUsRUFBRSxhQUFhO29CQUN6QixRQUFRLEVBQUUsVUFBVTtpQkFDckIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7Q0FDRjtBQS9HRCx3Q0ErR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY2ZuT3V0cHV0XCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXBcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2V0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvaWFtL2lkZW50aXR5Q2VudGVyL3Blcm1pc3Npb25TZXRcIjtcbmltcG9ydCB7IEFzc2lnbm1lbnQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvYXNzaWdubWVudFwiO1xuaW1wb3J0IGdldEFjY291bnRJZCBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0QWNjb3VudElkXCI7XG5cbi8vIFRPRE86IFBvdGVudGlhbGx5IGhhdmUgdGhpcyBjbGFzcyB0YWtlIGluIGN1c3RvbSBwZXJtaXNzaW9uIHNldHMgYW5kIHBvbGljaWVzIHRvIG92ZXJpZGUgb3VyIGRlZmF1bHRzXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlDZW50ZXIgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBlcm1pc3Npb25TZXRzID0ge1xuICAgICAgQWRtaW5pc3RyYXRvckFjY2Vzczoge1xuICAgICAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvQWRtaW5pc3RyYXRvckFjY2Vzc1wiXG4gICAgICB9LFxuICAgICAgQmlsbGluZzoge1xuICAgICAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvam9iLWZ1bmN0aW9uL0JpbGxpbmdcIlxuICAgICAgfSxcbiAgICAgIFJlYWRPbmx5QWNjZXNzOiB7XG4gICAgICAgIFBvbGljeTogXCJhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9SZWFkT25seUFjY2Vzc1wiXG4gICAgICB9LFxuICAgICAgU3lzdGVtQWRtaW5pc3RyYXRvcjoge1xuICAgICAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvam9iLWZ1bmN0aW9uL1N5c3RlbUFkbWluaXN0cmF0b3JcIlxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBUT0RPOiBXaGF0J3MgdGhlIGVhc2llciB3YXkgdG8gcGFzcyBhbGwgYWNjb3VudHMgaW50byB0aGUgc3RhY2s/XG4gICAgY29uc3QgYWNjb3VudHMgPSB7XG4gICAgICBtYW5hZ2VtZW50OiBnZXRBY2NvdW50SWQoXCJtYW5hZ2VtZW50XCIpLFxuICAgICAgcHJvZHVjdGlvbjogZ2V0QWNjb3VudElkKFwicHJvZHVjdGlvblwiKSxcbiAgICAgIHN0YWdpbmc6IGdldEFjY291bnRJZChcInN0YWdpbmdcIiksXG4gICAgICBkZXZlbG9wbWVudDogZ2V0QWNjb3VudElkKFwiZGV2ZWxvcG1lbnRcIiksXG4gICAgICBwbGF0Zm9ybTogZ2V0QWNjb3VudElkKFwicGxhdGZvcm1cIiksXG4gICAgICBidXNpbmVzc0NvbnRpbnVpdHk6IGdldEFjY291bnRJZChcImJ1c2luZXNzQ29udGludWl0eVwiKVxuICAgIH07XG5cbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZSA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcImxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlXCIsXG4gICAgICB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJsaXN0SWRlbnRpdHlDZW50ZXJJbnN0YW5jZVwiLFxuICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiU1NPQWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwibGlzdEluc3RhbmNlc1wiLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIE1heFJlc3VsdHM6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgIFwibGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2VcIlxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wic3NvOkxpc3RJbnN0YW5jZXNcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICB9KVxuICAgICAgICBdKSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWFtSWRlbnRpdHlDZW50ZXJcIlxuICAgICAgfVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaWRlbnRpdHlDZW50ZXJBcm5cIiwge1xuICAgICAga2V5OiBcImlkZW50aXR5Q2VudGVyQXJuXCIsXG4gICAgICB2YWx1ZTogY3VzdG9tUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIkluc3RhbmNlcy4wLkluc3RhbmNlQXJuXCIpLFxuICAgICAgZXhwb3J0TmFtZTogXCJpZGVudGl0eUNlbnRlckFyblwiXG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcImlkZW50aXR5U3RvcmVJRFwiLCB7XG4gICAgICBrZXk6IFwiaWRlbnRpdHlTdG9yZUlEXCIsXG4gICAgICB2YWx1ZTogY3VzdG9tUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIkluc3RhbmNlcy4wLklkZW50aXR5U3RvcmVJZFwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IFwiaWRlbnRpdHlTdG9yZUlEXCJcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgW3Blcm1pc3Npb25TZXQsIHBlcm1pc3Npb25TZXRBc3NvY2lhdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICBkZWZhdWx0UGVybWlzc2lvblNldHNcbiAgICApKSB7XG4gICAgICBjb25zdCBwZXJtU2V0ID0gbmV3IFBlcm1pc3Npb25TZXQodGhpcywgYCR7cGVybWlzc2lvblNldH1QZXJtaXNzaW9uU2V0YCwge1xuICAgICAgICBuYW1lOiBwZXJtaXNzaW9uU2V0LFxuICAgICAgICBpbnN0YW5jZUFybjogY3VzdG9tUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIkluc3RhbmNlcy4wLkluc3RhbmNlQXJuXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFBlcm1pc3Npb24gc2V0IGZvciBhc3NvY2lhdGVkICR7cGVybWlzc2lvblNldH0gcG9saWN5YCxcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbcGVybWlzc2lvblNldEFzc29jaWF0aW9uLlBvbGljeV0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRzXCIsXG4gICAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cCh0aGlzLCBgJHtwZXJtaXNzaW9uU2V0fUdyb3VwYCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogcGVybWlzc2lvblNldCxcbiAgICAgICAgaWRlbnRpdHlTdG9yZUlkOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFxuICAgICAgICAgIFwiSW5zdGFuY2VzLjAuSWRlbnRpdHlTdG9yZUlkXCJcbiAgICAgICAgKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBHcm91cCBmb3IgYXNzb2NpYXRlZCAke3Blcm1pc3Npb25TZXR9IHBlcm1pc3Npb24gc2V0YFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cGVybWlzc2lvblNldH1Hcm91cElkYCwge1xuICAgICAgICBrZXk6IGAke3Blcm1pc3Npb25TZXR9R3JvdXBJZGAsXG4gICAgICAgIHZhbHVlOiBncm91cC5hdHRyR3JvdXBJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7cGVybWlzc2lvblNldH1Hcm91cElkYFxuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgW2FjY291bnQsIGFjY291bnRBcm5dIG9mIE9iamVjdC5lbnRyaWVzKGFjY291bnRzKSkge1xuICAgICAgICBpZiAoIWFjY291bnRBcm4pIGNvbnRpbnVlO1xuXG4gICAgICAgIG5ldyBBc3NpZ25tZW50KHRoaXMsIGAke2FjY291bnR9JHtwZXJtaXNzaW9uU2V0fUFzc29jaWF0aW9uYCwge1xuICAgICAgICAgIGluc3RhbmNlQXJuOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFxuICAgICAgICAgICAgXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICBwZXJtaXNzaW9uU2V0QXJuOiBwZXJtU2V0LmF0dHJQZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiR1JPVVBcIixcbiAgICAgICAgICBwcmluY2lwYWxJZDogZ3JvdXAuYXR0ckdyb3VwSWQsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogXCJBV1NfQUNDT1VOVFwiLFxuICAgICAgICAgIHRhcmdldElkOiBhY2NvdW50QXJuXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ export * from "./costAllocationTags";
2
+ export * from "./identityCenter";
3
+ export * from "./ipam";
4
+ export * from "./ipamDelegateAdmin";
5
+ export * from "./ipamPool";
6
+ export * from "./ipamPoolResourceShare";
7
+ export * from "./ramEnableSharing";
8
+ export * from "./users";
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./costAllocationTags"), exports);
18
+ __exportStar(require("./identityCenter"), exports);
19
+ __exportStar(require("./ipam"), exports);
20
+ __exportStar(require("./ipamDelegateAdmin"), exports);
21
+ __exportStar(require("./ipamPool"), exports);
22
+ __exportStar(require("./ipamPoolResourceShare"), exports);
23
+ __exportStar(require("./ramEnableSharing"), exports);
24
+ __exportStar(require("./users"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG1EQUFpQztBQUNqQyx5Q0FBdUI7QUFDdkIsc0RBQW9DO0FBQ3BDLDZDQUEyQjtBQUMzQiwwREFBd0M7QUFDeEMscURBQW1DO0FBQ25DLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2Nvc3RBbGxvY2F0aW9uVGFnc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlDZW50ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lwYW1cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lwYW1EZWxlZ2F0ZUFkbWluXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtUG9vbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVBvb2xSZXNvdXJjZVNoYXJlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yYW1FbmFibGVTaGFyaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2Vyc1wiO1xuIl19
@@ -0,0 +1,5 @@
1
+ import { Stack } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class Ipam extends Stack {
4
+ constructor(scope: Construct, id: string);
5
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ipam = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const ipam_1 = require("../../resources/aws/networking/ipam");
6
+ const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
7
+ class Ipam extends aws_cdk_lib_1.Stack {
8
+ constructor(scope, id) {
9
+ super(scope, id);
10
+ const ipam = new ipam_1.Ipam(this, "ipam", {
11
+ operatingRegions: [
12
+ { regionName: "us-east-1" },
13
+ { regionName: "eu-west-1" }
14
+ ],
15
+ tags: [
16
+ {
17
+ key: "fjall:costAllocation:environment",
18
+ value: "management"
19
+ }
20
+ ]
21
+ });
22
+ new cfnOutput_1.CfnOutput(this, "privateDefaultScopeId", {
23
+ key: "privateDefaultScopeId",
24
+ value: ipam.attrPrivateDefaultScopeId,
25
+ exportName: "IpamPrivateDefaultScopeId"
26
+ });
27
+ }
28
+ }
29
+ exports.Ipam = Ipam;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2lwYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW9DO0FBR3BDLDhEQUF3RTtBQUN4RSx1RUFBb0U7QUFFcEUsTUFBYSxJQUFLLFNBQVEsbUJBQUs7SUFDN0IsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3ZDLGdCQUFnQixFQUFFO2dCQUNoQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7Z0JBQzNCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTthQUM1QjtZQUNELElBQUksRUFBRTtnQkFDSjtvQkFDRSxHQUFHLEVBQUUsa0NBQWtDO29CQUN2QyxLQUFLLEVBQUUsWUFBWTtpQkFDcEI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDM0MsR0FBRyxFQUFFLHVCQUF1QjtZQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUNyQyxVQUFVLEVBQUUsMkJBQTJCO1NBQ3hDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRCRCxvQkFzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgSXBhbSBhcyBpcGFtQ2xhc3MgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1cIjtcbmltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9jZm5PdXRwdXRcIjtcblxuZXhwb3J0IGNsYXNzIElwYW0gZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGlwYW0gPSBuZXcgaXBhbUNsYXNzKHRoaXMsIFwiaXBhbVwiLCB7XG4gICAgICBvcGVyYXRpbmdSZWdpb25zOiBbXG4gICAgICAgIHsgcmVnaW9uTmFtZTogXCJ1cy1lYXN0LTFcIiB9LFxuICAgICAgICB7IHJlZ2lvbk5hbWU6IFwiZXUtd2VzdC0xXCIgfVxuICAgICAgXSxcbiAgICAgIHRhZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgIHZhbHVlOiBcIm1hbmFnZW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwicHJpdmF0ZURlZmF1bHRTY29wZUlkXCIsIHtcbiAgICAgIGtleTogXCJwcml2YXRlRGVmYXVsdFNjb3BlSWRcIixcbiAgICAgIHZhbHVlOiBpcGFtLmF0dHJQcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICBleHBvcnROYW1lOiBcIklwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWRcIlxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { StackProps, Stack } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ interface IpamDelegateAdminProps extends StackProps {
4
+ accountName?: string;
5
+ }
6
+ export declare class IpamDelegateAdmin extends Stack {
7
+ constructor(scope: Construct, id: string, props?: IpamDelegateAdminProps);
8
+ }
9
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IpamDelegateAdmin = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const customResources = require("aws-cdk-lib/custom-resources");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
+ const getAccountId_1 = require("../../utils/getAccountId");
9
+ class IpamDelegateAdmin extends aws_cdk_lib_1.Stack {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, props);
12
+ new awsCustomResource_1.AwsCustomResource(this, "ipamDelegateAdmin", {
13
+ functionName: "ipamDelegateAdmin",
14
+ onCreate: {
15
+ service: "EC2",
16
+ action: "enableIpamOrganizationAdminAccount",
17
+ parameters: {
18
+ DryRun: false,
19
+ DelegatedAdminAccountId: props?.accountName
20
+ ? (0, getAccountId_1.default)(props.accountName)
21
+ : (0, getAccountId_1.default)("platform")
22
+ },
23
+ physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
24
+ },
25
+ onUpdate: {
26
+ service: "EC2",
27
+ action: "enableIpamOrganizationAdminAccount",
28
+ parameters: {
29
+ DryRun: false,
30
+ DelegatedAdminAccountId: props?.accountName
31
+ ? (0, getAccountId_1.default)(props.accountName)
32
+ : (0, getAccountId_1.default)("platform")
33
+ },
34
+ physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
35
+ },
36
+ onDelete: {
37
+ service: "EC2",
38
+ action: "disableIpamOrganizationAdminAccount",
39
+ parameters: {
40
+ DryRun: false,
41
+ DelegatedAdminAccountId: (0, getAccountId_1.default)("platform")
42
+ }
43
+ },
44
+ resourceType: "Custom::ipamDelegateAdmin",
45
+ policy: customResources.AwsCustomResourcePolicy.fromStatements([
46
+ new aws_iam_1.PolicyStatement({
47
+ actions: [
48
+ "ec2:EnableIpamOrganizationAdminAccount",
49
+ "ec2:DisableIpamOrganizationAdminAccount",
50
+ "organizations:EnableAWSServiceAccess",
51
+ "organizations:DisableAWSServiceAccess",
52
+ "organizations:RegisterDelegatedAdministrator",
53
+ "iam:CreateServiceLinkedRole"
54
+ ],
55
+ resources: ["*"] // TODO: Find out the exact pricipal for this
56
+ })
57
+ ])
58
+ });
59
+ }
60
+ }
61
+ exports.IpamDelegateAdmin = IpamDelegateAdmin;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbURlbGVnYXRlQWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pcGFtRGVsZWdhdGVBZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0Q7QUFDaEQsZ0VBQWdFO0FBQ2hFLGlEQUFzRDtBQUd0RCx1RkFBb0Y7QUFDcEYsMkRBQW9EO0FBTXBELE1BQWEsaUJBQWtCLFNBQVEsbUJBQUs7SUFDMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUMvQyxZQUFZLEVBQUUsbUJBQW1CO1lBQ2pDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsb0NBQW9DO2dCQUM1QyxVQUFVLEVBQUU7b0JBQ1YsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFdBQVc7d0JBQ3pDLENBQUMsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzt3QkFDakMsQ0FBQyxDQUFDLElBQUEsc0JBQVksRUFBQyxVQUFVLENBQUM7aUJBQzdCO2dCQUNELGtCQUFrQixFQUNoQixlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQzdEO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxvQ0FBb0M7Z0JBQzVDLFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsS0FBSztvQkFDYix1QkFBdUIsRUFBRSxLQUFLLEVBQUUsV0FBVzt3QkFDekMsQ0FBQyxDQUFDLElBQUEsc0JBQVksRUFBQyxLQUFLLENBQUMsV0FBVyxDQUFDO3dCQUNqQyxDQUFDLENBQUMsSUFBQSxzQkFBWSxFQUFDLFVBQVUsQ0FBQztpQkFDN0I7Z0JBQ0Qsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDN0Q7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLHFDQUFxQztnQkFDN0MsVUFBVSxFQUFFO29CQUNWLE1BQU0sRUFBRSxLQUFLO29CQUNiLHVCQUF1QixFQUFFLElBQUEsc0JBQVksRUFBQyxVQUFVLENBQUM7aUJBQ2xEO2FBQ0Y7WUFDRCxZQUFZLEVBQUUsMkJBQTJCO1lBQ3pDLE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO2dCQUM3RCxJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx3Q0FBd0M7d0JBQ3hDLHlDQUF5Qzt3QkFDekMsc0NBQXNDO3dCQUN0Qyx1Q0FBdUM7d0JBQ3ZDLDhDQUE4Qzt3QkFDOUMsNkJBQTZCO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyw2Q0FBNkM7aUJBQy9ELENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdERELDhDQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IGdldEFjY291bnRJZCBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0QWNjb3VudElkXCI7XG5cbmludGVyZmFjZSBJcGFtRGVsZWdhdGVBZG1pblByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIGFjY291bnROYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbURlbGVnYXRlQWRtaW4gZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogSXBhbURlbGVnYXRlQWRtaW5Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiaXBhbURlbGVnYXRlQWRtaW5cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImlwYW1EZWxlZ2F0ZUFkbWluXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkVDMlwiLFxuICAgICAgICBhY3Rpb246IFwiZW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0VDMi5odG1sI2VuYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnQtcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzPy5hY2NvdW50TmFtZVxuICAgICAgICAgICAgPyBnZXRBY2NvdW50SWQocHJvcHMuYWNjb3VudE5hbWUpXG4gICAgICAgICAgICA6IGdldEFjY291bnRJZChcInBsYXRmb3JtXCIpXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiaXBhbURlbGVnYXRlQWRtaW5cIilcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkVDMlwiLFxuICAgICAgICBhY3Rpb246IFwiZW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgRHJ5UnVuOiBmYWxzZSxcbiAgICAgICAgICBEZWxlZ2F0ZWRBZG1pbkFjY291bnRJZDogcHJvcHM/LmFjY291bnROYW1lXG4gICAgICAgICAgICA/IGdldEFjY291bnRJZChwcm9wcy5hY2NvdW50TmFtZSlcbiAgICAgICAgICAgIDogZ2V0QWNjb3VudElkKFwicGxhdGZvcm1cIilcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJpcGFtRGVsZWdhdGVBZG1pblwiKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiRUMyXCIsXG4gICAgICAgIGFjdGlvbjogXCJkaXNhYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0VDMi5odG1sI2Rpc2FibGVJcGFtT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50LXByb3BlcnR5XG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBEcnlSdW46IGZhbHNlLFxuICAgICAgICAgIERlbGVnYXRlZEFkbWluQWNjb3VudElkOiBnZXRBY2NvdW50SWQoXCJwbGF0Zm9ybVwiKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6aXBhbURlbGVnYXRlQWRtaW5cIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJlYzI6RW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuICAgICAgICAgICAgXCJlYzI6RGlzYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnRcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpFbmFibGVBV1NTZXJ2aWNlQWNjZXNzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGlzYWJsZUFXU1NlcnZpY2VBY2Nlc3NcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JcIixcbiAgICAgICAgICAgIFwiaWFtOkNyZWF0ZVNlcnZpY2VMaW5rZWRSb2xlXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBGaW5kIG91dCB0aGUgZXhhY3QgcHJpY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Stack } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class IpamPool extends Stack {
4
+ constructor(scope: Construct, id: string);
5
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IpamPool = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const ipamPool_1 = require("../../resources/aws/networking/ipamPool");
6
+ const CidrAllocation = {
7
+ production: "10.0.0.0/8",
8
+ staging: "80.0.0.0/8",
9
+ development: "150.0.0.0/8",
10
+ platform: "200.0.0.0/8",
11
+ businessContinuity: "210.0.0.0/8"
12
+ };
13
+ const IpamPrivateDefaultScopeId = aws_cdk_lib_1.Fn.importValue("IpamPrivateDefaultScopeId");
14
+ class IpamPool extends aws_cdk_lib_1.Stack {
15
+ constructor(scope, id) {
16
+ super(scope, id);
17
+ for (const [environment, cidrBlock] of Object.entries(CidrAllocation)) {
18
+ const ipamPool = new ipamPool_1.IpamPool(this, `${environment}IpamPool`, {
19
+ description: `${environment} IPAM pool - ${cidrBlock}`,
20
+ addressFamily: "ipv4",
21
+ ipamScopeId: IpamPrivateDefaultScopeId,
22
+ locale: environment == "businessContinuity" ? "eu-west-1" : "us-east-1",
23
+ allocationResourceTags: [
24
+ {
25
+ key: "fjall:operations:pool",
26
+ value: `${environment}`
27
+ }
28
+ ],
29
+ autoImport: false,
30
+ provisionedCidrs: [{ cidr: cidrBlock }],
31
+ tags: [
32
+ {
33
+ key: "fjall:operations:pool",
34
+ value: "top-level"
35
+ },
36
+ {
37
+ key: "fjall:costAllocation:environment",
38
+ value: `${environment}`
39
+ }
40
+ ]
41
+ });
42
+ new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolId`, {
43
+ key: `${environment}IpamPoolId`,
44
+ value: ipamPool.attrIpamPoolId,
45
+ exportName: `${environment}IpamPoolId`
46
+ });
47
+ new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolArn`, {
48
+ key: `${environment}IpamPoolArn`,
49
+ value: ipamPool.attrArn,
50
+ exportName: `${environment}IpamPoolArn`
51
+ });
52
+ }
53
+ }
54
+ }
55
+ exports.IpamPool = IpamPool;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pcGFtUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBbUQ7QUFHbkQsc0VBQW9GO0FBRXBGLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGtCQUFrQixFQUFFLGFBQWE7Q0FDbEMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUU5RSxNQUFhLFFBQVMsU0FBUSxtQkFBSztJQUNqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLFVBQVUsRUFBRTtnQkFDakUsV0FBVyxFQUFFLEdBQUcsV0FBVyxnQkFBZ0IsU0FBUyxFQUFFO2dCQUN0RCxhQUFhLEVBQUUsTUFBTTtnQkFDckIsV0FBVyxFQUFFLHlCQUF5QjtnQkFDdEMsTUFBTSxFQUFFLFdBQVcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO2dCQUN2RSxzQkFBc0IsRUFBRTtvQkFDdEI7d0JBQ0UsR0FBRyxFQUFFLHVCQUF1Qjt3QkFDNUIsS0FBSyxFQUFFLEdBQUcsV0FBVyxFQUFFO3FCQUN4QjtpQkFDRjtnQkFDRCxVQUFVLEVBQUUsS0FBSztnQkFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxFQUFFO29CQUNKO3dCQUNFLEdBQUcsRUFBRSx1QkFBdUI7d0JBQzVCLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtvQkFDRDt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsWUFBWSxFQUFFO2dCQUM5QyxHQUFHLEVBQUUsR0FBRyxXQUFXLFlBQVk7Z0JBQy9CLEtBQUssRUFBRSxRQUFRLENBQUMsY0FBYztnQkFDOUIsVUFBVSxFQUFFLEdBQUcsV0FBVyxZQUFZO2FBQ3ZDLENBQUMsQ0FBQztZQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLGFBQWEsRUFBRTtnQkFDL0MsR0FBRyxFQUFFLEdBQUcsV0FBVyxhQUFhO2dCQUNoQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3ZCLFVBQVUsRUFBRSxHQUFHLFdBQVcsYUFBYTthQUN4QyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQTNDRCw0QkEyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiwgU3RhY2ssIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgSXBhbVBvb2wgYXMgaXBhbVBvb2xDbGFzcyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcblxuY29uc3QgQ2lkckFsbG9jYXRpb24gPSB7XG4gIHByb2R1Y3Rpb246IFwiMTAuMC4wLjAvOFwiLFxuICBzdGFnaW5nOiBcIjgwLjAuMC4wLzhcIixcbiAgZGV2ZWxvcG1lbnQ6IFwiMTUwLjAuMC4wLzhcIixcbiAgcGxhdGZvcm06IFwiMjAwLjAuMC4wLzhcIixcbiAgYnVzaW5lc3NDb250aW51aXR5OiBcIjIxMC4wLjAuMC84XCJcbn07XG5cbmNvbnN0IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQgPSBGbi5pbXBvcnRWYWx1ZShcIklwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWRcIik7XG5cbmV4cG9ydCBjbGFzcyBJcGFtUG9vbCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBmb3IgKGNvbnN0IFtlbnZpcm9ubWVudCwgY2lkckJsb2NrXSBvZiBPYmplY3QuZW50cmllcyhDaWRyQWxsb2NhdGlvbikpIHtcbiAgICAgIGNvbnN0IGlwYW1Qb29sID0gbmV3IGlwYW1Qb29sQ2xhc3ModGhpcywgYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xgLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHtlbnZpcm9ubWVudH0gSVBBTSBwb29sIC0gJHtjaWRyQmxvY2t9YCxcbiAgICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICAgIGlwYW1TY29wZUlkOiBJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkLFxuICAgICAgICBsb2NhbGU6IGVudmlyb25tZW50ID09IFwiYnVzaW5lc3NDb250aW51aXR5XCIgPyBcImV1LXdlc3QtMVwiIDogXCJ1cy1lYXN0LTFcIixcbiAgICAgICAgYWxsb2NhdGlvblJlc291cmNlVGFnczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhdXRvSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgcHJvdmlzaW9uZWRDaWRyczogW3sgY2lkcjogY2lkckJsb2NrIH1dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgdmFsdWU6IFwidG9wLWxldmVsXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgdmFsdWU6IGAke2Vudmlyb25tZW50fWBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sSWRgLCB7XG4gICAgICAgIGtleTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGAsXG4gICAgICAgIHZhbHVlOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGBcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCwge1xuICAgICAgICBrZXk6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCxcbiAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJBcm4sXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
- import { Stack, StackProps } from "aws-cdk-lib";
1
+ import { StackProps, Stack } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
- export declare class IamIdentityCenter extends Stack {
3
+ export declare class IpamPoolResourceShare extends Stack {
4
4
  constructor(scope: Construct, id: string, props?: StackProps);
5
5
  }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IpamPoolResourceShare = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const resourceShare_1 = require("../../resources/aws/utilities/resourceShare");
6
+ const getAccountId_1 = require("../../utils/getAccountId");
7
+ const environments = [
8
+ "production",
9
+ "staging",
10
+ "development",
11
+ "businessContinuity"
12
+ ];
13
+ const ipamShareProps = environments.map((environment) => {
14
+ return {
15
+ environment: environment,
16
+ accountId: (0, getAccountId_1.default)(environment),
17
+ ipamPoolArn: aws_cdk_lib_1.Fn.importValue(`${environment}IpamPoolArn`)
18
+ };
19
+ });
20
+ class IpamPoolResourceShare extends aws_cdk_lib_1.Stack {
21
+ constructor(scope, id, props) {
22
+ super(scope, id, props);
23
+ for (const ipamShareProp of ipamShareProps) {
24
+ if (!ipamShareProp.accountId)
25
+ continue;
26
+ new resourceShare_1.ResourceShare(this, `${ipamShareProp.environment}IpamResourceShare`, {
27
+ name: `${ipamShareProp.environment}IpamResourceShare`,
28
+ allowExternalPrincipals: false,
29
+ principals: [ipamShareProp.accountId],
30
+ resourceArns: [ipamShareProp.ipamPoolArn],
31
+ tags: [
32
+ {
33
+ key: "fjall:costAllocation:environment",
34
+ value: `${ipamShareProp.environment}`
35
+ }
36
+ ]
37
+ });
38
+ }
39
+ }
40
+ }
41
+ exports.IpamPoolResourceShare = IpamPoolResourceShare;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xSZXNvdXJjZVNoYXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaXBhbVBvb2xSZXNvdXJjZVNoYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCwrRUFBNEU7QUFDNUUsMkRBQW9EO0FBRXBELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBQ3RELE9BQU87UUFDTCxXQUFXLEVBQUUsV0FBVztRQUN4QixTQUFTLEVBQUUsSUFBQSxzQkFBWSxFQUFDLFdBQVcsQ0FBQztRQUNwQyxXQUFXLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLGFBQWEsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFhLHFCQUFzQixTQUFRLG1CQUFLO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2dCQUFFLFNBQVM7WUFFdkMsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxXQUFXLG1CQUFtQixFQUFFO2dCQUN2RSxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxtQkFBbUI7Z0JBQ3JELHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFO3FCQUN0QztpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBckJELHNEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUHJvcHMsIFN0YWNrLCBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgUmVzb3VyY2VTaGFyZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuY29uc3QgZW52aXJvbm1lbnRzID0gW1xuICBcInByb2R1Y3Rpb25cIixcbiAgXCJzdGFnaW5nXCIsXG4gIFwiZGV2ZWxvcG1lbnRcIixcbiAgXCJidXNpbmVzc0NvbnRpbnVpdHlcIlxuXTtcblxuY29uc3QgaXBhbVNoYXJlUHJvcHMgPSBlbnZpcm9ubWVudHMubWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCxcbiAgICBhY2NvdW50SWQ6IGdldEFjY291bnRJZChlbnZpcm9ubWVudCksXG4gICAgaXBhbVBvb2xBcm46IEZuLmltcG9ydFZhbHVlKGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYClcbiAgfTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xSZXNvdXJjZVNoYXJlIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGZvciAoY29uc3QgaXBhbVNoYXJlUHJvcCBvZiBpcGFtU2hhcmVQcm9wcykge1xuICAgICAgaWYgKCFpcGFtU2hhcmVQcm9wLmFjY291bnRJZCkgY29udGludWU7XG5cbiAgICAgIG5ldyBSZXNvdXJjZVNoYXJlKHRoaXMsIGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLCB7XG4gICAgICAgIG5hbWU6IGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLFxuICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgIHByaW5jaXBhbHM6IFtpcGFtU2hhcmVQcm9wLmFjY291bnRJZF0sXG4gICAgICAgIHJlc291cmNlQXJuczogW2lwYW1TaGFyZVByb3AuaXBhbVBvb2xBcm5dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aXBhbVNoYXJlUHJvcC5lbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Stack } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class OrganisationId extends Stack {
4
+ constructor(scope: Construct, id: string);
5
+ }