@fjall/components-infrastructure 0.73.15 → 0.73.17

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 (47) hide show
  1. package/dist/lib/config/aws/ipamPoolId.js +1 -5
  2. package/dist/lib/patterns/aws/ec2.d.ts +43 -0
  3. package/dist/lib/patterns/aws/ec2.js +123 -0
  4. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +3 -3
  5. package/dist/lib/resources/aws/networking/ipamPool.js +3 -3
  6. package/dist/lib/utils/getCidr.d.ts +8 -0
  7. package/dist/lib/utils/getCidr.js +40 -0
  8. package/package.json +3 -3
  9. package/dist/lib/__tests__/patterns/__snapshots__/compute.test.js.snap +0 -433
  10. package/dist/lib/__tests__/patterns/compute.test.d.ts +0 -1
  11. package/dist/lib/__tests__/patterns/compute.test.js +0 -137
  12. package/dist/lib/__tests__/simple.test.d.ts +0 -0
  13. package/dist/lib/__tests__/simple.test.js +0 -12
  14. package/dist/lib/resources/aws/backup/backupPlan.d.ts +0 -24
  15. package/dist/lib/resources/aws/backup/backupPlan.js +0 -172
  16. package/dist/lib/resources/aws/backup/backupVault.d.ts +0 -19
  17. package/dist/lib/resources/aws/backup/backupVault.js +0 -44
  18. package/dist/lib/resources/aws/backup/index.d.ts +0 -2
  19. package/dist/lib/resources/aws/backup/index.js +0 -19
  20. package/dist/lib/resources/aws/organisations/account.d.ts +0 -37
  21. package/dist/lib/resources/aws/organisations/account.js +0 -220
  22. package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +0 -14
  23. package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +0 -61
  24. package/dist/lib/resources/aws/organisations/index.d.ts +0 -8
  25. package/dist/lib/resources/aws/organisations/index.js +0 -22
  26. package/dist/lib/resources/aws/organisations/interfaces.d.ts +0 -105
  27. package/dist/lib/resources/aws/organisations/interfaces.js +0 -3
  28. package/dist/lib/resources/aws/organisations/organisation.d.ts +0 -47
  29. package/dist/lib/resources/aws/organisations/organisation.js +0 -263
  30. package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +0 -28
  31. package/dist/lib/resources/aws/organisations/organisationalUnit.js +0 -170
  32. package/dist/lib/resources/aws/organisations/policy.d.ts +0 -17
  33. package/dist/lib/resources/aws/organisations/policy.js +0 -93
  34. package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +0 -13
  35. package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +0 -58
  36. package/dist/lib/resources/aws/organisations/types.d.ts +0 -165
  37. package/dist/lib/resources/aws/organisations/types.js +0 -36
  38. package/dist/lib/utils/directTagging.d.ts +0 -31
  39. package/dist/lib/utils/directTagging.js +0 -86
  40. package/dist/lib/utils/fjallConstruct.d.ts +0 -8
  41. package/dist/lib/utils/fjallConstruct.js +0 -18
  42. package/dist/lib/utils/fjallStackSynthesizer.d.ts +0 -9
  43. package/dist/lib/utils/fjallStackSynthesizer.js +0 -22
  44. package/dist/lib/utils/tagContext.d.ts +0 -28
  45. package/dist/lib/utils/tagContext.js +0 -53
  46. package/dist/lib/utils/tagSynthesizer.d.ts +0 -13
  47. package/dist/lib/utils/tagSynthesizer.js +0 -55
@@ -1,170 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrganisationalUnit = 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 constructs_1 = require("constructs");
8
- const awsCustomResource_1 = require("../utilities/awsCustomResource");
9
- /**
10
- * AWS Organisational Unit construct for managing OUs
11
- */
12
- class OrganisationalUnit extends constructs_1.Construct {
13
- constructor(scope, id, props) {
14
- super(scope, id);
15
- this.organisationalUnitName = props.organisationalUnitName;
16
- const importOnDuplicate = props.importOnDuplicate ?? true;
17
- const removalPolicy = props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.RETAIN;
18
- // Create organisational unit
19
- const ouResource = new awsCustomResource_1.AwsCustomResource(this, "OrganisationalUnitResource", {
20
- functionName: `manageOU${this.normalizeOUName(props.organisationalUnitName)}`,
21
- onCreate: {
22
- service: "organizations",
23
- action: "CreateOrganizationalUnitCommand",
24
- parameters: {
25
- ParentId: props.parent.organisationalUnitId,
26
- Name: props.organisationalUnitName
27
- },
28
- physicalResourceId: customResources.PhysicalResourceId.of(`ou-${props.organisationalUnitName}-${props.parent.organisationalUnitId}`),
29
- ignoreErrorCodesMatching: importOnDuplicate
30
- ? "DuplicateOrganizationalUnitException"
31
- : undefined
32
- },
33
- onUpdate: {
34
- service: "organizations",
35
- action: "DescribeOrganizationalUnitCommand",
36
- parameters: {
37
- OrganizationalUnitId: this.organisationalUnitId
38
- },
39
- physicalResourceId: customResources.PhysicalResourceId.of(`ou-${props.organisationalUnitName}-${props.parent.organisationalUnitId}`)
40
- },
41
- onDelete: removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY
42
- ? {
43
- service: "organizations",
44
- action: "DeleteOrganizationalUnitCommand",
45
- parameters: {
46
- OrganizationalUnitId: this.organisationalUnitId
47
- }
48
- }
49
- : undefined,
50
- resourceType: "Custom::OrganisationalUnit",
51
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
52
- new aws_iam_1.PolicyStatement({
53
- actions: [
54
- "organizations:CreateOrganizationalUnit",
55
- "organizations:DescribeOrganizationalUnit",
56
- "organizations:DeleteOrganizationalUnit",
57
- "organizations:ListOrganizationalUnitsForParent",
58
- "organizations:UpdateOrganizationalUnit"
59
- ],
60
- resources: ["*"],
61
- effect: aws_iam_1.Effect.ALLOW
62
- })
63
- ])
64
- });
65
- // Handle import case - if OU already exists, get its details
66
- if (importOnDuplicate) {
67
- const existingOUResource = new awsCustomResource_1.AwsCustomResource(this, "FindExistingOU", {
68
- functionName: `findOU${this.normalizeOUName(props.organisationalUnitName)}`,
69
- onCreate: {
70
- service: "organizations",
71
- action: "ListOrganizationalUnitsForParentCommand",
72
- parameters: {
73
- ParentId: props.parent.organisationalUnitId
74
- },
75
- physicalResourceId: customResources.PhysicalResourceId.of(`find-ou-${props.organisationalUnitName}-${props.parent.organisationalUnitId}`)
76
- },
77
- resourceType: "Custom::FindExistingOU",
78
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
79
- new aws_iam_1.PolicyStatement({
80
- actions: ["organizations:ListOrganizationalUnitsForParent"],
81
- resources: ["*"],
82
- effect: aws_iam_1.Effect.ALLOW
83
- })
84
- ])
85
- });
86
- // Use a custom function to extract the OU ID from the list
87
- this.organisationalUnitId =
88
- this.extractOUIdFromList(existingOUResource.getResponseField("OrganizationalUnits"), props.organisationalUnitName) || ouResource.getResponseField("OrganizationalUnit.Id");
89
- }
90
- else {
91
- this.organisationalUnitId = ouResource.getResponseField("OrganizationalUnit.Id");
92
- }
93
- this.organisationalUnitArn = ouResource.getResponseField("OrganizationalUnit.Arn");
94
- // Export OU details
95
- new aws_cdk_lib_1.CfnOutput(this, "OrganisationalUnitId", {
96
- key: `${id}Id`,
97
- value: this.organisationalUnitId,
98
- exportName: `${id}Id`
99
- });
100
- new aws_cdk_lib_1.CfnOutput(this, "OrganisationalUnitArn", {
101
- key: `${id}Arn`,
102
- value: this.organisationalUnitArn,
103
- exportName: `${id}Arn`
104
- });
105
- }
106
- /**
107
- * Attach policy to this organisational unit
108
- */
109
- attachPolicy(policy) {
110
- const policyName = this.normalizePolicyName(policy.policyName);
111
- new awsCustomResource_1.AwsCustomResource(this, `AttachPolicy${policyName}`, {
112
- functionName: `attachPolicyToOU${policyName}${this.normalizeOUName(this.organisationalUnitName)}`,
113
- onCreate: {
114
- service: "organizations",
115
- action: "AttachPolicyCommand",
116
- parameters: {
117
- PolicyId: policy.policyId,
118
- TargetId: this.organisationalUnitId
119
- },
120
- physicalResourceId: customResources.PhysicalResourceId.of(`attach-policy-${policy.policyId}-to-${this.organisationalUnitId}`)
121
- },
122
- onDelete: {
123
- service: "organizations",
124
- action: "DetachPolicyCommand",
125
- parameters: {
126
- PolicyId: policy.policyId,
127
- TargetId: this.organisationalUnitId
128
- }
129
- },
130
- resourceType: "Custom::AttachPolicyToOU",
131
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
132
- new aws_iam_1.PolicyStatement({
133
- actions: [
134
- "organizations:AttachPolicy",
135
- "organizations:DetachPolicy",
136
- "organizations:ListPoliciesForTarget"
137
- ],
138
- resources: ["*"],
139
- effect: aws_iam_1.Effect.ALLOW
140
- })
141
- ])
142
- });
143
- }
144
- /**
145
- * Helper to normalize OU names for construct IDs
146
- */
147
- normalizeOUName(ouName) {
148
- return ouName
149
- .replace(/[^a-zA-Z0-9]/g, "")
150
- .replace(/^([a-z])/, (match) => match.toUpperCase());
151
- }
152
- /**
153
- * Helper to normalize policy names for construct IDs
154
- */
155
- normalizePolicyName(policyName) {
156
- return policyName
157
- .replace(/[^a-zA-Z0-9]/g, "")
158
- .replace(/^([a-z])/, (match) => match.toUpperCase());
159
- }
160
- /**
161
- * Extract OU ID from list response (this would need custom logic in the Lambda)
162
- */
163
- extractOUIdFromList(organisationalUnits, name) {
164
- // This is a placeholder - in reality, you'd need custom Lambda logic to parse the list
165
- // For now, we'll rely on the create operation with ignoreErrorCodesMatching
166
- return undefined;
167
- }
168
- }
169
- exports.OrganisationalUnit = OrganisationalUnit;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uYWxVbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9ucy9vcmdhbmlzYXRpb25hbFVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBQ3ZELGdFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBR3ZDLHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsa0JBQ1gsU0FBUSxzQkFBUztJQU9qQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE1BQU0sQ0FBQztRQUVsRSw2QkFBNkI7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxxQ0FBaUIsQ0FDdEMsSUFBSSxFQUNKLDRCQUE0QixFQUM1QjtZQUNFLFlBQVksRUFBRSxXQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDN0UsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsaUNBQWlDO2dCQUN6QyxVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CO29CQUMzQyxJQUFJLEVBQUUsS0FBSyxDQUFDLHNCQUFzQjtpQkFDbkM7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsTUFBTSxLQUFLLENBQUMsc0JBQXNCLElBQUks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cm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElPcmdhbmlzYXRpb25hbFVuaXQsIElQb2xpY3kgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBPcmdhbmlzYXRpb25hbFVuaXRQcm9wcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBBV1MgT3JnYW5pc2F0aW9uYWwgVW5pdCBjb25zdHJ1Y3QgZm9yIG1hbmFnaW5nIE9Vc1xuICovXG5leHBvcnQgY2xhc3MgT3JnYW5pc2F0aW9uYWxVbml0XG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSU9yZ2FuaXNhdGlvbmFsVW5pdFxue1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXRJZDogc3RyaW5nO1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXRBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgb3JnYW5pc2F0aW9uYWxVbml0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBPcmdhbmlzYXRpb25hbFVuaXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdE5hbWUgPSBwcm9wcy5vcmdhbmlzYXRpb25hbFVuaXROYW1lO1xuICAgIGNvbnN0IGltcG9ydE9uRHVwbGljYXRlID0gcHJvcHMuaW1wb3J0T25EdXBsaWNhdGUgPz8gdHJ1ZTtcbiAgICBjb25zdCByZW1vdmFsUG9saWN5ID0gcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LlJFVEFJTjtcblxuICAgIC8vIENyZWF0ZSBvcmdhbmlzYXRpb25hbCB1bml0XG4gICAgY29uc3Qgb3VSZXNvdXJjZSA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcIk9yZ2FuaXNhdGlvbmFsVW5pdFJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogYG1hbmFnZU9VJHt0aGlzLm5vcm1hbGl6ZU9VTmFtZShwcm9wcy5vcmdhbmlzYXRpb25hbFVuaXROYW1lKX1gLFxuICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICAgIGFjdGlvbjogXCJDcmVhdGVPcmdhbml6YXRpb25hbFVuaXRDb21tYW5kXCIsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgUGFyZW50SWQ6IHByb3BzLnBhcmVudC5vcmdhbmlzYXRpb25hbFVuaXRJZCxcbiAgICAgICAgICAgIE5hbWU6IHByb3BzLm9yZ2FuaXNhdGlvbmFsVW5pdE5hbWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgIGBvdS0ke3Byb3BzLm9yZ2FuaXNhdGlvbmFsVW5pdE5hbWV9LSR7cHJvcHMucGFyZW50Lm9yZ2FuaXNhdGlvbmFsVW5pdElkfWBcbiAgICAgICAgICApLFxuICAgICAgICAgIGlnbm9yZUVycm9yQ29kZXNNYXRjaGluZzogaW1wb3J0T25EdXBsaWNhdGVcbiAgICAgICAgICAgID8gXCJEdXBsaWNhdGVPcmdhbml6YXRpb25hbFVuaXRFeGNlcHRpb25cIlxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgICBhY3Rpb246IFwiRGVzY3JpYmVPcmdhbml6YXRpb25hbFVuaXRDb21tYW5kXCIsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgT3JnYW5pemF0aW9uYWxVbml0SWQ6IHRoaXMub3JnYW5pc2F0aW9uYWxVbml0SWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgIGBvdS0ke3Byb3BzLm9yZ2FuaXNhdGlvbmFsVW5pdE5hbWV9LSR7cHJvcHMucGFyZW50Lm9yZ2FuaXNhdGlvbmFsVW5pdElkfWBcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIG9uRGVsZXRlOlxuICAgICAgICAgIHJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBcIkRlbGV0ZU9yZ2FuaXphdGlvbmFsVW5pdENvbW1hbmRcIixcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICBPcmdhbml6YXRpb25hbFVuaXRJZDogdGhpcy5vcmdhbmlzYXRpb25hbFVuaXRJZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok9yZ2FuaXNhdGlvbmFsVW5pdFwiLFxuICAgICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpDcmVhdGVPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRlc2NyaWJlT3JnYW5pemF0aW9uYWxVbml0XCIsXG4gICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpEZWxldGVPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkxpc3RPcmdhbml6YXRpb25hbFVuaXRzRm9yUGFyZW50XCIsXG4gICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpVcGRhdGVPcmdhbml6YXRpb25hbFVuaXRcIlxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgICAgfSlcbiAgICAgICAgXSlcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gSGFuZGxlIGltcG9ydCBjYXNlIC0gaWYgT1UgYWxyZWFkeSBleGlzdHMsIGdldCBpdHMgZGV0YWlsc1xuICAgIGlmIChpbXBvcnRPbkR1cGxpY2F0ZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPVVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiRmluZEV4aXN0aW5nT1VcIiwge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IGBmaW5kT1Uke3RoaXMubm9ybWFsaXplT1VOYW1lKHByb3BzLm9yZ2FuaXNhdGlvbmFsVW5pdE5hbWUpfWAsXG4gICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgICAgYWN0aW9uOiBcIkxpc3RPcmdhbml6YXRpb25hbFVuaXRzRm9yUGFyZW50Q29tbWFuZFwiLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIFBhcmVudElkOiBwcm9wcy5wYXJlbnQub3JnYW5pc2F0aW9uYWxVbml0SWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgIGBmaW5kLW91LSR7cHJvcHMub3JnYW5pc2F0aW9uYWxVbml0TmFtZX0tJHtwcm9wcy5wYXJlbnQub3JnYW5pc2F0aW9uYWxVbml0SWR9YFxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6RmluZEV4aXN0aW5nT1VcIixcbiAgICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wib3JnYW5pemF0aW9uczpMaXN0T3JnYW5pemF0aW9uYWxVbml0c0ZvclBhcmVudFwiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgICAgfSlcbiAgICAgICAgXSlcbiAgICAgIH0pO1xuXG4gICAgICAvLyBVc2UgYSBjdXN0b20gZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgT1UgSUQgZnJvbSB0aGUgbGlzdFxuICAgICAgdGhpcy5vcmdhbmlzYXRpb25hbFVuaXRJZCA9XG4gICAgICAgIHRoaXMuZXh0cmFjdE9VSWRGcm9tTGlzdChcbiAgICAgICAgICBleGlzdGluZ09VUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIk9yZ2FuaXphdGlvbmFsVW5pdHNcIiksXG4gICAgICAgICAgcHJvcHMub3JnYW5pc2F0aW9uYWxVbml0TmFtZVxuICAgICAgICApIHx8IG91UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIk9yZ2FuaXphdGlvbmFsVW5pdC5JZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcmdhbmlzYXRpb25hbFVuaXRJZCA9IG91UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgICAgXCJPcmdhbml6YXRpb25hbFVuaXQuSWRcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdEFybiA9IG91UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiT3JnYW5pemF0aW9uYWxVbml0LkFyblwiXG4gICAgKTtcblxuICAgIC8vIEV4cG9ydCBPVSBkZXRhaWxzXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIk9yZ2FuaXNhdGlvbmFsVW5pdElkXCIsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IHRoaXMub3JnYW5pc2F0aW9uYWxVbml0SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJPcmdhbmlzYXRpb25hbFVuaXRBcm5cIiwge1xuICAgICAga2V5OiBgJHtpZH1Bcm5gLFxuICAgICAgdmFsdWU6IHRoaXMub3JnYW5pc2F0aW9uYWxVbml0QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBwb2xpY3kgdG8gdGhpcyBvcmdhbmlzYXRpb25hbCB1bml0XG4gICAqL1xuICBhdHRhY2hQb2xpY3kocG9saWN5OiBJUG9saWN5KTogdm9pZCB7XG4gICAgY29uc3QgcG9saWN5TmFtZSA9IHRoaXMubm9ybWFsaXplUG9saWN5TmFtZShwb2xpY3kucG9saWN5TmFtZSk7XG5cbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYEF0dGFjaFBvbGljeSR7cG9saWN5TmFtZX1gLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGBhdHRhY2hQb2xpY3lUb09VJHtwb2xpY3lOYW1lfSR7dGhpcy5ub3JtYWxpemVPVU5hbWUodGhpcy5vcmdhbmlzYXRpb25hbFVuaXROYW1lKX1gLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJBdHRhY2hQb2xpY3lDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBQb2xpY3lJZDogcG9saWN5LnBvbGljeUlkLFxuICAgICAgICAgIFRhcmdldElkOiB0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdElkXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgYXR0YWNoLXBvbGljeS0ke3BvbGljeS5wb2xpY3lJZH0tdG8tJHt0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdElkfWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGV0YWNoUG9saWN5Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgUG9saWN5SWQ6IHBvbGljeS5wb2xpY3lJZCxcbiAgICAgICAgICBUYXJnZXRJZDogdGhpcy5vcmdhbmlzYXRpb25hbFVuaXRJZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6QXR0YWNoUG9saWN5VG9PVVwiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6QXR0YWNoUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGV0YWNoUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6TGlzdFBvbGljaWVzRm9yVGFyZ2V0XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPV1xuICAgICAgICB9KVxuICAgICAgXSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gbm9ybWFsaXplIE9VIG5hbWVzIGZvciBjb25zdHJ1Y3QgSURzXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU9VTmFtZShvdU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG91TmFtZVxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL14oW2Etel0pLywgKG1hdGNoKSA9PiBtYXRjaC50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gbm9ybWFsaXplIHBvbGljeSBuYW1lcyBmb3IgY29uc3RydWN0IElEc1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVQb2xpY3lOYW1lKHBvbGljeU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBvbGljeU5hbWVcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC9eKFthLXpdKS8sIChtYXRjaCkgPT4gbWF0Y2gudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBPVSBJRCBmcm9tIGxpc3QgcmVzcG9uc2UgKHRoaXMgd291bGQgbmVlZCBjdXN0b20gbG9naWMgaW4gdGhlIExhbWJkYSlcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdE9VSWRGcm9tTGlzdChcbiAgICBvcmdhbmlzYXRpb25hbFVuaXRzOiBhbnksXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gVGhpcyBpcyBhIHBsYWNlaG9sZGVyIC0gaW4gcmVhbGl0eSwgeW91J2QgbmVlZCBjdXN0b20gTGFtYmRhIGxvZ2ljIHRvIHBhcnNlIHRoZSBsaXN0XG4gICAgLy8gRm9yIG5vdywgd2UnbGwgcmVseSBvbiB0aGUgY3JlYXRlIG9wZXJhdGlvbiB3aXRoIGlnbm9yZUVycm9yQ29kZXNNYXRjaGluZ1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,17 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { IPolicy } from "./interfaces";
3
- import { PolicyProps, PolicyType } from "./types";
4
- /**
5
- * AWS Organisations Policy construct for managing policies
6
- */
7
- export declare class Policy extends Construct implements IPolicy {
8
- readonly policyId: string;
9
- readonly policyArn: string;
10
- readonly policyName: string;
11
- readonly policyType: PolicyType;
12
- constructor(scope: Construct, id: string, props: PolicyProps);
13
- /**
14
- * Helper to normalize policy names for construct IDs
15
- */
16
- private normalizePolicyName;
17
- }
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Policy = 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 constructs_1 = require("constructs");
8
- const awsCustomResource_1 = require("../utilities/awsCustomResource");
9
- /**
10
- * AWS Organisations Policy construct for managing policies
11
- */
12
- class Policy extends constructs_1.Construct {
13
- constructor(scope, id, props) {
14
- super(scope, id);
15
- this.policyName = props.policyName;
16
- this.policyType = props.policyType;
17
- const importOnDuplicate = props.importOnDuplicate ?? true;
18
- // Create policy
19
- const policyResource = new awsCustomResource_1.AwsCustomResource(this, "PolicyResource", {
20
- functionName: `managePolicy${this.normalizePolicyName(props.policyName)}`,
21
- onCreate: {
22
- service: "organizations",
23
- action: "CreatePolicyCommand",
24
- parameters: {
25
- Name: props.policyName,
26
- Description: props.description,
27
- Content: props.content,
28
- Type: props.policyType
29
- },
30
- physicalResourceId: customResources.PhysicalResourceId.of(`policy-${props.policyName}-${props.policyType}`),
31
- ignoreErrorCodesMatching: importOnDuplicate
32
- ? "DuplicatePolicyException"
33
- : undefined
34
- },
35
- onUpdate: {
36
- service: "organizations",
37
- action: "UpdatePolicyCommand",
38
- parameters: {
39
- PolicyId: this.policyId,
40
- Name: props.policyName,
41
- Description: props.description,
42
- Content: props.content
43
- },
44
- physicalResourceId: customResources.PhysicalResourceId.of(`policy-${props.policyName}-${props.policyType}`)
45
- },
46
- onDelete: {
47
- service: "organizations",
48
- action: "DeletePolicyCommand",
49
- parameters: {
50
- PolicyId: this.policyId
51
- }
52
- },
53
- resourceType: "Custom::Policy",
54
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
55
- new aws_iam_1.PolicyStatement({
56
- actions: [
57
- "organizations:CreatePolicy",
58
- "organizations:UpdatePolicy",
59
- "organizations:DeletePolicy",
60
- "organizations:DescribePolicy",
61
- "organizations:ListPolicies"
62
- ],
63
- resources: ["*"],
64
- effect: aws_iam_1.Effect.ALLOW
65
- })
66
- ])
67
- });
68
- // Get policy details from the create operation
69
- this.policyId = policyResource.getResponseField("Policy.PolicySummary.Id");
70
- this.policyArn = policyResource.getResponseField("Policy.PolicySummary.Arn");
71
- // Export policy details
72
- new aws_cdk_lib_1.CfnOutput(this, "PolicyId", {
73
- key: `${id}Id`,
74
- value: this.policyId,
75
- exportName: `${id}Id`
76
- });
77
- new aws_cdk_lib_1.CfnOutput(this, "PolicyArn", {
78
- key: `${id}Arn`,
79
- value: this.policyArn,
80
- exportName: `${id}Arn`
81
- });
82
- }
83
- /**
84
- * Helper to normalize policy names for construct IDs
85
- */
86
- normalizePolicyName(policyName) {
87
- return policyName
88
- .replace(/[^a-zA-Z0-9]/g, "")
89
- .replace(/^([a-z])/, (match) => match.toUpperCase());
90
- }
91
- }
92
- exports.Policy = Policy;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9ucy9wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBQ3ZELGdFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBR3ZDLHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsTUFBTyxTQUFRLHNCQUFTO0lBTW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUUxRCxnQkFBZ0I7UUFDaEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDbkUsWUFBWSxFQUFFLGVBQWUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6RSxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxxQkFBcUI7Z0JBQzdCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7b0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7aUJBQ3ZCO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELFVBQVUsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQ2pEO2dCQUNELHdCQUF3QixFQUFFLGlCQUFpQjtvQkFDekMsQ0FBQyxDQUFDLDBCQUEwQjtvQkFDNUIsQ0FBQyxDQUFDLFNBQVM7YUFDZDtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVO29CQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztpQkFDdkI7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsVUFBVSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FDakQ7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDeEI7YUFDRjtZQUNELFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1Qiw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3FCQUM3QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0JBQ2hCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7aUJBQ3JCLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQzlDLDBCQUEwQixDQUMzQixDQUFDO1FBRUYsd0JBQXdCO1FBQ3hCLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNwQixVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDL0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxVQUFrQjtRQUM1QyxPQUFPLFVBQVU7YUFDZCxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFoR0Qsd0JBZ0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJUG9saWN5IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUG9saWN5UHJvcHMsIFBvbGljeVR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbi8qKlxuICogQVdTIE9yZ2FuaXNhdGlvbnMgUG9saWN5IGNvbnN0cnVjdCBmb3IgbWFuYWdpbmcgcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBvbGljeSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQb2xpY3kge1xuICByZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xuICByZWFkb25seSBwb2xpY3lBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwb2xpY3lUeXBlOiBQb2xpY3lUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnBvbGljeU5hbWUgPSBwcm9wcy5wb2xpY3lOYW1lO1xuICAgIHRoaXMucG9saWN5VHlwZSA9IHByb3BzLnBvbGljeVR5cGU7XG4gICAgY29uc3QgaW1wb3J0T25EdXBsaWNhdGUgPSBwcm9wcy5pbXBvcnRPbkR1cGxpY2F0ZSA/PyB0cnVlO1xuXG4gICAgLy8gQ3JlYXRlIHBvbGljeVxuICAgIGNvbnN0IHBvbGljeVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiUG9saWN5UmVzb3VyY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBgbWFuYWdlUG9saWN5JHt0aGlzLm5vcm1hbGl6ZVBvbGljeU5hbWUocHJvcHMucG9saWN5TmFtZSl9YCxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiQ3JlYXRlUG9saWN5Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMucG9saWN5TmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgQ29udGVudDogcHJvcHMuY29udGVudCxcbiAgICAgICAgICBUeXBlOiBwcm9wcy5wb2xpY3lUeXBlXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgcG9saWN5LSR7cHJvcHMucG9saWN5TmFtZX0tJHtwcm9wcy5wb2xpY3lUeXBlfWBcbiAgICAgICAgKSxcbiAgICAgICAgaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nOiBpbXBvcnRPbkR1cGxpY2F0ZVxuICAgICAgICAgID8gXCJEdXBsaWNhdGVQb2xpY3lFeGNlcHRpb25cIlxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJVcGRhdGVQb2xpY3lDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBQb2xpY3lJZDogdGhpcy5wb2xpY3lJZCxcbiAgICAgICAgICBOYW1lOiBwcm9wcy5wb2xpY3lOYW1lLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBDb250ZW50OiBwcm9wcy5jb250ZW50XG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgcG9saWN5LSR7cHJvcHMucG9saWN5TmFtZX0tJHtwcm9wcy5wb2xpY3lUeXBlfWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGVsZXRlUG9saWN5Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgUG9saWN5SWQ6IHRoaXMucG9saWN5SWRcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlBvbGljeVwiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6Q3JlYXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6VXBkYXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVsZXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVzY3JpYmVQb2xpY3lcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpMaXN0UG9saWNpZXNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgLy8gR2V0IHBvbGljeSBkZXRhaWxzIGZyb20gdGhlIGNyZWF0ZSBvcGVyYXRpb25cbiAgICB0aGlzLnBvbGljeUlkID0gcG9saWN5UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpO1xuICAgIHRoaXMucG9saWN5QXJuID0gcG9saWN5UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiUG9saWN5LlBvbGljeVN1bW1hcnkuQXJuXCJcbiAgICApO1xuXG4gICAgLy8gRXhwb3J0IHBvbGljeSBkZXRhaWxzXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIlBvbGljeUlkXCIsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IHRoaXMucG9saWN5SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJQb2xpY3lBcm5cIiwge1xuICAgICAga2V5OiBgJHtpZH1Bcm5gLFxuICAgICAgdmFsdWU6IHRoaXMucG9saWN5QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgcG9saWN5IG5hbWVzIGZvciBjb25zdHJ1Y3QgSURzXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZVBvbGljeU5hbWUocG9saWN5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcG9saWN5TmFtZVxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL14oW2Etel0pLywgKG1hdGNoKSA9PiBtYXRjaC50b1VwcGVyQ2FzZSgpKTtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { TrustedServiceAccessProps } from "./types";
3
- /**
4
- * AWS Organisations Trusted Service Access construct
5
- */
6
- export declare class TrustedServiceAccess extends Construct {
7
- readonly servicePrincipal: string;
8
- constructor(scope: Construct, id: string, props: TrustedServiceAccessProps);
9
- /**
10
- * Helper to normalize service names for construct IDs
11
- */
12
- private normalizeServiceName;
13
- }
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TrustedServiceAccess = 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("../utilities/awsCustomResource");
8
- /**
9
- * AWS Organisations Trusted Service Access construct
10
- */
11
- class TrustedServiceAccess extends constructs_1.Construct {
12
- constructor(scope, id, props) {
13
- super(scope, id);
14
- this.servicePrincipal = props.servicePrincipal;
15
- const serviceName = this.normalizeServiceName(props.servicePrincipal);
16
- // Enable trusted service access
17
- new awsCustomResource_1.AwsCustomResource(this, "TrustedServiceAccessResource", {
18
- functionName: `enableTrustedService${serviceName}`,
19
- onCreate: {
20
- service: "organizations",
21
- action: "EnableAWSServiceAccessCommand",
22
- parameters: {
23
- ServicePrincipal: props.servicePrincipal
24
- },
25
- physicalResourceId: customResources.PhysicalResourceId.of(`trusted-service-${props.servicePrincipal}`)
26
- },
27
- onDelete: {
28
- service: "organizations",
29
- action: "DisableAWSServiceAccessCommand",
30
- parameters: {
31
- ServicePrincipal: props.servicePrincipal
32
- }
33
- },
34
- resourceType: "Custom::TrustedServiceAccess",
35
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
36
- new aws_iam_1.PolicyStatement({
37
- actions: [
38
- "organizations:EnableAWSServiceAccess",
39
- "organizations:DisableAWSServiceAccess",
40
- "organizations:ListAWSServiceAccessForOrganization"
41
- ],
42
- resources: ["*"],
43
- effect: aws_iam_1.Effect.ALLOW
44
- })
45
- ])
46
- });
47
- }
48
- /**
49
- * Helper to normalize service names for construct IDs
50
- */
51
- normalizeServiceName(servicePrincipal) {
52
- return servicePrincipal
53
- .replace(/[^a-zA-Z0-9]/g, "")
54
- .replace(/^([a-z])/, (match) => match.toUpperCase());
55
- }
56
- }
57
- exports.TrustedServiceAccess = TrustedServiceAccess;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZFNlcnZpY2VBY2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25zL3RydXN0ZWRTZXJ2aWNlQWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBRXZDLHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFHakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRFLGdDQUFnQztRQUNoQyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSw4QkFBOEIsRUFBRTtZQUMxRCxZQUFZLEVBQUUsdUJBQXVCLFdBQVcsRUFBRTtZQUNsRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSwrQkFBK0I7Z0JBQ3ZDLFVBQVUsRUFBRTtvQkFDVixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2lCQUN6QztnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCxtQkFBbUIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQzVDO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2lCQUN6QzthQUNGO1lBQ0QsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1Asc0NBQXNDO3dCQUN0Qyx1Q0FBdUM7d0JBQ3ZDLG1EQUFtRDtxQkFDcEQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNoQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2lCQUNyQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLGdCQUF3QjtRQUNuRCxPQUFPLGdCQUFnQjthQUNwQixPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFyREQsb0RBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVHJ1c3RlZFNlcnZpY2VBY2Nlc3NQcm9wcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBBV1MgT3JnYW5pc2F0aW9ucyBUcnVzdGVkIFNlcnZpY2UgQWNjZXNzIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFNlcnZpY2VBY2Nlc3MgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICByZWFkb25seSBzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRydXN0ZWRTZXJ2aWNlQWNjZXNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zZXJ2aWNlUHJpbmNpcGFsID0gcHJvcHMuc2VydmljZVByaW5jaXBhbDtcblxuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gdGhpcy5ub3JtYWxpemVTZXJ2aWNlTmFtZShwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsKTtcblxuICAgIC8vIEVuYWJsZSB0cnVzdGVkIHNlcnZpY2UgYWNjZXNzXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiVHJ1c3RlZFNlcnZpY2VBY2Nlc3NSZXNvdXJjZVwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGBlbmFibGVUcnVzdGVkU2VydmljZSR7c2VydmljZU5hbWV9YCxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRW5hYmxlQVdTU2VydmljZUFjY2Vzc0NvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFNlcnZpY2VQcmluY2lwYWw6IHByb3BzLnNlcnZpY2VQcmluY2lwYWxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGB0cnVzdGVkLXNlcnZpY2UtJHtwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsfWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGlzYWJsZUFXU1NlcnZpY2VBY2Nlc3NDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBTZXJ2aWNlUHJpbmNpcGFsOiBwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpUcnVzdGVkU2VydmljZUFjY2Vzc1wiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RW5hYmxlQVdTU2VydmljZUFjY2Vzc1wiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRpc2FibGVBV1NTZXJ2aWNlQWNjZXNzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6TGlzdEFXU1NlcnZpY2VBY2Nlc3NGb3JPcmdhbml6YXRpb25cIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc2VydmljZSBuYW1lcyBmb3IgY29uc3RydWN0IElEc1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVTZXJ2aWNlTmFtZShzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiXCIpXG4gICAgICAucmVwbGFjZSgvXihbYS16XSkvLCAobWF0Y2gpID0+IG1hdGNoLnRvVXBwZXJDYXNlKCkpO1xuICB9XG59XG4iXX0=
@@ -1,165 +0,0 @@
1
- import { RemovalPolicy } from "aws-cdk-lib";
2
- /**
3
- * Feature set for AWS Organisations
4
- */
5
- export declare enum FeatureSet {
6
- /**
7
- * Consolidated Billing features only
8
- */
9
- CONSOLIDATED_BILLING = "CONSOLIDATED_BILLING",
10
- /**
11
- * All features including SCPs, delegated administrators, etc.
12
- */
13
- ALL = "ALL"
14
- }
15
- /**
16
- * AWS Organisations policy types
17
- */
18
- export declare enum PolicyType {
19
- SERVICE_CONTROL_POLICY = "SERVICE_CONTROL_POLICY",
20
- TAG_POLICY = "TAG_POLICY",
21
- BACKUP_POLICY = "BACKUP_POLICY",
22
- AISERVICES_OPT_OUT_POLICY = "AISERVICES_OPT_OUT_POLICY"
23
- }
24
- /**
25
- * IAM user access to billing information
26
- */
27
- export declare enum IamUserAccessToBilling {
28
- ALLOW = "ALLOW",
29
- DENY = "DENY"
30
- }
31
- /**
32
- * Basic organisational unit interface for type references
33
- */
34
- export interface IOrganisationalUnitBasic {
35
- readonly organisationalUnitId: string;
36
- readonly organisationalUnitArn: string;
37
- readonly organisationalUnitName: string;
38
- }
39
- /**
40
- * Properties for creating an Organisation
41
- */
42
- export interface OrganisationProps {
43
- /**
44
- * Feature set for the organisation
45
- * @default FeatureSet.ALL
46
- */
47
- readonly featureSet?: FeatureSet;
48
- /**
49
- * Whether to import existing organisation if found
50
- * @default true
51
- */
52
- readonly importOnDuplicate?: boolean;
53
- }
54
- /**
55
- * Properties for creating an Organisational Unit
56
- */
57
- export interface OrganisationalUnitProps {
58
- /**
59
- * Name of the organisational unit
60
- */
61
- readonly organisationalUnitName: string;
62
- /**
63
- * Parent organisation or organisational unit
64
- */
65
- readonly parent: IOrganisationalUnitBasic;
66
- /**
67
- * Whether to import existing OU if found
68
- * @default true
69
- */
70
- readonly importOnDuplicate?: boolean;
71
- /**
72
- * Removal policy for this resource
73
- * @default RemovalPolicy.RETAIN
74
- */
75
- readonly removalPolicy?: RemovalPolicy;
76
- }
77
- /**
78
- * Properties for creating an Account
79
- */
80
- export interface AccountProps {
81
- /**
82
- * Name of the account
83
- */
84
- readonly accountName: string;
85
- /**
86
- * Email address for the account
87
- */
88
- readonly email: string;
89
- /**
90
- * Parent organisation or organisational unit
91
- */
92
- readonly parent: IOrganisationalUnitBasic;
93
- /**
94
- * Whether to import existing account if found
95
- * @default true
96
- */
97
- readonly importOnDuplicate?: boolean;
98
- /**
99
- * Removal policy for this resource
100
- * @default RemovalPolicy.RETAIN
101
- */
102
- readonly removalPolicy?: RemovalPolicy;
103
- /**
104
- * IAM user access to billing
105
- * @default IamUserAccessToBilling.ALLOW
106
- */
107
- readonly iamUserAccessToBilling?: IamUserAccessToBilling;
108
- /**
109
- * Cross-account role name for management access
110
- * @default "OrganisationAccountAccessRole"
111
- */
112
- readonly roleName?: string;
113
- }
114
- /**
115
- * Properties for creating a Policy
116
- */
117
- export interface PolicyProps {
118
- /**
119
- * Name of the policy
120
- */
121
- readonly policyName: string;
122
- /**
123
- * Description of the policy
124
- */
125
- readonly description: string;
126
- /**
127
- * Policy content as JSON string
128
- */
129
- readonly content: string;
130
- /**
131
- * Type of policy
132
- */
133
- readonly policyType: PolicyType;
134
- /**
135
- * Whether to import existing policy if found
136
- * @default true
137
- */
138
- readonly importOnDuplicate?: boolean;
139
- }
140
- /**
141
- * Properties for delegated administrator
142
- */
143
- export interface DelegatedAdministratorProps {
144
- /**
145
- * AWS service principal (e.g., "stacksets.amazonaws.com")
146
- */
147
- readonly servicePrincipal: string;
148
- /**
149
- * Account ID to delegate administrator privileges to
150
- */
151
- readonly accountId: string;
152
- }
153
- /**
154
- * Properties for trusted service access
155
- */
156
- export interface TrustedServiceAccessProps {
157
- /**
158
- * AWS service principal (e.g., "sso.amazonaws.com")
159
- */
160
- readonly servicePrincipal: string;
161
- }
162
- /**
163
- * Account configuration for multi-environment setups
164
- */
165
- export type AccountsConfig = Record<string, string | string[]>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IamUserAccessToBilling = exports.PolicyType = exports.FeatureSet = void 0;
4
- /**
5
- * Feature set for AWS Organisations
6
- */
7
- var FeatureSet;
8
- (function (FeatureSet) {
9
- /**
10
- * Consolidated Billing features only
11
- */
12
- FeatureSet["CONSOLIDATED_BILLING"] = "CONSOLIDATED_BILLING";
13
- /**
14
- * All features including SCPs, delegated administrators, etc.
15
- */
16
- FeatureSet["ALL"] = "ALL";
17
- })(FeatureSet || (exports.FeatureSet = FeatureSet = {}));
18
- /**
19
- * AWS Organisations policy types
20
- */
21
- var PolicyType;
22
- (function (PolicyType) {
23
- PolicyType["SERVICE_CONTROL_POLICY"] = "SERVICE_CONTROL_POLICY";
24
- PolicyType["TAG_POLICY"] = "TAG_POLICY";
25
- PolicyType["BACKUP_POLICY"] = "BACKUP_POLICY";
26
- PolicyType["AISERVICES_OPT_OUT_POLICY"] = "AISERVICES_OPT_OUT_POLICY";
27
- })(PolicyType || (exports.PolicyType = PolicyType = {}));
28
- /**
29
- * IAM user access to billing information
30
- */
31
- var IamUserAccessToBilling;
32
- (function (IamUserAccessToBilling) {
33
- IamUserAccessToBilling["ALLOW"] = "ALLOW";
34
- IamUserAccessToBilling["DENY"] = "DENY";
35
- })(IamUserAccessToBilling || (exports.IamUserAccessToBilling = IamUserAccessToBilling = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25zL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxVQVVYO0FBVkQsV0FBWSxVQUFVO0lBQ3BCOztPQUVHO0lBQ0gsMkRBQTZDLENBQUE7SUFFN0M7O09BRUc7SUFDSCx5QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQVZXLFVBQVUsMEJBQVYsVUFBVSxRQVVyQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLCtEQUFpRCxDQUFBO0lBQ2pELHVDQUF5QixDQUFBO0lBQ3pCLDZDQUErQixDQUFBO0lBQy9CLHFFQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFMVyxVQUFVLDBCQUFWLFVBQVUsUUFLckI7QUFFRDs7R0FFRztBQUNILElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUNoQyx5Q0FBZSxDQUFBO0lBQ2YsdUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxzQkFBc0Isc0NBQXRCLHNCQUFzQixRQUdqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBGZWF0dXJlIHNldCBmb3IgQVdTIE9yZ2FuaXNhdGlvbnNcbiAqL1xuZXhwb3J0IGVudW0gRmVhdHVyZVNldCB7XG4gIC8qKlxuICAgKiBDb25zb2xpZGF0ZWQgQmlsbGluZyBmZWF0dXJlcyBvbmx5XG4gICAqL1xuICBDT05TT0xJREFURURfQklMTElORyA9IFwiQ09OU09MSURBVEVEX0JJTExJTkdcIixcblxuICAvKipcbiAgICogQWxsIGZlYXR1cmVzIGluY2x1ZGluZyBTQ1BzLCBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvcnMsIGV0Yy5cbiAgICovXG4gIEFMTCA9IFwiQUxMXCJcbn1cblxuLyoqXG4gKiBBV1MgT3JnYW5pc2F0aW9ucyBwb2xpY3kgdHlwZXNcbiAqL1xuZXhwb3J0IGVudW0gUG9saWN5VHlwZSB7XG4gIFNFUlZJQ0VfQ09OVFJPTF9QT0xJQ1kgPSBcIlNFUlZJQ0VfQ09OVFJPTF9QT0xJQ1lcIixcbiAgVEFHX1BPTElDWSA9IFwiVEFHX1BPTElDWVwiLFxuICBCQUNLVVBfUE9MSUNZID0gXCJCQUNLVVBfUE9MSUNZXCIsXG4gIEFJU0VSVklDRVNfT1BUX09VVF9QT0xJQ1kgPSBcIkFJU0VSVklDRVNfT1BUX09VVF9QT0xJQ1lcIlxufVxuXG4vKipcbiAqIElBTSB1c2VyIGFjY2VzcyB0byBiaWxsaW5nIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIElhbVVzZXJBY2Nlc3NUb0JpbGxpbmcge1xuICBBTExPVyA9IFwiQUxMT1dcIixcbiAgREVOWSA9IFwiREVOWVwiXG59XG5cbi8qKlxuICogQmFzaWMgb3JnYW5pc2F0aW9uYWwgdW5pdCBpbnRlcmZhY2UgZm9yIHR5cGUgcmVmZXJlbmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElPcmdhbmlzYXRpb25hbFVuaXRCYXNpYyB7XG4gIHJlYWRvbmx5IG9yZ2FuaXNhdGlvbmFsVW5pdElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9yZ2FuaXNhdGlvbmFsVW5pdEFybjogc3RyaW5nO1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gT3JnYW5pc2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pc2F0aW9uUHJvcHMge1xuICAvKipcbiAgICogRmVhdHVyZSBzZXQgZm9yIHRoZSBvcmdhbmlzYXRpb25cbiAgICogQGRlZmF1bHQgRmVhdHVyZVNldC5BTExcbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVTZXQ/OiBGZWF0dXJlU2V0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGltcG9ydCBleGlzdGluZyBvcmdhbmlzYXRpb24gaWYgZm91bmRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wb3J0T25EdXBsaWNhdGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE9yZ2FuaXNhdGlvbmFsIFVuaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbmlzYXRpb25hbFVuaXRQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBvcmdhbmlzYXRpb25hbCB1bml0XG4gICAqL1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBvcmdhbmlzYXRpb24gb3Igb3JnYW5pc2F0aW9uYWwgdW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50OiBJT3JnYW5pc2F0aW9uYWxVbml0QmFzaWM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW1wb3J0IGV4aXN0aW5nIE9VIGlmIGZvdW5kXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE9uRHVwbGljYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHRoaXMgcmVzb3VyY2VcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEFjY291bnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50UHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyBmb3IgdGhlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBvcmdhbmlzYXRpb24gb3Igb3JnYW5pc2F0aW9uYWwgdW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50OiBJT3JnYW5pc2F0aW9uYWxVbml0QmFzaWM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW1wb3J0IGV4aXN0aW5nIGFjY291bnQgaWYgZm91bmRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wb3J0T25EdXBsaWNhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgdGhpcyByZXNvdXJjZVxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIElBTSB1c2VyIGFjY2VzcyB0byBiaWxsaW5nXG4gICAqIEBkZWZhdWx0IElhbVVzZXJBY2Nlc3NUb0JpbGxpbmcuQUxMT1dcbiAgICovXG4gIHJlYWRvbmx5IGlhbVVzZXJBY2Nlc3NUb0JpbGxpbmc/OiBJYW1Vc2VyQWNjZXNzVG9CaWxsaW5nO1xuXG4gIC8qKlxuICAgKiBDcm9zcy1hY2NvdW50IHJvbGUgbmFtZSBmb3IgbWFuYWdlbWVudCBhY2Nlc3NcbiAgICogQGRlZmF1bHQgXCJPcmdhbmlzYXRpb25BY2NvdW50QWNjZXNzUm9sZVwiXG4gICAqL1xuICByZWFkb25seSByb2xlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgcG9saWN5XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgY29udGVudCBhcyBKU09OIHN0cmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5VHlwZTogUG9saWN5VHlwZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbXBvcnQgZXhpc3RpbmcgcG9saWN5IGlmIGZvdW5kXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE9uRHVwbGljYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGVnYXRlZEFkbWluaXN0cmF0b3JQcm9wcyB7XG4gIC8qKlxuICAgKiBBV1Mgc2VydmljZSBwcmluY2lwYWwgKGUuZy4sIFwic3RhY2tzZXRzLmFtYXpvbmF3cy5jb21cIilcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQcmluY2lwYWw6IHN0cmluZztcblxuICAvKipcbiAgICogQWNjb3VudCBJRCB0byBkZWxlZ2F0ZSBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgdG9cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRydXN0ZWQgc2VydmljZSBhY2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcnVzdGVkU2VydmljZUFjY2Vzc1Byb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBzZXJ2aWNlIHByaW5jaXBhbCAoZS5nLiwgXCJzc28uYW1hem9uYXdzLmNvbVwiKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZVByaW5jaXBhbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjY291bnQgY29uZmlndXJhdGlvbiBmb3IgbXVsdGktZW52aXJvbm1lbnQgc2V0dXBzXG4gKi9cbmV4cG9ydCB0eXBlIEFjY291bnRzQ29uZmlnID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuIl19
@@ -1,31 +0,0 @@
1
- import { Stack, CfnResource } from "aws-cdk-lib";
2
- import { IConstruct } from "constructs";
3
- /**
4
- * DirectTagging provides a way to apply tags to resources without using aspects.
5
- * This approach works by directly manipulating CloudFormation resources during
6
- * stack initialization, avoiding the infinite loop issue in CDK v2.206.0+
7
- */
8
- export declare class DirectTagging {
9
- private static globalTags;
10
- private static stackTags;
11
- /**
12
- * Set global tags that will be applied to all resources
13
- */
14
- static setGlobalTags(tags: {
15
- [key: string]: string;
16
- }): void;
17
- /**
18
- * Set tags for a specific stack
19
- */
20
- static setStackTags(stack: Stack, tags: {
21
- [key: string]: string;
22
- }): void;
23
- /**
24
- * Apply tags to a CloudFormation resource directly
25
- */
26
- static tagCfnResource(resource: CfnResource): void;
27
- /**
28
- * Process a construct tree and tag all CloudFormation resources
29
- */
30
- static processConstructTree(root: IConstruct): void;
31
- }