@fjall/components-infrastructure 0.1.6 → 0.1.10
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 +1 -2
- package/dist/lib/app.js +2 -4
- package/dist/lib/config/aws/costAllocationTags.d.ts +3 -2
- package/dist/lib/config/aws/costAllocationTags.js +5 -6
- package/dist/lib/config/aws/identityCenter.d.ts +3 -11
- package/dist/lib/config/aws/identityCenter.js +29 -24
- package/dist/lib/config/aws/index.d.ts +4 -8
- package/dist/lib/config/aws/index.js +5 -9
- package/dist/lib/config/aws/ipam.d.ts +2 -2
- package/dist/lib/config/aws/ipam.js +7 -25
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +5 -4
- package/dist/lib/config/aws/ipamDelegateAdmin.js +13 -9
- package/dist/lib/config/aws/organisationId.d.ts +2 -4
- package/dist/lib/config/aws/organisationId.js +7 -13
- package/dist/lib/patterns/aws/basicApp.d.ts +2 -2
- package/dist/lib/patterns/aws/basicApp.js +15 -15
- package/dist/lib/patterns/aws/buildkite.d.ts +3 -3
- package/dist/lib/patterns/aws/buildkite.js +7 -9
- package/dist/lib/patterns/aws/index.d.ts +0 -3
- package/dist/lib/patterns/aws/index.js +1 -4
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +21 -9
- package/dist/lib/patterns/aws/managedOrganisation.js +147 -33
- package/dist/lib/resources/aws/compute/ecs.d.ts +4 -2
- package/dist/lib/resources/aws/compute/ecs.js +6 -10
- package/dist/lib/resources/aws/compute/lambda.d.ts +7 -7
- package/dist/lib/resources/aws/compute/lambda.js +7 -8
- package/dist/lib/resources/aws/logging/logGroup.d.ts +3 -3
- package/dist/lib/resources/aws/logging/logGroup.js +3 -3
- package/dist/lib/resources/aws/networking/index.d.ts +1 -1
- package/dist/lib/resources/aws/networking/index.js +2 -2
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +3 -16
- package/dist/lib/resources/aws/networking/ipamPool.js +6 -75
- package/dist/lib/resources/aws/utilities/customResource.js +2 -2
- package/dist/lib/utils/getAccountId.d.ts +1 -1
- package/dist/lib/utils/getAccountId.js +2 -3
- package/dist/lib/utils/getConfig.d.ts +2 -3
- package/dist/lib/utils/getConfig.js +6 -20
- package/package.json +2 -2
- package/dist/lib/config/aws/accountId.d.ts +0 -6
- package/dist/lib/config/aws/accountId.js +0 -33
- package/dist/lib/config/aws/cloudTrail.d.ts +0 -10
- package/dist/lib/config/aws/cloudTrail.js +0 -22
- package/dist/lib/config/aws/ecrDefaultImage.d.ts +0 -11
- package/dist/lib/config/aws/ecrDefaultImage.js +0 -127
- package/dist/lib/config/aws/eventBus.d.ts +0 -7
- package/dist/lib/config/aws/eventBus.js +0 -24
- package/dist/lib/config/aws/identityCenterUser.d.ts +0 -16
- package/dist/lib/config/aws/identityCenterUser.js +0 -125
- package/dist/lib/config/aws/ipamPoolId.d.ts +0 -9
- package/dist/lib/config/aws/ipamPoolId.js +0 -36
- package/dist/lib/config/aws/organisation.d.ts +0 -28
- package/dist/lib/config/aws/organisation.js +0 -142
- package/dist/lib/config/aws/ramSharing.d.ts +0 -4
- package/dist/lib/config/aws/ramSharing.js +0 -35
- package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -46
- package/dist/lib/patterns/aws/freeTierApp.js +0 -95
- package/dist/lib/patterns/aws/hostedZone.d.ts +0 -11
- package/dist/lib/patterns/aws/hostedZone.js +0 -73
- package/dist/lib/patterns/aws/managedAccount.d.ts +0 -13
- package/dist/lib/patterns/aws/managedAccount.js +0 -39
- package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -13
- package/dist/lib/patterns/aws/managedPlatform.js +0 -22
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +0 -46
- package/dist/lib/patterns/aws/spotInstanceApp.js +0 -95
- package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +0 -9
- package/dist/lib/patterns/aws/subdomainHostedZone.js +0 -39
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +0 -76
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +0 -352
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +0 -76
- package/dist/lib/resources/aws/compute/ecsSpot.js +0 -334
- package/dist/lib/resources/aws/compute/index.d.ts +0 -2
- package/dist/lib/resources/aws/compute/index.js +0 -19
- package/dist/lib/resources/aws/database/database.d.ts +0 -16
- package/dist/lib/resources/aws/database/database.js +0 -30
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +0 -17
- package/dist/lib/resources/aws/database/databaseFreeTier.js +0 -31
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -17
- package/dist/lib/resources/aws/database/databaseInstance.js +0 -32
- package/dist/lib/resources/aws/database/index.d.ts +0 -2
- package/dist/lib/resources/aws/database/index.js +0 -19
- package/dist/lib/resources/aws/database/rds.d.ts +0 -23
- package/dist/lib/resources/aws/database/rds.js +0 -130
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +0 -36
- package/dist/lib/resources/aws/database/rdsFreeTier.js +0 -80
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +0 -42
- package/dist/lib/resources/aws/database/rdsInstance.js +0 -173
- package/dist/lib/resources/aws/logging/cloudTrail.d.ts +0 -18
- package/dist/lib/resources/aws/logging/cloudTrail.js +0 -46
- package/dist/lib/resources/aws/networking/vpc.d.ts +0 -29
- package/dist/lib/resources/aws/networking/vpc.js +0 -64
- package/dist/lib/resources/aws/secrets/alias.d.ts +0 -5
- package/dist/lib/resources/aws/secrets/alias.js +0 -13
- package/dist/lib/resources/aws/secrets/index.d.ts +0 -5
- package/dist/lib/resources/aws/secrets/index.js +0 -22
- package/dist/lib/resources/aws/secrets/kms.d.ts +0 -14
- package/dist/lib/resources/aws/secrets/kms.js +0 -34
- package/dist/lib/resources/aws/secrets/parameter.d.ts +0 -26
- package/dist/lib/resources/aws/secrets/parameter.js +0 -100
- package/dist/lib/resources/aws/secrets/secret.d.ts +0 -24
- package/dist/lib/resources/aws/secrets/secret.js +0 -53
- package/dist/lib/resources/aws/storage/ecr.d.ts +0 -12
- package/dist/lib/resources/aws/storage/ecr.js +0 -31
- package/dist/lib/resources/aws/storage/index.d.ts +0 -2
- package/dist/lib/resources/aws/storage/index.js +0 -19
- package/dist/lib/resources/aws/storage/s3.d.ts +0 -11
- package/dist/lib/resources/aws/storage/s3.js +0 -44
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +0 -15
- package/dist/lib/resources/aws/utilities/codeBuild.js +0 -28
- package/dist/lib/types.d.ts +0 -3
- package/dist/lib/types.js +0 -3
- package/dist/lib/utils/capitalizeString.d.ts +0 -1
- package/dist/lib/utils/capitalizeString.js +0 -8
- package/dist/lib/utils/getCidr.d.ts +0 -8
- package/dist/lib/utils/getCidr.js +0 -42
- package/dist/lib/utils/stripAndCamelCase.d.ts +0 -1
- package/dist/lib/utils/stripAndCamelCase.js +0 -17
- package/dist/lib/utils/usersConfig.d.ts +0 -7
- package/dist/lib/utils/usersConfig.js +0 -18
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IdentityCenterUser = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const constructs_1 = require("constructs");
|
|
7
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
-
const usersConfig_1 = require("../../utils/usersConfig");
|
|
9
|
-
const capitalizeString_1 = require("../../utils/capitalizeString");
|
|
10
|
-
class IdentityCenterUser extends constructs_1.Construct {
|
|
11
|
-
constructor(scope, id, props) {
|
|
12
|
-
super(scope, id);
|
|
13
|
-
const users = new usersConfig_1.default().getUsers();
|
|
14
|
-
const identityStoreId = props.identityStoreId;
|
|
15
|
-
const userCount = users.length;
|
|
16
|
-
for (let i = 0; i < userCount; i++) {
|
|
17
|
-
const user = users[i];
|
|
18
|
-
const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
|
|
19
|
-
const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
|
|
20
|
-
const userParams = {
|
|
21
|
-
IdentityStoreId: identityStoreId,
|
|
22
|
-
UserName: user.email,
|
|
23
|
-
DisplayName: `${givenName} ${familyName}`,
|
|
24
|
-
Name: {
|
|
25
|
-
FamilyName: user.lastName,
|
|
26
|
-
GivenName: user.firstName
|
|
27
|
-
},
|
|
28
|
-
Emails: [
|
|
29
|
-
{
|
|
30
|
-
Primary: true,
|
|
31
|
-
Value: user.email
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
};
|
|
35
|
-
const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
|
|
36
|
-
functionName: "createUsers",
|
|
37
|
-
onCreate: {
|
|
38
|
-
service: "IdentityStore",
|
|
39
|
-
action: "createUser",
|
|
40
|
-
parameters: userParams,
|
|
41
|
-
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
42
|
-
},
|
|
43
|
-
onUpdate: {
|
|
44
|
-
service: "IdentityStore",
|
|
45
|
-
action: "updateUser",
|
|
46
|
-
parameters: userParams,
|
|
47
|
-
physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
|
|
48
|
-
},
|
|
49
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
50
|
-
});
|
|
51
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
|
|
52
|
-
functionName: "deleteUsers",
|
|
53
|
-
onDelete: {
|
|
54
|
-
service: "IdentityStore",
|
|
55
|
-
action: "deleteUser",
|
|
56
|
-
parameters: {
|
|
57
|
-
IdentityStoreId: identityStoreId,
|
|
58
|
-
UserId: createUser.getResponseField("UserId")
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
62
|
-
});
|
|
63
|
-
new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
|
|
64
|
-
key: `UserId${givenName}${familyName}`,
|
|
65
|
-
value: createUser.getResponseField("UserId"),
|
|
66
|
-
exportName: `UserId${givenName}${familyName}`
|
|
67
|
-
});
|
|
68
|
-
// props.identityCenterGroups.forEach((identityCenterGroup))
|
|
69
|
-
user.groups.forEach((group) => {
|
|
70
|
-
const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
|
|
71
|
-
if (!identityCenterGroup) {
|
|
72
|
-
throw new Error(`Group ${group} does not exist in Identity Center Groups`);
|
|
73
|
-
}
|
|
74
|
-
const groupId = identityCenterGroup.attrGroupId;
|
|
75
|
-
const groupName = identityCenterGroup.displayName;
|
|
76
|
-
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
|
|
77
|
-
functionName: "createGroupMembership",
|
|
78
|
-
onCreate: {
|
|
79
|
-
service: "IdentityStore",
|
|
80
|
-
action: "createGroupMembership",
|
|
81
|
-
parameters: {
|
|
82
|
-
GroupId: groupId,
|
|
83
|
-
IdentityStoreId: identityStoreId,
|
|
84
|
-
MemberId: {
|
|
85
|
-
UserId: createUser.getResponseField("UserId")
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${givenName}${familyName}To${groupName}`)
|
|
89
|
-
},
|
|
90
|
-
onUpdate: {
|
|
91
|
-
service: "IdentityStore",
|
|
92
|
-
action: "createGroupMembership",
|
|
93
|
-
parameters: {
|
|
94
|
-
GroupId: groupId,
|
|
95
|
-
IdentityStoreId: identityStoreId,
|
|
96
|
-
MemberId: {
|
|
97
|
-
UserId: createUser.getResponseField("UserId")
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${givenName}${familyName}To${groupName}`)
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
|
|
104
|
-
functionName: "deleteGroupMembership",
|
|
105
|
-
onDelete: {
|
|
106
|
-
service: "IdentityStore",
|
|
107
|
-
action: "deleteGroupMembership",
|
|
108
|
-
parameters: {
|
|
109
|
-
IdentityStoreId: identityStoreId,
|
|
110
|
-
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
114
|
-
});
|
|
115
|
-
new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
|
|
116
|
-
key: `GroupMembershipId${givenName}${familyName}${groupName}`,
|
|
117
|
-
value: groupMembershipId.getResponseField("MembershipId"),
|
|
118
|
-
exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.IdentityCenterUser = IdentityCenterUser;
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUs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Q0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUF2SkQsZ0RBdUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IFVzZXJzQ29uZmlnIGZyb20gXCIuLi8uLi91dGlscy91c2Vyc0NvbmZpZ1wiO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXBcIjtcbmltcG9ydCB7IGNhcGl0YWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2FwaXRhbGl6ZVN0cmluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICBlbWFpbDogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgZ3JvdXBzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIGNyZWF0ZVVzZXJQYXJhbWV0ZXJzIHtcbiAgSWRlbnRpdHlTdG9yZUlkOiBzdHJpbmc7XG4gIFVzZXJOYW1lOiBzdHJpbmc7XG4gIERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIE5hbWU6IHtcbiAgICBGYW1pbHlOYW1lOiBzdHJpbmc7XG4gICAgR2l2ZW5OYW1lOiBzdHJpbmc7XG4gIH07XG4gIEVtYWlsczoge1xuICAgIFByaW1hcnk6IGJvb2xlYW47XG4gICAgVmFsdWU6IHN0cmluZztcbiAgfVtdO1xufVxuXG5pbnRlcmZhY2UgSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMge1xuICBpZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgaWRlbnRpdHlDZW50ZXJHcm91cHM6IEdyb3VwW107XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUNlbnRlclVzZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdXNlcnM6IFVzZXJbXSA9IG5ldyBVc2Vyc0NvbmZpZygpLmdldFVzZXJzKCk7XG4gICAgY29uc3QgaWRlbnRpdHlTdG9yZUlkID0gcHJvcHMuaWRlbnRpdHlTdG9yZUlkO1xuXG4gICAgY29uc3QgdXNlckNvdW50ID0gdXNlcnMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlckNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2Vyc1tpXTtcbiAgICAgIGNvbnN0IGdpdmVuTmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5maXJzdE5hbWUpO1xuICAgICAgY29uc3QgZmFtaWx5TmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5sYXN0TmFtZSk7XG4gICAgICBjb25zdCB1c2VyUGFyYW1zOiBjcmVhdGVVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgIFVzZXJOYW1lOiB1c2VyLmVtYWlsLFxuICAgICAgICBEaXNwbGF5TmFtZTogYCR7Z2l2ZW5OYW1lfSAke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgTmFtZToge1xuICAgICAgICAgIEZhbWlseU5hbWU6IHVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgR2l2ZW5OYW1lOiB1c2VyLmZpcnN0TmFtZVxuICAgICAgICB9LFxuICAgICAgICBFbWFpbHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBQcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgVmFsdWU6IHVzZXIuZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBjcmVhdGVVc2VyJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlVXNlcnNcIixcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNjcmVhdGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJ1cGRhdGVVc2VyXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYGRlbGV0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlVXNlcnNcIixcbiAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNkZWxldGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICB9KTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsIHtcbiAgICAgICAga2V5OiBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHZhbHVlOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIiksXG4gICAgICAgIGV4cG9ydE5hbWU6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHByb3BzLmlkZW50aXR5Q2VudGVyR3JvdXBzLmZvckVhY2goKGlkZW50aXR5Q2VudGVyR3JvdXApKVxuXG4gICAgICB1c2VyLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBpZGVudGl0eUNlbnRlckdyb3VwID0gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZmluZChcbiAgICAgICAgICAoaWRlbnRpdHlDZW50ZXJHcm91cCkgPT4gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZSA9PT0gZ3JvdXBcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlkZW50aXR5Q2VudGVyR3JvdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgR3JvdXAgJHtncm91cH0gZG9lcyBub3QgZXhpc3QgaW4gSWRlbnRpdHkgQ2VudGVyIEdyb3Vwc2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IGlkZW50aXR5Q2VudGVyR3JvdXAuYXR0ckdyb3VwSWQ7XG4gICAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IGlkZW50aXR5Q2VudGVyR3JvdXAuZGlzcGxheU5hbWU7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwSWQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgICAgYGNyZWF0ZUdyb3VwTWVtYmVyc2hpcCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1UbyR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgZGVsZXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfUZyb20ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJzaGlwSWQ6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICAgIHZhbHVlOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpLFxuICAgICAgICAgICAgZXhwb3J0TmFtZTogYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IpamPoolId = void 0;
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
6
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
7
|
-
const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
|
|
8
|
-
class IpamPoolId extends constructs_1.Construct {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id);
|
|
11
|
-
const ipamPoolId = new awsCustomResource_1.AwsCustomResource(this, "CustomResource", {
|
|
12
|
-
functionName: "ipamPoolId",
|
|
13
|
-
onCreate: {
|
|
14
|
-
service: "ec2",
|
|
15
|
-
action: "DescribeIpamPoolsCommand",
|
|
16
|
-
parameters: {
|
|
17
|
-
Filters: [
|
|
18
|
-
{
|
|
19
|
-
Name: "locale",
|
|
20
|
-
Values: [props.region]
|
|
21
|
-
}
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
physicalResourceId: customResources.PhysicalResourceId.of("ipamPoolId")
|
|
25
|
-
},
|
|
26
|
-
resourceType: "Custom::DescribeIpamPools"
|
|
27
|
-
});
|
|
28
|
-
new cfnOutput_1.CfnOutput(this, `Output`, {
|
|
29
|
-
key: `ManagedIpamPoolId`,
|
|
30
|
-
value: ipamPoolId.getResponseField("IpamPools.0.IpamPoolId"),
|
|
31
|
-
exportName: `ManagedIpamPoolId`
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.IpamPoolId = IpamPoolId;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xJZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2lwYW1Qb29sSWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRixnRUFBZ0U7QUFDaEUsdUVBQW9FO0FBT3BFLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUMvRCxZQUFZLEVBQUUsWUFBWTtZQUMxQixRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLDBCQUEwQjtnQkFDbEMsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3lCQUN2QjtxQkFDRjtpQkFDRjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4RTtZQUNELFlBQVksRUFBRSwyQkFBMkI7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDNUIsR0FBRyxFQUFFLG1CQUFtQjtZQUN4QixLQUFLLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO1lBQzVELFVBQVUsRUFBRSxtQkFBbUI7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNUJELGdDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY2ZuT3V0cHV0XCI7XG5cbmludGVyZmFjZSBJcGFtUG9vbElkUHJvcHMge1xuICByZWdpb246IHN0cmluZztcbiAgb3duZXJJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xJZCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbElkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaXBhbVBvb2xJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkN1c3RvbVJlc291cmNlXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJpcGFtUG9vbElkXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcImVjMlwiLFxuICAgICAgICBhY3Rpb246IFwiRGVzY3JpYmVJcGFtUG9vbHNDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBGaWx0ZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIE5hbWU6IFwibG9jYWxlXCIsXG4gICAgICAgICAgICAgIFZhbHVlczogW3Byb3BzLnJlZ2lvbl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1Qb29sSWRcIilcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpEZXNjcmliZUlwYW1Qb29sc1wiXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBPdXRwdXRgLCB7XG4gICAgICBrZXk6IGBNYW5hZ2VkSXBhbVBvb2xJZGAsXG4gICAgICB2YWx1ZTogaXBhbVBvb2xJZC5nZXRSZXNwb25zZUZpZWxkKFwiSXBhbVBvb2xzLjAuSXBhbVBvb2xJZFwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IGBNYW5hZ2VkSXBhbVBvb2xJZGBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { CfnOutput } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { Accounts } from "../../patterns/aws/managedOrganisation";
|
|
4
|
-
interface OrganisationProps {
|
|
5
|
-
organisationName: string;
|
|
6
|
-
orgAccounts: string[];
|
|
7
|
-
platformAccount: string;
|
|
8
|
-
accountEmail: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
12
|
-
*/
|
|
13
|
-
export default class Organisation extends Construct {
|
|
14
|
-
props: OrganisationProps;
|
|
15
|
-
accountId: CfnOutput;
|
|
16
|
-
private importedAccounts;
|
|
17
|
-
private organisation;
|
|
18
|
-
private organisationalUnits;
|
|
19
|
-
private accounts;
|
|
20
|
-
constructor(scope: Construct, id: string, props: OrganisationProps);
|
|
21
|
-
private importAccounts;
|
|
22
|
-
private addOrganisation;
|
|
23
|
-
private addOrganisationUnitsAndAccounts;
|
|
24
|
-
private addOrganisationalUnit;
|
|
25
|
-
private addAccount;
|
|
26
|
-
getAccounts(): Accounts;
|
|
27
|
-
}
|
|
28
|
-
export {};
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
6
|
-
const stripAndCamelCase_1 = require("../../utils/stripAndCamelCase");
|
|
7
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
8
|
-
const cdk_organizations_1 = require("@pepperize/cdk-organizations");
|
|
9
|
-
const addSuffixToEmail_1 = require("../../utils/addSuffixToEmail");
|
|
10
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
11
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
12
|
-
/**
|
|
13
|
-
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
14
|
-
*/
|
|
15
|
-
class Organisation extends constructs_1.Construct {
|
|
16
|
-
constructor(scope, id, props) {
|
|
17
|
-
super(scope, id);
|
|
18
|
-
this.importedAccounts = {};
|
|
19
|
-
this.organisationalUnits = [];
|
|
20
|
-
this.accounts = {};
|
|
21
|
-
this.props = props;
|
|
22
|
-
if (!props.orgAccounts.includes(props.platformAccount)) {
|
|
23
|
-
throw new Error("ERROR: The Platform account specified must be included in the account names");
|
|
24
|
-
}
|
|
25
|
-
this.importAccounts();
|
|
26
|
-
this.addOrganisation();
|
|
27
|
-
this.addOrganisationUnitsAndAccounts();
|
|
28
|
-
}
|
|
29
|
-
importAccounts() {
|
|
30
|
-
const listAccounts = new awsCustomResource_1.AwsCustomResource(this, "ListAccounts", {
|
|
31
|
-
functionName: "listAccounts",
|
|
32
|
-
onCreate: {
|
|
33
|
-
service: "organizations",
|
|
34
|
-
action: "ListAccountsCommand",
|
|
35
|
-
parameters: {
|
|
36
|
-
MaxResults: 20 // TODO: We may hit a limit here, this is higher than the AWS limit for accounts
|
|
37
|
-
},
|
|
38
|
-
physicalResourceId: customResources.PhysicalResourceId.of("listAccounts")
|
|
39
|
-
},
|
|
40
|
-
resourceType: "Custom::ListAccounts",
|
|
41
|
-
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
42
|
-
new aws_iam_1.PolicyStatement({
|
|
43
|
-
actions: ["organizations:ListAccounts"],
|
|
44
|
-
resources: ["*"],
|
|
45
|
-
effect: aws_iam_1.Effect.ALLOW
|
|
46
|
-
})
|
|
47
|
-
])
|
|
48
|
-
});
|
|
49
|
-
const listAccountsResponse = listAccounts.getResponseField("Accounts");
|
|
50
|
-
const countOccurrences = (str, subStr) => {
|
|
51
|
-
return str.split(subStr).length - 1;
|
|
52
|
-
};
|
|
53
|
-
const idCount = countOccurrences(listAccountsResponse, '"Id"');
|
|
54
|
-
for (let i = 0; i < idCount; i++) {
|
|
55
|
-
const accountName = listAccounts.getResponseField(`Accounts.${i}.Name`);
|
|
56
|
-
const accountEmail = listAccounts.getResponseField(`Accounts.${i}.Email`);
|
|
57
|
-
if (accountName && accountEmail) {
|
|
58
|
-
this.importedAccounts[accountName] = accountEmail;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
addOrganisation() {
|
|
63
|
-
this.organisation = new cdk_organizations_1.Organization(this, this.props.organisationName, {
|
|
64
|
-
featureSet: cdk_organizations_1.FeatureSet.ALL
|
|
65
|
-
});
|
|
66
|
-
// TODO: Validate this enables trusted access
|
|
67
|
-
this.organisation.enableAwsServiceAccess("account.amazonaws.com");
|
|
68
|
-
const enforcedPolicyTypes = [
|
|
69
|
-
cdk_organizations_1.PolicyType.SERVICE_CONTROL_POLICY,
|
|
70
|
-
cdk_organizations_1.PolicyType.TAG_POLICY,
|
|
71
|
-
cdk_organizations_1.PolicyType.BACKUP_POLICY,
|
|
72
|
-
cdk_organizations_1.PolicyType.AISERVICES_OPT_OUT_POLICY
|
|
73
|
-
];
|
|
74
|
-
for (const policyType of enforcedPolicyTypes) {
|
|
75
|
-
this.organisation.enablePolicyType(policyType);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
addOrganisationUnitsAndAccounts() {
|
|
79
|
-
const orgStructure = [];
|
|
80
|
-
for (const accountName of this.props.orgAccounts) {
|
|
81
|
-
const accountNameId = (0, stripAndCamelCase_1.stripAndCamelCase)(accountName);
|
|
82
|
-
const accountEmail = this.importedAccounts && this.importedAccounts[accountName]
|
|
83
|
-
? this.importedAccounts[accountName]
|
|
84
|
-
: (0, addSuffixToEmail_1.default)(this.props.accountEmail, accountNameId.toLowerCase());
|
|
85
|
-
const orgUnitStructure = {
|
|
86
|
-
id: `${accountName}OrganizationalUnit`,
|
|
87
|
-
name: accountName,
|
|
88
|
-
accounts: [
|
|
89
|
-
{
|
|
90
|
-
id: `${accountNameId}Account`,
|
|
91
|
-
name: accountName,
|
|
92
|
-
email: accountEmail
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
};
|
|
96
|
-
orgStructure.push(orgUnitStructure);
|
|
97
|
-
}
|
|
98
|
-
for (const orgUnitStructure of orgStructure) {
|
|
99
|
-
const orgUnit = this.addOrganisationalUnit(orgUnitStructure.id, orgUnitStructure.name);
|
|
100
|
-
for (const accountStructure of orgUnitStructure.accounts) {
|
|
101
|
-
this.addAccount(accountStructure.id, accountStructure.name, accountStructure.email, { env: orgUnitStructure.name.toLocaleLowerCase() }, orgUnit);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
addOrganisationalUnit(id, name) {
|
|
106
|
-
const ou = new cdk_organizations_1.OrganizationalUnit(this, id, {
|
|
107
|
-
organizationalUnitName: name,
|
|
108
|
-
parent: this.organisation.root,
|
|
109
|
-
importOnDuplicate: true
|
|
110
|
-
});
|
|
111
|
-
this.organisationalUnits.push(ou);
|
|
112
|
-
return ou;
|
|
113
|
-
}
|
|
114
|
-
addAccount(id, name, email, tags, organisationalUnit) {
|
|
115
|
-
const acc = new cdk_organizations_1.Account(this, id, {
|
|
116
|
-
accountName: name,
|
|
117
|
-
email: email,
|
|
118
|
-
parent: organisationalUnit,
|
|
119
|
-
importOnDuplicate: true
|
|
120
|
-
});
|
|
121
|
-
for (const tag in tags) {
|
|
122
|
-
aws_cdk_lib_2.Tags.of(acc).add(tag, tags[tag]);
|
|
123
|
-
}
|
|
124
|
-
this.accounts[name] = acc.accountId;
|
|
125
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Id`, {
|
|
126
|
-
key: `${id}Id`,
|
|
127
|
-
value: acc.accountId,
|
|
128
|
-
exportName: `${id}Id`
|
|
129
|
-
});
|
|
130
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Arn`, {
|
|
131
|
-
key: `${id}Arn`,
|
|
132
|
-
value: acc.accountArn,
|
|
133
|
-
exportName: `${id}Arn`
|
|
134
|
-
});
|
|
135
|
-
return acc;
|
|
136
|
-
}
|
|
137
|
-
getAccounts() {
|
|
138
|
-
return this.accounts;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
exports.default = Organisation;
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3Mvb3JnYW5pc2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQXdDO0FBQ3hDLDJDQUF1QztBQUN2Qyw2Q0FBbUM7QUFDbkMscUVBQWtFO0FBQ2xFLGdFQUFnRTtBQUVoRSxvRUFNc0M7QUFFdEMsbUVBQTREO0FBQzVELHVGQUFvRjtBQUNwRixpREFBOEQ7QUFzQjlEOztHQUVHO0FBQ0gsTUFBcUIsWUFBYSxTQUFRLHNCQUFTO0lBU2pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQU5YLHFCQUFnQixHQUE4QixFQUFFLENBQUM7UUFFakQsd0JBQW1CLEdBQXlCLEVBQUUsQ0FBQztRQUMvQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBSTlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYiw2RUFBNkUsQ0FDOUUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDL0QsWUFBWSxFQUFFLGNBQWM7WUFDNUIsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUscUJBQXFCO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YsVUFBVSxFQUFFLEVB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QUksRUFBRSxFQUFFLEVBQUU7WUFDaEMsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsa0JBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUVwQyxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7WUFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDOUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUE5S0QsK0JBOEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgc3RyaXBBbmRDYW1lbENhc2UgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaXBBbmRDYW1lbENhc2VcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuXG5pbXBvcnQge1xuICBBY2NvdW50LFxuICBGZWF0dXJlU2V0LFxuICBPcmdhbml6YXRpb24sXG4gIE9yZ2FuaXphdGlvbmFsVW5pdCxcbiAgUG9saWN5VHlwZVxufSBmcm9tIFwiQHBlcHBlcml6ZS9jZGstb3JnYW5pemF0aW9uc1wiO1xuXG5pbXBvcnQgYWRkU3VmZml4VG9FbWFpbCBmcm9tIFwiLi4vLi4vdXRpbHMvYWRkU3VmZml4VG9FbWFpbFwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IEFjY291bnRzIH0gZnJvbSBcIi4uLy4uL3BhdHRlcm5zL2F3cy9tYW5hZ2VkT3JnYW5pc2F0aW9uXCI7XG5cbmludGVyZmFjZSBPcmdhbmlzYXRpb25Qcm9wcyB7XG4gIG9yZ2FuaXNhdGlvbk5hbWU6IHN0cmluZztcbiAgb3JnQWNjb3VudHM6IHN0cmluZ1tdO1xuICBwbGF0Zm9ybUFjY291bnQ6IHN0cmluZztcbiAgYWNjb3VudEVtYWlsOiBzdHJpbmc7XG59XG5cbnR5cGUgQWNjb3VudFN0cnVjdHVyZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufTtcblxudHlwZSBPcmdhbmlzYXRpb25TdHJ1Y3R1cmUgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYWNjb3VudHM6IEFjY291bnRTdHJ1Y3R1cmVbXTtcbn07XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgZm9yIGNyZWF0aW5nIG11bHRpIGVudmlyb25tZW50IG9yZ2FuaXNhdGlvbnMgd2l0aCBhIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50IGFjY291bnQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9yZ2FuaXNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBwcm9wczogT3JnYW5pc2F0aW9uUHJvcHM7XG4gIHB1YmxpYyBhY2NvdW50SWQ6IENmbk91dHB1dDtcblxuICBwcml2YXRlIGltcG9ydGVkQWNjb3VudHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgcHJpdmF0ZSBvcmdhbmlzYXRpb246IE9yZ2FuaXphdGlvbjtcbiAgcHJpdmF0ZSBvcmdhbmlzYXRpb25hbFVuaXRzOiBPcmdhbml6YXRpb25hbFVuaXRbXSA9IFtdO1xuICBwcml2YXRlIGFjY291bnRzOiBBY2NvdW50cyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgaWYgKCFwcm9wcy5vcmdBY2NvdW50cy5pbmNsdWRlcyhwcm9wcy5wbGF0Zm9ybUFjY291bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRVJST1I6IFRoZSBQbGF0Zm9ybSBhY2NvdW50IHNwZWNpZmllZCBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBhY2NvdW50IG5hbWVzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5pbXBvcnRBY2NvdW50cygpO1xuICAgIHRoaXMuYWRkT3JnYW5pc2F0aW9uKCk7XG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb25Vbml0c0FuZEFjY291bnRzKCk7XG4gIH1cblxuICBwcml2YXRlIGltcG9ydEFjY291bnRzKCkge1xuICAgIGNvbnN0IGxpc3RBY2NvdW50cyA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkxpc3RBY2NvdW50c1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwibGlzdEFjY291bnRzXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcIkxpc3RBY2NvdW50c0NvbW1hbmRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9vcmdhbml6YXRpb25zL2NvbW1hbmQvTGlzdEFjY291bnRzQ29tbWFuZC9cbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE1heFJlc3VsdHM6IDIwIC8vIFRPRE86IFdlIG1heSBoaXQgYSBsaW1pdCBoZXJlLCB0aGlzIGlzIGhpZ2hlciB0aGFuIHRoZSBBV1MgbGltaXQgZm9yIGFjY291bnRzXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwibGlzdEFjY291bnRzXCIpXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6TGlzdEFjY291bnRzXCIsXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcIm9yZ2FuaXphdGlvbnM6TGlzdEFjY291bnRzXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPV1xuICAgICAgICB9KVxuICAgICAgXSlcbiAgICB9KTtcblxuICAgIGNvbnN0IGxpc3RBY2NvdW50c1Jlc3BvbnNlID0gbGlzdEFjY291bnRzLmdldFJlc3BvbnNlRmllbGQoXCJBY2NvdW50c1wiKTtcblxuICAgIGNvbnN0IGNvdW50T2NjdXJyZW5jZXMgPSAoc3RyOiBzdHJpbmcsIHN1YlN0cjogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBzdHIuc3BsaXQoc3ViU3RyKS5sZW5ndGggLSAxO1xuICAgIH07XG4gICAgY29uc3QgaWRDb3VudCA9IGNvdW50T2NjdXJyZW5jZXMobGlzdEFjY291bnRzUmVzcG9uc2UsICdcIklkXCInKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBhY2NvdW50TmFtZSA9IGxpc3RBY2NvdW50cy5nZXRSZXNwb25zZUZpZWxkKGBBY2NvdW50cy4ke2l9Lk5hbWVgKTtcbiAgICAgIGNvbnN0IGFjY291bnRFbWFpbCA9IGxpc3RBY2NvdW50cy5nZXRSZXNwb25zZUZpZWxkKGBBY2NvdW50cy4ke2l9LkVtYWlsYCk7XG4gICAgICBpZiAoYWNjb3VudE5hbWUgJiYgYWNjb3VudEVtYWlsKSB7XG4gICAgICAgIHRoaXMuaW1wb3J0ZWRBY2NvdW50c1thY2NvdW50TmFtZV0gPSBhY2NvdW50RW1haWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRPcmdhbmlzYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb24gPSBuZXcgT3JnYW5pemF0aW9uKHRoaXMsIHRoaXMucHJvcHMub3JnYW5pc2F0aW9uTmFtZSwge1xuICAgICAgZmVhdHVyZVNldDogRmVhdHVyZVNldC5BTExcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoaXMgZW5hYmxlcyB0cnVzdGVkIGFjY2Vzc1xuICAgIHRoaXMub3JnYW5pc2F0aW9uLmVuYWJsZUF3c1NlcnZpY2VBY2Nlc3MoXCJhY2NvdW50LmFtYXpvbmF3cy5jb21cIik7XG5cbiAgICBjb25zdCBlbmZvcmNlZFBvbGljeVR5cGVzOiBQb2xpY3lUeXBlW10gPSBbXG4gICAgICBQb2xpY3lUeXBlLlNFUlZJQ0VfQ09OVFJPTF9QT0xJQ1ksXG4gICAgICBQb2xpY3lUeXBlLlRBR19QT0xJQ1ksXG4gICAgICBQb2xpY3lUeXBlLkJBQ0tVUF9QT0xJQ1ksXG4gICAgICBQb2xpY3lUeXBlLkFJU0VSVklDRVNfT1BUX09VVF9QT0xJQ1lcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBwb2xpY3lUeXBlIG9mIGVuZm9yY2VkUG9saWN5VHlwZXMpIHtcbiAgICAgIHRoaXMub3JnYW5pc2F0aW9uLmVuYWJsZVBvbGljeVR5cGUocG9saWN5VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRPcmdhbmlzYXRpb25Vbml0c0FuZEFjY291bnRzKCkge1xuICAgIGNvbnN0IG9yZ1N0cnVjdHVyZTogT3JnYW5pc2F0aW9uU3RydWN0dXJlW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgdGhpcy5wcm9wcy5vcmdBY2NvdW50cykge1xuICAgICAgY29uc3QgYWNjb3VudE5hbWVJZCA9IHN0cmlwQW5kQ2FtZWxDYXNlKGFjY291bnROYW1lKTtcbiAgICAgIGNvbnN0IGFjY291bnRFbWFpbCA9XG4gICAgICAgIHRoaXMuaW1wb3J0ZWRBY2NvdW50cyAmJiB0aGlzLmltcG9ydGVkQWNjb3VudHNbYWNjb3VudE5hbWVdXG4gICAgICAgICAgPyB0aGlzLmltcG9ydGVkQWNjb3VudHNbYWNjb3VudE5hbWVdXG4gICAgICAgICAgOiBhZGRTdWZmaXhUb0VtYWlsKFxuICAgICAgICAgICAgICB0aGlzLnByb3BzLmFjY291bnRFbWFpbCxcbiAgICAgICAgICAgICAgYWNjb3VudE5hbWVJZC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApO1xuICAgICAgY29uc3Qgb3JnVW5pdFN0cnVjdHVyZTogT3JnYW5pc2F0aW9uU3RydWN0dXJlID0ge1xuICAgICAgICBpZDogYCR7YWNjb3VudE5hbWV9T3JnYW5pemF0aW9uYWxVbml0YCxcbiAgICAgICAgbmFtZTogYWNjb3VudE5hbWUsXG4gICAgICAgIGFjY291bnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGAke2FjY291bnROYW1lSWR9QWNjb3VudGAsXG4gICAgICAgICAgICBuYW1lOiBhY2NvdW50TmFtZSxcbiAgICAgICAgICAgIGVtYWlsOiBhY2NvdW50RW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgICBvcmdTdHJ1Y3R1cmUucHVzaChvcmdVbml0U3RydWN0dXJlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG9yZ1VuaXRTdHJ1Y3R1cmUgb2Ygb3JnU3RydWN0dXJlKSB7XG4gICAgICBjb25zdCBvcmdVbml0ID0gdGhpcy5hZGRPcmdhbmlzYXRpb25hbFVuaXQoXG4gICAgICAgIG9yZ1VuaXRTdHJ1Y3R1cmUuaWQsXG4gICAgICAgIG9yZ1VuaXRTdHJ1Y3R1cmUubmFtZVxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50U3RydWN0dXJlIG9mIG9yZ1VuaXRTdHJ1Y3R1cmUuYWNjb3VudHMpIHtcbiAgICAgICAgdGhpcy5hZGRBY2NvdW50KFxuICAgICAgICAgIGFjY291bnRTdHJ1Y3R1cmUuaWQsXG4gICAgICAgICAgYWNjb3VudFN0cnVjdHVyZS5uYW1lLFxuICAgICAgICAgIGFjY291bnRTdHJ1Y3R1cmUuZW1haWwsXG4gICAgICAgICAgeyBlbnY6IG9yZ1VuaXRTdHJ1Y3R1cmUubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpIH0sXG4gICAgICAgICAgb3JnVW5pdFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uYWxVbml0KGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IE9yZ2FuaXphdGlvbmFsVW5pdCB7XG4gICAgY29uc3Qgb3UgPSBuZXcgT3JnYW5pemF0aW9uYWxVbml0KHRoaXMsIGlkLCB7XG4gICAgICBvcmdhbml6YXRpb25hbFVuaXROYW1lOiBuYW1lLFxuICAgICAgcGFyZW50OiB0aGlzLm9yZ2FuaXNhdGlvbi5yb290LFxuICAgICAgaW1wb3J0T25EdXBsaWNhdGU6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMub3JnYW5pc2F0aW9uYWxVbml0cy5wdXNoKG91KTtcbiAgICByZXR1cm4gb3U7XG4gIH1cblxuICBwcml2YXRlIGFkZEFjY291bnQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZW1haWw6IHN0cmluZyxcbiAgICB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIG9yZ2FuaXNhdGlvbmFsVW5pdDogT3JnYW5pemF0aW9uYWxVbml0XG4gICk6IEFjY291bnQge1xuICAgIGNvbnN0IGFjYyA9IG5ldyBBY2NvdW50KHRoaXMsIGlkLCB7XG4gICAgICBhY2NvdW50TmFtZTogbmFtZSxcbiAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgIHBhcmVudDogb3JnYW5pc2F0aW9uYWxVbml0LFxuICAgICAgaW1wb3J0T25EdXBsaWNhdGU6IHRydWVcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgdGFnIGluIHRhZ3MpIHtcbiAgICAgIFRhZ3Mub2YoYWNjKS5hZGQodGFnLCB0YWdzW3RhZ10pO1xuICAgIH1cblxuICAgIHRoaXMuYWNjb3VudHNbbmFtZV0gPSBhY2MuYWNjb3VudElkO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1JZGAsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IGFjYy5hY2NvdW50SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QXJuYCxcbiAgICAgIHZhbHVlOiBhY2MuYWNjb3VudEFybixcbiAgICAgIGV4cG9ydE5hbWU6IGAke2lkfUFybmBcbiAgICB9KTtcblxuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjb3VudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RamSharing = void 0;
|
|
4
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const constructs_1 = require("constructs");
|
|
7
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
-
class RamSharing extends constructs_1.Construct {
|
|
9
|
-
constructor(scope, id) {
|
|
10
|
-
super(scope, id);
|
|
11
|
-
new awsCustomResource_1.AwsCustomResource(this, "enableRamSharing", {
|
|
12
|
-
functionName: "enableRamSharing",
|
|
13
|
-
onCreate: {
|
|
14
|
-
service: "RAM",
|
|
15
|
-
action: "enableSharingWithAwsOrganization",
|
|
16
|
-
parameters: {},
|
|
17
|
-
physicalResourceId: customResources.PhysicalResourceId.of("enableRamSharing")
|
|
18
|
-
},
|
|
19
|
-
resourceType: "Custom::ram",
|
|
20
|
-
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
21
|
-
new aws_iam_1.PolicyStatement({
|
|
22
|
-
actions: [
|
|
23
|
-
"ram:EnableSharingWithAwsOrganization",
|
|
24
|
-
"iam:CreateServiceLinkedRole",
|
|
25
|
-
"organizations:enableAWSServiceAccess",
|
|
26
|
-
"organizations:DescribeOrganization"
|
|
27
|
-
],
|
|
28
|
-
resources: ["*"] // TODO: Find out the exact pricipal for this
|
|
29
|
-
})
|
|
30
|
-
])
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.RamSharing = RamSharing;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFtU2hhcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL3JhbVNoYXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQWdFO0FBQ2hFLGlEQUFzRDtBQUN0RCwyQ0FBdUM7QUFFdkMsdUZBQW9GO0FBRXBGLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDOUMsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLGtDQUFrQztnQkFDMUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2Qsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDNUQ7WUFDRCxZQUFZLEVBQUUsYUFBYTtZQUMzQixNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1Asc0NBQXNDO3dCQUN0Qyw2QkFBNkI7d0JBQzdCLHNDQUFzQzt3QkFDdEMsb0NBQW9DO3FCQUNyQztvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyw2Q0FBNkM7aUJBQy9ELENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0JELGdDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1TaGFyaW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJlbmFibGVSYW1TaGFyaW5nXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJlbmFibGVSYW1TaGFyaW5nXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIlJBTVwiLFxuICAgICAgICBhY3Rpb246IFwiZW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb25cIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9SQU0uaHRtbCNlbmFibGVTaGFyaW5nV2l0aEF3c09yZ2FuaXphdGlvbi1wcm9wZXJ0eVxuICAgICAgICBwYXJhbWV0ZXJzOiB7fSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJlbmFibGVSYW1TaGFyaW5nXCIpXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6cmFtXCIsXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwicmFtOkVuYWJsZVNoYXJpbmdXaXRoQXdzT3JnYW5pemF0aW9uXCIsXG4gICAgICAgICAgICBcImlhbTpDcmVhdGVTZXJ2aWNlTGlua2VkUm9sZVwiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOmVuYWJsZUFXU1NlcnZpY2VBY2Nlc3NcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpEZXNjcmliZU9yZ2FuaXphdGlvblwiXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0gLy8gVE9ETzogRmluZCBvdXQgdGhlIGV4YWN0IHByaWNpcGFsIGZvciB0aGlzXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { AwsStackProps } from "../../resources/aws/awsStack";
|
|
2
|
-
import { ScalingType } from "../../resources/aws/compute/ecs";
|
|
3
|
-
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
4
|
-
import { KeyValue } from "../../types";
|
|
5
|
-
/**
|
|
6
|
-
* Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
7
|
-
* to treat these as required properties and avoid constant null checking.
|
|
8
|
-
*/
|
|
9
|
-
export interface BasicAppPropDefaults {
|
|
10
|
-
tags: KeyValue;
|
|
11
|
-
serviceName: string;
|
|
12
|
-
clusterName: string;
|
|
13
|
-
scalingType: ScalingType;
|
|
14
|
-
containerPort: number;
|
|
15
|
-
}
|
|
16
|
-
export interface BasicAppProps {
|
|
17
|
-
account?: string;
|
|
18
|
-
clusterName?: string;
|
|
19
|
-
containerEntryPoint?: string[];
|
|
20
|
-
containerCommand?: string[];
|
|
21
|
-
containerEnvironment?: KeyValue;
|
|
22
|
-
containerPort?: number;
|
|
23
|
-
containerSecrets?: string[];
|
|
24
|
-
owner?: string;
|
|
25
|
-
parentDomain?: string;
|
|
26
|
-
environment: string;
|
|
27
|
-
listenerPort?: number;
|
|
28
|
-
region?: string;
|
|
29
|
-
scalingType?: ScalingType;
|
|
30
|
-
serviceName?: string;
|
|
31
|
-
taskRoleInlinePolicies?: {
|
|
32
|
-
[name: string]: PolicyDocument;
|
|
33
|
-
};
|
|
34
|
-
taskRoleManagedPolicies?: IManagedPolicy[];
|
|
35
|
-
tags?: KeyValue;
|
|
36
|
-
}
|
|
37
|
-
export declare class BasicApp {
|
|
38
|
-
private vpcStack;
|
|
39
|
-
private databaseStack;
|
|
40
|
-
private secretStack;
|
|
41
|
-
private computeStack;
|
|
42
|
-
constructor(id: string, rawProps: BasicAppProps);
|
|
43
|
-
getStackProps(props: BasicAppProps): AwsStackProps | undefined;
|
|
44
|
-
getProps(id: string, rawProps: BasicAppProps): BasicAppProps & BasicAppPropDefaults;
|
|
45
|
-
}
|
|
46
|
-
export default BasicApp;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BasicApp = void 0;
|
|
4
|
-
const awsStack_1 = require("../../resources/aws/awsStack");
|
|
5
|
-
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
6
|
-
const ecs_1 = require("../../resources/aws/compute/ecs");
|
|
7
|
-
const ecsFreeTier_1 = require("../../resources/aws/compute/ecsFreeTier");
|
|
8
|
-
const secrets_1 = require("../../resources/aws/secrets");
|
|
9
|
-
const storage_1 = require("../../resources/aws/storage");
|
|
10
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
|
-
const databaseFreeTier_1 = require("../../resources/aws/database/databaseFreeTier");
|
|
12
|
-
class BasicApp {
|
|
13
|
-
constructor(id, rawProps) {
|
|
14
|
-
const props = this.getProps(id, rawProps);
|
|
15
|
-
const stackProps = this.getStackProps(props);
|
|
16
|
-
this.vpcStack = new awsStack_1.default(`${id}Network`, [], stackProps)
|
|
17
|
-
.addNetwork(vpc_1.Vpc.build(`${id}Vpc`, {
|
|
18
|
-
environment: props.environment,
|
|
19
|
-
region: props.region,
|
|
20
|
-
tags: props.tags
|
|
21
|
-
}))
|
|
22
|
-
.addContainerRegistry(storage_1.Ecr.build(`${id}Ecr`));
|
|
23
|
-
this.databaseStack = new awsStack_1.default(`${id}Database`, this.vpcStack, stackProps)
|
|
24
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
25
|
-
.addResource(databaseFreeTier_1.default.build(`${id}Database`, {
|
|
26
|
-
tags: props.tags
|
|
27
|
-
}));
|
|
28
|
-
// Fetches the dbResource from the databaseStack
|
|
29
|
-
const dbResource = this.databaseStack.getResource(`${id}Database`);
|
|
30
|
-
const secretObjectValue = {};
|
|
31
|
-
if (props.containerSecrets) {
|
|
32
|
-
for (const secretObject of props.containerSecrets) {
|
|
33
|
-
secretObjectValue[secretObject] = aws_cdk_lib_1.SecretValue.unsafePlainText("");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
this.secretStack = new awsStack_1.default(`${id}Secret`, [], stackProps).addResource(secrets_1.Secret.build(`${id}Secret`, {
|
|
37
|
-
secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
38
|
-
secretObjectValue: secretObjectValue,
|
|
39
|
-
tags: props.tags
|
|
40
|
-
}));
|
|
41
|
-
this.computeStack = new awsStack_1.default(`${id}Compute`, [this.vpcStack, this.databaseStack, this.secretStack], stackProps)
|
|
42
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
43
|
-
.addResource(ecsFreeTier_1.default.build(`${id}Fargate`, {
|
|
44
|
-
clusterName: props.clusterName,
|
|
45
|
-
//TODO: This should work via line 124, but doesn't work (at least on update)
|
|
46
|
-
databaseConnection: dbResource.databaseSecurityGroup.connections,
|
|
47
|
-
containerEntryPoint: props.containerEntryPoint,
|
|
48
|
-
containerCommand: props.containerCommand,
|
|
49
|
-
containerEnvironment: props.containerEnvironment,
|
|
50
|
-
containerPort: props.containerPort,
|
|
51
|
-
containerSecrets: secretObjectValue,
|
|
52
|
-
ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
53
|
-
parentDomain: props.parentDomain?.toLowerCase(),
|
|
54
|
-
listenerPort: props.listenerPort,
|
|
55
|
-
serviceName: props.serviceName,
|
|
56
|
-
taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
57
|
-
taskRoleManagedPolicies: props.taskRoleManagedPolicies,
|
|
58
|
-
tags: props.tags
|
|
59
|
-
}))
|
|
60
|
-
.connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
61
|
-
}
|
|
62
|
-
getStackProps(props) {
|
|
63
|
-
if (!props)
|
|
64
|
-
return;
|
|
65
|
-
return {
|
|
66
|
-
account: props.account,
|
|
67
|
-
region: props.region,
|
|
68
|
-
environment: props.environment
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
getProps(id, rawProps) {
|
|
72
|
-
const defaultProps = {
|
|
73
|
-
tags: {
|
|
74
|
-
"fjall:costAllocation:service": "app",
|
|
75
|
-
"fjall:costAllocation:environment": rawProps.environment || "production",
|
|
76
|
-
"fjall:costAllocation:owner": rawProps.owner || "Engineer"
|
|
77
|
-
},
|
|
78
|
-
scalingType: ecs_1.ScalingType.CPU,
|
|
79
|
-
containerPort: rawProps.containerPort || 3000,
|
|
80
|
-
serviceName: `${id}Service`,
|
|
81
|
-
clusterName: `${id}Cluster`,
|
|
82
|
-
containerEntryPoint: ["node", "main.js"],
|
|
83
|
-
containerCommand: rawProps.containerPort
|
|
84
|
-
? [`${rawProps.containerPort}`]
|
|
85
|
-
: [`3000`]
|
|
86
|
-
};
|
|
87
|
-
return {
|
|
88
|
-
...defaultProps,
|
|
89
|
-
...rawProps
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
exports.BasicApp = BasicApp;
|
|
94
|
-
exports.default = BasicApp;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZVRpZXJBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2ZyZWVUaWVyQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUN2RSw0REFBeUQ7QUFDekQseURBQStFO0FBQy9FLHlFQUFpRTtBQUNqRSx5REFBcUQ7QUFDckQseURBQWtEO0FBQ2xELDZDQUEwQztBQUcxQyxvRkFBcUU7QUFxQ3JFLE1BQWEsUUFBUTtJQU1uQixZQUFZLEVBQVUsRUFBRSxRQUF1QjtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQzthQUN6RCxVQUFVLENBQ1QsU0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQUMsQ0FDSDthQUNBLG9CQUFvQixDQUFDLGFBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtCQUFRLENBQy9CLEdBQUcsRUFBRSxVQUFVLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixVQUFVLENBQ1g7YUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN0QyxXQUFXLENBQ1YsMEJBQVEsQ0FBQyxLQUFLLENBQUMs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QUN0Qyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLFVBQVU7YUFDM0Q7WUFDRCxXQUFXLEVBQUUsaUJBQVcsQ0FBQyxHQUFHO1lBQzVCLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUk7WUFDN0MsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTO1lBQzNCLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUztZQUMzQixtQkFBbUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDeEMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGFBQWE7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDYixDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsWUFBWTtZQUNmLEdBQUcsUUFBUTtTQUNaLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwSEQsNEJBb0hDO0FBQ0Qsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF3c1N0YWNrLCB7IEF3c1N0YWNrUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9hd3NTdGFja1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IENvbnRhaW5lclNlY3JldCwgU2NhbGluZ1R5cGUgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IEVjMkNsdXN0ZXIgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NGcmVlVGllclwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuaW1wb3J0IHsgRWNyIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc3RvcmFnZVwiO1xuaW1wb3J0IHsgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElNYW5hZ2VkUG9saWN5LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlRnJlZVRpZXJcIjtcblxuLyoqXG4gKiBJbnRlcnNlY3RlZCB3aXRoIEJhc2ljQXBwUHJvcHMgaW4gdGhlIGdldFByb3BzIG1ldGhvZC4gVGhpcyBhbGxvd3MgdGhlIEJhc2ljQXBwIGNvbnN0cnVjdFxuICogdG8gdHJlYXQgdGhlc2UgYXMgcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgYXZvaWQgY29uc3RhbnQgbnVsbCBjaGVja2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4gIHRhZ3M6IEtleVZhbHVlO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICBzY2FsaW5nVHlwZTogU2NhbGluZ1R5cGU7XG4gIGNvbnRhaW5lclBvcnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNpY0FwcFByb3BzIHtcbiAgYWNjb3VudD86IHN0cmluZztcbiAgY2x1c3Rlck5hbWU/OiBzdHJpbmc7XG4gIGNvbnRhaW5lckVudHJ5UG9pbnQ/OiBzdHJpbmdbXTtcbiAgY29udGFpbmVyQ29tbWFuZD86IHN0cmluZ1tdO1xuICBjb250YWluZXJFbnZpcm9ubWVudD86IEtleVZhbHVlO1xuICBjb250YWluZXJQb3J0PzogbnVtYmVyO1xuICBjb250YWluZXJTZWNyZXRzPzogc3RyaW5nW107XG4gIC8vIFRoZSB0ZWFtL2RvbWFpbi9idXNpbmVzcy11bml0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHRoaXMgc2VydmljZVxuICBvd25lcj86IHN0cmluZztcbiAgcGFyZW50RG9tYWluPzogc3RyaW5nOyAvLyBGaXggdG8gbWFrZSBhIGRlcGVuZGVuY3kgb2YgcHJvdG9jb2xcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHNjYWxpbmdUeXBlPzogU2NhbGluZ1R5cGU7XG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuICB0YXNrUm9sZUlubGluZVBvbGljaWVzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbiAgdGFza1JvbGVNYW5hZ2VkUG9saWNpZXM/OiBJTWFuYWdlZFBvbGljeVtdO1xuICB0YWdzPzogS2V5VmFsdWU7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNpY0FwcCB7XG4gIHByaXZhdGUgdnBjU3RhY2s6IEF3c1N0YWNrO1xuICBwcml2YXRlIGRhdGFiYXNlU3RhY2s6IEF3c1N0YWNrO1xuICBwcml2YXRlIHNlY3JldFN0YWNrOiBBd3NTdGFjaztcbiAgcHJpdmF0ZSBjb21wdXRlU3RhY2s6IEF3c1N0YWNrO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzKSB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmdldFByb3BzKGlkLCByYXdQcm9wcyk7XG4gICAgY29uc3Qgc3RhY2tQcm9wcyA9IHRoaXMuZ2V0U3RhY2tQcm9wcyhwcm9wcyk7XG5cbiAgICB0aGlzLnZwY1N0YWNrID0gbmV3IEF3c1N0YWNrKGAke2lkfU5ldHdvcmtgLCBbXSwgc3RhY2tQcm9wcylcbiAgICAgIC5hZGROZXR3b3JrKFxuICAgICAgICBWcGMuYnVpbGQoYCR7aWR9VnBjYCwge1xuICAgICAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgICAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuYWRkQ29udGFpbmVyUmVnaXN0cnkoRWNyLmJ1aWxkKGAke2lkfUVjcmApKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTdGFjayA9IG5ldyBBd3NTdGFjayhcbiAgICAgIGAke2lkfURhdGFiYXNlYCxcbiAgICAgIHRoaXMudnBjU3RhY2ssXG4gICAgICBzdGFja1Byb3BzXG4gICAgKVxuICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4gICAgICAuYWRkUmVzb3VyY2UoXG4gICAgICAgIERhdGFiYXNlLmJ1aWxkKGAke2lkfURhdGFiYXNlYCwge1xuICAgICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAvLyBGZXRjaGVzIHRoZSBkYlJlc291cmNlIGZyb20gdGhlIGRhdGFiYXNlU3RhY2tcbiAgICBjb25zdCBkYlJlc291cmNlID0gdGhpcy5kYXRhYmFzZVN0YWNrLmdldFJlc291cmNlKFxuICAgICAgYCR7aWR9RGF0YWJhc2VgXG4gICAgKSBhcyBEYXRhYmFzZTtcblxuICAgIGNvbnN0IHNlY3JldE9iamVjdFZhbHVlOiBDb250YWluZXJTZWNyZXQgPSB7fTtcbiAgICBpZiAocHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgZm9yIChjb25zdCBzZWNyZXRPYmplY3Qgb2YgcHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgICBzZWNyZXRPYmplY3RWYWx1ZVtzZWNyZXRPYmplY3RdID0gU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KFwiXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VjcmV0U3RhY2sgPSBuZXcgQXdzU3RhY2soYCR7aWR9U2VjcmV0YCwgW10sIHN0YWNrUHJvcHMpLmFkZFJlc291cmNlKFxuICAgICAgU2VjcmV0LmJ1aWxkKGAke2lkfVNlY3JldGAsIHtcbiAgICAgICAgc2VjcmV0TmFtZTogYC8ke3Byb3BzLmNsdXN0ZXJOYW1lfS8ke3Byb3BzLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgIHNlY3JldE9iamVjdFZhbHVlOiBzZWNyZXRPYmplY3RWYWx1ZSxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5jb21wdXRlU3RhY2sgPSBuZXcgQXdzU3RhY2soXG4gICAgICBgJHtpZH1Db21wdXRlYCxcbiAgICAgIFt0aGlzLnZwY1N0YWNrLCB0aGlzLmRhdGFiYXNlU3RhY2ssIHRoaXMuc2VjcmV0U3RhY2tdLFxuICAgICAgc3RhY2tQcm9wc1xuICAgIClcbiAgICAgIC5hZGROZXR3b3JrKHRoaXMudnBjU3RhY2suZ2V0TmV0d29yaygpKVxuICAgICAgLmFkZFJlc291cmNlKFxuICAgICAgICBFYzJDbHVzdGVyLmJ1aWxkKGAke2lkfUZhcmdhdGVgLCB7XG4gICAgICAgICAgY2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgICAgICAgIC8vVE9ETzogVGhpcyBzaG91bGQgd29yayB2aWEgbGluZSAxMjQsIGJ1dCBkb2Vzbid0IHdvcmsgKGF0IGxlYXN0IG9uIHVwZGF0ZSlcbiAgICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb246IGRiUmVzb3VyY2UuZGF0YWJhc2VTZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLFxuICAgICAgICAgIGNvbnRhaW5lckVudHJ5UG9pbnQ6IHByb3BzLmNvbnRhaW5lckVudHJ5UG9pbnQsXG4gICAgICAgICAgY29udGFpbmVyQ29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCxcbiAgICAgICAgICBjb250YWluZXJFbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnQsXG4gICAgICAgICAgY29udGFpbmVyUG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBjb250YWluZXJTZWNyZXRzOiBzZWNyZXRPYmplY3RWYWx1ZSxcbiAgICAgICAgICBlY3JSZXBvc2l0b3J5OiB0aGlzLnZwY1N0YWNrLmdldENvbnRhaW5lclJlZ2lzdHJ5KCksXG4gICAgICAgICAgcGFyZW50RG9tYWluOiBwcm9wcy5wYXJlbnREb21haW4/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgbGlzdGVuZXJQb3J0OiBwcm9wcy5saXN0ZW5lclBvcnQsXG4gICAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHRhc2tSb2xlSW5saW5lUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlSW5saW5lUG9saWNpZXMsXG4gICAgICAgICAgdGFza1JvbGVNYW5hZ2VkUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlTWFuYWdlZFBvbGljaWVzLFxuICAgICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5jb25uZWN0KGAke2lkfUZhcmdhdGVgLCBgJHtpZH1EYXRhYmFzZWAsIDU0MzIpO1xuICB9XG5cbiAgZ2V0U3RhY2tQcm9wcyhwcm9wczogQmFzaWNBcHBQcm9wcyk6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMpIHJldHVybjtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50OiBwcm9wcy5hY2NvdW50LFxuICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnRcbiAgICB9O1xuICB9XG5cbiAgZ2V0UHJvcHMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICByYXdQcm9wczogQmFzaWNBcHBQcm9wc1xuICApOiBCYXNpY0FwcFByb3BzICYgQmFzaWNBcHBQcm9wRGVmYXVsdHMge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IFwiYXBwXCIsXG4gICAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjpcbiAgICAgICAgICByYXdQcm9wcy5lbnZpcm9ubWVudCB8fCBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpvd25lclwiOiByYXdQcm9wcy5vd25lciB8fCBcIkVuZ2luZWVyXCJcbiAgICAgIH0sXG4gICAgICBzY2FsaW5nVHlwZTogU2NhbGluZ1R5cGUuQ1BVLFxuICAgICAgY29udGFpbmVyUG9ydDogcmF3UHJvcHMuY29udGFpbmVyUG9ydCB8fCAzMDAwLFxuICAgICAgc2VydmljZU5hbWU6IGAke2lkfVNlcnZpY2VgLFxuICAgICAgY2x1c3Rlck5hbWU6IGAke2lkfUNsdXN0ZXJgLFxuICAgICAgY29udGFpbmVyRW50cnlQb2ludDogW1wibm9kZVwiLCBcIm1haW4uanNcIl0sXG4gICAgICBjb250YWluZXJDb21tYW5kOiByYXdQcm9wcy5jb250YWluZXJQb3J0XG4gICAgICAgID8gW2Ake3Jhd1Byb3BzLmNvbnRhaW5lclBvcnR9YF1cbiAgICAgICAgOiBbYDMwMDBgXVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgLi4ucmF3UHJvcHNcbiAgICB9O1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBCYXNpY0FwcDtcbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Stack } from "aws-cdk-lib";
|
|
3
|
-
export interface hostedZoneProps {
|
|
4
|
-
zoneName: string;
|
|
5
|
-
importExisting?: boolean;
|
|
6
|
-
importedHostedZoneId?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class HostedZone extends Stack {
|
|
9
|
-
private hostedZone;
|
|
10
|
-
constructor(scope: Construct, id: string, props: hostedZoneProps);
|
|
11
|
-
}
|