@fjall/components-infrastructure 0.75.3 → 0.76.0
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.
- package/dist/lib/app.d.ts +32 -8
- package/dist/lib/app.js +58 -11
- package/dist/lib/config/aws/backupGlobalSettings.d.ts +1 -1
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -1
- package/dist/lib/config/aws/cloudTrail.d.ts +1 -1
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +1 -1
- package/dist/lib/config/aws/ecrDefaultImage.d.ts +1 -1
- package/dist/lib/config/aws/ecrDefaultImage.js +2 -2
- package/dist/lib/config/aws/identityCenter.d.ts +3 -3
- package/dist/lib/config/aws/identityCenter.js +1 -1
- package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +2 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -1
- package/dist/lib/config/aws/ipam.js +2 -4
- package/dist/lib/config/aws/organisation.d.ts +3 -3
- package/dist/lib/config/aws/organisation.js +1 -1
- package/dist/lib/config/aws/organisationsAccess.d.ts +1 -1
- package/dist/lib/config/aws/organisationsAccess.js +1 -1
- package/dist/lib/config/monitoring.d.ts +18 -0
- package/dist/lib/config/monitoring.js +22 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +3 -3
- package/dist/lib/patterns/aws/buildkite.js +1 -1
- package/dist/lib/patterns/aws/compute.d.ts +8 -8
- package/dist/lib/patterns/aws/compute.js +5 -5
- package/dist/lib/patterns/aws/database.d.ts +191 -24
- package/dist/lib/patterns/aws/database.js +201 -42
- package/dist/lib/patterns/aws/fivetranProxy.d.ts +5 -5
- package/dist/lib/patterns/aws/fivetranProxy.js +1 -1
- package/dist/lib/patterns/aws/hostedZone.d.ts +2 -2
- package/dist/lib/patterns/aws/hostedZone.js +1 -1
- package/dist/lib/patterns/aws/managedAccount.d.ts +2 -2
- package/dist/lib/patterns/aws/managedAccount.js +1 -1
- package/dist/lib/patterns/aws/managedIdentityCenter.js +1 -1
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +3 -3
- package/dist/lib/patterns/aws/managedOrganisation.js +1 -1
- package/dist/lib/patterns/aws/managedPlatform.d.ts +2 -2
- package/dist/lib/patterns/aws/managedPlatform.js +2 -4
- package/dist/lib/patterns/aws/storage.d.ts +4 -55
- package/dist/lib/patterns/aws/storage.js +3 -103
- package/dist/lib/resources/aws/backup/backupPlan.d.ts +2 -2
- package/dist/lib/resources/aws/backup/backupPlan.js +1 -1
- package/dist/lib/resources/aws/backup/backupVault.d.ts +2 -2
- package/dist/lib/resources/aws/backup/backupVault.js +1 -1
- package/dist/lib/resources/aws/base/awsStack.js +1 -1
- package/dist/lib/resources/aws/compute/ec2.d.ts +3 -3
- package/dist/lib/resources/aws/compute/ec2.js +1 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +9 -9
- package/dist/lib/resources/aws/compute/ecs.js +63 -19
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +6 -7
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +3 -7
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +6 -7
- package/dist/lib/resources/aws/compute/ecsSpot.js +3 -11
- package/dist/lib/resources/aws/compute/lambda.d.ts +4 -4
- package/dist/lib/resources/aws/compute/lambda.js +1 -1
- package/dist/lib/resources/aws/database/database.d.ts +2 -2
- package/dist/lib/resources/aws/database/database.js +1 -1
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +2 -2
- package/dist/lib/resources/aws/database/databaseInstance.js +2 -2
- package/dist/lib/resources/aws/database/index.d.ts +0 -1
- package/dist/lib/resources/aws/database/index.js +1 -2
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +22 -6
- package/dist/lib/resources/aws/database/rdsAurora.js +212 -84
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +39 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +34 -5
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +16 -10
- package/dist/lib/resources/aws/database/rdsInstance.js +126 -63
- package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +2 -2
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -1
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +1 -1
- package/dist/lib/resources/aws/iam/instanceProfile.js +1 -1
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/managedPolicy.js +1 -1
- package/dist/lib/resources/aws/iam/policy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/policy.js +1 -1
- package/dist/lib/resources/aws/iam/role.d.ts +1 -1
- package/dist/lib/resources/aws/iam/role.js +1 -1
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +1 -1
- package/dist/lib/resources/aws/iam/securityGroup.js +1 -1
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +2 -1
- package/dist/lib/resources/aws/logging/logGroup.d.ts +2 -2
- package/dist/lib/resources/aws/logging/logGroup.js +1 -1
- package/dist/lib/resources/aws/monitoring/index.d.ts +1 -0
- package/dist/lib/resources/aws/monitoring/index.js +18 -0
- package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +28 -0
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +69 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipam.js +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +1 -2
- package/dist/lib/resources/aws/networking/vpc.d.ts +3 -3
- package/dist/lib/resources/aws/networking/vpc.js +1 -1
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +2 -2
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +1 -1
- package/dist/lib/resources/aws/secrets/alias.d.ts +1 -1
- package/dist/lib/resources/aws/secrets/alias.js +1 -1
- package/dist/lib/resources/aws/secrets/parameter.d.ts +1 -1
- package/dist/lib/resources/aws/secrets/parameter.js +1 -1
- package/dist/lib/resources/aws/secrets/secret.d.ts +8 -4
- package/dist/lib/resources/aws/secrets/secret.js +19 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +4 -4
- package/dist/lib/resources/aws/storage/ecr.js +1 -1
- package/dist/lib/resources/aws/storage/s3.d.ts +2 -2
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/awsCustomResource.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.js +1 -1
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/codeBuild.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.d.ts +3 -3
- package/dist/lib/resources/aws/utilities/customResource.js +1 -1
- package/dist/lib/resources/aws/utilities/customResourceProvider.d.ts +2 -2
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -1
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +2 -2
- package/dist/lib/resources/aws/utilities/resourceShare.js +1 -1
- package/dist/lib/utils/getAsync.d.ts +1 -1
- package/dist/lib/utils/getAsync.js +1 -1
- package/dist/lib/utils/getConfig.d.ts +2 -2
- package/dist/lib/utils/getConfig.js +3 -3
- package/dist/lib/utils/standardTagsAspect.d.ts +2 -2
- package/dist/lib/utils/standardTagsAspect.js +6 -5
- package/dist/lib/utils/tagResource.d.ts +1 -1
- package/dist/lib/utils/tagResource.js +1 -1
- package/package.json +3 -3
- package/dist/lib/__tests__/patterns/__snapshots__/compute.test.js.snap +0 -433
- package/dist/lib/__tests__/patterns/compute.test.d.ts +0 -1
- package/dist/lib/__tests__/patterns/compute.test.js +0 -137
- package/dist/lib/__tests__/simple.test.d.ts +0 -0
- package/dist/lib/__tests__/simple.test.js +0 -12
- package/dist/lib/patterns/aws/basicApp.d.ts +0 -0
- package/dist/lib/patterns/aws/basicApp.js +0 -150
- package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -44
- package/dist/lib/patterns/aws/freeTierApp.js +0 -83
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +0 -45
- package/dist/lib/patterns/aws/spotInstanceApp.js +0 -85
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +0 -15
- package/dist/lib/resources/aws/database/databaseFreeTier.js +0 -29
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +0 -37
- package/dist/lib/resources/aws/database/rdsFreeTier.js +0 -84
- package/dist/lib/resources/aws/organisations/account.d.ts +0 -37
- package/dist/lib/resources/aws/organisations/account.js +0 -220
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +0 -14
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +0 -61
- package/dist/lib/resources/aws/organisations/index.d.ts +0 -8
- package/dist/lib/resources/aws/organisations/index.js +0 -22
- package/dist/lib/resources/aws/organisations/interfaces.d.ts +0 -105
- package/dist/lib/resources/aws/organisations/interfaces.js +0 -3
- package/dist/lib/resources/aws/organisations/organisation.d.ts +0 -47
- package/dist/lib/resources/aws/organisations/organisation.js +0 -263
- package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +0 -28
- package/dist/lib/resources/aws/organisations/organisationalUnit.js +0 -170
- package/dist/lib/resources/aws/organisations/policy.d.ts +0 -17
- package/dist/lib/resources/aws/organisations/policy.js +0 -93
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +0 -13
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +0 -58
- package/dist/lib/resources/aws/organisations/types.d.ts +0 -165
- package/dist/lib/resources/aws/organisations/types.js +0 -36
- package/dist/lib/utils/directTagging.d.ts +0 -31
- package/dist/lib/utils/directTagging.js +0 -86
- package/dist/lib/utils/fjallConstruct.d.ts +0 -8
- package/dist/lib/utils/fjallConstruct.js +0 -18
- package/dist/lib/utils/fjallStackSynthesizer.d.ts +0 -9
- package/dist/lib/utils/fjallStackSynthesizer.js +0 -22
- package/dist/lib/utils/tagContext.d.ts +0 -28
- package/dist/lib/utils/tagContext.js +0 -53
- package/dist/lib/utils/tagSynthesizer.d.ts +0 -13
- package/dist/lib/utils/tagSynthesizer.js +0 -55
|
@@ -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
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DirectTagging = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
/**
|
|
6
|
-
* DirectTagging provides a way to apply tags to resources without using aspects.
|
|
7
|
-
* This approach works by directly manipulating CloudFormation resources during
|
|
8
|
-
* stack initialization, avoiding the infinite loop issue in CDK v2.206.0+
|
|
9
|
-
*/
|
|
10
|
-
class DirectTagging {
|
|
11
|
-
/**
|
|
12
|
-
* Set global tags that will be applied to all resources
|
|
13
|
-
*/
|
|
14
|
-
static setGlobalTags(tags) {
|
|
15
|
-
DirectTagging.globalTags = {
|
|
16
|
-
...DirectTagging.globalTags,
|
|
17
|
-
...tags
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Set tags for a specific stack
|
|
22
|
-
*/
|
|
23
|
-
static setStackTags(stack, tags) {
|
|
24
|
-
const existingTags = DirectTagging.stackTags.get(stack) || {};
|
|
25
|
-
DirectTagging.stackTags.set(stack, {
|
|
26
|
-
...existingTags,
|
|
27
|
-
...tags
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Apply tags to a CloudFormation resource directly
|
|
32
|
-
*/
|
|
33
|
-
static tagCfnResource(resource) {
|
|
34
|
-
const stack = aws_cdk_lib_1.Stack.of(resource);
|
|
35
|
-
const stackTags = DirectTagging.stackTags.get(stack) || {};
|
|
36
|
-
const allTags = {
|
|
37
|
-
...DirectTagging.globalTags,
|
|
38
|
-
...stackTags
|
|
39
|
-
};
|
|
40
|
-
if (Object.keys(allTags).length === 0) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Check if resource supports tags
|
|
44
|
-
if (!('tags' in resource) || typeof resource.tags !== 'object') {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// Get existing tags
|
|
48
|
-
const existingTags = resource.tags || [];
|
|
49
|
-
const tagMap = new Map();
|
|
50
|
-
// Add existing tags to map
|
|
51
|
-
if (Array.isArray(existingTags)) {
|
|
52
|
-
existingTags.forEach((tag) => {
|
|
53
|
-
if (tag.key && tag.value) {
|
|
54
|
-
tagMap.set(tag.key, tag.value);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
// Add new tags (overwriting if they exist)
|
|
59
|
-
Object.entries(allTags).forEach(([key, value]) => {
|
|
60
|
-
tagMap.set(key, value);
|
|
61
|
-
});
|
|
62
|
-
// Convert back to array format
|
|
63
|
-
resource.tags = Array.from(tagMap.entries()).map(([key, value]) => ({
|
|
64
|
-
key,
|
|
65
|
-
value
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Process a construct tree and tag all CloudFormation resources
|
|
70
|
-
*/
|
|
71
|
-
static processConstructTree(root) {
|
|
72
|
-
const processNode = (node) => {
|
|
73
|
-
// Check if this is a CloudFormation resource
|
|
74
|
-
if (aws_cdk_lib_1.CfnResource.isCfnResource(node)) {
|
|
75
|
-
DirectTagging.tagCfnResource(node);
|
|
76
|
-
}
|
|
77
|
-
// Process children
|
|
78
|
-
node.node.children.forEach(child => processNode(child));
|
|
79
|
-
};
|
|
80
|
-
processNode(root);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.DirectTagging = DirectTagging;
|
|
84
|
-
DirectTagging.globalTags = {};
|
|
85
|
-
DirectTagging.stackTags = new Map();
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0VGFnZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9kaXJlY3RUYWdnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRDtBQUdqRDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFhO0lBSXhCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUErQjtRQUN6RCxhQUFhLENBQUMsVUFBVSxHQUFHO1lBQ3pCLEdBQUcsYUFBYSxDQUFDLFVBQVU7WUFDM0IsR0FBRyxJQUFJO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBWSxFQUFFLElBQStCO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDakMsR0FBRyxZQUFZO1lBQ2YsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFxQjtRQUNoRCxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLGFBQWEsQ0FBQyxVQUFVO1lBQzNCLEdBQUcsU0FBUztTQUNiLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFekMsMkJBQTJCO1FBQzNCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLEdBQUc7WUFDSCxLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBZ0I7UUFDakQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDdkMsNkNBQTZDO1lBQzdDLElBQUkseUJBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBRUQsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOztBQXJGSCxzQ0FzRkM7QUFyRmdCLHdCQUFVLEdBQThCLEVBQUUsQ0FBQztBQUMzQyx1QkFBUyxHQUEwQyxJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0LCBOb2RlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBEaXJlY3RUYWdnaW5nIHByb3ZpZGVzIGEgd2F5IHRvIGFwcGx5IHRhZ3MgdG8gcmVzb3VyY2VzIHdpdGhvdXQgdXNpbmcgYXNwZWN0cy5cbiAqIFRoaXMgYXBwcm9hY2ggd29ya3MgYnkgZGlyZWN0bHkgbWFuaXB1bGF0aW5nIENsb3VkRm9ybWF0aW9uIHJlc291cmNlcyBkdXJpbmdcbiAqIHN0YWNrIGluaXRpYWxpemF0aW9uLCBhdm9pZGluZyB0aGUgaW5maW5pdGUgbG9vcCBpc3N1ZSBpbiBDREsgdjIuMjA2LjArXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3RUYWdnaW5nIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2xvYmFsVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBzdGFja1RhZ3M6IE1hcDxTdGFjaywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4gPSBuZXcgTWFwKCk7XG4gIFxuICAvKipcbiAgICogU2V0IGdsb2JhbCB0YWdzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCByZXNvdXJjZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2V0R2xvYmFsVGFncyh0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgRGlyZWN0VGFnZ2luZy5nbG9iYWxUYWdzID0ge1xuICAgICAgLi4uRGlyZWN0VGFnZ2luZy5nbG9iYWxUYWdzLFxuICAgICAgLi4udGFnc1xuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXQgdGFncyBmb3IgYSBzcGVjaWZpYyBzdGFja1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXRTdGFja1RhZ3Moc3RhY2s6IFN0YWNrLCB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgY29uc3QgZXhpc3RpbmdUYWdzID0gRGlyZWN0VGFnZ2luZy5zdGFja1RhZ3MuZ2V0KHN0YWNrKSB8fCB7fTtcbiAgICBEaXJlY3RUYWdnaW5nLnN0YWNrVGFncy5zZXQoc3RhY2ssIHtcbiAgICAgIC4uLmV4aXN0aW5nVGFncyxcbiAgICAgIC4uLnRhZ3NcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEFwcGx5IHRhZ3MgdG8gYSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSBkaXJlY3RseVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0YWdDZm5SZXNvdXJjZShyZXNvdXJjZTogQ2ZuUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHJlc291cmNlKTtcbiAgICBjb25zdCBzdGFja1RhZ3MgPSBEaXJlY3RUYWdnaW5nLnN0YWNrVGFncy5nZXQoc3RhY2spIHx8IHt9O1xuICAgIGNvbnN0IGFsbFRhZ3MgPSB7XG4gICAgICAuLi5EaXJlY3RUYWdnaW5nLmdsb2JhbFRhZ3MsXG4gICAgICAuLi5zdGFja1RhZ3NcbiAgICB9O1xuICAgIFxuICAgIGlmIChPYmplY3Qua2V5cyhhbGxUYWdzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgcmVzb3VyY2Ugc3VwcG9ydHMgdGFnc1xuICAgIGlmICghKCd0YWdzJyBpbiByZXNvdXJjZSkgfHwgdHlwZW9mIHJlc291cmNlLnRhZ3MgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCBleGlzdGluZyB0YWdzXG4gICAgY29uc3QgZXhpc3RpbmdUYWdzID0gcmVzb3VyY2UudGFncyB8fCBbXTtcbiAgICBjb25zdCB0YWdNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIFxuICAgIC8vIEFkZCBleGlzdGluZyB0YWdzIHRvIG1hcFxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nVGFncykpIHtcbiAgICAgIGV4aXN0aW5nVGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGFnLmtleSAmJiB0YWcudmFsdWUpIHtcbiAgICAgICAgICB0YWdNYXAuc2V0KHRhZy5rZXksIHRhZy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgbmV3IHRhZ3MgKG92ZXJ3cml0aW5nIGlmIHRoZXkgZXhpc3QpXG4gICAgT2JqZWN0LmVudHJpZXMoYWxsVGFncykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICB0YWdNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIENvbnZlcnQgYmFjayB0byBhcnJheSBmb3JtYXRcbiAgICByZXNvdXJjZS50YWdzID0gQXJyYXkuZnJvbSh0YWdNYXAuZW50cmllcygpKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlXG4gICAgfSkpO1xuICB9XG4gIFxuICAvKipcbiAgICogUHJvY2VzcyBhIGNvbnN0cnVjdCB0cmVlIGFuZCB0YWcgYWxsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwcm9jZXNzQ29uc3RydWN0VHJlZShyb290OiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgcHJvY2Vzc05vZGUgPSAobm9kZTogSUNvbnN0cnVjdCkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlXG4gICAgICBpZiAoQ2ZuUmVzb3VyY2UuaXNDZm5SZXNvdXJjZShub2RlKSkge1xuICAgICAgICBEaXJlY3RUYWdnaW5nLnRhZ0NmblJlc291cmNlKG5vZGUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBQcm9jZXNzIGNoaWxkcmVuXG4gICAgICBub2RlLm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBwcm9jZXNzTm9kZShjaGlsZCkpO1xuICAgIH07XG4gICAgXG4gICAgcHJvY2Vzc05vZGUocm9vdCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
/**
|
|
3
|
-
* Base construct for Fjall resources that automatically
|
|
4
|
-
* applies tags from context during construction.
|
|
5
|
-
*/
|
|
6
|
-
export declare class FjallConstruct extends Construct {
|
|
7
|
-
constructor(scope: Construct, id: string);
|
|
8
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FjallConstruct = void 0;
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const tagContext_1 = require("./tagContext");
|
|
6
|
-
/**
|
|
7
|
-
* Base construct for Fjall resources that automatically
|
|
8
|
-
* applies tags from context during construction.
|
|
9
|
-
*/
|
|
10
|
-
class FjallConstruct extends constructs_1.Construct {
|
|
11
|
-
constructor(scope, id) {
|
|
12
|
-
super(scope, id);
|
|
13
|
-
// Apply tags from context during construction
|
|
14
|
-
tagContext_1.TagContext.applyTagsFromContext(this.node);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.FjallConstruct = FjallConstruct;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGxDb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvZmphbGxDb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUEwQztBQUUxQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDhDQUE4QztRQUM5Qyx1QkFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFQRCx3Q0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUYWdDb250ZXh0IH0gZnJvbSBcIi4vdGFnQ29udGV4dFwiO1xuXG4vKipcbiAqIEJhc2UgY29uc3RydWN0IGZvciBGamFsbCByZXNvdXJjZXMgdGhhdCBhdXRvbWF0aWNhbGx5XG4gKiBhcHBsaWVzIHRhZ3MgZnJvbSBjb250ZXh0IGR1cmluZyBjb25zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBGamFsbENvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIFxuICAgIC8vIEFwcGx5IHRhZ3MgZnJvbSBjb250ZXh0IGR1cmluZyBjb25zdHJ1Y3Rpb25cbiAgICBUYWdDb250ZXh0LmFwcGx5VGFnc0Zyb21Db250ZXh0KHRoaXMubm9kZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DefaultStackSynthesizer } from "aws-cdk-lib";
|
|
2
|
-
import { ISynthesisSession } from "aws-cdk-lib/core";
|
|
3
|
-
/**
|
|
4
|
-
* Custom stack synthesizer that applies tags during synthesis.
|
|
5
|
-
* This avoids the infinite loop issue with aspects in CDK v2.206.0+
|
|
6
|
-
*/
|
|
7
|
-
export declare class FjallStackSynthesizer extends DefaultStackSynthesizer {
|
|
8
|
-
synthesize(session: ISynthesisSession): void;
|
|
9
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FjallStackSynthesizer = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const directTagging_1 = require("./directTagging");
|
|
6
|
-
/**
|
|
7
|
-
* Custom stack synthesizer that applies tags during synthesis.
|
|
8
|
-
* This avoids the infinite loop issue with aspects in CDK v2.206.0+
|
|
9
|
-
*/
|
|
10
|
-
class FjallStackSynthesizer extends aws_cdk_lib_1.DefaultStackSynthesizer {
|
|
11
|
-
synthesize(session) {
|
|
12
|
-
const stack = this.boundStack;
|
|
13
|
-
// Process the entire construct tree to apply tags
|
|
14
|
-
if (stack) {
|
|
15
|
-
directTagging_1.DirectTagging.processConstructTree(stack);
|
|
16
|
-
}
|
|
17
|
-
// Continue with normal synthesis
|
|
18
|
-
super.synthesize(session);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.FjallStackSynthesizer = FjallStackSynthesizer;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGxTdGFja1N5bnRoZXNpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2ZqYWxsU3RhY2tTeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBc0Q7QUFFdEQsbURBQWdEO0FBRWhEOzs7R0FHRztBQUNILE1BQWEscUJBQXNCLFNBQVEscUNBQXVCO0lBQ3pELFVBQVUsQ0FBQyxPQUEwQjtRQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRTlCLGtEQUFrRDtRQUNsRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsNkJBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBWkQsc0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZhdWx0U3RhY2tTeW50aGVzaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiYXdzLWNkay1saWIvY29yZVwiO1xuaW1wb3J0IHsgRGlyZWN0VGFnZ2luZyB9IGZyb20gXCIuL2RpcmVjdFRhZ2dpbmdcIjtcblxuLyoqXG4gKiBDdXN0b20gc3RhY2sgc3ludGhlc2l6ZXIgdGhhdCBhcHBsaWVzIHRhZ3MgZHVyaW5nIHN5bnRoZXNpcy5cbiAqIFRoaXMgYXZvaWRzIHRoZSBpbmZpbml0ZSBsb29wIGlzc3VlIHdpdGggYXNwZWN0cyBpbiBDREsgdjIuMjA2LjArXG4gKi9cbmV4cG9ydCBjbGFzcyBGamFsbFN0YWNrU3ludGhlc2l6ZXIgZXh0ZW5kcyBEZWZhdWx0U3RhY2tTeW50aGVzaXplciB7XG4gIHB1YmxpYyBzeW50aGVzaXplKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2sgPSB0aGlzLmJvdW5kU3RhY2s7XG4gICAgXG4gICAgLy8gUHJvY2VzcyB0aGUgZW50aXJlIGNvbnN0cnVjdCB0cmVlIHRvIGFwcGx5IHRhZ3NcbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIERpcmVjdFRhZ2dpbmcucHJvY2Vzc0NvbnN0cnVjdFRyZWUoc3RhY2spO1xuICAgIH1cbiAgICBcbiAgICAvLyBDb250aW51ZSB3aXRoIG5vcm1hbCBzeW50aGVzaXNcbiAgICBzdXBlci5zeW50aGVzaXplKHNlc3Npb24pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Node } from "constructs";
|
|
2
|
-
/**
|
|
3
|
-
* TagContext provides a CDK context-based approach for passing tags
|
|
4
|
-
* down the construct tree without using aspects.
|
|
5
|
-
*
|
|
6
|
-
* This avoids the infinite loop issue with Tags.of() creating aspects
|
|
7
|
-
* during the aspect visitation phase in CDK v2.206.0+
|
|
8
|
-
*/
|
|
9
|
-
export declare class TagContext {
|
|
10
|
-
private static readonly TAG_CONTEXT_KEY;
|
|
11
|
-
/**
|
|
12
|
-
* Set tags in the context for a construct
|
|
13
|
-
*/
|
|
14
|
-
static setTags(node: Node, tags: {
|
|
15
|
-
[key: string]: string;
|
|
16
|
-
}): void;
|
|
17
|
-
/**
|
|
18
|
-
* Get tags from the context, including inherited tags from parent constructs
|
|
19
|
-
*/
|
|
20
|
-
static getTags(node: Node): {
|
|
21
|
-
[key: string]: string;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Apply tags from context to a construct using a safe approach
|
|
25
|
-
* This should be called during construction, not during synthesis
|
|
26
|
-
*/
|
|
27
|
-
static applyTagsFromContext(node: Node): void;
|
|
28
|
-
}
|