@fjall/components-infrastructure 2.30.3 → 2.31.1

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 (93) hide show
  1. package/dist/lib/config/aws/identityCenterMembership.d.ts +11 -0
  2. package/dist/lib/config/aws/identityCenterMembership.js +61 -0
  3. package/dist/lib/config/aws/oidcConnector.js +11 -3
  4. package/dist/lib/lambda-assets/cert-generator/asset/index.js +12 -3
  5. package/dist/lib/patterns/aws/compute.d.ts +2 -2
  6. package/dist/lib/patterns/aws/compute.js +18 -9
  7. package/dist/lib/patterns/aws/computeLambda.d.ts +15 -1
  8. package/dist/lib/patterns/aws/computeLambda.js +18 -2
  9. package/dist/lib/patterns/aws/computePropApplicability.d.ts +20 -0
  10. package/dist/lib/patterns/aws/computePropApplicability.js +87 -0
  11. package/dist/lib/resources/aws/compute/ecsImages.js +7 -2
  12. package/dist/lib/resources/aws/compute/imageTagParameter.d.ts +18 -1
  13. package/dist/lib/resources/aws/compute/imageTagParameter.js +32 -2
  14. package/dist/lib/resources/aws/compute/lambda.d.ts +1 -1
  15. package/dist/lib/resources/aws/compute/lambda.js +6 -4
  16. package/dist/lib/resources/aws/iam/identityCenter/user.js +5 -1
  17. package/dist/lib/resources/aws/logging/index.d.ts +1 -0
  18. package/dist/lib/resources/aws/logging/index.js +1 -0
  19. package/dist/lib/resources/aws/logging/logGroup.d.ts +7 -0
  20. package/dist/lib/resources/aws/logging/logGroup.js +7 -0
  21. package/dist/lib/resources/aws/logging/singletonLogGroup.d.ts +15 -0
  22. package/dist/lib/resources/aws/logging/singletonLogGroup.js +24 -0
  23. package/dist/lib/resources/aws/networking/vpcPeeringConnection.js +2 -1
  24. package/dist/lib/resources/aws/storage/bucketDeployment.d.ts +5 -6
  25. package/dist/lib/resources/aws/storage/bucketDeployment.js +14 -7
  26. package/dist/lib/resources/aws/utilities/awsCustomResource.js +5 -0
  27. package/dist/lib/resources/aws/utilities/customResource.js +5 -1
  28. package/dist/lib/utils/addSuffixToEmail.js +1 -5
  29. package/dist/lib/utils/validationLogger.d.ts +2 -2
  30. package/dist/lib/utils/validationLogger.js +4 -4
  31. package/package.json +4 -4
  32. package/dist/lib/__tests__/setup.d.ts +0 -48
  33. package/dist/lib/__tests__/setup.js +0 -1
  34. package/dist/lib/config/aws/accountId.d.ts +0 -6
  35. package/dist/lib/config/aws/accountId.js +0 -33
  36. package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
  37. package/dist/lib/config/aws/backupGlobalSettings.js +0 -51
  38. package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
  39. package/dist/lib/config/aws/costAllocationTags.js +0 -48
  40. package/dist/lib/config/aws/eventBus.d.ts +0 -7
  41. package/dist/lib/config/aws/eventBus.js +0 -24
  42. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +0 -10
  43. package/dist/lib/config/aws/identityCenterGroupMembership.js +0 -115
  44. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
  45. package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -58
  46. package/dist/lib/config/aws/ipamPoolId.d.ts +0 -10
  47. package/dist/lib/config/aws/ipamPoolId.js +0 -39
  48. package/dist/lib/config/aws/organisation.d.ts +0 -30
  49. package/dist/lib/config/aws/organisation.js +0 -95
  50. package/dist/lib/config/aws/organisationId.d.ts +0 -7
  51. package/dist/lib/config/aws/organisationId.js +0 -46
  52. package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
  53. package/dist/lib/config/aws/organisationsAccess.js +0 -50
  54. package/dist/lib/config/aws/ramSharing.d.ts +0 -4
  55. package/dist/lib/config/aws/ramSharing.js +0 -35
  56. package/dist/lib/config/monitoring.d.ts +0 -18
  57. package/dist/lib/config/monitoring.js +0 -22
  58. package/dist/lib/patterns/aws/cicdRole.d.ts +0 -67
  59. package/dist/lib/patterns/aws/cicdRole.js +0 -68
  60. package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
  61. package/dist/lib/patterns/aws/hostedZone.js +0 -150
  62. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
  63. package/dist/lib/patterns/aws/managedAccount.js +0 -55
  64. package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +0 -4
  65. package/dist/lib/patterns/aws/managedIdentityCenter.js +0 -24
  66. package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
  67. package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
  68. package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
  69. package/dist/lib/patterns/aws/managedPlatform.js +0 -29
  70. package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +0 -9
  71. package/dist/lib/patterns/aws/subdomainHostedZone.js +0 -39
  72. package/dist/lib/resources/aws/cicd/cicdRole.d.ts +0 -65
  73. package/dist/lib/resources/aws/cicd/cicdRole.js +0 -191
  74. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +0 -75
  75. package/dist/lib/resources/aws/compute/ecsFreeTier.js +0 -1
  76. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +0 -75
  77. package/dist/lib/resources/aws/compute/ecsSpot.js +0 -1
  78. package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.d.ts +0 -20
  79. package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.js +0 -1
  80. package/dist/lib/resources/aws/database/database.d.ts +0 -14
  81. package/dist/lib/resources/aws/database/database.js +0 -28
  82. package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
  83. package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
  84. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
  85. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -52
  86. package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
  87. package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
  88. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -28
  89. package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -125
  90. package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +0 -5
  91. package/dist/lib/resources/aws/utilities/cfnOutput.js +0 -1
  92. package/dist/lib/utils/capitalizeString.d.ts +0 -1
  93. package/dist/lib/utils/capitalizeString.js +0 -7
@@ -1,6 +0,0 @@
1
- import { CfnOutput } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class AccountId extends Construct {
4
- readonly accountId: CfnOutput;
5
- constructor(scope: Construct, id: string);
6
- }
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountId = 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
- class AccountId extends constructs_1.Construct {
9
- constructor(scope, id) {
10
- super(scope, id);
11
- const sts = new awsCustomResource_1.AwsCustomResource(this, "GetAccountIdResource", {
12
- functionName: "getAccountId",
13
- onCreate: {
14
- service: "sts",
15
- action: "GetCallerIdentityCommand", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/GetCallerIdentityCommand/
16
- physicalResourceId: customResources.PhysicalResourceId.of("getAccountId")
17
- },
18
- onUpdate: {
19
- service: "sts",
20
- action: "GetCallerIdentityCommand", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/GetCallerIdentityCommand/
21
- physicalResourceId: customResources.PhysicalResourceId.of("getAccountId")
22
- },
23
- resourceType: "Custom::getAccountId"
24
- });
25
- this.accountId = new aws_cdk_lib_1.CfnOutput(this, "AccountIdOutput", {
26
- key: "AccountId",
27
- value: sts.getResponseField("Account"),
28
- exportName: "AccountId"
29
- });
30
- }
31
- }
32
- exports.AccountId = AccountId;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudElkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvYWNjb3VudElkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBRXZDLHVGQUFvRjtBQUVwRixNQUFhLFNBQVUsU0FBUSxzQkFBUztJQUd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sR0FBRyxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQzlELFlBQVksRUFBRSxjQUFjO1lBQzVCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsc0dBQXNHO2dCQUMxSSxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDeEQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLDBCQUEwQixFQUFFLHNHQUFzRztnQkFDMUksa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQ3hEO1lBQ0QsWUFBWSxFQUFFLHNCQUFzQjtTQUNyQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdEQsR0FBRyxFQUFFLFdBQVc7WUFDaEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDdEMsVUFBVSxFQUFFLFdBQVc7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0JELDhCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuXG5leHBvcnQgY2xhc3MgQWNjb3VudElkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGFjY291bnRJZDogQ2ZuT3V0cHV0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qgc3RzID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiR2V0QWNjb3VudElkUmVzb3VyY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImdldEFjY291bnRJZFwiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzdHNcIixcbiAgICAgICAgYWN0aW9uOiBcIkdldENhbGxlcklkZW50aXR5Q29tbWFuZFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3N0cy9jb21tYW5kL0dldENhbGxlcklkZW50aXR5Q29tbWFuZC9cbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJnZXRBY2NvdW50SWRcIilcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcInN0c1wiLFxuICAgICAgICBhY3Rpb246IFwiR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnQvc3RzL2NvbW1hbmQvR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kL1xuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImdldEFjY291bnRJZFwiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OmdldEFjY291bnRJZFwiXG4gICAgfSk7XG5cbiAgICB0aGlzLmFjY291bnRJZCA9IG5ldyBDZm5PdXRwdXQodGhpcywgXCJBY2NvdW50SWRPdXRwdXRcIiwge1xuICAgICAga2V5OiBcIkFjY291bnRJZFwiLFxuICAgICAgdmFsdWU6IHN0cy5nZXRSZXNwb25zZUZpZWxkKFwiQWNjb3VudFwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IFwiQWNjb3VudElkXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,29 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { type StackProps } from "aws-cdk-lib";
3
- interface BackupGlobalSettingsProps extends StackProps {
4
- account: string;
5
- region: string;
6
- /**
7
- * Enable cross-account backup copying.
8
- * Required for enterprise tier backups to compliance account.
9
- * @default true
10
- */
11
- enableCrossAccountBackup?: boolean;
12
- /**
13
- * Enable delegated administrator for AWS Backup.
14
- * Allows managing backups from a member account instead of root.
15
- * Recommended for security best practices.
16
- * @default false
17
- */
18
- enableDelegatedAdministrator?: boolean;
19
- /**
20
- * Enable Multi-Party Approval for backup restores.
21
- * Requires approval workflow for restore operations.
22
- * @default false
23
- */
24
- enableMpa?: boolean;
25
- }
26
- export declare class BackupGlobalSettings extends Construct {
27
- constructor(scope: Construct, id: string, props: BackupGlobalSettingsProps);
28
- }
29
- export {};
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BackupGlobalSettings = void 0;
4
- const customResources = require("aws-cdk-lib/custom-resources");
5
- const constructs_1 = require("constructs");
6
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
7
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
8
- class BackupGlobalSettings extends constructs_1.Construct {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- const { enableCrossAccountBackup = true, enableDelegatedAdministrator = false, enableMpa = false } = props;
12
- const globalSettings = {
13
- isCrossAccountBackupEnabled: enableCrossAccountBackup.toString(),
14
- isDelegatedAdministratorEnabled: enableDelegatedAdministrator.toString(),
15
- isMpaEnabled: enableMpa.toString()
16
- };
17
- // Update global settings on create and update
18
- new awsCustomResource_1.AwsCustomResource(this, "BackupGlobalSettings", {
19
- functionName: "updateBackupGlobalSettings",
20
- onCreate: {
21
- service: "backup",
22
- action: "UpdateGlobalSettingsCommand",
23
- parameters: {
24
- GlobalSettings: globalSettings
25
- },
26
- physicalResourceId: customResources.PhysicalResourceId.of("BackupGlobalSettings")
27
- },
28
- onUpdate: {
29
- service: "backup",
30
- action: "UpdateGlobalSettingsCommand",
31
- parameters: {
32
- GlobalSettings: globalSettings
33
- },
34
- physicalResourceId: customResources.PhysicalResourceId.of("BackupGlobalSettings")
35
- },
36
- resourceType: "Custom::BackupGlobalSettings",
37
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
38
- new aws_iam_1.PolicyStatement({
39
- actions: [
40
- "backup:UpdateGlobalSettings",
41
- "backup:DescribeGlobalSettings"
42
- ],
43
- resources: ["*"],
44
- effect: aws_iam_1.Effect.ALLOW
45
- })
46
- ])
47
- });
48
- }
49
- }
50
- exports.BackupGlobalSettings = BackupGlobalSettings;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwR2xvYmFsU2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYWNrdXBHbG9iYWxTZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRixpREFBOEQ7QUEyQjlELE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFDSix3QkFBd0IsR0FBRyxJQUFJLEVBQy9CLDRCQUE0QixHQUFHLEtBQUssRUFDcEMsU0FBUyxHQUFHLEtBQUssRUFDbEIsR0FBRyxLQUFLLENBQUM7UUFFVixNQUFNLGNBQWMsR0FBMkI7WUFDN0MsMkJBQTJCLEVBQUUsd0JBQXdCLENBQUMsUUFBUSxFQUFFO1lBQ2hFLCtCQUErQixFQUFFLDRCQUE0QixDQUFDLFFBQVEsRUFBRTtZQUN4RSxZQUFZLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRTtTQUNuQyxDQUFDO1FBRUYsOENBQThDO1FBQzlDLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2xELFlBQVksRUFBRSw0QkFBNEI7WUFDMUMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixNQUFNLEVBQUUsNkJBQTZCO2dCQUNyQyxVQUFVLEVBQUU7b0JBQ1YsY0FBYyxFQUFFLGNBQWM7aUJBQy9CO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELHNCQUFzQixDQUN2QjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixNQUFNLEVBQUUsNkJBQTZCO2dCQUNyQyxVQUFVLEVBQUU7b0JBQ1YsY0FBYyxFQUFFLGNBQWM7aUJBQy9CO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELHNCQUFzQixDQUN2QjthQUNGO1lBQ0QsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsNkJBQTZCO3dCQUM3QiwrQkFBK0I7cUJBQ2hDO29CQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDaEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztpQkFDckIsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwREQsb0RBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5pbnRlcmZhY2UgQmFja3VwR2xvYmFsU2V0dGluZ3NQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogRW5hYmxlIGNyb3NzLWFjY291bnQgYmFja3VwIGNvcHlpbmcuXG4gICAqIFJlcXVpcmVkIGZvciBlbnRlcnByaXNlIHRpZXIgYmFja3VwcyB0byBjb21wbGlhbmNlIGFjY291bnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGVuYWJsZUNyb3NzQWNjb3VudEJhY2t1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgZGVsZWdhdGVkIGFkbWluaXN0cmF0b3IgZm9yIEFXUyBCYWNrdXAuXG4gICAqIEFsbG93cyBtYW5hZ2luZyBiYWNrdXBzIGZyb20gYSBtZW1iZXIgYWNjb3VudCBpbnN0ZWFkIG9mIHJvb3QuXG4gICAqIFJlY29tbWVuZGVkIGZvciBzZWN1cml0eSBiZXN0IHByYWN0aWNlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVuYWJsZURlbGVnYXRlZEFkbWluaXN0cmF0b3I/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIE11bHRpLVBhcnR5IEFwcHJvdmFsIGZvciBiYWNrdXAgcmVzdG9yZXMuXG4gICAqIFJlcXVpcmVzIGFwcHJvdmFsIHdvcmtmbG93IGZvciByZXN0b3JlIG9wZXJhdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVNcGE/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQmFja3VwR2xvYmFsU2V0dGluZ3MgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFja3VwR2xvYmFsU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVDcm9zc0FjY291bnRCYWNrdXAgPSB0cnVlLFxuICAgICAgZW5hYmxlRGVsZWdhdGVkQWRtaW5pc3RyYXRvciA9IGZhbHNlLFxuICAgICAgZW5hYmxlTXBhID0gZmFsc2VcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBnbG9iYWxTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGlzQ3Jvc3NBY2NvdW50QmFja3VwRW5hYmxlZDogZW5hYmxlQ3Jvc3NBY2NvdW50QmFja3VwLnRvU3RyaW5nKCksXG4gICAgICBpc0RlbGVnYXRlZEFkbWluaXN0cmF0b3JFbmFibGVkOiBlbmFibGVEZWxlZ2F0ZWRBZG1pbmlzdHJhdG9yLnRvU3RyaW5nKCksXG4gICAgICBpc01wYUVuYWJsZWQ6IGVuYWJsZU1wYS50b1N0cmluZygpXG4gICAgfTtcblxuICAgIC8vIFVwZGF0ZSBnbG9iYWwgc2V0dGluZ3Mgb24gY3JlYXRlIGFuZCB1cGRhdGVcbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJCYWNrdXBHbG9iYWxTZXR0aW5nc1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwidXBkYXRlQmFja3VwR2xvYmFsU2V0dGluZ3NcIixcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiYmFja3VwXCIsXG4gICAgICAgIGFjdGlvbjogXCJVcGRhdGVHbG9iYWxTZXR0aW5nc0NvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEdsb2JhbFNldHRpbmdzOiBnbG9iYWxTZXR0aW5nc1xuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJCYWNrdXBHbG9iYWxTZXR0aW5nc1wiXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcImJhY2t1cFwiLFxuICAgICAgICBhY3Rpb246IFwiVXBkYXRlR2xvYmFsU2V0dGluZ3NDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBHbG9iYWxTZXR0aW5nczogZ2xvYmFsU2V0dGluZ3NcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwiQmFja3VwR2xvYmFsU2V0dGluZ3NcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6QmFja3VwR2xvYmFsU2V0dGluZ3NcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJiYWNrdXA6VXBkYXRlR2xvYmFsU2V0dGluZ3NcIixcbiAgICAgICAgICAgIFwiYmFja3VwOkRlc2NyaWJlR2xvYmFsU2V0dGluZ3NcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,12 +0,0 @@
1
- import { Construct } from "constructs";
2
- export interface ICostAllocationTags {
3
- TagKey: string;
4
- Status: string;
5
- }
6
- interface CostAllocationTagsProps {
7
- costAllocationTags: ICostAllocationTags[];
8
- }
9
- export declare class CostAllocationTags extends Construct {
10
- constructor(scope: Construct, id: string, props: CostAllocationTagsProps);
11
- }
12
- export {};
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CostAllocationTags = void 0;
4
- const customResources = require("aws-cdk-lib/custom-resources");
5
- const constructs_1 = require("constructs");
6
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
7
- function toggleCostTag(tags, tagStatus) {
8
- return tags.map((tag) => {
9
- return {
10
- TagKey: tag.TagKey,
11
- Status: tagStatus
12
- };
13
- });
14
- }
15
- class CostAllocationTags extends constructs_1.Construct {
16
- constructor(scope, id, props) {
17
- super(scope, id);
18
- new awsCustomResource_1.AwsCustomResource(this, "costAllocationTags", {
19
- functionName: "enableCostAllocationTags",
20
- onCreate: {
21
- service: "CostExplorer",
22
- action: "updateCostAllocationTagsStatus",
23
- parameters: {
24
- CostAllocationTagsStatus: toggleCostTag(props.costAllocationTags, "Active")
25
- },
26
- physicalResourceId: customResources.PhysicalResourceId.of("enableCostAllocationTags")
27
- },
28
- onUpdate: {
29
- service: "CostExplorer",
30
- action: "updateCostAllocationTagsStatus",
31
- parameters: {
32
- CostAllocationTagsStatus: toggleCostTag(props.costAllocationTags, "Active")
33
- },
34
- physicalResourceId: customResources.PhysicalResourceId.of("updateCostAllocationTags")
35
- },
36
- onDelete: {
37
- service: "CostExplorer",
38
- action: "updateCostAllocationTagsStatus",
39
- parameters: {
40
- CostAllocationTagsStatus: toggleCostTag(props.costAllocationTags, "Inactive")
41
- }
42
- },
43
- resourceType: "Custom::CostAllocationTags"
44
- });
45
- }
46
- }
47
- exports.CostAllocationTags = CostAllocationTags;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdEFsbG9jYXRpb25UYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvY29zdEFsbG9jYXRpb25UYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUFnRTtBQUNoRSwyQ0FBdUM7QUFFdkMsdUZBQW9GO0FBV3BGLFNBQVMsYUFBYSxDQUFDLElBQTJCLEVBQUUsU0FBaUI7SUFDbkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDdEIsT0FBTztZQUNMLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtZQUNsQixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUMvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDaEQsWUFBWSxFQUFFLDBCQUEwQjtZQUN4QyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVix3QkFBd0IsRUFBRSxhQUFhLENBQ3JDLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsUUFBUSxDQUNUO2lCQUNGO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELDBCQUEwQixDQUMzQjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixNQUFNLEVBQUUsZ0NBQWdDO2dCQUN4QyxVQUFVLEVBQUU7b0JBQ1Ysd0JBQXdCLEVBQUUsYUFBYSxDQUNyQyxLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLFFBQVEsQ0FDVDtpQkFDRjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCwwQkFBMEIsQ0FDM0I7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsY0FBYztnQkFDdkIsTUFBTSxFQUFFLGdDQUFnQztnQkFDeEMsVUFBVSxFQUFFO29CQUNWLHdCQUF3QixFQUFFLGFBQWEsQ0FDckMsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixVQUFVLENBQ1g7aUJBQ0Y7YUFDRjtZQUNELFlBQVksRUFBRSw0QkFBNEI7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0NELGdEQTZDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJQ29zdEFsbG9jYXRpb25UYWdzIHtcbiAgVGFnS2V5OiBzdHJpbmc7XG4gIFN0YXR1czogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ29zdEFsbG9jYXRpb25UYWdzUHJvcHMge1xuICBjb3N0QWxsb2NhdGlvblRhZ3M6IElDb3N0QWxsb2NhdGlvblRhZ3NbXTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlQ29zdFRhZyh0YWdzOiBJQ29zdEFsbG9jYXRpb25UYWdzW10sIHRhZ1N0YXR1czogc3RyaW5nKSB7XG4gIHJldHVybiB0YWdzLm1hcCgodGFnKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFRhZ0tleTogdGFnLlRhZ0tleSxcbiAgICAgIFN0YXR1czogdGFnU3RhdHVzXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBDb3N0QWxsb2NhdGlvblRhZ3MgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29zdEFsbG9jYXRpb25UYWdzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiY29zdEFsbG9jYXRpb25UYWdzXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJlbmFibGVDb3N0QWxsb2NhdGlvblRhZ3NcIixcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQ29zdEV4cGxvcmVyXCIsXG4gICAgICAgIGFjdGlvbjogXCJ1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIENvc3RBbGxvY2F0aW9uVGFnc1N0YXR1czogdG9nZ2xlQ29zdFRhZyhcbiAgICAgICAgICAgIHByb3BzLmNvc3RBbGxvY2F0aW9uVGFncyxcbiAgICAgICAgICAgIFwiQWN0aXZlXCJcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBcImVuYWJsZUNvc3RBbGxvY2F0aW9uVGFnc1wiXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkNvc3RFeHBsb3JlclwiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXM6IHRvZ2dsZUNvc3RUYWcoXG4gICAgICAgICAgICBwcm9wcy5jb3N0QWxsb2NhdGlvblRhZ3MsXG4gICAgICAgICAgICBcIkFjdGl2ZVwiXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJ1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJDb3N0RXhwbG9yZXJcIixcbiAgICAgICAgYWN0aW9uOiBcInVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ29zdEFsbG9jYXRpb25UYWdzU3RhdHVzOiB0b2dnbGVDb3N0VGFnKFxuICAgICAgICAgICAgcHJvcHMuY29zdEFsbG9jYXRpb25UYWdzLFxuICAgICAgICAgICAgXCJJbmFjdGl2ZVwiXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6Q29zdEFsbG9jYXRpb25UYWdzXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,7 +0,0 @@
1
- import { CfnOutput } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- export declare class DefaultEventBus extends Construct {
4
- readonly defaultEventBusName: CfnOutput;
5
- readonly defaultEventBusArn: CfnOutput;
6
- constructor(scope: Construct, id: string);
7
- }
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultEventBus = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const Events = require("aws-cdk-lib/aws-events");
6
- const constructs_1 = require("constructs");
7
- class DefaultEventBus extends constructs_1.Construct {
8
- constructor(scope, id) {
9
- super(scope, id);
10
- const eventBridge = Events.EventBus.fromEventBusName(this, "defaultEventBus", "default");
11
- this.defaultEventBusName = new aws_cdk_lib_1.CfnOutput(this, "defaultEventBusName", {
12
- key: `defaultEventBusName`,
13
- value: eventBridge.eventBusName,
14
- exportName: "defaultEventBusName"
15
- });
16
- this.defaultEventBusArn = new aws_cdk_lib_1.CfnOutput(this, "defaultEventBusArn", {
17
- key: `defaultEventBusArn`,
18
- value: eventBridge.eventBusArn,
19
- exportName: "defaultEventBusArn"
20
- });
21
- }
22
- }
23
- exports.DefaultEventBus = DefaultEventBus;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9ldmVudEJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBd0M7QUFDeEMsaURBQWlEO0FBQ2pELDJDQUF1QztBQUV2QyxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFJNUMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUNsRCxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLFNBQVMsQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDcEUsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixLQUFLLEVBQUUsV0FBVyxDQUFDLFlBQVk7WUFDL0IsVUFBVSxFQUFFLHFCQUFxQjtTQUNsQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNsRSxHQUFHLEVBQUUsb0JBQW9CO1lBQ3pCLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVztZQUM5QixVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpCRCwwQ0F5QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIEV2ZW50cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRFdmVudEJ1cyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0RXZlbnRCdXNOYW1lOiBDZm5PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0RXZlbnRCdXNBcm46IENmbk91dHB1dDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGV2ZW50QnJpZGdlID0gRXZlbnRzLkV2ZW50QnVzLmZyb21FdmVudEJ1c05hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWZhdWx0RXZlbnRCdXNcIixcbiAgICAgIFwiZGVmYXVsdFwiXG4gICAgKTtcblxuICAgIHRoaXMuZGVmYXVsdEV2ZW50QnVzTmFtZSA9IG5ldyBDZm5PdXRwdXQodGhpcywgXCJkZWZhdWx0RXZlbnRCdXNOYW1lXCIsIHtcbiAgICAgIGtleTogYGRlZmF1bHRFdmVudEJ1c05hbWVgLFxuICAgICAgdmFsdWU6IGV2ZW50QnJpZGdlLmV2ZW50QnVzTmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IFwiZGVmYXVsdEV2ZW50QnVzTmFtZVwiXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlZmF1bHRFdmVudEJ1c0FybiA9IG5ldyBDZm5PdXRwdXQodGhpcywgXCJkZWZhdWx0RXZlbnRCdXNBcm5cIiwge1xuICAgICAga2V5OiBgZGVmYXVsdEV2ZW50QnVzQXJuYCxcbiAgICAgIHZhbHVlOiBldmVudEJyaWRnZS5ldmVudEJ1c0FybixcbiAgICAgIGV4cG9ydE5hbWU6IFwiZGVmYXVsdEV2ZW50QnVzQXJuXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,10 +0,0 @@
1
- import { NestedStack, type StackProps } from "aws-cdk-lib";
2
- import { type Construct } from "constructs";
3
- interface IdentityCenterGroupMembershipProps extends StackProps {
4
- groupName: string;
5
- groupMembers: string[];
6
- }
7
- export declare class IdentityCenterGroupMembership extends NestedStack {
8
- constructor(scope: Construct, id: string, props: IdentityCenterGroupMembershipProps);
9
- }
10
- export {};
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdentityCenterGroupMembership = 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: This requires a deletion and recreation to update
8
- class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- const identityStoreId = aws_cdk_lib_1.Fn.importValue("identityStoreId");
12
- const groupId = aws_cdk_lib_1.Fn.importValue(`${props.groupName}GroupId`);
13
- for (const member of props.groupMembers) {
14
- const memberGroup = member
15
- .split("@")[0]
16
- .split(/[^a-zA-Z0-9]/)
17
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
18
- .join("") +
19
- props.groupName.charAt(0).toUpperCase() +
20
- props.groupName.slice(1);
21
- const listUser = new awsCustomResource_1.AwsCustomResource(this, `ListUsersResource${memberGroup}`, {
22
- functionName: `listUsers${memberGroup}`,
23
- onCreate: {
24
- service: "identityStore",
25
- action: "listUsers",
26
- parameters: {
27
- IdentityStoreId: identityStoreId,
28
- Filters: [
29
- {
30
- AttributePath: "UserName",
31
- AttributeValue: member
32
- }
33
- ]
34
- },
35
- physicalResourceId: customResources.PhysicalResourceId.of(`listUsers${memberGroup}`)
36
- },
37
- onUpdate: {
38
- service: "identityStore",
39
- action: "listusers",
40
- parameters: {
41
- IdentityStoreId: identityStoreId,
42
- Filters: [
43
- {
44
- AttributePath: "UserName",
45
- AttributeValue: member
46
- }
47
- ]
48
- },
49
- physicalResourceId: customResources.PhysicalResourceId.of(`listUsers${memberGroup}`)
50
- }
51
- });
52
- const userId = listUser.getResponseField("Users.0.UserId");
53
- const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `CreateGroupMembershipResource${memberGroup}`, {
54
- functionName: "createGroupMembership",
55
- onCreate: {
56
- service: "identityStore",
57
- action: "createGroupMembership",
58
- parameters: {
59
- GroupId: groupId,
60
- IdentityStoreId: identityStoreId,
61
- MemberId: {
62
- UserId: userId
63
- }
64
- },
65
- physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${memberGroup}`)
66
- },
67
- resourceType: "Custom::IdentityCenterUsers"
68
- });
69
- const refreshMembership = new awsCustomResource_1.AwsCustomResource(this, `RefreshMembershipResource${memberGroup}`, {
70
- functionName: `refreshGroupMembership${memberGroup}`,
71
- onUpdate: {
72
- service: "identityStore",
73
- action: "deleteGroupMembership",
74
- parameters: {
75
- IdentityStoreId: identityStoreId,
76
- MembershipId: groupMembershipId.getResponseField("MembershipId")
77
- },
78
- physicalResourceId: customResources.PhysicalResourceId.of(`refreshGroupMembership${memberGroup}`)
79
- },
80
- resourceType: "Custom::IdentityCenterUsers"
81
- });
82
- const recreateMembership = new awsCustomResource_1.AwsCustomResource(this, `RecreateGroupMembershipResource${memberGroup}`, {
83
- functionName: `recreateGroupMembership${memberGroup}`,
84
- onUpdate: {
85
- service: "identityStore",
86
- action: "createGroupMembership",
87
- parameters: {
88
- GroupId: groupId,
89
- IdentityStoreId: identityStoreId,
90
- MemberId: {
91
- UserId: userId
92
- }
93
- },
94
- physicalResourceId: customResources.PhysicalResourceId.of(`recreateGroupMembership${memberGroup}`)
95
- },
96
- resourceType: "Custom::IdentityCenterUsers"
97
- });
98
- refreshMembership.node.addDependency(recreateMembership);
99
- new awsCustomResource_1.AwsCustomResource(this, `DeleteGroupMembershipResource${memberGroup}`, {
100
- functionName: "deleteGroupMembership",
101
- onDelete: {
102
- service: "identityStore",
103
- action: "deleteGroupMembership",
104
- parameters: {
105
- IdentityStoreId: identityStoreId,
106
- MembershipId: groupMembershipId.getResponseField("MembershipId")
107
- }
108
- },
109
- resourceType: "Custom::IdentityCenterUsers"
110
- });
111
- }
112
- }
113
- }
114
- exports.IdentityCenterGroupMembership = IdentityCenterGroupMembership;
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJHcm91cE1lbWJlcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0Q7QUFDL0QsZ0VBQWdFO0FBQ2hFLHVGQUFvRjtBQVFwRiwwREFBMEQ7QUFDMUQsTUFBYSw2QkFBOEIsU0FBUSx5QkFBVztJQUM1RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF5QztRQUV6QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sZUFBZSxHQUFHLGdCQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsTUFBTSxPQUFPLEdBQUcsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxTQUFTLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFdBQVcsR0FDZixNQUFNO2lCQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsS0FBSyxDQUFDLGNBQWMsQ0FBQztpQkFDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNELElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUN2QyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQixNQUFNLFFBQVEsR0FBRyxJ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QkFDRjtnQkFDRCxZQUFZLEVBQUUsNkJBQTZCO2FBQzVDLENBQ0YsQ0FBQztZQUVGLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUV6RCxJQUFJLHFDQUFpQixDQUNuQixJQUFJLEVBQ0osZ0NBQWdDLFdBQVcsRUFBRSxFQUM3QztnQkFDRSxZQUFZLEVBQUUsdUJBQXVCO2dCQUNyQyxRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7b0JBQy9CLFVBQVUsRUFBRTt3QkFDVixlQUFlLEVBQUUsZUFBZTt3QkFDaEMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztxQkFDakU7aUJBQ0Y7Z0JBQ0QsWUFBWSxFQUFFLDZCQUE2QjthQUM1QyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckpELHNFQXFKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZuLCBOZXN0ZWRTdGFjaywgdHlwZSBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmludGVyZmFjZSBJZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIGdyb3VwTmFtZTogc3RyaW5nO1xuICBncm91cE1lbWJlcnM6IHN0cmluZ1tdO1xufVxuXG4vLyBUT0RPOiBUaGlzIHJlcXVpcmVzIGEgZGVsZXRpb24gYW5kIHJlY3JlYXRpb24gdG8gdXBkYXRlXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlDZW50ZXJHcm91cE1lbWJlcnNoaXAgZXh0ZW5kcyBOZXN0ZWRTdGFjayB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSWRlbnRpdHlDZW50ZXJHcm91cE1lbWJlcnNoaXBQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaWRlbnRpdHlTdG9yZUlkID0gRm4uaW1wb3J0VmFsdWUoXCJpZGVudGl0eVN0b3JlSWRcIik7XG4gICAgY29uc3QgZ3JvdXBJZCA9IEZuLmltcG9ydFZhbHVlKGAke3Byb3BzLmdyb3VwTmFtZX1Hcm91cElkYCk7XG5cbiAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBwcm9wcy5ncm91cE1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IG1lbWJlckdyb3VwID1cbiAgICAgICAgbWVtYmVyXG4gICAgICAgICAgLnNwbGl0KFwiQFwiKVswXVxuICAgICAgICAgIC5zcGxpdCgvW15hLXpBLVowLTldLylcbiAgICAgICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKSlcbiAgICAgICAgICAuam9pbihcIlwiKSArXG4gICAgICAgIHByb3BzLmdyb3VwTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXG4gICAgICAgIHByb3BzLmdyb3VwTmFtZS5zbGljZSgxKTtcblxuICAgICAgY29uc3QgbGlzdFVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBMaXN0VXNlcnNSZXNvdXJjZSR7bWVtYmVyR3JvdXB9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogYGxpc3RVc2VycyR7bWVtYmVyR3JvdXB9YCxcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJpZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwibGlzdFVzZXJzXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBGaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXR0cmlidXRlUGF0aDogXCJVc2VyTmFtZVwiLFxuICAgICAgICAgICAgICAgICAgQXR0cmlidXRlVmFsdWU6IG1lbWJlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgYGxpc3RVc2VycyR7bWVtYmVyR3JvdXB9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImxpc3R1c2Vyc1wiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgRmlsdGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVBhdGg6IFwiVXNlck5hbWVcIixcbiAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlOiBtZW1iZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGBsaXN0VXNlcnMke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHVzZXJJZCA9IGxpc3RVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2Vycy4wLlVzZXJJZFwiKTtcblxuICAgICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwSWQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBDcmVhdGVHcm91cE1lbWJlcnNoaXBSZXNvdXJjZSR7bWVtYmVyR3JvdXB9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJpZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgIFVzZXJJZDogdXNlcklkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCByZWZyZXNoTWVtYmVyc2hpcCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFJlZnJlc2hNZW1iZXJzaGlwUmVzb3VyY2Uke21lbWJlckdyb3VwfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IGByZWZyZXNoR3JvdXBNZW1iZXJzaGlwJHttZW1iZXJHcm91cH1gLFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImlkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgYHJlZnJlc2hHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCByZWNyZWF0ZU1lbWJlcnNoaXAgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBSZWNyZWF0ZUdyb3VwTWVtYmVyc2hpcFJlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBgcmVjcmVhdGVHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWAsXG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBHcm91cElkOiBncm91cElkLFxuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICBVc2VySWQ6IHVzZXJJZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgICBgcmVjcmVhdGVHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZWZyZXNoTWVtYmVyc2hpcC5ub2RlLmFkZERlcGVuZGVuY3kocmVjcmVhdGVNZW1iZXJzaGlwKTtcblxuICAgICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgRGVsZXRlR3JvdXBNZW1iZXJzaGlwUmVzb3VyY2Uke21lbWJlckdyb3VwfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVyc2hpcElkOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { Construct } from "constructs";
2
- interface IpamDelegateAdminProps {
3
- accountId: string;
4
- }
5
- export declare class IpamDelegateAdmin extends Construct {
6
- constructor(scope: Construct, id: string, props: IpamDelegateAdminProps);
7
- }
8
- export {};
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IpamDelegateAdmin = void 0;
4
- const customResources = require("aws-cdk-lib/custom-resources");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const constructs_1 = require("constructs");
7
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
- class IpamDelegateAdmin extends constructs_1.Construct {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- new awsCustomResource_1.AwsCustomResource(this, "ipamDelegateAdmin", {
12
- functionName: "ipamDelegateAdmin",
13
- onCreate: {
14
- service: "EC2",
15
- action: "enableIpamOrganizationAdminAccount", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#enableIpamOrganizationAdminAccount-property
16
- parameters: {
17
- DryRun: false,
18
- DelegatedAdminAccountId: props.accountId
19
- },
20
- physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
21
- },
22
- onUpdate: {
23
- service: "EC2",
24
- action: "enableIpamOrganizationAdminAccount",
25
- parameters: {
26
- DryRun: false,
27
- DelegatedAdminAccountId: props.accountId
28
- },
29
- physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
30
- },
31
- onDelete: {
32
- service: "EC2",
33
- action: "disableIpamOrganizationAdminAccount", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#disableIpamOrganizationAdminAccount-property
34
- parameters: {
35
- DryRun: false,
36
- DelegatedAdminAccountId: props.accountId
37
- }
38
- },
39
- resourceType: "Custom::ipamDelegateAdmin",
40
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
41
- new aws_iam_1.PolicyStatement({
42
- actions: [
43
- "ec2:EnableIpamOrganizationAdminAccount",
44
- "ec2:DisableIpamOrganizationAdminAccount",
45
- "organizations:EnableAWSServiceAccess",
46
- "organizations:DisableAWSServiceAccess",
47
- "organizations:RegisterDelegatedAdministrator",
48
- "organizations:DeregisterDelegatedAdministrator",
49
- "iam:CreateServiceLinkedRole"
50
- ],
51
- resources: ["*"] // TODO: Find out the exact principal for this
52
- })
53
- ])
54
- });
55
- }
56
- }
57
- exports.IpamDelegateAdmin = IpamDelegateAdmin;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbURlbGVnYXRlQWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pcGFtRGVsZWdhdGVBZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFDaEUsaURBQXNEO0FBQ3RELDJDQUF1QztBQUN2Qyx1RkFBb0Y7QUFNcEYsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUM5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDL0MsWUFBWSxFQUFFLG1CQUFtQjtZQUNqQyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLG9DQUFvQyxFQUFFLCtHQUErRztnQkFDN0osVUFBVSxFQUFFO29CQUNWLE1BQU0sRUFBRSxLQUFLO29CQUNiLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUN6QztnQkFDRCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUM3RDtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsb0NBQW9DO2dCQUM1QyxVQUFVLEVBQUU7b0JBQ1YsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFNBQVM7aUJBQ3pDO2dCQUNELGtCQUFrQixFQUNoQixlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQzdEO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxxQ0FBcUMsRUFBRSxnSEFBZ0g7Z0JBQy9KLFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsS0FBSztvQkFDYix1QkFBdUIsRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDekM7YUFDRjtZQUNELFlBQVksRUFBRSwyQkFBMkI7WUFDekMsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHdDQUF3Qzt3QkFDeEMseUNBQXlDO3dCQUN6QyxzQ0FBc0M7d0JBQ3RDLHVDQUF1Qzt3QkFDdkMsOENBQThDO3dCQUM5QyxnREFBZ0Q7d0JBQ2hELDZCQUE2QjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsOENBQThDO2lCQUNoRSxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5ERCw4Q0FtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuaW50ZXJmYWNlIElwYW1EZWxlZ2F0ZUFkbWluUHJvcHMge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIElwYW1EZWxlZ2F0ZUFkbWluIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElwYW1EZWxlZ2F0ZUFkbWluUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiaXBhbURlbGVnYXRlQWRtaW5cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImlwYW1EZWxlZ2F0ZUFkbWluXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkVDMlwiLFxuICAgICAgICBhY3Rpb246IFwiZW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0VDMi5odG1sI2VuYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnQtcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1EZWxlZ2F0ZUFkbWluXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJFQzJcIixcbiAgICAgICAgYWN0aW9uOiBcImVuYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1EZWxlZ2F0ZUFkbWluXCIpXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJFQzJcIixcbiAgICAgICAgYWN0aW9uOiBcImRpc2FibGVJcGFtT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvRUMyLmh0bWwjZGlzYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnQtcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6aXBhbURlbGVnYXRlQWRtaW5cIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJlYzI6RW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuICAgICAgICAgICAgXCJlYzI6RGlzYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnRcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpFbmFibGVBV1NTZXJ2aWNlQWNjZXNzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGlzYWJsZUFXU1NlcnZpY2VBY2Nlc3NcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpEZXJlZ2lzdGVyRGVsZWdhdGVkQWRtaW5pc3RyYXRvclwiLFxuICAgICAgICAgICAgXCJpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGVcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IEZpbmQgb3V0IHRoZSBleGFjdCBwcmluY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +0,0 @@
1
- import { Construct } from "constructs";
2
- interface IpamPoolIdProps {
3
- region: string;
4
- ownerId: string;
5
- accountId: string;
6
- }
7
- export declare class IpamPoolId extends Construct {
8
- constructor(scope: Construct, id: string, props: IpamPoolIdProps);
9
- }
10
- export {};
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IpamPoolId = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const constructs_1 = require("constructs");
6
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
7
- const customResources = require("aws-cdk-lib/custom-resources");
8
- class IpamPoolId extends constructs_1.Construct {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- const ipamPoolId = new awsCustomResource_1.AwsCustomResource(this, "IpamPoolIdResource", {
12
- functionName: "ipamPoolId",
13
- onCreate: {
14
- service: "ec2",
15
- action: "DescribeIpamPoolsCommand",
16
- parameters: {
17
- Filters: [
18
- {
19
- Name: "locale",
20
- Values: [props.region]
21
- }
22
- ]
23
- },
24
- physicalResourceId: customResources.PhysicalResourceId.of("ipamPoolId")
25
- },
26
- resourceType: "Custom::DescribeIpamPools"
27
- });
28
- // Create region-specific suffix for unique exports
29
- const regionSuffix = props.region.replace(/-/g, "");
30
- // Stores the IpamPoolId in CfnOutput with region suffix
31
- new aws_cdk_lib_1.CfnOutput(this, "IpamPoolIdOutput", {
32
- key: `IpamPoolId${props.accountId}${regionSuffix}`,
33
- value: ipamPoolId.getResponseField("IpamPools.0.IpamPoolId"),
34
- exportName: `IpamPoolId${props.accountId}${regionSuffix}`
35
- });
36
- }
37
- }
38
- exports.IpamPoolId = IpamPoolId;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xJZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2lwYW1Qb29sSWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXdDO0FBQ3hDLDJDQUF1QztBQUN2Qyx1RkFBb0Y7QUFDcEYsZ0VBQWdFO0FBUWhFLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNuRSxZQUFZLEVBQUUsWUFBWTtZQUMxQixRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLDBCQUEwQjtnQkFDbEMsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3lCQUN2QjtxQkFDRjtpQkFDRjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4RTtZQUNELFlBQVksRUFBRSwyQkFBMkI7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsbURBQW1EO1FBQ25ELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwRCx3REFBd0Q7UUFDeEQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUN0QyxHQUFHLEVBQUUsYUFBYSxLQUFLLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRTtZQUNsRCxLQUFLLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO1lBQzVELFVBQVUsRUFBRSxhQUFhLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWhDRCxnQ0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5cbmludGVyZmFjZSBJcGFtUG9vbElkUHJvcHMge1xuICByZWdpb246IHN0cmluZztcbiAgb3duZXJJZDogc3RyaW5nO1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIElwYW1Qb29sSWQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xJZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGlwYW1Qb29sSWQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJJcGFtUG9vbElkUmVzb3VyY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImlwYW1Qb29sSWRcIixcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiZWMyXCIsXG4gICAgICAgIGFjdGlvbjogXCJEZXNjcmliZUlwYW1Qb29sc0NvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTmFtZTogXCJsb2NhbGVcIixcbiAgICAgICAgICAgICAgVmFsdWVzOiBbcHJvcHMucmVnaW9uXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiaXBhbVBvb2xJZFwiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OkRlc2NyaWJlSXBhbVBvb2xzXCJcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSByZWdpb24tc3BlY2lmaWMgc3VmZml4IGZvciB1bmlxdWUgZXhwb3J0c1xuICAgIGNvbnN0IHJlZ2lvblN1ZmZpeCA9IHByb3BzLnJlZ2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpO1xuXG4gICAgLy8gU3RvcmVzIHRoZSBJcGFtUG9vbElkIGluIENmbk91dHB1dCB3aXRoIHJlZ2lvbiBzdWZmaXhcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiSXBhbVBvb2xJZE91dHB1dFwiLCB7XG4gICAgICBrZXk6IGBJcGFtUG9vbElkJHtwcm9wcy5hY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgIHZhbHVlOiBpcGFtUG9vbElkLmdldFJlc3BvbnNlRmllbGQoXCJJcGFtUG9vbHMuMC5JcGFtUG9vbElkXCIpLFxuICAgICAgZXhwb3J0TmFtZTogYElwYW1Qb29sSWQke3Byb3BzLmFjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { CfnOutput, type StackProps } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- import { type Account as ExistingAccounts } from "@aws-sdk/client-organizations";
4
- import { type KeyValue } from "../../types";
5
- interface OrganisationProps extends StackProps {
6
- organisationName: string;
7
- accounts: AccountsConfig;
8
- orgEmail: string;
9
- existingAccounts?: ExistingAccounts[];
10
- }
11
- type AccountsConfig = {
12
- readonly [key: string]: readonly string[] | string;
13
- };
14
- /**
15
- * A construct for creating multi environment organisations with a production, staging and development account.
16
- */
17
- export default class Organisation extends Construct {
18
- accountId: CfnOutput;
19
- private existingAccounts?;
20
- private accounts;
21
- private organisation;
22
- private organisationalUnits;
23
- constructor(scope: Construct, id: string, props: OrganisationProps);
24
- private addOrganisation;
25
- private addOrganisationUnitsAndAccounts;
26
- private addOrganisationalUnit;
27
- private addAccount;
28
- getAccounts(): KeyValue;
29
- }
30
- export {};