@fjall/components-infrastructure 0.1.16 → 0.1.18

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 (70) hide show
  1. package/dist/lib/config/aws/ecrDefaultImage.js +3 -3
  2. package/dist/lib/config/aws/identityCenter.d.ts +1 -2
  3. package/dist/lib/config/aws/identityCenter.js +7 -2
  4. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +10 -0
  5. package/dist/lib/config/aws/identityCenterGroupMembership.js +96 -0
  6. package/dist/lib/config/aws/index.d.ts +0 -1
  7. package/dist/lib/config/aws/index.js +1 -2
  8. package/dist/lib/config/aws/ipamPoolId.d.ts +1 -1
  9. package/dist/lib/config/aws/ipamPoolId.js +3 -3
  10. package/dist/lib/config/aws/organisationsAccess.d.ts +10 -0
  11. package/dist/lib/config/aws/organisationsAccess.js +40 -0
  12. package/dist/lib/patterns/aws/basicApp.d.ts +0 -1
  13. package/dist/lib/patterns/aws/basicApp.js +4 -4
  14. package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
  15. package/dist/lib/patterns/aws/buildkite.js +2 -2
  16. package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -1
  17. package/dist/lib/patterns/aws/freeTierApp.js +2 -4
  18. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -1
  19. package/dist/lib/patterns/aws/managedAccount.js +8 -8
  20. package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +4 -0
  21. package/dist/lib/patterns/aws/managedIdentityCenter.js +24 -0
  22. package/dist/lib/patterns/aws/managedOrganisation.d.ts +1 -2
  23. package/dist/lib/patterns/aws/managedOrganisation.js +11 -12
  24. package/dist/lib/resources/aws/compute/ecs.js +2 -4
  25. package/dist/lib/resources/aws/database/rdsFreeTier.js +2 -3
  26. package/dist/lib/resources/aws/networking/ipamPool.js +11 -12
  27. package/dist/lib/resources/aws/networking/vpc.d.ts +7 -2
  28. package/dist/lib/resources/aws/networking/vpc.js +23 -19
  29. package/dist/lib/utils/getAccountId.js +2 -2
  30. package/dist/lib/utils/getConfig.d.ts +4 -5
  31. package/dist/lib/utils/getConfig.js +23 -45
  32. package/package.json +23 -23
  33. package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +0 -5
  34. package/dist/lib/config/aws/delegateHostedZoneRole.js +0 -77
  35. package/dist/lib/config/aws/identityCenterUser.d.ts +0 -16
  36. package/dist/lib/config/aws/identityCenterUser.js +0 -125
  37. package/dist/lib/config/aws/ipamPool.d.ts +0 -5
  38. package/dist/lib/config/aws/ipamPool.js +0 -56
  39. package/dist/lib/config/aws/ipamPoolResourceShare.d.ts +0 -5
  40. package/dist/lib/config/aws/ipamPoolResourceShare.js +0 -42
  41. package/dist/lib/config/aws/ramEnableSharing.d.ts +0 -5
  42. package/dist/lib/config/aws/ramEnableSharing.js +0 -35
  43. package/dist/lib/config/aws/users.d.ts +0 -5
  44. package/dist/lib/config/aws/users.js +0 -126
  45. package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +0 -10
  46. package/dist/lib/config/fjall/hostedZones/fjall.io.js +0 -25
  47. package/dist/lib/resources/aws/constant/ecr.d.ts +0 -12
  48. package/dist/lib/resources/aws/constant/ecr.js +0 -30
  49. package/dist/lib/resources/aws/constant/vpc.d.ts +0 -26
  50. package/dist/lib/resources/aws/constant/vpc.js +0 -63
  51. package/dist/lib/resources/aws/networking/hostedZone.d.ts +0 -21
  52. package/dist/lib/resources/aws/networking/hostedZone.js +0 -68
  53. package/dist/lib/resources/aws/store/alias.d.ts +0 -5
  54. package/dist/lib/resources/aws/store/alias.js +0 -13
  55. package/dist/lib/resources/aws/store/database.d.ts +0 -18
  56. package/dist/lib/resources/aws/store/database.js +0 -33
  57. package/dist/lib/resources/aws/store/index.d.ts +0 -7
  58. package/dist/lib/resources/aws/store/index.js +0 -24
  59. package/dist/lib/resources/aws/store/kms.d.ts +0 -14
  60. package/dist/lib/resources/aws/store/kms.js +0 -34
  61. package/dist/lib/resources/aws/store/parameter.d.ts +0 -26
  62. package/dist/lib/resources/aws/store/parameter.js +0 -100
  63. package/dist/lib/resources/aws/store/rds.d.ts +0 -25
  64. package/dist/lib/resources/aws/store/rds.js +0 -132
  65. package/dist/lib/resources/aws/store/s3.d.ts +0 -11
  66. package/dist/lib/resources/aws/store/s3.js +0 -43
  67. package/dist/lib/resources/aws/store/secret.d.ts +0 -26
  68. package/dist/lib/resources/aws/store/secret.js +0 -55
  69. package/dist/lib/utils/usersConfig.d.ts +0 -7
  70. package/dist/lib/utils/usersConfig.js +0 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -12,27 +12,27 @@
12
12
  "dist/lib"
13
13
  ],
14
14
  "scripts": {
15
- "deploy:management": "npx cdk deploy -c environment=management",
16
- "list:management": "npx cdk list -c environment=management",
17
- "destroy:management": "npx cdk destroy -c environment=management",
18
- "synth:management": "npx cdk synthesize -c environment=management",
19
- "diff:management": "npx cdk diff -c environment=management",
20
- "deploy:dev": "npx cdk deploy -c environment=development",
21
- "list:dev": "npx cdk list -c environment=development",
22
- "destroy:dev": "npx cdk destroy -c environment=development",
23
- "synth:dev": "npx cdk synthesize -c environment=development",
24
- "deploy:stag": "npx cdk deploy -c environment=staging",
25
- "list:stag": "npx cdk list -c environment=staging",
26
- "destroy:stag": "npx cdk destroy -c environment=staging",
27
- "synth:stag": "npx cdk synthesize -c environment=staging",
28
- "deploy:prod": "npx cdk deploy -c environment=production",
29
- "list:prod": "npx cdk list -c environment=production",
30
- "destroy:prod": "npx cdk destroy -c environment=production",
31
- "synth:prod": "npx cdk synthesize -c environment=production",
32
- "deploy:plat": "npx cdk deploy -c environment=platform",
33
- "list:plat": "npx cdk list -c environment=platform",
34
- "destroy:plat": "npx cdk destroy -c environment=platform",
35
- "synth:plat": "npx cdk synthesize -c environment=platform",
15
+ "deploy:fjall": "npx cdk deploy -c accountName=fjall",
16
+ "list:fjall": "npx cdk list -c accountName=fjall",
17
+ "destroy:fjall": "npx cdk destroy -c accountName=fjall",
18
+ "synth:fjall": "npx cdk synthesize -c accountName=fjall",
19
+ "diff:fjall": "npx cdk diff -c accountName=fjall",
20
+ "deploy:dev": "npx cdk deploy -c accountName=development",
21
+ "list:dev": "npx cdk list -c accountName=development",
22
+ "destroy:dev": "npx cdk destroy -c accountName=development",
23
+ "synth:dev": "npx cdk synthesize -c accountName=development",
24
+ "deploy:stag": "npx cdk deploy -c accountName=staging",
25
+ "list:stag": "npx cdk list -c accountName=staging",
26
+ "destroy:stag": "npx cdk destroy -c accountName=staging",
27
+ "synth:stag": "npx cdk synthesize -c accountName=staging",
28
+ "deploy:prod": "npx cdk deploy -c accountName=production",
29
+ "list:prod": "npx cdk list -c accountName=production",
30
+ "destroy:prod": "npx cdk destroy -c accountName=production",
31
+ "synth:prod": "npx cdk synthesize -c accountName=production",
32
+ "deploy:plat": "npx cdk deploy -c accountName=platform",
33
+ "list:plat": "npx cdk list -c accountName=platform",
34
+ "destroy:plat": "npx cdk destroy -c accountName=platform",
35
+ "synth:plat": "npx cdk synthesize -c accountName=platform",
36
36
  "publish": "npm run build && npm publish --access restricted",
37
37
  "build": "tsc",
38
38
  "watch": "tsc -w",
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "@aws-sdk/client-cost-explorer": "^3.717.0",
57
57
  "@aws-sdk/client-organizations": "^3.716.0",
58
- "@fjall/util": "^0.1.16",
58
+ "@fjall/util": "^0.1.18",
59
59
  "@pepperize/cdk-organizations": "^0.7.135",
60
60
  "aws-cdk": "^2.146.0",
61
61
  "aws-cdk-lib": "^2.146.0",
@@ -1,5 +0,0 @@
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
- }
@@ -1,77 +0,0 @@
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==
@@ -1,16 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { Group } from "../../resources/aws/iam/identityCenter/group";
3
- export interface User {
4
- email: string;
5
- firstName: string;
6
- lastName: string;
7
- groups: string[];
8
- }
9
- interface IdentityCenterUserProps {
10
- identityStoreId: string;
11
- identityCenterGroups: Group[];
12
- }
13
- export declare class IdentityCenterUser extends Construct {
14
- constructor(scope: Construct, id: string, props: IdentityCenterUserProps);
15
- }
16
- export {};
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdentityCenterUser = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const customResources = require("aws-cdk-lib/custom-resources");
6
- const constructs_1 = require("constructs");
7
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
- const usersConfig_1 = require("../../utils/usersConfig");
9
- const capitalizeString_1 = require("../../utils/capitalizeString");
10
- class IdentityCenterUser extends constructs_1.Construct {
11
- constructor(scope, id, props) {
12
- super(scope, id);
13
- const users = new usersConfig_1.default().getUsers();
14
- const identityStoreId = props.identityStoreId;
15
- const userCount = users.length;
16
- for (let i = 0; i < userCount; i++) {
17
- const user = users[i];
18
- const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
19
- const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
20
- const userParams = {
21
- IdentityStoreId: identityStoreId,
22
- UserName: user.email,
23
- DisplayName: `${givenName} ${familyName}`,
24
- Name: {
25
- FamilyName: user.lastName,
26
- GivenName: user.firstName
27
- },
28
- Emails: [
29
- {
30
- Primary: true,
31
- Value: user.email
32
- }
33
- ]
34
- };
35
- const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
36
- functionName: "createUsers",
37
- onCreate: {
38
- service: "IdentityStore",
39
- action: "createUser",
40
- parameters: userParams,
41
- physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
42
- },
43
- onUpdate: {
44
- service: "IdentityStore",
45
- action: "updateUser",
46
- parameters: userParams,
47
- physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
48
- },
49
- resourceType: "Custom::IdentityCenterUsers"
50
- });
51
- new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
52
- functionName: "deleteUsers",
53
- onDelete: {
54
- service: "IdentityStore",
55
- action: "deleteUser",
56
- parameters: {
57
- IdentityStoreId: identityStoreId,
58
- UserId: createUser.getResponseField("UserId")
59
- }
60
- },
61
- resourceType: "Custom::IdentityCenterUsers"
62
- });
63
- new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
64
- key: `UserId${givenName}${familyName}`,
65
- value: createUser.getResponseField("UserId"),
66
- exportName: `UserId${givenName}${familyName}`
67
- });
68
- // props.identityCenterGroups.forEach((identityCenterGroup))
69
- user.groups.forEach((group) => {
70
- const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
71
- if (!identityCenterGroup) {
72
- throw new Error(`Group ${group} does not exist in Identity Center Groups`);
73
- }
74
- const groupId = identityCenterGroup.attrGroupId;
75
- const groupName = identityCenterGroup.displayName;
76
- const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
77
- functionName: "createGroupMembership",
78
- onCreate: {
79
- service: "IdentityStore",
80
- action: "createGroupMembership",
81
- parameters: {
82
- GroupId: groupId,
83
- IdentityStoreId: identityStoreId,
84
- MemberId: {
85
- UserId: createUser.getResponseField("UserId")
86
- }
87
- },
88
- physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${givenName}${familyName}To${groupName}`)
89
- },
90
- onUpdate: {
91
- service: "IdentityStore",
92
- action: "createGroupMembership",
93
- parameters: {
94
- GroupId: groupId,
95
- IdentityStoreId: identityStoreId,
96
- MemberId: {
97
- UserId: createUser.getResponseField("UserId")
98
- }
99
- },
100
- physicalResourceId: customResources.PhysicalResourceId.of(`updateGroupMembership${givenName}${familyName}To${groupName}`)
101
- }
102
- });
103
- new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
104
- functionName: "deleteGroupMembership",
105
- onDelete: {
106
- service: "IdentityStore",
107
- action: "deleteGroupMembership",
108
- parameters: {
109
- IdentityStoreId: identityStoreId,
110
- MembershipId: groupMembershipId.getResponseField("MembershipId")
111
- }
112
- },
113
- resourceType: "Custom::IdentityCenterUsers"
114
- });
115
- new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
116
- key: `GroupMembershipId${givenName}${familyName}${groupName}`,
117
- value: groupMembershipId.getResponseField("MembershipId"),
118
- exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
119
- });
120
- });
121
- }
122
- }
123
- }
124
- exports.IdentityCenterUser = IdentityCenterUser;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzFCO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxPQUFPLEVBQUUsSUFBSTt3QkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7cUJBQ2xCO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUkscUNBQWlCLENBQ3RDLElBQUksRUFDSixhQUFhLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFDckM7Z0JBQ0UsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLFVBQVUsRUFBRSxVQUFVO29CQUN0QixrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3ZEO2dCQUNELFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLFVBQVUsRUFBRSxVQUFVO29CQUN0QixrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3ZEO2dCQUNELFlBQVksRUFBRSw2QkFBNkI7YUFDNUMsQ0FDRixDQUFDO1lBRUYsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxTQUFTLEdBQUcsVUFBVSxFQUFFLEVBQUU7Z0JBQ2pFLFlBQVksRUFBRSxhQUFhO2dCQUMzQixRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUU7d0JBQ1YsZUFBZSxFQUFFLGVBQWU7d0JBQ2hDLE1BQU0sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO3FCQUM5QztpQkFDRjtnQkFDRCxZQUFZLEVBQUUsNkJBQTZCO2FBQzVDLENBQUMsQ0FBQztZQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxTQUFTLEdBQUcsVUFBVSxFQUFFLEVBQUU7Z0JBQ3JELEdBQUcsRUFBRSxTQUFTLFNBQVMsR0FBRyxVQUFVLEVBQUU7Z0JBQ3RDLEtBQUssRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUM1QyxVQUFVLEVBQUUsU0FBUyxTQUFTLEdBQUcsVUFBVSxFQUFFO2FBQzlDLENBQUMsQ0FBQztZQUVILDREQUE0RDtZQUU1RCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM1QixNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3pELENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsS0FBSyxLQUFLLENBQ25FLENBQUM7Z0JBRUYsSUFBSSxDQUFDLG1CQUFtQixFQUFFO29CQUN4QixNQUFNLElBQUksS0FBSyxDQUNiLFNBQVMsS0FBSywyQ0FBMkMsQ0FDMUQsQ0FBQztpQkFDSDtnQkFFRCxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7Z0JBQ2hELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLFdBQVcsQ0FBQztnQkFFbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHFDQUFpQixDQUM3QyxJQUFJLEVBQ0osd0JBQXdCLFNBQVMsR0FBRyxVQUFVLEtBQUssU0FBUyxFQUFFLEVBQzlEO29CQUNFLFlBQVksRUFBRSx1QkFBdUI7b0JBQ3JDLFFBQVEsRUFBRTt3QkFDUixPQUFPLEVBQUUsZUFBZTt3QkFDeEIsTUFBTSxFQUFFLHVCQUF1Qjt3QkFDL0IsVUFBVSxFQUFFOzRCQUNWLE9BQU8sRUFBRSxPQUFPOzRCQUNoQixlQUFlLEVBQUUsZUFBZTs0QkFDaEMsUUFBUSxFQUFFO2dDQUNSLE1BQU0sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDOzZCQUM5Qzt5QkFDRjt3QkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCx3QkFBd0IsU0FBUyxHQUFHLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FDL0Q7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixNQUFNLEVBQUUsdUJBQXVCO3dCQUMvQixVQUFVLEVBQUU7NEJBQ1YsT0FBTyxFQUFFLE9BQU87NEJBQ2hCLGVBQWUsRUFBRSxlQUFlOzRCQUNoQyxRQUFRLEVBQUU7Z0NBQ1IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7NkJBQzlDO3lCQUNGO3dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELHdCQUF3QixTQUFTLEdBQUcsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUMvRDtxQkFDRjtpQkFDRixDQUNGLENBQUM7Z0JBRUYsSUFBSSxxQ0FBaUIsQ0FDbkIsSUFBSSxFQUNKLHdCQUF3QixTQUFTLEdBQUcsVUFBVSxPQUFPLFNBQVMsRUFBRSxFQUNoRTtvQkFDRSxZQUFZLEVBQUUsdUJBQXVCO29CQUNyQyxRQUFRLEVBQUU7d0JBQ1IsT0FBTyxFQUFFLGVBQWU7d0JBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7d0JBQy9CLFVBQVUsRUFBRTs0QkFDVixlQUFlLEVBQUUsZUFBZTs0QkFDaEMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQzt5QkFDakU7cUJBQ0Y7b0JBQ0QsWUFBWSxFQUFFLDZCQUE2QjtpQkFDNUMsQ0FDRixDQUFDO2dCQUVGLElBQUksdUJBQVMsQ0FDWCxJQUFJLEVBQ0osb0JBQW9CLFNBQVMsR0FBRyxVQUFVLEdBQUcsU0FBUyxFQUFFLEVBQ3hEO29CQUNFLEdBQUcsRUFBRSxvQkFBb0IsU0FBUyxHQUFHLFVBQVUsR0FBRyxTQUFTLEVBQUU7b0JBQzdELEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7b0JBQ3pELFVBQVUsRUFBRSxvQkFBb0IsU0FBUyxHQUFHLFVBQVUsR0FBRyxTQUFTLEVBQUU7aUJBQ3JFLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUF2SkQsZ0RBdUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IFVzZXJzQ29uZmlnIGZyb20gXCIuLi8uLi91dGlscy91c2Vyc0NvbmZpZ1wiO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXBcIjtcbmltcG9ydCB7IGNhcGl0YWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2FwaXRhbGl6ZVN0cmluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICBlbWFpbDogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgZ3JvdXBzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIGNyZWF0ZVVzZXJQYXJhbWV0ZXJzIHtcbiAgSWRlbnRpdHlTdG9yZUlkOiBzdHJpbmc7XG4gIFVzZXJOYW1lOiBzdHJpbmc7XG4gIERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIE5hbWU6IHtcbiAgICBGYW1pbHlOYW1lOiBzdHJpbmc7XG4gICAgR2l2ZW5OYW1lOiBzdHJpbmc7XG4gIH07XG4gIEVtYWlsczoge1xuICAgIFByaW1hcnk6IGJvb2xlYW47XG4gICAgVmFsdWU6IHN0cmluZztcbiAgfVtdO1xufVxuXG5pbnRlcmZhY2UgSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMge1xuICBpZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgaWRlbnRpdHlDZW50ZXJHcm91cHM6IEdyb3VwW107XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUNlbnRlclVzZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdXNlcnM6IFVzZXJbXSA9IG5ldyBVc2Vyc0NvbmZpZygpLmdldFVzZXJzKCk7XG4gICAgY29uc3QgaWRlbnRpdHlTdG9yZUlkID0gcHJvcHMuaWRlbnRpdHlTdG9yZUlkO1xuXG4gICAgY29uc3QgdXNlckNvdW50ID0gdXNlcnMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlckNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2Vyc1tpXTtcbiAgICAgIGNvbnN0IGdpdmVuTmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5maXJzdE5hbWUpO1xuICAgICAgY29uc3QgZmFtaWx5TmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5sYXN0TmFtZSk7XG4gICAgICBjb25zdCB1c2VyUGFyYW1zOiBjcmVhdGVVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgIFVzZXJOYW1lOiB1c2VyLmVtYWlsLFxuICAgICAgICBEaXNwbGF5TmFtZTogYCR7Z2l2ZW5OYW1lfSAke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgTmFtZToge1xuICAgICAgICAgIEZhbWlseU5hbWU6IHVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgR2l2ZW5OYW1lOiB1c2VyLmZpcnN0TmFtZVxuICAgICAgICB9LFxuICAgICAgICBFbWFpbHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBQcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgVmFsdWU6IHVzZXIuZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBjcmVhdGVVc2VyJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlVXNlcnNcIixcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNjcmVhdGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJ1cGRhdGVVc2VyXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYGRlbGV0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlVXNlcnNcIixcbiAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNkZWxldGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICB9KTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsIHtcbiAgICAgICAga2V5OiBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHZhbHVlOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIiksXG4gICAgICAgIGV4cG9ydE5hbWU6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHByb3BzLmlkZW50aXR5Q2VudGVyR3JvdXBzLmZvckVhY2goKGlkZW50aXR5Q2VudGVyR3JvdXApKVxuXG4gICAgICB1c2VyLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBpZGVudGl0eUNlbnRlckdyb3VwID0gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZmluZChcbiAgICAgICAgICAoaWRlbnRpdHlDZW50ZXJHcm91cCkgPT4gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZSA9PT0gZ3JvdXBcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlkZW50aXR5Q2VudGVyR3JvdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgR3JvdXAgJHtncm91cH0gZG9lcyBub3QgZXhpc3QgaW4gSWRlbnRpdHkgQ2VudGVyIEdyb3Vwc2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IGlkZW50aXR5Q2VudGVyR3JvdXAuYXR0ckdyb3VwSWQ7XG4gICAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IGlkZW50aXR5Q2VudGVyR3JvdXAuZGlzcGxheU5hbWU7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwSWQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgICAgYHVwZGF0ZUdyb3VwTWVtYmVyc2hpcCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1UbyR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgZGVsZXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfUZyb20ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJzaGlwSWQ6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICAgIHZhbHVlOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpLFxuICAgICAgICAgICAgZXhwb3J0TmFtZTogYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
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
- }
@@ -1,56 +0,0 @@
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 +0,0 @@
1
- import { StackProps, Stack } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class IpamPoolResourceShare extends Stack {
4
- constructor(scope: Construct, id: string, props?: StackProps);
5
- }
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IpamPoolResourceShare = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const resourceShare_1 = require("../../resources/aws/utilities/resourceShare");
6
- const getAccountId_1 = require("../../utils/getAccountId");
7
- const environments = [
8
- "production",
9
- "staging",
10
- "development",
11
- "businessContinuity"
12
- ];
13
- const ipamShareProps = environments.map((environment) => {
14
- return {
15
- environment: environment,
16
- accountId: (0, getAccountId_1.default)(environment),
17
- ipamPoolArn: aws_cdk_lib_1.Fn.importValue(`${environment}IpamPoolArn`)
18
- };
19
- });
20
- class IpamPoolResourceShare extends aws_cdk_lib_1.Stack {
21
- constructor(scope, id, props) {
22
- super(scope, id, props);
23
- for (const ipamShareProp of ipamShareProps) {
24
- if (!ipamShareProp.accountId)
25
- continue;
26
- new resourceShare_1.ResourceShare(this, `${ipamShareProp.environment}IpamResourceShare`, {
27
- name: `${ipamShareProp.environment}IpamResourceShare`,
28
- allowExternalPrincipals: false,
29
- principals: [ipamShareProp.accountId],
30
- resourceArns: [ipamShareProp.ipamPoolArn],
31
- tags: [
32
- {
33
- key: "fjall:costAllocation:environment",
34
- value: `${ipamShareProp.environment}`
35
- }
36
- ]
37
- });
38
- }
39
- }
40
- }
41
- exports.IpamPoolResourceShare = IpamPoolResourceShare;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xSZXNvdXJjZVNoYXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaXBhbVBvb2xSZXNvdXJjZVNoYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCwrRUFBNEU7QUFDNUUsMkRBQW9EO0FBRXBELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBQ3RELE9BQU87UUFDTCxXQUFXLEVBQUUsV0FBVztRQUN4QixTQUFTLEVBQUUsSUFBQSxzQkFBWSxFQUFDLFdBQVcsQ0FBQztRQUNwQyxXQUFXLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLGFBQWEsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFhLHFCQUFzQixTQUFRLG1CQUFLO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2dCQUFFLFNBQVM7WUFFdkMsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxXQUFXLG1CQUFtQixFQUFFO2dCQUN2RSxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxtQkFBbUI7Z0JBQ3JELHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFO3FCQUN0QztpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBckJELHNEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUHJvcHMsIFN0YWNrLCBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgUmVzb3VyY2VTaGFyZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuY29uc3QgZW52aXJvbm1lbnRzID0gW1xuICBcInByb2R1Y3Rpb25cIixcbiAgXCJzdGFnaW5nXCIsXG4gIFwiZGV2ZWxvcG1lbnRcIixcbiAgXCJidXNpbmVzc0NvbnRpbnVpdHlcIlxuXTtcblxuY29uc3QgaXBhbVNoYXJlUHJvcHMgPSBlbnZpcm9ubWVudHMubWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCxcbiAgICBhY2NvdW50SWQ6IGdldEFjY291bnRJZChlbnZpcm9ubWVudCksXG4gICAgaXBhbVBvb2xBcm46IEZuLmltcG9ydFZhbHVlKGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYClcbiAgfTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xSZXNvdXJjZVNoYXJlIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGZvciAoY29uc3QgaXBhbVNoYXJlUHJvcCBvZiBpcGFtU2hhcmVQcm9wcykge1xuICAgICAgaWYgKCFpcGFtU2hhcmVQcm9wLmFjY291bnRJZCkgY29udGludWU7XG5cbiAgICAgIG5ldyBSZXNvdXJjZVNoYXJlKHRoaXMsIGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLCB7XG4gICAgICAgIG5hbWU6IGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLFxuICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgIHByaW5jaXBhbHM6IFtpcGFtU2hhcmVQcm9wLmFjY291bnRJZF0sXG4gICAgICAgIHJlc291cmNlQXJuczogW2lwYW1TaGFyZVByb3AuaXBhbVBvb2xBcm5dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aXBhbVNoYXJlUHJvcC5lbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- import { StackProps, Stack } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class RamEnableSharing extends Stack {
4
- constructor(scope: Construct, id: string, props?: StackProps);
5
- }
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RamEnableSharing = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const customResources = require("aws-cdk-lib/custom-resources");
6
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
- class RamEnableSharing extends aws_cdk_lib_1.Stack {
9
- constructor(scope, id, props) {
10
- super(scope, id, props);
11
- new awsCustomResource_1.AwsCustomResource(this, "ramEnableSharing", {
12
- functionName: "ramEnableSharing",
13
- onCreate: {
14
- service: "RAM",
15
- action: "enableSharingWithAwsOrganization",
16
- parameters: {},
17
- physicalResourceId: customResources.PhysicalResourceId.of("ramEnableSharing")
18
- },
19
- resourceType: "Custom::ramEnableSharing",
20
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
21
- new aws_iam_1.PolicyStatement({
22
- actions: [
23
- "ram:EnableSharingWithAwsOrganization",
24
- "iam:CreateServiceLinkedRole",
25
- "organizations:enableAWSServiceAccess",
26
- "organizations:DescribeOrganization"
27
- ],
28
- resources: ["*"] // TODO: Find out the exact pricipal for this
29
- })
30
- ])
31
- });
32
- }
33
- }
34
- exports.RamEnableSharing = RamEnableSharing;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFtRW5hYmxlU2hhcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL3JhbUVuYWJsZVNoYXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBQ2hELGdFQUFnRTtBQUNoRSxpREFBc0Q7QUFHdEQsdUZBQW9GO0FBRXBGLE1BQWEsZ0JBQWlCLFNBQVEsbUJBQUs7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM5QyxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsa0NBQWtDO2dCQUMxQyxVQUFVLEVBQUUsRUFBRTtnQkFDZCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUM1RDtZQUNELFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHNDQUFzQzt3QkFDdEMsNkJBQTZCO3dCQUM3QixzQ0FBc0M7d0JBQ3RDLG9DQUFvQztxQkFDckM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsNkNBQTZDO2lCQUMvRCxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNCRCw0Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFja1Byb3BzLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIFJhbUVuYWJsZVNoYXJpbmcgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwicmFtRW5hYmxlU2hhcmluZ1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwicmFtRW5hYmxlU2hhcmluZ1wiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJSQU1cIixcbiAgICAgICAgYWN0aW9uOiBcImVuYWJsZVNoYXJpbmdXaXRoQXdzT3JnYW5pemF0aW9uXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvUkFNLmh0bWwjZW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb24tcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge30sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwicmFtRW5hYmxlU2hhcmluZ1wiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OnJhbUVuYWJsZVNoYXJpbmdcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJyYW06RW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb25cIixcbiAgICAgICAgICAgIFwiaWFtOkNyZWF0ZVNlcnZpY2VMaW5rZWRSb2xlXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6ZW5hYmxlQVdTU2VydmljZUFjY2Vzc1wiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRlc2NyaWJlT3JnYW5pemF0aW9uXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBGaW5kIG91dCB0aGUgZXhhY3QgcHJpY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- import { Stack, StackProps } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class Users extends Stack {
4
- constructor(scope: Construct, id: string, props?: StackProps);
5
- }