@fjall/components-infrastructure 0.1.44 → 0.1.45
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.
|
@@ -9,12 +9,18 @@ interface ManagedOrganisationProps extends ExtendedStackProps {
|
|
|
9
9
|
platformAccount: string;
|
|
10
10
|
orgEmail: string;
|
|
11
11
|
existingAccounts?: Account[];
|
|
12
|
+
identityCenter?: boolean;
|
|
12
13
|
}
|
|
13
|
-
/**
|
|
14
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
15
|
-
*/
|
|
16
14
|
export declare class ManagedOrganisation extends Stack {
|
|
17
15
|
private organisation;
|
|
18
16
|
constructor(id: string, props: ManagedOrganisationProps);
|
|
17
|
+
private validatePlatformAccount;
|
|
18
|
+
private createOrganisation;
|
|
19
|
+
private setupOrganisationFeatures;
|
|
20
|
+
private setupIpamDelegation;
|
|
21
|
+
private enableRamSharing;
|
|
22
|
+
private enableTrustedAccess;
|
|
23
|
+
private enableCostAllocationTags;
|
|
24
|
+
private setupIdentityCenter;
|
|
19
25
|
}
|
|
20
26
|
export {};
|
|
@@ -9,16 +9,22 @@ const ramSharing_1 = require("../../config/aws/ramSharing");
|
|
|
9
9
|
const costAllocationTags_1 = require("../../config/aws/costAllocationTags");
|
|
10
10
|
const organisation_1 = require("../../config/aws/organisation");
|
|
11
11
|
const organisationsAccess_1 = require("../../config/aws/organisationsAccess");
|
|
12
|
-
/**
|
|
13
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
14
|
-
*/
|
|
15
12
|
class ManagedOrganisation extends aws_cdk_lib_1.Stack {
|
|
16
13
|
constructor(id, props) {
|
|
17
14
|
super(app_1.default.getInstance(), id, props);
|
|
18
|
-
|
|
15
|
+
this.validatePlatformAccount(props);
|
|
16
|
+
this.createOrganisation(id, props);
|
|
17
|
+
this.setupOrganisationFeatures({
|
|
18
|
+
...props,
|
|
19
|
+
identityCenter: props.identityCenter ?? true
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
validatePlatformAccount(props) {
|
|
19
23
|
if (!props.orgAccounts.includes(props.platformAccount)) {
|
|
20
|
-
throw new Error(`Platform account "${props.platformAccount}" is not listed in account names
|
|
24
|
+
throw new Error(`Platform account "${props.platformAccount}" is not listed in account names. Valid accounts are: ${props.orgAccounts.join(", ")}`);
|
|
21
25
|
}
|
|
26
|
+
}
|
|
27
|
+
createOrganisation(id, props) {
|
|
22
28
|
this.organisation = new organisation_1.default(this, id, {
|
|
23
29
|
organisationName: props.organisationName,
|
|
24
30
|
orgAccounts: props.orgAccounts,
|
|
@@ -27,25 +33,39 @@ class ManagedOrganisation extends aws_cdk_lib_1.Stack {
|
|
|
27
33
|
env: props.env,
|
|
28
34
|
existingAccounts: props.existingAccounts
|
|
29
35
|
});
|
|
36
|
+
}
|
|
37
|
+
setupOrganisationFeatures(props) {
|
|
30
38
|
const orgAccounts = this.organisation.getAccounts();
|
|
31
|
-
|
|
39
|
+
this.setupIpamDelegation(orgAccounts, props);
|
|
40
|
+
this.enableRamSharing();
|
|
41
|
+
this.enableTrustedAccess(props);
|
|
42
|
+
this.enableCostAllocationTags();
|
|
43
|
+
this.setupIdentityCenter(orgAccounts, props);
|
|
44
|
+
}
|
|
45
|
+
setupIpamDelegation(orgAccounts, props) {
|
|
32
46
|
new ipamDelegateAdmin_1.IpamDelegateAdmin(this, "IpamDelegateAdmin", {
|
|
33
47
|
accountId: orgAccounts[props.platformAccount]
|
|
34
48
|
});
|
|
35
|
-
|
|
49
|
+
}
|
|
50
|
+
enableRamSharing() {
|
|
36
51
|
new ramSharing_1.RamSharing(this, "RamSharing");
|
|
37
|
-
|
|
52
|
+
}
|
|
53
|
+
enableTrustedAccess(props) {
|
|
38
54
|
new organisationsAccess_1.ActivateOrganisationsAccess(this, "ActivateOrganisationsAccess", {
|
|
39
55
|
account: props.env.account,
|
|
40
56
|
region: props.env.region
|
|
41
57
|
});
|
|
42
|
-
|
|
58
|
+
}
|
|
59
|
+
enableCostAllocationTags() {
|
|
43
60
|
new costAllocationTags_1.CostAllocationTags(this, "CostAllocationTags");
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
}
|
|
62
|
+
setupIdentityCenter(orgAccounts, props) {
|
|
63
|
+
if (props.identityCenter) {
|
|
64
|
+
new identityCenter_1.IdentityCenter(this, "IdentityCenter", {
|
|
65
|
+
accounts: orgAccounts
|
|
66
|
+
});
|
|
67
|
+
}
|
|
48
68
|
}
|
|
49
69
|
}
|
|
50
70
|
exports.ManagedOrganisation = ManagedOrganisation;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkQ7QUFFN0QsbUNBQTRCO0FBRTVCLG9FQUFpRTtBQUNqRSwwRUFBdUU7QUFDdkUsNERBQXlEO0FBQ3pELDRFQUF5RTtBQUN6RSxnRUFBeUQ7QUFFekQsOEVBQW1GO0FBZ0JuRixNQUFhLG1CQUFvQixTQUFRLG1CQUFLO0lBRzVDLFlBQVksRUFBVSxFQUFFLEtBQStCO1FBQ3JELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUM3QixHQUFHLEtBQUs7WUFDUixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUErQjtRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FDYixxQkFDRSxLQUFLLENBQUMsZUFDUix5REFBeUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzdFLElBQUksQ0FDTCxFQUFFLENBQ0osQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsRUFBVSxFQUFFLEtBQStCO1FBQ3BFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDN0MsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxLQUErQjtRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLG1CQUFtQixDQUN6QixXQUFtQyxFQUNuQyxLQUErQjtRQUUvQixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUMvQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDOUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLHVCQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUErQjtRQUN6RCxJQUFJLGlEQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtZQUNuRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPO1lBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLHVDQUFrQixDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsV0FBbUMsRUFDbkMsS0FBK0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDekMsUUFBUSxFQUFFLFdBQVc7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhGRCxrREFnRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7IElkZW50aXR5Q2VudGVyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJcIjtcbmltcG9ydCB7IElwYW1EZWxlZ2F0ZUFkbWluIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaXBhbURlbGVnYXRlQWRtaW5cIjtcbmltcG9ydCB7IFJhbVNoYXJpbmcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9yYW1TaGFyaW5nXCI7XG5pbXBvcnQgeyBDb3N0QWxsb2NhdGlvblRhZ3MgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9jb3N0QWxsb2NhdGlvblRhZ3NcIjtcbmltcG9ydCBPcmdhbmlzYXRpb24gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3Mvb3JnYW5pc2F0aW9uXCI7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1vcmdhbml6YXRpb25zXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZU9yZ2FuaXNhdGlvbnNBY2Nlc3MgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9vcmdhbmlzYXRpb25zQWNjZXNzXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52OiBSZXF1aXJlZDxQaWNrPEVudmlyb25tZW50LCBcInJlZ2lvblwiIHwgXCJhY2NvdW50XCI+PiAmXG4gICAgUGFydGlhbDxPbWl0PEVudmlyb25tZW50LCBcInJlZ2lvblwiIHwgXCJhY2NvdW50XCI+Pjtcbn07XG5cbmludGVyZmFjZSBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMgZXh0ZW5kcyBFeHRlbmRlZFN0YWNrUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgcGxhdGZvcm1BY2NvdW50OiBzdHJpbmc7XG4gIG9yZ0VtYWlsOiBzdHJpbmc7XG4gIGV4aXN0aW5nQWNjb3VudHM/OiBBY2NvdW50W107XG4gIGlkZW50aXR5Q2VudGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRPcmdhbmlzYXRpb24gZXh0ZW5kcyBTdGFjayB7XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbmlzYXRpb247XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMudmFsaWRhdGVQbGF0Zm9ybUFjY291bnQocHJvcHMpO1xuICAgIHRoaXMuY3JlYXRlT3JnYW5pc2F0aW9uKGlkLCBwcm9wcyk7XG4gICAgdGhpcy5zZXR1cE9yZ2FuaXNhdGlvbkZlYXR1cmVzKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgaWRlbnRpdHlDZW50ZXI6IHByb3BzLmlkZW50aXR5Q2VudGVyID8/IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVQbGF0Zm9ybUFjY291bnQocHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGlmICghcHJvcHMub3JnQWNjb3VudHMuaW5jbHVkZXMocHJvcHMucGxhdGZvcm1BY2NvdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGxhdGZvcm0gYWNjb3VudCBcIiR7XG4gICAgICAgICAgcHJvcHMucGxhdGZvcm1BY2NvdW50XG4gICAgICAgIH1cIiBpcyBub3QgbGlzdGVkIGluIGFjY291bnQgbmFtZXMuIFZhbGlkIGFjY291bnRzIGFyZTogJHtwcm9wcy5vcmdBY2NvdW50cy5qb2luKFxuICAgICAgICAgIFwiLCBcIlxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcmdhbmlzYXRpb24oaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uID0gbmV3IE9yZ2FuaXNhdGlvbih0aGlzLCBpZCwge1xuICAgICAgb3JnYW5pc2F0aW9uTmFtZTogcHJvcHMub3JnYW5pc2F0aW9uTmFtZSxcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHBsYXRmb3JtQWNjb3VudDogcHJvcHMucGxhdGZvcm1BY2NvdW50LFxuICAgICAgb3JnRW1haWw6IHByb3BzLm9yZ0VtYWlsLFxuICAgICAgZW52OiBwcm9wcy5lbnYsXG4gICAgICBleGlzdGluZ0FjY291bnRzOiBwcm9wcy5leGlzdGluZ0FjY291bnRzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT3JnYW5pc2F0aW9uRmVhdHVyZXMocHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGNvbnN0IG9yZ0FjY291bnRzID0gdGhpcy5vcmdhbmlzYXRpb24uZ2V0QWNjb3VudHMoKTtcblxuICAgIHRoaXMuc2V0dXBJcGFtRGVsZWdhdGlvbihvcmdBY2NvdW50cywgcHJvcHMpO1xuICAgIHRoaXMuZW5hYmxlUmFtU2hhcmluZygpO1xuICAgIHRoaXMuZW5hYmxlVHJ1c3RlZEFjY2Vzcyhwcm9wcyk7XG4gICAgdGhpcy5lbmFibGVDb3N0QWxsb2NhdGlvblRhZ3MoKTtcbiAgICB0aGlzLnNldHVwSWRlbnRpdHlDZW50ZXIob3JnQWNjb3VudHMsIHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJcGFtRGVsZWdhdGlvbihcbiAgICBvcmdBY2NvdW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzXG4gICkge1xuICAgIG5ldyBJcGFtRGVsZWdhdGVBZG1pbih0aGlzLCBcIklwYW1EZWxlZ2F0ZUFkbWluXCIsIHtcbiAgICAgIGFjY291bnRJZDogb3JnQWNjb3VudHNbcHJvcHMucGxhdGZvcm1BY2NvdW50XVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVSYW1TaGFyaW5nKCkge1xuICAgIG5ldyBSYW1TaGFyaW5nKHRoaXMsIFwiUmFtU2hhcmluZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlVHJ1c3RlZEFjY2Vzcyhwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzKSB7XG4gICAgbmV3IEFjdGl2YXRlT3JnYW5pc2F0aW9uc0FjY2Vzcyh0aGlzLCBcIkFjdGl2YXRlT3JnYW5pc2F0aW9uc0FjY2Vzc1wiLCB7XG4gICAgICBhY2NvdW50OiBwcm9wcy5lbnYuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogcHJvcHMuZW52LnJlZ2lvblxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVDb3N0QWxsb2NhdGlvblRhZ3MoKSB7XG4gICAgbmV3IENvc3RBbGxvY2F0aW9uVGFncyh0aGlzLCBcIkNvc3RBbGxvY2F0aW9uVGFnc1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZGVudGl0eUNlbnRlcihcbiAgICBvcmdBY2NvdW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzXG4gICkge1xuICAgIGlmIChwcm9wcy5pZGVudGl0eUNlbnRlcikge1xuICAgICAgbmV3IElkZW50aXR5Q2VudGVyKHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJcIiwge1xuICAgICAgICBhY2NvdW50czogb3JnQWNjb3VudHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjall/components-infrastructure",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.45",
|
|
4
4
|
"bin": {
|
|
5
5
|
"infrastructure": "bin/infrastructure.js"
|
|
6
6
|
},
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@aws-sdk/client-cost-explorer": "^3.717.0",
|
|
58
58
|
"@aws-sdk/client-organizations": "^3.716.0",
|
|
59
|
-
"@fjall/util": "^0.1.
|
|
59
|
+
"@fjall/util": "^0.1.45",
|
|
60
60
|
"@pepperize/cdk-organizations": "^0.7.135",
|
|
61
61
|
"aws-cdk": "^2.146.0",
|
|
62
62
|
"aws-cdk-lib": "^2.146.0",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"overrides": {
|
|
69
69
|
"@smithy/core": "2.5.5"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "cd903620cbd83ded6050cacdfb7d6926efbddcd9"
|
|
72
72
|
}
|