@fjall/components-infrastructure 0.1.5 → 0.1.6

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 (218) 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 +4 -0
  8. package/dist/lib/config/aws/costAllocationTags.js +59 -0
  9. package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
  10. package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
  11. package/dist/lib/config/aws/ecrDefaultImage.d.ts +11 -0
  12. package/dist/lib/config/aws/ecrDefaultImage.js +127 -0
  13. package/dist/lib/config/aws/eventBus.d.ts +7 -0
  14. package/dist/lib/config/aws/eventBus.js +24 -0
  15. package/dist/lib/config/aws/identityCenter.d.ts +13 -0
  16. package/dist/lib/config/aws/identityCenter.js +102 -0
  17. package/dist/lib/config/aws/identityCenterUser.d.ts +16 -0
  18. package/dist/lib/config/aws/identityCenterUser.js +125 -0
  19. package/dist/lib/config/aws/index.d.ts +12 -0
  20. package/dist/lib/config/aws/index.js +29 -0
  21. package/dist/lib/config/aws/ipam.d.ts +5 -0
  22. package/dist/lib/config/aws/ipam.js +48 -0
  23. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +8 -0
  24. package/dist/lib/config/aws/ipamDelegateAdmin.js +58 -0
  25. package/dist/lib/config/aws/ipamPool.d.ts +5 -0
  26. package/dist/lib/config/aws/ipamPool.js +56 -0
  27. package/dist/lib/config/aws/ipamPoolId.d.ts +9 -0
  28. package/dist/lib/config/aws/ipamPoolId.js +36 -0
  29. package/dist/lib/config/aws/{base/identityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
  30. package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
  31. package/dist/lib/config/aws/organisation.d.ts +28 -0
  32. package/dist/lib/config/aws/organisation.js +142 -0
  33. package/dist/lib/config/aws/organisationId.d.ts +7 -0
  34. package/dist/lib/config/aws/organisationId.js +46 -0
  35. package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
  36. package/dist/lib/config/aws/ramEnableSharing.js +35 -0
  37. package/dist/lib/config/aws/ramSharing.d.ts +4 -0
  38. package/dist/lib/config/aws/ramSharing.js +35 -0
  39. package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
  40. package/dist/lib/config/aws/users.js +126 -0
  41. package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
  42. package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
  43. package/dist/lib/index.d.ts +3 -0
  44. package/dist/lib/index.js +4 -1
  45. package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
  46. package/dist/lib/patterns/aws/basicApp.js +90 -0
  47. package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
  48. package/dist/lib/patterns/aws/buildkite.js +346 -0
  49. package/dist/lib/patterns/aws/freeTierApp.d.ts +46 -0
  50. package/dist/lib/patterns/aws/freeTierApp.js +95 -0
  51. package/dist/lib/patterns/aws/hostedZone.d.ts +11 -0
  52. package/dist/lib/patterns/aws/hostedZone.js +73 -0
  53. package/dist/lib/patterns/aws/index.d.ts +5 -2
  54. package/dist/lib/patterns/aws/index.js +6 -3
  55. package/dist/lib/patterns/aws/managedAccount.d.ts +13 -0
  56. package/dist/lib/patterns/aws/managedAccount.js +39 -0
  57. package/dist/lib/patterns/aws/managedOrganisation.d.ts +19 -0
  58. package/dist/lib/patterns/aws/managedOrganisation.js +45 -0
  59. package/dist/lib/patterns/aws/managedPlatform.d.ts +13 -0
  60. package/dist/lib/patterns/aws/managedPlatform.js +22 -0
  61. package/dist/lib/patterns/aws/spotInstanceApp.d.ts +46 -0
  62. package/dist/lib/patterns/aws/spotInstanceApp.js +95 -0
  63. package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +9 -0
  64. package/dist/lib/patterns/aws/subdomainHostedZone.js +39 -0
  65. package/dist/lib/resources/aws/awsStack.d.ts +5 -0
  66. package/dist/lib/resources/aws/awsStack.js +11 -1
  67. package/dist/lib/resources/aws/compute/ecs.d.ts +74 -0
  68. package/dist/lib/resources/aws/compute/ecs.js +269 -0
  69. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +76 -0
  70. package/dist/lib/resources/aws/compute/ecsFreeTier.js +352 -0
  71. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +76 -0
  72. package/dist/lib/resources/aws/compute/ecsSpot.js +334 -0
  73. package/dist/lib/resources/aws/compute/index.d.ts +2 -0
  74. package/dist/lib/resources/aws/compute/index.js +19 -0
  75. package/dist/lib/resources/aws/compute/lambda.d.ts +13 -6
  76. package/dist/lib/resources/aws/compute/lambda.js +23 -4
  77. package/dist/lib/resources/aws/constant/ecr.js +4 -3
  78. package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
  79. package/dist/lib/resources/aws/constant/vpc.js +18 -8
  80. package/dist/lib/resources/aws/database/database.d.ts +16 -0
  81. package/dist/lib/resources/aws/database/database.js +30 -0
  82. package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +17 -0
  83. package/dist/lib/resources/aws/database/databaseFreeTier.js +31 -0
  84. package/dist/lib/resources/aws/database/databaseInstance.d.ts +17 -0
  85. package/dist/lib/resources/aws/database/databaseInstance.js +32 -0
  86. package/dist/lib/resources/aws/database/index.d.ts +2 -0
  87. package/dist/lib/resources/aws/database/index.js +19 -0
  88. package/dist/lib/resources/aws/database/rds.d.ts +23 -0
  89. package/dist/lib/resources/aws/database/rds.js +130 -0
  90. package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +36 -0
  91. package/dist/lib/resources/aws/database/rdsFreeTier.js +80 -0
  92. package/dist/lib/resources/aws/database/rdsInstance.d.ts +42 -0
  93. package/dist/lib/resources/aws/database/rdsInstance.js +173 -0
  94. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
  95. package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
  96. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
  97. package/dist/lib/resources/aws/iam/index.d.ts +5 -0
  98. package/dist/lib/resources/aws/iam/index.js +22 -0
  99. package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
  100. package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
  101. package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
  102. package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
  103. package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
  104. package/dist/lib/resources/aws/iam/policy.js +13 -0
  105. package/dist/lib/resources/aws/iam/role.js +2 -7
  106. package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
  107. package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
  108. package/dist/lib/resources/aws/index.d.ts +1 -0
  109. package/dist/lib/resources/aws/index.js +18 -0
  110. package/dist/lib/resources/aws/logging/cloudTrail.d.ts +18 -0
  111. package/dist/lib/resources/aws/logging/cloudTrail.js +46 -0
  112. package/dist/lib/resources/aws/logging/logGroup.d.ts +8 -4
  113. package/dist/lib/resources/aws/logging/logGroup.js +6 -7
  114. package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
  115. package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
  116. package/dist/lib/resources/aws/networking/index.d.ts +3 -0
  117. package/dist/lib/resources/aws/networking/index.js +20 -0
  118. package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
  119. package/dist/lib/resources/aws/networking/ipam.js +3 -3
  120. package/dist/lib/resources/aws/networking/ipamPool.d.ts +14 -5
  121. package/dist/lib/resources/aws/networking/ipamPool.js +69 -22
  122. package/dist/lib/resources/aws/networking/vpc.d.ts +29 -0
  123. package/dist/lib/resources/aws/networking/vpc.js +64 -0
  124. package/dist/lib/resources/aws/secrets/alias.d.ts +5 -0
  125. package/dist/lib/resources/aws/secrets/alias.js +13 -0
  126. package/dist/lib/resources/aws/secrets/index.d.ts +5 -0
  127. package/dist/lib/resources/aws/secrets/index.js +22 -0
  128. package/dist/lib/resources/aws/secrets/kms.d.ts +14 -0
  129. package/dist/lib/resources/aws/secrets/kms.js +34 -0
  130. package/dist/lib/resources/aws/secrets/parameter.d.ts +26 -0
  131. package/dist/lib/resources/aws/secrets/parameter.js +100 -0
  132. package/dist/lib/resources/aws/secrets/secret.d.ts +24 -0
  133. package/dist/lib/resources/aws/secrets/secret.js +53 -0
  134. package/dist/lib/resources/aws/storage/ecr.d.ts +12 -0
  135. package/dist/lib/resources/aws/storage/ecr.js +31 -0
  136. package/dist/lib/resources/aws/storage/index.d.ts +2 -0
  137. package/dist/lib/resources/aws/storage/index.js +19 -0
  138. package/dist/lib/resources/aws/storage/s3.d.ts +11 -0
  139. package/dist/lib/resources/aws/storage/s3.js +44 -0
  140. package/dist/lib/resources/aws/store/alias.d.ts +5 -0
  141. package/dist/lib/resources/aws/store/alias.js +13 -0
  142. package/dist/lib/resources/aws/store/database.d.ts +7 -2
  143. package/dist/lib/resources/aws/store/database.js +9 -5
  144. package/dist/lib/resources/aws/store/index.d.ts +7 -0
  145. package/dist/lib/resources/aws/store/index.js +24 -0
  146. package/dist/lib/resources/aws/store/kms.d.ts +14 -0
  147. package/dist/lib/resources/aws/store/kms.js +34 -0
  148. package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
  149. package/dist/lib/resources/aws/store/parameter.js +100 -0
  150. package/dist/lib/resources/aws/store/rds.d.ts +15 -15
  151. package/dist/lib/resources/aws/store/rds.js +110 -68
  152. package/dist/lib/resources/aws/store/s3.d.ts +11 -0
  153. package/dist/lib/resources/aws/store/s3.js +43 -0
  154. package/dist/lib/resources/aws/store/secret.d.ts +26 -0
  155. package/dist/lib/resources/aws/store/secret.js +55 -0
  156. package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
  157. package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
  158. package/dist/lib/resources/aws/utilities/codeBuild.d.ts +15 -0
  159. package/dist/lib/resources/aws/utilities/codeBuild.js +28 -0
  160. package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
  161. package/dist/lib/resources/aws/utilities/customResource.js +24 -5
  162. package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
  163. package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
  164. package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
  165. package/dist/lib/resources/index.d.ts +1 -0
  166. package/dist/lib/resources/index.js +18 -0
  167. package/dist/lib/types.d.ts +3 -0
  168. package/dist/lib/types.js +3 -0
  169. package/dist/lib/utils/capitalizeString.d.ts +1 -0
  170. package/dist/lib/utils/capitalizeString.js +8 -0
  171. package/dist/lib/utils/getAccountId.d.ts +1 -0
  172. package/dist/lib/utils/getAccountId.js +12 -0
  173. package/dist/lib/utils/getCidr.d.ts +8 -0
  174. package/dist/lib/utils/getCidr.js +42 -0
  175. package/dist/lib/utils/getConfig.d.ts +7 -5
  176. package/dist/lib/utils/getConfig.js +39 -11
  177. package/dist/lib/utils/getStackOutput.d.ts +1 -0
  178. package/dist/lib/utils/getStackOutput.js +20 -0
  179. package/dist/lib/utils/index.d.ts +1 -0
  180. package/dist/lib/utils/index.js +18 -0
  181. package/dist/lib/utils/stripAndCamelCase.d.ts +1 -0
  182. package/dist/lib/utils/stripAndCamelCase.js +17 -0
  183. package/dist/lib/utils/tagResource.d.ts +4 -0
  184. package/dist/lib/utils/tagResource.js +10 -0
  185. package/dist/lib/utils/usersConfig.d.ts +7 -0
  186. package/dist/lib/utils/usersConfig.js +18 -0
  187. package/package.json +23 -18
  188. package/dist/lib/config/aws/base/costAllocationTags.d.ts +0 -5
  189. package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
  190. package/dist/lib/config/aws/base/iamIdentityCenter.d.ts +0 -5
  191. package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
  192. package/dist/lib/config/aws/base/identityCenter.js +0 -90
  193. package/dist/lib/config/aws/base/ipam.js +0 -29
  194. package/dist/lib/config/aws/base/ipamPool.js +0 -46
  195. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
  196. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
  197. package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
  198. package/dist/lib/examples/cutomResourceExample.js +0 -45
  199. package/dist/lib/patterns/aws/customResource.d.ts +0 -7
  200. package/dist/lib/patterns/aws/customResource.js +0 -28
  201. package/dist/lib/patterns/aws/multiEnvironmentOrganisation.d.ts +0 -33
  202. package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
  203. package/dist/lib/patterns/aws/webApp.d.ts +0 -17
  204. package/dist/lib/patterns/aws/webApp.js +0 -36
  205. package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
  206. package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
  207. package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
  208. package/dist/lib/resources/aws/compute/fargate.js +0 -50
  209. package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
  210. package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
  211. package/dist/lib/resources/aws/iam/assignment.js +0 -13
  212. package/dist/lib/resources/aws/iam/group.js +0 -15
  213. package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
  214. package/dist/lib/resources/aws/iam/iamRole.js +0 -18
  215. package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
  216. /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
  217. /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
  218. /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
@@ -1,57 +0,0 @@
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
- // TODO: How do we empower the user to add their own tags?
8
- const costAllocationTags = [
9
- "aws:cloudformation:logical-id",
10
- "aws:cloudformation:stack-id",
11
- "aws:cloudformation:stack-name",
12
- "aws:createdBy",
13
- "Environment"
14
- // TODO: Add service name
15
- ];
16
- function toggleCostTag(tags, tagStatus) {
17
- return tags.map((tag) => {
18
- return {
19
- TagKey: tag,
20
- Status: tagStatus
21
- };
22
- });
23
- }
24
- class CostAllocationTags extends aws_cdk_lib_1.Stack {
25
- constructor(scope, id, props) {
26
- super(scope, id, props);
27
- new awsCustomResource_1.AwsCustomResource(this, "enableCostAllocationTags", {
28
- functionName: "enableCostAllocationTags",
29
- onCreate: {
30
- service: "CostExplorer",
31
- action: "updateCostAllocationTagsStatus",
32
- parameters: {
33
- CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Active")
34
- },
35
- physicalResourceId: customResources.PhysicalResourceId.of("enableCostAllocationTags")
36
- },
37
- onUpdate: {
38
- service: "CostExplorer",
39
- action: "updateCostAllocationTagsStatus",
40
- parameters: {
41
- CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Active")
42
- },
43
- physicalResourceId: customResources.PhysicalResourceId.of("updateCostAllocationTags")
44
- },
45
- onDelete: {
46
- service: "CostExplorer",
47
- action: "updateCostAllocationTagsStatus",
48
- parameters: {
49
- CostAllocationTagsStatus: toggleCostTag(costAllocationTags, "Inactive")
50
- }
51
- },
52
- resourceType: "Custom::CostAllocationTags"
53
- });
54
- }
55
- }
56
- exports.CostAllocationTags = CostAllocationTags;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdEFsbG9jYXRpb25UYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvYmFzZS9jb3N0QWxsb2NhdGlvblRhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBQ2hELGdFQUFnRTtBQUdoRSwwRkFBdUY7QUFFdkYsMERBQTBEO0FBQzFELE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLGFBQWE7SUFDYix5QkFBeUI7Q0FDMUIsQ0FBQztBQUVGLFNBQVMsYUFBYSxDQUFDLElBQWMsRUFBRSxTQUFpQjtJQUN0RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN0QixPQUFPO1lBQ0wsTUFBTSxFQUFFLEdBQUc7WUFDWCxNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxtQkFBSztJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3RELFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixNQUFNLEVBQUUsZ0NBQWdDO2dCQUN4QyxVQUFVLEVBQUU7b0JBQ1Ysd0JBQXdCLEVBQUUsYUFBYSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQztpQkFDdEU7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsMEJBQTBCLENBQzNCO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVix3QkFBd0IsRUFBRSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO2lCQUN0RTtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCwwQkFBMEIsQ0FDM0I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsY0FBYztnQkFDdkIsTUFBTSxFQUFFLGdDQUFnQztnQkFDeEMsVUFBVSxFQUFFO29CQUNWLHdCQUF3QixFQUFFLGFBQWEsQ0FDckMsa0JBQWtCLEVBQ2xCLFVBQVUsQ0FDWDtpQkFDRjthQUNGO1lBQ0QsWUFBWSxFQUFFLDRCQUE0QjtTQUMzQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2Q0QsZ0RBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLy8gVE9ETzogSG93IGRvIHdlIGVtcG93ZXIgdGhlIHVzZXIgdG8gYWRkIHRoZWlyIG93biB0YWdzP1xuY29uc3QgY29zdEFsbG9jYXRpb25UYWdzID0gW1xuICBcImF3czpjbG91ZGZvcm1hdGlvbjpsb2dpY2FsLWlkXCIsXG4gIFwiYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLWlkXCIsXG4gIFwiYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLW5hbWVcIixcbiAgXCJhd3M6Y3JlYXRlZEJ5XCIsXG4gIFwiRW52aXJvbm1lbnRcIlxuICAvLyBUT0RPOiBBZGQgc2VydmljZSBuYW1lXG5dO1xuXG5mdW5jdGlvbiB0b2dnbGVDb3N0VGFnKHRhZ3M6IHN0cmluZ1tdLCB0YWdTdGF0dXM6IHN0cmluZykge1xuICByZXR1cm4gdGFncy5tYXAoKHRhZykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBUYWdLZXk6IHRhZyxcbiAgICAgIFN0YXR1czogdGFnU3RhdHVzXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBDb3N0QWxsb2NhdGlvblRhZ3MgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiZW5hYmxlQ29zdEFsbG9jYXRpb25UYWdzXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJlbmFibGVDb3N0QWxsb2NhdGlvblRhZ3NcIixcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQ29zdEV4cGxvcmVyXCIsXG4gICAgICAgIGFjdGlvbjogXCJ1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIENvc3RBbGxvY2F0aW9uVGFnc1N0YXR1czogdG9nZ2xlQ29zdFRhZyhjb3N0QWxsb2NhdGlvblRhZ3MsIFwiQWN0aXZlXCIpXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBcImVuYWJsZUNvc3RBbGxvY2F0aW9uVGFnc1wiXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkNvc3RFeHBsb3JlclwiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXM6IHRvZ2dsZUNvc3RUYWcoY29zdEFsbG9jYXRpb25UYWdzLCBcIkFjdGl2ZVwiKVxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJ1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJDb3N0RXhwbG9yZXJcIixcbiAgICAgICAgYWN0aW9uOiBcInVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzOiB0b2dnbGVDb3N0VGFnKFxuICAgICAgICAgICAgY29zdEFsbG9jYXRpb25UYWdzLFxuICAgICAgICAgICAgXCJJbmFjdGl2ZVwiXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6Q29zdEFsbG9jYXRpb25UYWdzXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- import { Stack, StackProps } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class IamIdentityCenter extends Stack {
4
- constructor(scope: Construct, id: string, props?: StackProps);
5
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IamIdentityCenter = 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 aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
- const permissionSet_1 = require("../../../resources/aws/iam/permissionSet");
10
- const assignment_1 = require("../../../resources/aws/iam/assignment");
11
- class IamIdentityCenter extends aws_cdk_lib_1.Stack {
12
- constructor(scope, id, props) {
13
- super(scope, id, props);
14
- // GroupID is obtained from the UI after following these steps:
15
- // https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html
16
- const defaultPermissionSets = {
17
- AdministratorAccess: {
18
- Policy: 'arn:aws:iam::aws:policy/AdministratorAccess',
19
- Group: '24684498-8021-7099-b51b-6f0895856632',
20
- },
21
- Billing: {
22
- Policy: 'arn:aws:iam::aws:policy/job-function/Billing',
23
- Group: '54a8b478-a091-7001-9484-4920917d7696'
24
- },
25
- ReadOnlyAccess: {
26
- Policy: 'arn:aws:iam::aws:policy/ReadOnlyAccess',
27
- Group: '146804b8-a001-7041-ccf9-0a4d1af4596c'
28
- },
29
- SystemAdministrator: {
30
- Policy: 'arn:aws:iam::aws:policy/job-function/SystemAdministrator',
31
- Group: '941834d8-6001-70af-a128-b21286f464ac'
32
- }
33
- };
34
- // TODO: Can we get these from a config file?
35
- const accounts = {
36
- Production: aws_cdk_lib_1.Fn.importValue("productionAccountId"),
37
- Staging: aws_cdk_lib_1.Fn.importValue("stagingAccountId"),
38
- Development: aws_cdk_lib_1.Fn.importValue("developmentAccountId"),
39
- };
40
- const customResource = new awsCustomResource_1.AwsCustomResource(this, "getIamIdentityCenterArn", {
41
- functionName: "getIamIdentityCenterArn",
42
- onCreate: {
43
- service: "SSOAdmin",
44
- action: "listInstances",
45
- parameters: {
46
- MaxResults: '1'
47
- },
48
- physicalResourceId: customResources.PhysicalResourceId.of("getIamIdentityCenterArn")
49
- },
50
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
51
- new aws_iam_1.PolicyStatement({
52
- actions: [
53
- "sso:ListInstances",
54
- ],
55
- resources: ["*"]
56
- })
57
- ]),
58
- resourceType: "Custom::IamIdentityCenter"
59
- });
60
- new cfnOutput_1.CfnOutput(this, "iamIdentityCenterArn", {
61
- value: customResource.getResponseField("Instances.0.InstanceArn"),
62
- exportName: "iamIdentityCenterArn"
63
- });
64
- for (const [permissionSet, permissionSetAssociation] of Object.entries(defaultPermissionSets)) {
65
- const permSet = new permissionSet_1.PermissionSet(this, `${permissionSet}PermissionSet`, {
66
- name: permissionSet,
67
- instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
68
- description: `Permission set for ${permissionSet} policy`,
69
- managedPolicies: [permissionSetAssociation.Policy],
70
- tags: [{ key: "Environment", value: "BaseInfra" }]
71
- });
72
- for (const [account, accountArn] of Object.entries(accounts)) {
73
- new assignment_1.Assignment(this, `${account}${permissionSet}Association`, {
74
- instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
75
- permissionSetArn: permSet.attrPermissionSetArn,
76
- principalType: "GROUP",
77
- principalId: permissionSetAssociation.Group,
78
- targetType: "AWS_ACCOUNT",
79
- targetId: accountArn,
80
- });
81
- }
82
- }
83
- }
84
- }
85
- exports.IamIdentityCenter = IamIdentityCenter;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtSWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYXNlL2lhbUlkZW50aXR5Q2VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUNwRCxnRUFBZ0U7QUFFaEUsMEVBQXVFO0FBQ3ZFLDBGQUF1RjtBQUN2RixpREFBc0Q7QUFDdEQsNEVBQXdFO0FBQ3hFLHNFQUFtRTtBQUVuRSxNQUFhLGlCQUFrQixTQUFRLG1CQUFLO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsK0RBQStEO1FBQy9ELDJFQUEyRTtRQUMzRSxNQUFNLHFCQUFxQixHQUFHO1lBQzVCLG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsNkNBQTZDO2dCQUNyRCxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSw4Q0FBOEM7Z0JBQ3RELEtBQUssRUFBRSxzQ0FBc0M7YUFDOUM7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLHdDQUF3QztnQkFDaEQsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNELG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsMERBQTBEO2dCQUNsRSxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1NBQ0YsQ0FBQTtRQUVELDZDQUE2QztRQUM3QyxNQUFNLFFBQVEsR0FBRztZQUNmLFVBQVUsRUFBRSxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztZQUNqRCxPQUFPLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFDM0MsV0FBVyxFQUFFLGdCQUFFLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1NBQ3BELENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUM1RSxZQUFZLEVBQUUseUJBQXlCO1lBQ3ZDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsTUFBTSxFQUFFLGVBQWU7Z0JBQ3ZCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsR0FBRztpQkFDaEI7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQseUJBQXlCLENBQzFCO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNwQixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2YsQ0FBQzthQUNMLENBQUM7WUFDQSxZQUFZLEVBQUUsMkJBQTJCO1NBQzFDLENBQUMsQ0FBQztRQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDMUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUNqRSxVQUFVLEVBQUUsc0JBQXNCO1NBQ25DLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxlQUFlLEVBQUU7Z0JBQ3JFLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO2dCQUN2RSxXQUFXLEVBQUUsc0JBQXNCLGFBQWEsU0FBUztnQkFDekQsZUFBZSxFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFFO2FBQ3ZELENBQUMsQ0FBQTtZQUVGLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLHVCQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxHQUFHLGFBQWEsYUFBYSxFQUFFO29CQUMxRCxXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO29CQUN2RSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO29CQUM5QyxhQUFhLEVBQUUsT0FBTztvQkFDdEIsV0FBVyxFQUFFLHdCQUF3QixDQUFDLEtBQUs7b0JBQzNDLFVBQVUsRUFBRSxhQUFhO29CQUN6QixRQUFRLEVBQUUsVUFBVTtpQkFDdkIsQ0FBQyxDQUFBO2FBQ0g7U0FDRjtJQUVILENBQUM7Q0FDRjtBQWxGRCw4Q0FrRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9jZm5PdXRwdXRcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgUGVybWlzc2lvblNldCB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9wZXJtaXNzaW9uU2V0XCJcbmltcG9ydCB7IEFzc2lnbm1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vYXNzaWdubWVudFwiO1xuXG5leHBvcnQgY2xhc3MgSWFtSWRlbnRpdHlDZW50ZXIgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8gR3JvdXBJRCBpcyBvYnRhaW5lZCBmcm9tIHRoZSBVSSBhZnRlciBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6XG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NpbmdsZXNpZ25vbi9sYXRlc3QvdXNlcmd1aWRlL2FkZGdyb3Vwcy5odG1sXG4gICAgY29uc3QgZGVmYXVsdFBlcm1pc3Npb25TZXRzID0ge1xuICAgICAgQWRtaW5pc3RyYXRvckFjY2Vzczoge1xuICAgICAgICBQb2xpY3k6ICdhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9BZG1pbmlzdHJhdG9yQWNjZXNzJyxcbiAgICAgICAgR3JvdXA6ICcyNDY4NDQ5OC04MDIxLTcwOTktYjUxYi02ZjA4OTU4NTY2MzInLFxuICAgICAgfSxcbiAgICAgIEJpbGxpbmc6IHsgXG4gICAgICAgIFBvbGljeTogJ2Fybjphd3M6aWFtOjphd3M6cG9saWN5L2pvYi1mdW5jdGlvbi9CaWxsaW5nJyxcbiAgICAgICAgR3JvdXA6ICc1NGE4YjQ3OC1hMDkxLTcwMDEtOTQ4NC00OTIwOTE3ZDc2OTYnXG4gICAgICB9LFxuICAgICAgUmVhZE9ubHlBY2Nlc3M6IHtcbiAgICAgICAgUG9saWN5OiAnYXJuOmF3czppYW06OmF3czpwb2xpY3kvUmVhZE9ubHlBY2Nlc3MnLFxuICAgICAgICBHcm91cDogJzE0NjgwNGI4LWEwMDEtNzA0MS1jY2Y5LTBhNGQxYWY0NTk2YydcbiAgICAgIH0sXG4gICAgICBTeXN0ZW1BZG1pbmlzdHJhdG9yOiB7XG4gICAgICAgIFBvbGljeTogJ2Fybjphd3M6aWFtOjphd3M6cG9saWN5L2pvYi1mdW5jdGlvbi9TeXN0ZW1BZG1pbmlzdHJhdG9yJyxcbiAgICAgICAgR3JvdXA6ICc5NDE4MzRkOC02MDAxLTcwYWYtYTEyOC1iMjEyODZmNDY0YWMnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCB0aGVzZSBmcm9tIGEgY29uZmlnIGZpbGU/XG4gICAgY29uc3QgYWNjb3VudHMgPSB7XG4gICAgICBQcm9kdWN0aW9uOiBGbi5pbXBvcnRWYWx1ZShcInByb2R1Y3Rpb25BY2NvdW50SWRcIiksXG4gICAgICBTdGFnaW5nOiBGbi5pbXBvcnRWYWx1ZShcInN0YWdpbmdBY2NvdW50SWRcIiksXG4gICAgICBEZXZlbG9wbWVudDogRm4uaW1wb3J0VmFsdWUoXCJkZXZlbG9wbWVudEFjY291bnRJZFwiKSxcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZSA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcImdldElhbUlkZW50aXR5Q2VudGVyQXJuXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJnZXRJYW1JZGVudGl0eUNlbnRlckFyblwiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJTU09BZG1pblwiLFxuICAgICAgICBhY3Rpb246IFwibGlzdEluc3RhbmNlc1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTWF4UmVzdWx0czogJzEnXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBcImdldElhbUlkZW50aXR5Q2VudGVyQXJuXCJcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcInNzbzpMaXN0SW5zdGFuY2VzXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KVxuICAgIF0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWFtSWRlbnRpdHlDZW50ZXJcIlxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcImlhbUlkZW50aXR5Q2VudGVyQXJuXCIsIHtcbiAgICAgIHZhbHVlOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFwiSW5zdGFuY2VzLjAuSW5zdGFuY2VBcm5cIiksXG4gICAgICBleHBvcnROYW1lOiBcImlhbUlkZW50aXR5Q2VudGVyQXJuXCJcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgW3Blcm1pc3Npb25TZXQsIHBlcm1pc3Npb25TZXRBc3NvY2lhdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdFBlcm1pc3Npb25TZXRzKSkge1xuICAgICAgY29uc3QgcGVybVNldCA9IG5ldyBQZXJtaXNzaW9uU2V0KHRoaXMsIGAke3Blcm1pc3Npb25TZXR9UGVybWlzc2lvblNldGAsIHtcbiAgICAgICAgICBuYW1lOiBwZXJtaXNzaW9uU2V0LFxuICAgICAgICAgIGluc3RhbmNlQXJuOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFwiSW5zdGFuY2VzLjAuSW5zdGFuY2VBcm5cIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBQZXJtaXNzaW9uIHNldCBmb3IgJHtwZXJtaXNzaW9uU2V0fSBwb2xpY3lgLFxuICAgICAgICAgIG1hbmFnZWRQb2xpY2llczogW3Blcm1pc3Npb25TZXRBc3NvY2lhdGlvbi5Qb2xpY3ldLFxuICAgICAgICAgIHRhZ3M6IFsgeyBrZXk6IFwiRW52aXJvbm1lbnRcIiwgdmFsdWU6IFwiQmFzZUluZnJhXCIgfSBdXG4gICAgICB9KVxuXG4gICAgICBmb3IgKGNvbnN0IFthY2NvdW50LCBhY2NvdW50QXJuXSBvZiBPYmplY3QuZW50cmllcyhhY2NvdW50cykpIHtcbiAgICAgICAgbmV3IEFzc2lnbm1lbnQodGhpcywgYCR7YWNjb3VudH0ke3Blcm1pc3Npb25TZXR9QXNzb2NpYXRpb25gLCB7XG4gICAgICAgICAgICBpbnN0YW5jZUFybjogY3VzdG9tUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIkluc3RhbmNlcy4wLkluc3RhbmNlQXJuXCIpLFxuICAgICAgICAgICAgcGVybWlzc2lvblNldEFybjogcGVybVNldC5hdHRyUGVybWlzc2lvblNldEFybixcbiAgICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiR1JPVVBcIixcbiAgICAgICAgICAgIHByaW5jaXBhbElkOiBwZXJtaXNzaW9uU2V0QXNzb2NpYXRpb24uR3JvdXAsXG4gICAgICAgICAgICB0YXJnZXRUeXBlOiBcIkFXU19BQ0NPVU5UXCIsXG4gICAgICAgICAgICB0YXJnZXRJZDogYWNjb3VudEFybiwgXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
@@ -1,90 +0,0 @@
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/group");
9
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
10
- const permissionSet_1 = require("../../../resources/aws/iam/permissionSet");
11
- const assignment_1 = require("../../../resources/aws/iam/assignment");
12
- class IdentityCenter extends aws_cdk_lib_1.Stack {
13
- constructor(scope, id, props) {
14
- super(scope, id, props);
15
- const defaultPermissionSets = {
16
- AdministratorAccess: {
17
- Policy: 'arn:aws:iam::aws:policy/AdministratorAccess'
18
- },
19
- Billing: {
20
- Policy: 'arn:aws:iam::aws:policy/job-function/Billing'
21
- },
22
- ReadOnlyAccess: {
23
- Policy: 'arn:aws:iam::aws:policy/ReadOnlyAccess'
24
- },
25
- SystemAdministrator: {
26
- Policy: 'arn:aws:iam::aws:policy/job-function/SystemAdministrator'
27
- }
28
- };
29
- // TODO: What's the easier way to pass all accounts into the stack?
30
- const accounts = {
31
- Production: aws_cdk_lib_1.Fn.importValue("productionAccountId"),
32
- Staging: aws_cdk_lib_1.Fn.importValue("stagingAccountId"),
33
- Development: aws_cdk_lib_1.Fn.importValue("developmentAccountId"),
34
- };
35
- const customResource = new awsCustomResource_1.AwsCustomResource(this, "listIdentityCenterInstance", {
36
- functionName: "listIdentityCenterInstance",
37
- onCreate: {
38
- service: "SSOAdmin",
39
- action: "listInstances",
40
- parameters: {
41
- MaxResults: '1'
42
- },
43
- physicalResourceId: customResources.PhysicalResourceId.of("listIdentityCenterInstance")
44
- },
45
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
46
- new aws_iam_1.PolicyStatement({
47
- actions: [
48
- "sso:ListInstances",
49
- ],
50
- resources: ["*"]
51
- })
52
- ]),
53
- resourceType: "Custom::IamIdentityCenter"
54
- });
55
- new cfnOutput_1.CfnOutput(this, "identityCenterArn", {
56
- value: customResource.getResponseField("Instances.0.InstanceArn"),
57
- exportName: "identityCenterArn"
58
- });
59
- new cfnOutput_1.CfnOutput(this, "iamIdentityStoreID", {
60
- value: customResource.getResponseField("Instances.0.IdentityStoreId"),
61
- exportName: "identityStoreID"
62
- });
63
- for (const [permissionSet, permissionSetAssociation] of Object.entries(defaultPermissionSets)) {
64
- const permSet = new permissionSet_1.PermissionSet(this, `${permissionSet}PermissionSet`, {
65
- name: permissionSet,
66
- instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
67
- description: `Permission set for associated ${permissionSet} policy`,
68
- managedPolicies: [permissionSetAssociation.Policy],
69
- tags: [{ key: "Environment", value: "BaseInfra" }]
70
- });
71
- const group = new group_1.Group(this, `${permissionSet}Group`, {
72
- displayName: permissionSet,
73
- identityStoreId: customResource.getResponseField("Instances.0.IdentityStoreId"),
74
- description: `Group for associated ${permissionSet} permission set`,
75
- });
76
- for (const [account, accountArn] of Object.entries(accounts)) {
77
- new assignment_1.Assignment(this, `${account}${permissionSet}Association`, {
78
- instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
79
- permissionSetArn: permSet.attrPermissionSetArn,
80
- principalType: "GROUP",
81
- principalId: group.attrGroupId,
82
- targetType: "AWS_ACCOUNT",
83
- targetId: accountArn,
84
- });
85
- }
86
- }
87
- }
88
- }
89
- exports.IdentityCenter = IdentityCenter;
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYXNlL2lkZW50aXR5Q2VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUNwRCxnRUFBZ0U7QUFFaEUsMEVBQXVFO0FBQ3ZFLDBGQUF1RjtBQUN2Riw0REFBeUQ7QUFDekQsaURBQXNEO0FBQ3RELDRFQUF3RTtBQUN4RSxzRUFBbUU7QUFFbkUsTUFBYSxjQUFlLFNBQVEsbUJBQUs7SUFDdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLHFCQUFxQixHQUFHO1lBQzVCLG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsNkNBQTZDO2FBQ3REO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSw4Q0FBOEM7YUFDdkQ7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLHdDQUF3QzthQUNqRDtZQUNELG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsMERBQTBEO2FBQ25FO1NBQ0YsQ0FBQTtRQUVELG1FQUFtRTtRQUNuRSxNQUFNLFFBQVEsR0FBRztZQUNmLFVBQVUsRUFBRSxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztZQUNqRCxPQUFPLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFDM0MsV0FBVyxFQUFFLGdCQUFFLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1NBQ3BELENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRTtZQUMvRSxZQUFZLEVBQUUsNEJBQTRCO1lBQzFDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsTUFBTSxFQUFFLGVBQWU7Z0JBQ3ZCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsR0FBRztpQkFDaEI7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsNEJBQTRCLENBQzdCO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNwQixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2YsQ0FBQzthQUNMLENBQUM7WUFDQSxZQUFZLEVBQUUsMkJBQTJCO1NBQzFDLENBQUMsQ0FBQztRQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDdkMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUNqRSxVQUFVLEVBQUUsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQztRQUNILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQztZQUNyRSxVQUFVLEVBQUUsaUJBQWlCO1NBQzlCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxlQUFlLEVBQUU7Z0JBQ3ZFLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO2dCQUN2RSxXQUFXLEVBQUUsaUNBQWlDLGFBQWEsU0FBUztnQkFDcEUsZUFBZSxFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFFO2FBQ3JELENBQUMsQ0FBQTtZQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsT0FBTyxFQUFFO2dCQUNyRCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsZUFBZSxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQztnQkFDL0UsV0FBVyxFQUFFLHdCQUF3QixhQUFhLGlCQUFpQjthQUNwRSxDQUFDLENBQUE7WUFFRixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDNUQsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sR0FBRyxhQUFhLGFBQWEsRUFBRTtvQkFDNUQsV0FBVyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDdkUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtvQkFDOUMsYUFBYSxFQUFFLE9BQU87b0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFFBQVEsRUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUE7YUFDSDtTQUNGO0lBRUgsQ0FBQztDQUNGO0FBdEZELHdDQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZuLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2Nmbk91dHB1dFwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vZ3JvdXAnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IFBlcm1pc3Npb25TZXQgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vcGVybWlzc2lvblNldFwiXG5pbXBvcnQgeyBBc3NpZ25tZW50IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvaWFtL2Fzc2lnbm1lbnRcIjtcblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQZXJtaXNzaW9uU2V0cyA9IHtcbiAgICAgIEFkbWluaXN0cmF0b3JBY2Nlc3M6IHtcbiAgICAgICAgUG9saWN5OiAnYXJuOmF3czppYW06OmF3czpwb2xpY3kvQWRtaW5pc3RyYXRvckFjY2VzcydcbiAgICAgIH0sXG4gICAgICBCaWxsaW5nOiB7IFxuICAgICAgICBQb2xpY3k6ICdhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9qb2ItZnVuY3Rpb24vQmlsbGluZycgICAgICBcbiAgICAgIH0sXG4gICAgICBSZWFkT25seUFjY2Vzczoge1xuICAgICAgICBQb2xpY3k6ICdhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9SZWFkT25seUFjY2VzcydcbiAgICAgIH0sXG4gICAgICBTeXN0ZW1BZG1pbmlzdHJhdG9yOiB7XG4gICAgICAgIFBvbGljeTogJ2Fybjphd3M6aWFtOjphd3M6cG9saWN5L2pvYi1mdW5jdGlvbi9TeXN0ZW1BZG1pbmlzdHJhdG9yJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFdoYXQncyB0aGUgZWFzaWVyIHdheSB0byBwYXNzIGFsbCBhY2NvdW50cyBpbnRvIHRoZSBzdGFjaz9cbiAgICBjb25zdCBhY2NvdW50cyA9IHtcbiAgICAgIFByb2R1Y3Rpb246IEZuLmltcG9ydFZhbHVlKFwicHJvZHVjdGlvbkFjY291bnRJZFwiKSxcbiAgICAgIFN0YWdpbmc6IEZuLmltcG9ydFZhbHVlKFwic3RhZ2luZ0FjY291bnRJZFwiKSxcbiAgICAgIERldmVsb3BtZW50OiBGbi5pbXBvcnRWYWx1ZShcImRldmVsb3BtZW50QWNjb3VudElkXCIpLFxuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwibGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIlNTT0FkbWluXCIsXG4gICAgICAgIGFjdGlvbjogXCJsaXN0SW5zdGFuY2VzXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBNYXhSZXN1bHRzOiAnMSdcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwibGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2VcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwic3NvOkxpc3RJbnN0YW5jZXNcIixcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pXG4gICAgXSksXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJYW1JZGVudGl0eUNlbnRlclwiXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaWRlbnRpdHlDZW50ZXJBcm5cIiwge1xuICAgICAgdmFsdWU6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IFwiaWRlbnRpdHlDZW50ZXJBcm5cIlxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJpYW1JZGVudGl0eVN0b3JlSURcIiwge1xuICAgICAgdmFsdWU6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JZGVudGl0eVN0b3JlSWRcIiksXG4gICAgICBleHBvcnROYW1lOiBcImlkZW50aXR5U3RvcmVJRFwiXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtwZXJtaXNzaW9uU2V0LCBwZXJtaXNzaW9uU2V0QXNzb2NpYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGRlZmF1bHRQZXJtaXNzaW9uU2V0cykpIHtcbiAgICAgIGNvbnN0IHBlcm1TZXQgPSBuZXcgUGVybWlzc2lvblNldCh0aGlzLCBgJHtwZXJtaXNzaW9uU2V0fVBlcm1pc3Npb25TZXRgLCB7XG4gICAgICAgIG5hbWU6IHBlcm1pc3Npb25TZXQsXG4gICAgICAgIGluc3RhbmNlQXJuOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFwiSW5zdGFuY2VzLjAuSW5zdGFuY2VBcm5cIiksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGVybWlzc2lvbiBzZXQgZm9yIGFzc29jaWF0ZWQgJHtwZXJtaXNzaW9uU2V0fSBwb2xpY3lgLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtwZXJtaXNzaW9uU2V0QXNzb2NpYXRpb24uUG9saWN5XSxcbiAgICAgICAgdGFnczogWyB7IGtleTogXCJFbnZpcm9ubWVudFwiLCB2YWx1ZTogXCJCYXNlSW5mcmFcIiB9IF1cbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdyb3VwKHRoaXMsIGAke3Blcm1pc3Npb25TZXR9R3JvdXBgLCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBwZXJtaXNzaW9uU2V0LFxuICAgICAgICBpZGVudGl0eVN0b3JlSWQ6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JZGVudGl0eVN0b3JlSWRcIiksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgR3JvdXAgZm9yIGFzc29jaWF0ZWQgJHtwZXJtaXNzaW9uU2V0fSBwZXJtaXNzaW9uIHNldGAsXG4gICAgICB9KVxuXG4gICAgICBmb3IgKGNvbnN0IFthY2NvdW50LCBhY2NvdW50QXJuXSBvZiBPYmplY3QuZW50cmllcyhhY2NvdW50cykpIHtcbiAgICAgICAgbmV3IEFzc2lnbm1lbnQodGhpcywgYCR7YWNjb3VudH0ke3Blcm1pc3Npb25TZXR9QXNzb2NpYXRpb25gLCB7XG4gICAgICAgICAgaW5zdGFuY2VBcm46IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiKSxcbiAgICAgICAgICBwZXJtaXNzaW9uU2V0QXJuOiBwZXJtU2V0LmF0dHJQZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiR1JPVVBcIixcbiAgICAgICAgICBwcmluY2lwYWxJZDogZ3JvdXAuYXR0ckdyb3VwSWQsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogXCJBV1NfQUNDT1VOVFwiLFxuICAgICAgICAgIHRhcmdldElkOiBhY2NvdW50QXJuLCBcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuIl19
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseInfraIpam = 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 BaseInfraIpam extends aws_cdk_lib_1.Stack {
8
- constructor(scope, id, props) {
9
- super(scope, id, props);
10
- const ipam = new ipam_1.Ipam(this, "baseInfraIpam", {
11
- operatingRegions: [
12
- { regionName: "us-east-1" },
13
- { regionName: "eu-west-1" }
14
- ],
15
- tags: [
16
- {
17
- key: "Environment",
18
- value: "BaseInfrastructure"
19
- }
20
- ]
21
- });
22
- new cfnOutput_1.CfnOutput(this, "privateDefaultScopeId", {
23
- value: ipam.attrPrivateDefaultScopeId,
24
- exportName: "BaseInfraIpamPrivateDefaultScopeId"
25
- });
26
- }
27
- }
28
- exports.BaseInfraIpam = BaseInfraIpam;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2Jhc2UvaXBhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0Q7QUFHaEQsaUVBQThEO0FBQzlELDBFQUF1RTtBQUV2RSxNQUFhLGFBQWMsU0FBUSxtQkFBSztJQUN0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDM0MsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtnQkFDM0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO2FBQzVCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKO29CQUNFLEdBQUcsRUFBRSxhQUFhO29CQUNsQixLQUFLLEVBQUUsb0JBQW9CO2lCQUM1QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUNyQyxVQUFVLEVBQUUsb0NBQW9DO1NBQ2pELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXJCRCxzQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgSXBhbSB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2Nmbk91dHB1dFwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZUluZnJhSXBhbSBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgY29uc3QgaXBhbSA9IG5ldyBJcGFtKHRoaXMsIFwiYmFzZUluZnJhSXBhbVwiLCB7XG4gICAgICBvcGVyYXRpbmdSZWdpb25zOiBbXG4gICAgICAgIHsgcmVnaW9uTmFtZTogXCJ1cy1lYXN0LTFcIiB9LFxuICAgICAgICB7IHJlZ2lvbk5hbWU6IFwiZXUtd2VzdC0xXCIgfVxuICAgICAgXSxcbiAgICAgIHRhZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgICAgIHZhbHVlOiBcIkJhc2VJbmZyYXN0cnVjdHVyZVwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJwcml2YXRlRGVmYXVsdFNjb3BlSWRcIiwge1xuICAgICAgdmFsdWU6IGlwYW0uYXR0clByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgIGV4cG9ydE5hbWU6IFwiQmFzZUluZnJhSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseInfraIpamPool = 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
- Infrastructure: "200.0.0.0/8",
11
- BusinessContinuity: "210.0.0.0/8"
12
- };
13
- const BaseInfraIpamPrivateDefaultScopeId = aws_cdk_lib_1.Fn.importValue("BaseInfraIpamPrivateDefaultScopeId");
14
- class BaseInfraIpamPool extends aws_cdk_lib_1.Stack {
15
- constructor(scope, id, props) {
16
- super(scope, id, props);
17
- for (const [environment, cidrBlock] of Object.entries(CidrAllocation)) {
18
- new ipamPool_1.IpamPool(this, `baseInfra${environment}IpamPool`, {
19
- description: `${environment} Infrastructure IPAM Pool - ${cidrBlock}`,
20
- addressFamily: "ipv4",
21
- ipamScopeId: BaseInfraIpamPrivateDefaultScopeId,
22
- locale: environment == "BusinessContinuity" ? "eu-west-1" : "us-east-1",
23
- allocationResourceTags: [
24
- {
25
- key: "Pool",
26
- value: `${environment}`
27
- }
28
- ],
29
- autoImport: false,
30
- provisionedCidrs: [{ cidr: cidrBlock }],
31
- tags: [
32
- {
33
- key: "Pool",
34
- value: "Top-Level"
35
- },
36
- {
37
- key: "Environment",
38
- value: `${environment}`
39
- }
40
- ]
41
- });
42
- }
43
- }
44
- }
45
- exports.BaseInfraIpamPool = BaseInfraIpamPool;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYXNlL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCx5RUFBc0U7QUFFdEUsTUFBTSxjQUFjLEdBQUc7SUFDckIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsT0FBTyxFQUFFLFlBQVk7SUFDckIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsY0FBYyxFQUFFLGFBQWE7SUFDN0Isa0JBQWtCLEVBQUUsYUFBYTtDQUNsQyxDQUFDO0FBRUYsTUFBTSxrQ0FBa0MsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FDdkQsb0NBQW9DLENBQ3JDLENBQUM7QUFFRixNQUFhLGlCQUFrQixTQUFRLG1CQUFLO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDckUsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxZQUFZLFdBQVcsVUFBVSxFQUFFO2dCQUNwRCxXQUFXLEVBQUUsR0FBRyxXQUFXLCtCQUErQixTQUFTLEVBQUU7Z0JBQ3JFLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixXQUFXLEVBQUUsa0NBQWtDO2dCQUMvQyxNQUFNLEVBQUUsV0FBVyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVc7Z0JBQ3ZFLHNCQUFzQixFQUFFO29CQUN0Qjt3QkFDRSxHQUFHLEVBQUUsTUFBTTt3QkFDWCxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxLQUFLO2dCQUNqQixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsR0FBRyxFQUFFLE1BQU07d0JBQ1gsS0FBSyxFQUFFLFdBQVc7cUJBQ25CO29CQUNEO3dCQUNFLEdBQUcsRUFBRSxhQUFhO3dCQUNsQixLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUEvQkQsOENBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm4sIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBJcGFtUG9vbCB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcblxuY29uc3QgQ2lkckFsbG9jYXRpb24gPSB7XG4gIFByb2R1Y3Rpb246IFwiMTAuMC4wLjAvOFwiLFxuICBTdGFnaW5nOiBcIjgwLjAuMC4wLzhcIixcbiAgRGV2ZWxvcG1lbnQ6IFwiMTUwLjAuMC4wLzhcIixcbiAgSW5mcmFzdHJ1Y3R1cmU6IFwiMjAwLjAuMC4wLzhcIixcbiAgQnVzaW5lc3NDb250aW51aXR5OiBcIjIxMC4wLjAuMC84XCJcbn07XG5cbmNvbnN0IEJhc2VJbmZyYUlwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQgPSBGbi5pbXBvcnRWYWx1ZShcbiAgXCJCYXNlSW5mcmFJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCJcbik7XG5cbmV4cG9ydCBjbGFzcyBCYXNlSW5mcmFJcGFtUG9vbCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBmb3IgKGNvbnN0IFtlbnZpcm9ubWVudCwgY2lkckJsb2NrXSBvZiBPYmplY3QuZW50cmllcyhDaWRyQWxsb2NhdGlvbikpIHtcbiAgICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBgYmFzZUluZnJhJHtlbnZpcm9ubWVudH1JcGFtUG9vbGAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGAke2Vudmlyb25tZW50fSBJbmZyYXN0cnVjdHVyZSBJUEFNIFBvb2wgLSAke2NpZHJCbG9ja31gLFxuICAgICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgICAgaXBhbVNjb3BlSWQ6IEJhc2VJbmZyYUlwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICAgIGxvY2FsZTogZW52aXJvbm1lbnQgPT0gXCJCdXNpbmVzc0NvbnRpbnVpdHlcIiA/IFwiZXUtd2VzdC0xXCIgOiBcInVzLWVhc3QtMVwiLFxuICAgICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhdXRvSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgcHJvdmlzaW9uZWRDaWRyczogW3sgY2lkcjogY2lkckJsb2NrIH1dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlRvcC1MZXZlbFwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiRW52aXJvbm1lbnRcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { CdkCustomResourceEvent, CdkCustomResourceResponse, Context } from 'aws-lambda';
2
- export declare const handler: (event: CdkCustomResourceEvent, context: Context) => Promise<CdkCustomResourceResponse>;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handler = void 0;
4
- const client_cost_explorer_1 = require("@aws-sdk/client-cost-explorer");
5
- const costExplorerClient = new client_cost_explorer_1.CostExplorerClient({ region: "us-east-1" });
6
- const handler = async (event, context) => {
7
- console.log('Lambda is invoked with:' + JSON.stringify(event));
8
- const response = {
9
- StackId: event.StackId,
10
- RequestId: event.RequestId,
11
- LogicalResourceId: event.LogicalResourceId,
12
- PhysicalResourceId: context.logGroupName,
13
- };
14
- const awsCostAllocationTagStatusOptions = ['Active', 'Inactive'];
15
- async function updateCostAllocationTagStatus(costAllocationTagStatus) {
16
- const awsCostAllocationTagsCommand = new client_cost_explorer_1.ListCostAllocationTagsCommand({
17
- Type: "AWSGenerated",
18
- });
19
- const awsCostAllocationTagsResponse = costExplorerClient.send(awsCostAllocationTagsCommand);
20
- const data = await awsCostAllocationTagsResponse;
21
- const awsCostAllocationTags = data.CostAllocationTags ? data.CostAllocationTags : [];
22
- const awsCostAllocationState = awsCostAllocationTags.map((tag) => {
23
- return {
24
- TagKey: tag.TagKey,
25
- Status: costAllocationTagStatus.Status,
26
- };
27
- });
28
- const updateAwsCostTags = new client_cost_explorer_1.UpdateCostAllocationTagsStatusCommand({
29
- CostAllocationTagsStatus: awsCostAllocationState
30
- });
31
- const output = costExplorerClient.send(updateAwsCostTags);
32
- if ((await output).$metadata.httpStatusCode === 200) {
33
- response.Status = 'SUCCESS';
34
- response.Data = { Result: (await output).$metadata };
35
- }
36
- else {
37
- response.Status = 'FAILED';
38
- response.Data = { Result: (await output).$metadata };
39
- }
40
- }
41
- if (event.RequestType === 'Create') {
42
- updateCostAllocationTagStatus({ Status: 'Active' });
43
- }
44
- if (event.RequestType === 'Delete') {
45
- await updateCostAllocationTagStatus({ Status: 'Inactive' });
46
- return response;
47
- }
48
- try {
49
- await updateCostAllocationTagStatus({ Status: 'Active' });
50
- return response;
51
- }
52
- catch (error) {
53
- if (error instanceof Error) {
54
- response.Reason = error.message;
55
- }
56
- response.Status = 'FAILED';
57
- response.Data = { Result: error };
58
- return response;
59
- }
60
- };
61
- exports.handler = handler;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzQ29zdEFsbG9jYXRpb25UYWdzTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2V4YW1wbGVzL2N1c3RvbS1yZXNvdXJjZXMvbGFtYmRhL2F3cy1jb3N0LWFsbG9jYXRpb24tdGFncy9hd3NDb3N0QWxsb2NhdGlvblRhZ3NMYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBS3VDO0FBUXZDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFDMUIsS0FBNkIsRUFDN0IsT0FBZ0IsRUFDb0IsRUFBRTtJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUvRCxNQUFNLFFBQVEsR0FBOEI7UUFDMUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQ3pDLENBQUM7SUFFRixNQUFNLGlDQUFpQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBTWhFLEtBQUssVUFBVSw2QkFBNkIsQ0FBQyx1QkFBZ0Q7UUFDM0YsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLG9EQUE2QixDQUFDO1lBQ3JFLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQztRQUNILE1BQU0sNkJBQTZCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDNUYsTUFBTSxJQUFJLEdBQUcsTUFBTSw2QkFBNkIsQ0FBQztRQUNqRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEYsTUFBTSxzQkFBc0IsR0FBa0MscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUYsT0FBTztnQkFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07Z0JBQ2xCLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ3pDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSw0REFBcUMsQ0FBQztZQUNoRSx3QkFBd0IsRUFBRSxzQkFBc0I7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsS0FBSyxHQUFHLEVBQUU7WUFDbkQsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDNUIsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDdEQ7YUFBTTtZQUNMLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzNCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsNkJBQTZCLENBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztLQUNuRDtJQUVELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsTUFBTSw2QkFBNkIsQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsSUFBSTtRQUNGLE1BQU0sNkJBQTZCLENBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNqQztRQUNELFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQzNCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEMsT0FBTyxRQUFRLENBQUM7S0FDakI7QUFFSCxDQUFDLENBQUM7QUFsRVcsUUFBQSxPQUFPLFdBa0VsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxuICBDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c0VudHJ5LFxuICBDb3N0RXhwbG9yZXJDbGllbnQsXG4gIExpc3RDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kLFxuICBVcGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXNDb21tYW5kXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtY29zdC1leHBsb3JlclwiO1xuXG5pbXBvcnQge1xuICBDZGtDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlLFxuICBDb250ZXh0LFxufSBmcm9tICdhd3MtbGFtYmRhJztcblxuY29uc3QgY29zdEV4cGxvcmVyQ2xpZW50ID0gbmV3IENvc3RFeHBsb3JlckNsaWVudCh7IHJlZ2lvbjogXCJ1cy1lYXN0LTFcIiB9KTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OiBDZGtDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuKTogUHJvbWlzZTxDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlPiA9PiB7XG4gIGNvbnNvbGUubG9nKCdMYW1iZGEgaXMgaW52b2tlZCB3aXRoOicgKyBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIGNvbnN0IHJlc3BvbnNlOiBDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge1xuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gIH07XG4gIFxuICBjb25zdCBhd3NDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c09wdGlvbnMgPSBbJ0FjdGl2ZScsICdJbmFjdGl2ZSddXG4gIFxuICBpbnRlcmZhY2UgQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMge1xuICAgIFN0YXR1czogdHlwZW9mIGF3c0Nvc3RBbGxvY2F0aW9uVGFnU3RhdHVzT3B0aW9uc1tudW1iZXJdO1xuICB9XG4gIFxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ1N0YXR1cyhjb3N0QWxsb2NhdGlvblRhZ1N0YXR1czogQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMpIHtcbiAgICBjb25zdCBhd3NDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kID0gbmV3IExpc3RDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kKHtcbiAgICAgIFR5cGU6IFwiQVdTR2VuZXJhdGVkXCIsXG4gICAgfSk7XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25UYWdzUmVzcG9uc2UgPSBjb3N0RXhwbG9yZXJDbGllbnQuc2VuZChhd3NDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgYXdzQ29zdEFsbG9jYXRpb25UYWdzUmVzcG9uc2U7XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25UYWdzID0gZGF0YS5Db3N0QWxsb2NhdGlvblRhZ3M/IGRhdGEuQ29zdEFsbG9jYXRpb25UYWdzIDogW107XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25TdGF0ZTpDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c0VudHJ5W10gPSBhd3NDb3N0QWxsb2NhdGlvblRhZ3MubWFwKCh0YWcpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFRhZ0tleTogdGFnLlRhZ0tleSxcbiAgICAgICAgICAgIFN0YXR1czogY29zdEFsbG9jYXRpb25UYWdTdGF0dXMuU3RhdHVzLFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZUF3c0Nvc3RUYWdzID0gbmV3IFVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c0NvbW1hbmQoe1xuICAgICAgICBDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXM6IGF3c0Nvc3RBbGxvY2F0aW9uU3RhdGVcbiAgICB9KTtcbiAgICBjb25zdCBvdXRwdXQgPSBjb3N0RXhwbG9yZXJDbGllbnQuc2VuZCh1cGRhdGVBd3NDb3N0VGFncyk7XG4gICAgaWYgKChhd2FpdCBvdXRwdXQpLiRtZXRhZGF0YS5odHRwU3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICByZXNwb25zZS5EYXRhID0geyBSZXN1bHQ6IChhd2FpdCBvdXRwdXQpLiRtZXRhZGF0YSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZS5TdGF0dXMgPSAnRkFJTEVEJztcbiAgICAgIHJlc3BvbnNlLkRhdGEgPSB7IFJlc3VsdDogKGF3YWl0IG91dHB1dCkuJG1ldGFkYXRhIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnQ3JlYXRlJykge1xuICAgIHVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnU3RhdHVzKHtTdGF0dXM6ICdBY3RpdmUnfSk7XG4gIH1cblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnKSB7XG4gICAgYXdhaXQgdXBkYXRlQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMoe1N0YXR1czogJ0luYWN0aXZlJ30pO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdXBkYXRlQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMoe1N0YXR1czogJ0FjdGl2ZSd9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJlc3BvbnNlLlJlYXNvbiA9IGVycm9yLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdGQUlMRUQnO1xuICAgIHJlc3BvbnNlLkRhdGEgPSB7IFJlc3VsdDogZXJyb3IgfTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxufTsiXX0=
@@ -1,6 +0,0 @@
1
- import * as cdk from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class CustomResourceExample extends cdk.Stack {
4
- readonly response: string;
5
- constructor(scope: Construct, id: string);
6
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomResourceExample = void 0;
4
- const cdk = require("aws-cdk-lib");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const path = require("path");
7
- const lambda = require("aws-cdk-lib/aws-lambda");
8
- const lambda_1 = require("../resources/aws/compute/lambda");
9
- const customResource_1 = require("../resources/aws/utilities/customResource");
10
- const customResourceProvider_1 = require("../resources/aws/utilities/customResourceProvider");
11
- // An example of how to use a custom provider, keeping for reference
12
- // TODO: Turn into a pattern
13
- class CustomResourceExample extends cdk.Stack {
14
- constructor(scope, id) {
15
- super(scope, id);
16
- const lambdaFunction = new lambda_1.lambdaSingletonFunction(this, "costAllocationTagLambda", {
17
- code: lambda.Code.fromAsset(path.join(__dirname, "./custom-resources/lambda/aws-cost-allocation-tags")),
18
- handler: "awsCostAllocationTagsLambda.handler",
19
- runtime: lambda.Runtime.NODEJS_18_X,
20
- roleDescription: "Lambda role for AWS Cost Allocation Tags",
21
- inlinePolicy: {
22
- ["costAllocationTag"]: new aws_iam_1.PolicyDocument({
23
- statements: [
24
- new aws_iam_1.PolicyStatement({
25
- actions: [
26
- "ce:ListCostAllocationTags",
27
- "ce:UpdateCostAllocationTagsStatus"
28
- ],
29
- resources: ["*"]
30
- })
31
- ]
32
- })
33
- }
34
- });
35
- const provider = new customResourceProvider_1.CustomResourceProvider(this, "costAllocationTagsProvider", {
36
- onEventHandler: lambdaFunction
37
- });
38
- const customResource = new customResource_1.CustomResource(this, "awsCostAllocationTagsCustomResource", {
39
- serviceToken: provider.serviceToken
40
- });
41
- this.response = customResource.getAtt("Response").toString();
42
- }
43
- }
44
- exports.CustomResourceExample = CustomResourceExample;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3V0b21SZXNvdXJjZUV4YW1wbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhhbXBsZXMvY3V0b21SZXNvdXJjZUV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFzRTtBQUN0RSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBRWpELDREQUEwRTtBQUMxRSw4RUFBMkU7QUFDM0UsOEZBQTJGO0FBRTNGLG9FQUFvRTtBQUNwRSw0QkFBNEI7QUFDNUIsTUFBYSxxQkFBc0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUdsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0NBQXVCLENBQ2hELElBQUksRUFDSix5QkFBeUIsRUFDekI7WUFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQ1AsU0FBUyxFQUNULG9EQUFvRCxDQUNyRCxDQUNGO1lBQ0QsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLGVBQWUsRUFBRSwwQ0FBMEM7WUFDM0QsWUFBWSxFQUFFO2dCQUNaLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQ3hDLFVBQVUsRUFBRTt3QkFDVixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE9BQU8sRUFBRTtnQ0FDUCwyQkFBMkI7Z0NBQzNCLG1DQUFtQzs2QkFDcEM7NEJBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksK0NBQXNCLENBQ3pDLElBQUksRUFDSiw0QkFBNEIsRUFDNUI7WUFDRSxjQUFjLEVBQUUsY0FBYztTQUMvQixDQUNGLENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLCtCQUFjLENBQ3ZDLElBQUksRUFDSixxQ0FBcUMsRUFDckM7WUFDRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7U0FDcEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQXJERCxzREFxREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUG9saWN5RG9jdW1lbnQsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcblxuaW1wb3J0IHsgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24gfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlUHJvdmlkZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VQcm92aWRlclwiO1xuXG4vLyBBbiBleGFtcGxlIG9mIGhvdyB0byB1c2UgYSBjdXN0b20gcHJvdmlkZXIsIGtlZXBpbmcgZm9yIHJlZmVyZW5jZVxuLy8gVE9ETzogVHVybiBpbnRvIGEgcGF0dGVyblxuZXhwb3J0IGNsYXNzIEN1c3RvbVJlc291cmNlRXhhbXBsZSBleHRlbmRzIGNkay5TdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbGFtYmRhRnVuY3Rpb24gPSBuZXcgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJjb3N0QWxsb2NhdGlvblRhZ0xhbWJkYVwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKFxuICAgICAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICAgICAgXCIuL2N1c3RvbS1yZXNvdXJjZXMvbGFtYmRhL2F3cy1jb3N0LWFsbG9jYXRpb24tdGFnc1wiXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImF3c0Nvc3RBbGxvY2F0aW9uVGFnc0xhbWJkYS5oYW5kbGVyXCIsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICByb2xlRGVzY3JpcHRpb246IFwiTGFtYmRhIHJvbGUgZm9yIEFXUyBDb3N0IEFsbG9jYXRpb24gVGFnc1wiLFxuICAgICAgICBpbmxpbmVQb2xpY3k6IHtcbiAgICAgICAgICBbXCJjb3N0QWxsb2NhdGlvblRhZ1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJjZTpMaXN0Q29zdEFsbG9jYXRpb25UYWdzXCIsXG4gICAgICAgICAgICAgICAgICBcImNlOlVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEN1c3RvbVJlc291cmNlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgXCJjb3N0QWxsb2NhdGlvblRhZ3NQcm92aWRlclwiLFxuICAgICAge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogbGFtYmRhRnVuY3Rpb25cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJhd3NDb3N0QWxsb2NhdGlvblRhZ3NDdXN0b21SZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0gY3VzdG9tUmVzb3VyY2UuZ2V0QXR0KFwiUmVzcG9uc2VcIikudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
@@ -1,7 +0,0 @@
1
- import { Stack } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- import { lambdaSingletonFunctionProps } from "../../resources/aws/compute/lambda";
4
- export declare class CustomResource extends Stack {
5
- readonly response: string;
6
- constructor(scope: Construct, id: string, props: lambdaSingletonFunctionProps);
7
- }
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomResource = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const lambda_1 = require("../../resources/aws/compute/lambda");
6
- const customResource_1 = require("../../resources/aws/utilities/customResource");
7
- const customResourceProvider_1 = require("../../resources/aws/utilities/customResourceProvider");
8
- class CustomResource extends aws_cdk_lib_1.Stack {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- const lambdaFunction = new lambda_1.lambdaSingletonFunction(this, `${id}SingletonLambda`, {
12
- code: props.code,
13
- handler: `${id}.handler`,
14
- runtime: props.runtime,
15
- roleDescription: props.roleDescription,
16
- inlinePolicy: props.inlinePolicy
17
- });
18
- const provider = new customResourceProvider_1.CustomResourceProvider(this, `${id}Provider`, {
19
- onEventHandler: lambdaFunction
20
- });
21
- const cr = new customResource_1.CustomResource(this, `${id}CustomResource`, {
22
- serviceToken: provider.serviceToken
23
- });
24
- this.response = cr.getAtt("Response").toString();
25
- }
26
- }
27
- exports.CustomResource = CustomResource;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2N1c3RvbVJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQywrREFBMkc7QUFDM0csaUZBQWdHO0FBQ2hHLGlHQUE4RjtBQUU5RixNQUFhLGNBQWUsU0FBUSxtQkFBSztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBdUIsQ0FDaEQsSUFBSSxFQUNKLEdBQUcsRUFBRSxpQkFBaUIsRUFDdEI7WUFDRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVO1lBQ3hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1NBQ2pDLENBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksK0NBQXNCLENBQ3pDLElBQUksRUFDSixHQUFHLEVBQUUsVUFBVSxFQUNmO1lBQ0UsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FDRixDQUFDO1FBRUYsTUFBTSxFQUFFLEdBQUcsSUFBSSwrQkFBYyxDQUMzQixJQUFJLEVBQ0osR0FBRyxFQUFFLGdCQUFnQixFQUNyQjtZQUNFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtTQUNwQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkQsQ0FBQztDQUVGO0FBckNELHdDQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24sIGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgYXMgY3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVzb3VyY2UgZXh0ZW5kcyBTdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBsYW1iZGFTaW5nbGV0b25GdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGxhbWJkYUZ1bmN0aW9uID0gbmV3IGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfVNpbmdsZXRvbkxhbWJkYWAsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IHByb3BzLmNvZGUsXG4gICAgICAgIGhhbmRsZXI6IGAke2lkfS5oYW5kbGVyYCxcbiAgICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSxcbiAgICAgICAgcm9sZURlc2NyaXB0aW9uOiBwcm9wcy5yb2xlRGVzY3JpcHRpb24sXG4gICAgICAgIGlubGluZVBvbGljeTogcHJvcHMuaW5saW5lUG9saWN5XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEN1c3RvbVJlc291cmNlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9UHJvdmlkZXJgLFxuICAgICAge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogbGFtYmRhRnVuY3Rpb25cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY3IgPSBuZXcgY3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9Q3VzdG9tUmVzb3VyY2VgLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0gY3IuZ2V0QXR0KFwiUmVzcG9uc2VcIikudG9TdHJpbmcoKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,33 +0,0 @@
1
- import { Stack } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- import { Account } from "@pepperize/cdk-organizations";
4
- interface MultiEnvironmentOrganisationProps {
5
- organisationName: string;
6
- accountEmail: string;
7
- }
8
- /**
9
- * A construct for creating multi environment organisations with a production, staging and development account.
10
- */
11
- export declare class MultiEnvironmentOrganisation extends Construct {
12
- props: MultiEnvironmentOrganisationProps;
13
- private organisation;
14
- private organisationalUnits;
15
- private accounts;
16
- constructor(scope: Construct, id: string, props: MultiEnvironmentOrganisationProps);
17
- private addOrganisation;
18
- private addProductionUnit;
19
- private addStagingUnit;
20
- private addDevelopmentUnit;
21
- private addOrganisationalUnit;
22
- private addAccount;
23
- getAccounts(): Account[];
24
- }
25
- export default MultiEnvironmentOrganisation;
26
- /**
27
- * A stack for creating multi environment organisations with a production, staging and development account.
28
- */
29
- export declare class MultiEnvironmentOrganisationStack extends Stack {
30
- private resource;
31
- constructor(id: string, props: MultiEnvironmentOrganisationProps);
32
- getAccounts(): Account[];
33
- }