@fjall/components-infrastructure 0.1.5 → 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/config/aws/costAllocationTags.js +58 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
- package/dist/lib/config/aws/identityCenter.js +107 -0
- package/dist/lib/config/aws/index.d.ts +8 -0
- package/dist/lib/config/aws/index.js +25 -0
- package/dist/lib/config/aws/ipam.d.ts +5 -0
- package/dist/lib/config/aws/ipam.js +30 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +9 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.js +62 -0
- package/dist/lib/config/aws/ipamPool.d.ts +5 -0
- package/dist/lib/config/aws/ipamPool.js +56 -0
- package/dist/lib/config/aws/{base/iamIdentityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
- package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
- package/dist/lib/config/aws/organisationId.d.ts +5 -0
- package/dist/lib/config/aws/organisationId.js +40 -0
- package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
- package/dist/lib/config/aws/ramEnableSharing.js +35 -0
- package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
- package/dist/lib/config/aws/users.js +126 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +4 -1
- package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
- package/dist/lib/patterns/aws/basicApp.js +90 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
- package/dist/lib/patterns/aws/buildkite.js +344 -0
- package/dist/lib/patterns/aws/index.d.ts +2 -2
- package/dist/lib/patterns/aws/index.js +3 -3
- package/dist/lib/patterns/aws/{multiEnvironmentOrganisation.d.ts → managedOrganisation.d.ts} +8 -10
- package/dist/lib/patterns/aws/managedOrganisation.js +159 -0
- package/dist/lib/resources/aws/awsStack.d.ts +5 -0
- package/dist/lib/resources/aws/awsStack.js +11 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecs.js +265 -0
- package/dist/lib/resources/aws/compute/lambda.d.ts +12 -5
- package/dist/lib/resources/aws/compute/lambda.js +23 -5
- package/dist/lib/resources/aws/constant/ecr.js +4 -3
- package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
- package/dist/lib/resources/aws/constant/vpc.js +18 -8
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
- package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
- package/dist/lib/resources/aws/iam/index.d.ts +5 -0
- package/dist/lib/resources/aws/iam/index.js +22 -0
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
- package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
- package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/policy.js +13 -0
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +18 -0
- package/dist/lib/resources/aws/logging/logGroup.d.ts +5 -1
- package/dist/lib/resources/aws/logging/logGroup.js +4 -5
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
- package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
- package/dist/lib/resources/aws/networking/index.d.ts +3 -0
- package/dist/lib/resources/aws/networking/index.js +20 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
- package/dist/lib/resources/aws/networking/ipam.js +3 -3
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +3 -7
- package/dist/lib/resources/aws/networking/ipamPool.js +5 -27
- package/dist/lib/resources/aws/store/alias.d.ts +5 -0
- package/dist/lib/resources/aws/store/alias.js +13 -0
- package/dist/lib/resources/aws/store/database.d.ts +7 -2
- package/dist/lib/resources/aws/store/database.js +9 -5
- package/dist/lib/resources/aws/store/index.d.ts +7 -0
- package/dist/lib/resources/aws/store/index.js +24 -0
- package/dist/lib/resources/aws/store/kms.d.ts +14 -0
- package/dist/lib/resources/aws/store/kms.js +34 -0
- package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/store/parameter.js +100 -0
- package/dist/lib/resources/aws/store/rds.d.ts +15 -15
- package/dist/lib/resources/aws/store/rds.js +110 -68
- package/dist/lib/resources/aws/store/s3.d.ts +11 -0
- package/dist/lib/resources/aws/store/s3.js +43 -0
- package/dist/lib/resources/aws/store/secret.d.ts +26 -0
- package/dist/lib/resources/aws/store/secret.js +55 -0
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
- package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
- package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
- package/dist/lib/resources/aws/utilities/customResource.js +24 -5
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
- package/dist/lib/resources/index.d.ts +1 -0
- package/dist/lib/resources/index.js +18 -0
- package/dist/lib/utils/getAccountId.d.ts +1 -0
- package/dist/lib/utils/getAccountId.js +11 -0
- package/dist/lib/utils/getConfig.d.ts +4 -3
- package/dist/lib/utils/getConfig.js +26 -12
- package/dist/lib/utils/getStackOutput.d.ts +1 -0
- package/dist/lib/utils/getStackOutput.js +20 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +18 -0
- package/dist/lib/utils/tagResource.d.ts +4 -0
- package/dist/lib/utils/tagResource.js +10 -0
- package/package.json +23 -18
- package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
- package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
- package/dist/lib/config/aws/base/identityCenter.js +0 -90
- package/dist/lib/config/aws/base/ipam.js +0 -29
- package/dist/lib/config/aws/base/ipamPool.js +0 -46
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
- package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
- package/dist/lib/examples/cutomResourceExample.js +0 -45
- package/dist/lib/patterns/aws/customResource.d.ts +0 -7
- package/dist/lib/patterns/aws/customResource.js +0 -28
- package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
- package/dist/lib/patterns/aws/webApp.d.ts +0 -17
- package/dist/lib/patterns/aws/webApp.js +0 -36
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
- package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
- package/dist/lib/resources/aws/compute/fargate.js +0 -50
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
- package/dist/lib/resources/aws/iam/assignment.js +0 -13
- package/dist/lib/resources/aws/iam/group.js +0 -15
- package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
- package/dist/lib/resources/aws/iam/iamRole.js +0 -18
- package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
- /package/dist/lib/config/aws/{base/costAllocationTags.d.ts → costAllocationTags.d.ts} +0 -0
- /package/dist/lib/config/aws/{base/identityCenter.d.ts → identityCenter.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IdentityCenter = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const cfnOutput_1 = require("../../../resources/aws/utilities/cfnOutput");
|
|
7
|
-
const awsCustomResource_1 = require("../../../resources/aws/utilities/awsCustomResource");
|
|
8
|
-
const group_1 = require("../../../resources/aws/iam/group");
|
|
9
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
10
|
-
const permissionSet_1 = require("../../../resources/aws/iam/permissionSet");
|
|
11
|
-
const assignment_1 = require("../../../resources/aws/iam/assignment");
|
|
12
|
-
class IdentityCenter extends aws_cdk_lib_1.Stack {
|
|
13
|
-
constructor(scope, id, props) {
|
|
14
|
-
super(scope, id, props);
|
|
15
|
-
const defaultPermissionSets = {
|
|
16
|
-
AdministratorAccess: {
|
|
17
|
-
Policy: 'arn:aws:iam::aws:policy/AdministratorAccess'
|
|
18
|
-
},
|
|
19
|
-
Billing: {
|
|
20
|
-
Policy: 'arn:aws:iam::aws:policy/job-function/Billing'
|
|
21
|
-
},
|
|
22
|
-
ReadOnlyAccess: {
|
|
23
|
-
Policy: 'arn:aws:iam::aws:policy/ReadOnlyAccess'
|
|
24
|
-
},
|
|
25
|
-
SystemAdministrator: {
|
|
26
|
-
Policy: 'arn:aws:iam::aws:policy/job-function/SystemAdministrator'
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
// TODO: What's the easier way to pass all accounts into the stack?
|
|
30
|
-
const accounts = {
|
|
31
|
-
Production: aws_cdk_lib_1.Fn.importValue("productionAccountId"),
|
|
32
|
-
Staging: aws_cdk_lib_1.Fn.importValue("stagingAccountId"),
|
|
33
|
-
Development: aws_cdk_lib_1.Fn.importValue("developmentAccountId"),
|
|
34
|
-
};
|
|
35
|
-
const customResource = new awsCustomResource_1.AwsCustomResource(this, "listIdentityCenterInstance", {
|
|
36
|
-
functionName: "listIdentityCenterInstance",
|
|
37
|
-
onCreate: {
|
|
38
|
-
service: "SSOAdmin",
|
|
39
|
-
action: "listInstances",
|
|
40
|
-
parameters: {
|
|
41
|
-
MaxResults: '1'
|
|
42
|
-
},
|
|
43
|
-
physicalResourceId: customResources.PhysicalResourceId.of("listIdentityCenterInstance")
|
|
44
|
-
},
|
|
45
|
-
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
46
|
-
new aws_iam_1.PolicyStatement({
|
|
47
|
-
actions: [
|
|
48
|
-
"sso:ListInstances",
|
|
49
|
-
],
|
|
50
|
-
resources: ["*"]
|
|
51
|
-
})
|
|
52
|
-
]),
|
|
53
|
-
resourceType: "Custom::IamIdentityCenter"
|
|
54
|
-
});
|
|
55
|
-
new cfnOutput_1.CfnOutput(this, "identityCenterArn", {
|
|
56
|
-
value: customResource.getResponseField("Instances.0.InstanceArn"),
|
|
57
|
-
exportName: "identityCenterArn"
|
|
58
|
-
});
|
|
59
|
-
new cfnOutput_1.CfnOutput(this, "iamIdentityStoreID", {
|
|
60
|
-
value: customResource.getResponseField("Instances.0.IdentityStoreId"),
|
|
61
|
-
exportName: "identityStoreID"
|
|
62
|
-
});
|
|
63
|
-
for (const [permissionSet, permissionSetAssociation] of Object.entries(defaultPermissionSets)) {
|
|
64
|
-
const permSet = new permissionSet_1.PermissionSet(this, `${permissionSet}PermissionSet`, {
|
|
65
|
-
name: permissionSet,
|
|
66
|
-
instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
|
|
67
|
-
description: `Permission set for associated ${permissionSet} policy`,
|
|
68
|
-
managedPolicies: [permissionSetAssociation.Policy],
|
|
69
|
-
tags: [{ key: "Environment", value: "BaseInfra" }]
|
|
70
|
-
});
|
|
71
|
-
const group = new group_1.Group(this, `${permissionSet}Group`, {
|
|
72
|
-
displayName: permissionSet,
|
|
73
|
-
identityStoreId: customResource.getResponseField("Instances.0.IdentityStoreId"),
|
|
74
|
-
description: `Group for associated ${permissionSet} permission set`,
|
|
75
|
-
});
|
|
76
|
-
for (const [account, accountArn] of Object.entries(accounts)) {
|
|
77
|
-
new assignment_1.Assignment(this, `${account}${permissionSet}Association`, {
|
|
78
|
-
instanceArn: customResource.getResponseField("Instances.0.InstanceArn"),
|
|
79
|
-
permissionSetArn: permSet.attrPermissionSetArn,
|
|
80
|
-
principalType: "GROUP",
|
|
81
|
-
principalId: group.attrGroupId,
|
|
82
|
-
targetType: "AWS_ACCOUNT",
|
|
83
|
-
targetId: accountArn,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
exports.IdentityCenter = IdentityCenter;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYXNlL2lkZW50aXR5Q2VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUNwRCxnRUFBZ0U7QUFFaEUsMEVBQXVFO0FBQ3ZFLDBGQUF1RjtBQUN2Riw0REFBeUQ7QUFDekQsaURBQXNEO0FBQ3RELDRFQUF3RTtBQUN4RSxzRUFBbUU7QUFFbkUsTUFBYSxjQUFlLFNBQVEsbUJBQUs7SUFDdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLHFCQUFxQixHQUFHO1lBQzVCLG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsNkNBQTZDO2FBQ3REO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSw4Q0FBOEM7YUFDdkQ7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLHdDQUF3QzthQUNqRDtZQUNELG1CQUFtQixFQUFFO2dCQUNuQixNQUFNLEVBQUUsMERBQTBEO2FBQ25FO1NBQ0YsQ0FBQTtRQUVELG1FQUFtRTtRQUNuRSxNQUFNLFFBQVEsR0FBRztZQUNmLFVBQVUsRUFBRSxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztZQUNqRCxPQUFPLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFDM0MsV0FBVyxFQUFFLGdCQUFFLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1NBQ3BELENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRTtZQUMvRSxZQUFZLEVBQUUsNEJBQTRCO1lBQzFDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsTUFBTSxFQUFFLGVBQWU7Z0JBQ3ZCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUUsR0FBRztpQkFDaEI7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsNEJBQTRCLENBQzdCO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNwQixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2YsQ0FBQzthQUNMLENBQUM7WUFDQSxZQUFZLEVBQUUsMkJBQTJCO1NBQzFDLENBQUMsQ0FBQztRQUVILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDdkMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUNqRSxVQUFVLEVBQUUsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQztRQUNILElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQztZQUNyRSxVQUFVLEVBQUUsaUJBQWlCO1NBQzlCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxlQUFlLEVBQUU7Z0JBQ3ZFLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO2dCQUN2RSxXQUFXLEVBQUUsaUNBQWlDLGFBQWEsU0FBUztnQkFDcEUsZUFBZSxFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFFO2FBQ3JELENBQUMsQ0FBQTtZQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsT0FBTyxFQUFFO2dCQUNyRCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsZUFBZSxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQztnQkFDL0UsV0FBVyxFQUFFLHdCQUF3QixhQUFhLGlCQUFpQjthQUNwRSxDQUFDLENBQUE7WUFFRixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDNUQsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sR0FBRyxhQUFhLGFBQWEsRUFBRTtvQkFDNUQsV0FBVyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDdkUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtvQkFDOUMsYUFBYSxFQUFFLE9BQU87b0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFFBQVEsRUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUE7YUFDSDtTQUNGO0lBRUgsQ0FBQztDQUNGO0FBdEZELHdDQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZuLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2Nmbk91dHB1dFwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vZ3JvdXAnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IFBlcm1pc3Npb25TZXQgfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vcGVybWlzc2lvblNldFwiXG5pbXBvcnQgeyBBc3NpZ25tZW50IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvaWFtL2Fzc2lnbm1lbnRcIjtcblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQZXJtaXNzaW9uU2V0cyA9IHtcbiAgICAgIEFkbWluaXN0cmF0b3JBY2Nlc3M6IHtcbiAgICAgICAgUG9saWN5OiAnYXJuOmF3czppYW06OmF3czpwb2xpY3kvQWRtaW5pc3RyYXRvckFjY2VzcydcbiAgICAgIH0sXG4gICAgICBCaWxsaW5nOiB7IFxuICAgICAgICBQb2xpY3k6ICdhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9qb2ItZnVuY3Rpb24vQmlsbGluZycgICAgICBcbiAgICAgIH0sXG4gICAgICBSZWFkT25seUFjY2Vzczoge1xuICAgICAgICBQb2xpY3k6ICdhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9SZWFkT25seUFjY2VzcydcbiAgICAgIH0sXG4gICAgICBTeXN0ZW1BZG1pbmlzdHJhdG9yOiB7XG4gICAgICAgIFBvbGljeTogJ2Fybjphd3M6aWFtOjphd3M6cG9saWN5L2pvYi1mdW5jdGlvbi9TeXN0ZW1BZG1pbmlzdHJhdG9yJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFdoYXQncyB0aGUgZWFzaWVyIHdheSB0byBwYXNzIGFsbCBhY2NvdW50cyBpbnRvIHRoZSBzdGFjaz9cbiAgICBjb25zdCBhY2NvdW50cyA9IHtcbiAgICAgIFByb2R1Y3Rpb246IEZuLmltcG9ydFZhbHVlKFwicHJvZHVjdGlvbkFjY291bnRJZFwiKSxcbiAgICAgIFN0YWdpbmc6IEZuLmltcG9ydFZhbHVlKFwic3RhZ2luZ0FjY291bnRJZFwiKSxcbiAgICAgIERldmVsb3BtZW50OiBGbi5pbXBvcnRWYWx1ZShcImRldmVsb3BtZW50QWNjb3VudElkXCIpLFxuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwibGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIlNTT0FkbWluXCIsXG4gICAgICAgIGFjdGlvbjogXCJsaXN0SW5zdGFuY2VzXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBNYXhSZXN1bHRzOiAnMSdcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwibGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2VcIlxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwic3NvOkxpc3RJbnN0YW5jZXNcIixcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pXG4gICAgXSksXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJYW1JZGVudGl0eUNlbnRlclwiXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaWRlbnRpdHlDZW50ZXJBcm5cIiwge1xuICAgICAgdmFsdWU6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IFwiaWRlbnRpdHlDZW50ZXJBcm5cIlxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJpYW1JZGVudGl0eVN0b3JlSURcIiwge1xuICAgICAgdmFsdWU6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JZGVudGl0eVN0b3JlSWRcIiksXG4gICAgICBleHBvcnROYW1lOiBcImlkZW50aXR5U3RvcmVJRFwiXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtwZXJtaXNzaW9uU2V0LCBwZXJtaXNzaW9uU2V0QXNzb2NpYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGRlZmF1bHRQZXJtaXNzaW9uU2V0cykpIHtcbiAgICAgIGNvbnN0IHBlcm1TZXQgPSBuZXcgUGVybWlzc2lvblNldCh0aGlzLCBgJHtwZXJtaXNzaW9uU2V0fVBlcm1pc3Npb25TZXRgLCB7XG4gICAgICAgIG5hbWU6IHBlcm1pc3Npb25TZXQsXG4gICAgICAgIGluc3RhbmNlQXJuOiBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFwiSW5zdGFuY2VzLjAuSW5zdGFuY2VBcm5cIiksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGVybWlzc2lvbiBzZXQgZm9yIGFzc29jaWF0ZWQgJHtwZXJtaXNzaW9uU2V0fSBwb2xpY3lgLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtwZXJtaXNzaW9uU2V0QXNzb2NpYXRpb24uUG9saWN5XSxcbiAgICAgICAgdGFnczogWyB7IGtleTogXCJFbnZpcm9ubWVudFwiLCB2YWx1ZTogXCJCYXNlSW5mcmFcIiB9IF1cbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdyb3VwKHRoaXMsIGAke3Blcm1pc3Npb25TZXR9R3JvdXBgLCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBwZXJtaXNzaW9uU2V0LFxuICAgICAgICBpZGVudGl0eVN0b3JlSWQ6IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JZGVudGl0eVN0b3JlSWRcIiksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgR3JvdXAgZm9yIGFzc29jaWF0ZWQgJHtwZXJtaXNzaW9uU2V0fSBwZXJtaXNzaW9uIHNldGAsXG4gICAgICB9KVxuXG4gICAgICBmb3IgKGNvbnN0IFthY2NvdW50LCBhY2NvdW50QXJuXSBvZiBPYmplY3QuZW50cmllcyhhY2NvdW50cykpIHtcbiAgICAgICAgbmV3IEFzc2lnbm1lbnQodGhpcywgYCR7YWNjb3VudH0ke3Blcm1pc3Npb25TZXR9QXNzb2NpYXRpb25gLCB7XG4gICAgICAgICAgaW5zdGFuY2VBcm46IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiKSxcbiAgICAgICAgICBwZXJtaXNzaW9uU2V0QXJuOiBwZXJtU2V0LmF0dHJQZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiR1JPVVBcIixcbiAgICAgICAgICBwcmluY2lwYWxJZDogZ3JvdXAuYXR0ckdyb3VwSWQsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogXCJBV1NfQUNDT1VOVFwiLFxuICAgICAgICAgIHRhcmdldElkOiBhY2NvdW50QXJuLCBcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseInfraIpam = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const ipam_1 = require("../../../resources/aws/networking/ipam");
|
|
6
|
-
const cfnOutput_1 = require("../../../resources/aws/utilities/cfnOutput");
|
|
7
|
-
class BaseInfraIpam extends aws_cdk_lib_1.Stack {
|
|
8
|
-
constructor(scope, id, props) {
|
|
9
|
-
super(scope, id, props);
|
|
10
|
-
const ipam = new ipam_1.Ipam(this, "baseInfraIpam", {
|
|
11
|
-
operatingRegions: [
|
|
12
|
-
{ regionName: "us-east-1" },
|
|
13
|
-
{ regionName: "eu-west-1" }
|
|
14
|
-
],
|
|
15
|
-
tags: [
|
|
16
|
-
{
|
|
17
|
-
key: "Environment",
|
|
18
|
-
value: "BaseInfrastructure"
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
});
|
|
22
|
-
new cfnOutput_1.CfnOutput(this, "privateDefaultScopeId", {
|
|
23
|
-
value: ipam.attrPrivateDefaultScopeId,
|
|
24
|
-
exportName: "BaseInfraIpamPrivateDefaultScopeId"
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.BaseInfraIpam = BaseInfraIpam;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2Jhc2UvaXBhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0Q7QUFHaEQsaUVBQThEO0FBQzlELDBFQUF1RTtBQUV2RSxNQUFhLGFBQWMsU0FBUSxtQkFBSztJQUN0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDM0MsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtnQkFDM0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO2FBQzVCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKO29CQUNFLEdBQUcsRUFBRSxhQUFhO29CQUNsQixLQUFLLEVBQUUsb0JBQW9CO2lCQUM1QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUNyQyxVQUFVLEVBQUUsb0NBQW9DO1NBQ2pELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXJCRCxzQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgSXBhbSB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2Nmbk91dHB1dFwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZUluZnJhSXBhbSBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgY29uc3QgaXBhbSA9IG5ldyBJcGFtKHRoaXMsIFwiYmFzZUluZnJhSXBhbVwiLCB7XG4gICAgICBvcGVyYXRpbmdSZWdpb25zOiBbXG4gICAgICAgIHsgcmVnaW9uTmFtZTogXCJ1cy1lYXN0LTFcIiB9LFxuICAgICAgICB7IHJlZ2lvbk5hbWU6IFwiZXUtd2VzdC0xXCIgfVxuICAgICAgXSxcbiAgICAgIHRhZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgICAgIHZhbHVlOiBcIkJhc2VJbmZyYXN0cnVjdHVyZVwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJwcml2YXRlRGVmYXVsdFNjb3BlSWRcIiwge1xuICAgICAgdmFsdWU6IGlwYW0uYXR0clByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgIGV4cG9ydE5hbWU6IFwiQmFzZUluZnJhSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseInfraIpamPool = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const ipamPool_1 = require("../../../resources/aws/networking/ipamPool");
|
|
6
|
-
const CidrAllocation = {
|
|
7
|
-
Production: "10.0.0.0/8",
|
|
8
|
-
Staging: "80.0.0.0/8",
|
|
9
|
-
Development: "150.0.0.0/8",
|
|
10
|
-
Infrastructure: "200.0.0.0/8",
|
|
11
|
-
BusinessContinuity: "210.0.0.0/8"
|
|
12
|
-
};
|
|
13
|
-
const BaseInfraIpamPrivateDefaultScopeId = aws_cdk_lib_1.Fn.importValue("BaseInfraIpamPrivateDefaultScopeId");
|
|
14
|
-
class BaseInfraIpamPool extends aws_cdk_lib_1.Stack {
|
|
15
|
-
constructor(scope, id, props) {
|
|
16
|
-
super(scope, id, props);
|
|
17
|
-
for (const [environment, cidrBlock] of Object.entries(CidrAllocation)) {
|
|
18
|
-
new ipamPool_1.IpamPool(this, `baseInfra${environment}IpamPool`, {
|
|
19
|
-
description: `${environment} Infrastructure IPAM Pool - ${cidrBlock}`,
|
|
20
|
-
addressFamily: "ipv4",
|
|
21
|
-
ipamScopeId: BaseInfraIpamPrivateDefaultScopeId,
|
|
22
|
-
locale: environment == "BusinessContinuity" ? "eu-west-1" : "us-east-1",
|
|
23
|
-
allocationResourceTags: [
|
|
24
|
-
{
|
|
25
|
-
key: "Pool",
|
|
26
|
-
value: `${environment}`
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
autoImport: false,
|
|
30
|
-
provisionedCidrs: [{ cidr: cidrBlock }],
|
|
31
|
-
tags: [
|
|
32
|
-
{
|
|
33
|
-
key: "Pool",
|
|
34
|
-
value: "Top-Level"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: "Environment",
|
|
38
|
-
value: `${environment}`
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.BaseInfraIpamPool = BaseInfraIpamPool;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9iYXNlL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCx5RUFBc0U7QUFFdEUsTUFBTSxjQUFjLEdBQUc7SUFDckIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsT0FBTyxFQUFFLFlBQVk7SUFDckIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsY0FBYyxFQUFFLGFBQWE7SUFDN0Isa0JBQWtCLEVBQUUsYUFBYTtDQUNsQyxDQUFDO0FBRUYsTUFBTSxrQ0FBa0MsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FDdkQsb0NBQW9DLENBQ3JDLENBQUM7QUFFRixNQUFhLGlCQUFrQixTQUFRLG1CQUFLO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDckUsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxZQUFZLFdBQVcsVUFBVSxFQUFFO2dCQUNwRCxXQUFXLEVBQUUsR0FBRyxXQUFXLCtCQUErQixTQUFTLEVBQUU7Z0JBQ3JFLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixXQUFXLEVBQUUsa0NBQWtDO2dCQUMvQyxNQUFNLEVBQUUsV0FBVyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVc7Z0JBQ3ZFLHNCQUFzQixFQUFFO29CQUN0Qjt3QkFDRSxHQUFHLEVBQUUsTUFBTTt3QkFDWCxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxLQUFLO2dCQUNqQixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsR0FBRyxFQUFFLE1BQU07d0JBQ1gsS0FBSyxFQUFFLFdBQVc7cUJBQ25CO29CQUNEO3dCQUNFLEdBQUcsRUFBRSxhQUFhO3dCQUNsQixLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUEvQkQsOENBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm4sIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBJcGFtUG9vbCB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcblxuY29uc3QgQ2lkckFsbG9jYXRpb24gPSB7XG4gIFByb2R1Y3Rpb246IFwiMTAuMC4wLjAvOFwiLFxuICBTdGFnaW5nOiBcIjgwLjAuMC4wLzhcIixcbiAgRGV2ZWxvcG1lbnQ6IFwiMTUwLjAuMC4wLzhcIixcbiAgSW5mcmFzdHJ1Y3R1cmU6IFwiMjAwLjAuMC4wLzhcIixcbiAgQnVzaW5lc3NDb250aW51aXR5OiBcIjIxMC4wLjAuMC84XCJcbn07XG5cbmNvbnN0IEJhc2VJbmZyYUlwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQgPSBGbi5pbXBvcnRWYWx1ZShcbiAgXCJCYXNlSW5mcmFJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCJcbik7XG5cbmV4cG9ydCBjbGFzcyBCYXNlSW5mcmFJcGFtUG9vbCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBmb3IgKGNvbnN0IFtlbnZpcm9ubWVudCwgY2lkckJsb2NrXSBvZiBPYmplY3QuZW50cmllcyhDaWRyQWxsb2NhdGlvbikpIHtcbiAgICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBgYmFzZUluZnJhJHtlbnZpcm9ubWVudH1JcGFtUG9vbGAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGAke2Vudmlyb25tZW50fSBJbmZyYXN0cnVjdHVyZSBJUEFNIFBvb2wgLSAke2NpZHJCbG9ja31gLFxuICAgICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgICAgaXBhbVNjb3BlSWQ6IEJhc2VJbmZyYUlwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICAgIGxvY2FsZTogZW52aXJvbm1lbnQgPT0gXCJCdXNpbmVzc0NvbnRpbnVpdHlcIiA/IFwiZXUtd2VzdC0xXCIgOiBcInVzLWVhc3QtMVwiLFxuICAgICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhdXRvSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgcHJvdmlzaW9uZWRDaWRyczogW3sgY2lkcjogY2lkckJsb2NrIH1dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlRvcC1MZXZlbFwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiRW52aXJvbm1lbnRcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handler = void 0;
|
|
4
|
-
const client_cost_explorer_1 = require("@aws-sdk/client-cost-explorer");
|
|
5
|
-
const costExplorerClient = new client_cost_explorer_1.CostExplorerClient({ region: "us-east-1" });
|
|
6
|
-
const handler = async (event, context) => {
|
|
7
|
-
console.log('Lambda is invoked with:' + JSON.stringify(event));
|
|
8
|
-
const response = {
|
|
9
|
-
StackId: event.StackId,
|
|
10
|
-
RequestId: event.RequestId,
|
|
11
|
-
LogicalResourceId: event.LogicalResourceId,
|
|
12
|
-
PhysicalResourceId: context.logGroupName,
|
|
13
|
-
};
|
|
14
|
-
const awsCostAllocationTagStatusOptions = ['Active', 'Inactive'];
|
|
15
|
-
async function updateCostAllocationTagStatus(costAllocationTagStatus) {
|
|
16
|
-
const awsCostAllocationTagsCommand = new client_cost_explorer_1.ListCostAllocationTagsCommand({
|
|
17
|
-
Type: "AWSGenerated",
|
|
18
|
-
});
|
|
19
|
-
const awsCostAllocationTagsResponse = costExplorerClient.send(awsCostAllocationTagsCommand);
|
|
20
|
-
const data = await awsCostAllocationTagsResponse;
|
|
21
|
-
const awsCostAllocationTags = data.CostAllocationTags ? data.CostAllocationTags : [];
|
|
22
|
-
const awsCostAllocationState = awsCostAllocationTags.map((tag) => {
|
|
23
|
-
return {
|
|
24
|
-
TagKey: tag.TagKey,
|
|
25
|
-
Status: costAllocationTagStatus.Status,
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
const updateAwsCostTags = new client_cost_explorer_1.UpdateCostAllocationTagsStatusCommand({
|
|
29
|
-
CostAllocationTagsStatus: awsCostAllocationState
|
|
30
|
-
});
|
|
31
|
-
const output = costExplorerClient.send(updateAwsCostTags);
|
|
32
|
-
if ((await output).$metadata.httpStatusCode === 200) {
|
|
33
|
-
response.Status = 'SUCCESS';
|
|
34
|
-
response.Data = { Result: (await output).$metadata };
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
response.Status = 'FAILED';
|
|
38
|
-
response.Data = { Result: (await output).$metadata };
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (event.RequestType === 'Create') {
|
|
42
|
-
updateCostAllocationTagStatus({ Status: 'Active' });
|
|
43
|
-
}
|
|
44
|
-
if (event.RequestType === 'Delete') {
|
|
45
|
-
await updateCostAllocationTagStatus({ Status: 'Inactive' });
|
|
46
|
-
return response;
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
await updateCostAllocationTagStatus({ Status: 'Active' });
|
|
50
|
-
return response;
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
if (error instanceof Error) {
|
|
54
|
-
response.Reason = error.message;
|
|
55
|
-
}
|
|
56
|
-
response.Status = 'FAILED';
|
|
57
|
-
response.Data = { Result: error };
|
|
58
|
-
return response;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
exports.handler = handler;
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzQ29zdEFsbG9jYXRpb25UYWdzTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2V4YW1wbGVzL2N1c3RvbS1yZXNvdXJjZXMvbGFtYmRhL2F3cy1jb3N0LWFsbG9jYXRpb24tdGFncy9hd3NDb3N0QWxsb2NhdGlvblRhZ3NMYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBS3VDO0FBUXZDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFDMUIsS0FBNkIsRUFDN0IsT0FBZ0IsRUFDb0IsRUFBRTtJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUvRCxNQUFNLFFBQVEsR0FBOEI7UUFDMUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQ3pDLENBQUM7SUFFRixNQUFNLGlDQUFpQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBTWhFLEtBQUssVUFBVSw2QkFBNkIsQ0FBQyx1QkFBZ0Q7UUFDM0YsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLG9EQUE2QixDQUFDO1lBQ3JFLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQztRQUNILE1BQU0sNkJBQTZCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDNUYsTUFBTSxJQUFJLEdBQUcsTUFBTSw2QkFBNkIsQ0FBQztRQUNqRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEYsTUFBTSxzQkFBc0IsR0FBa0MscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUYsT0FBTztnQkFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07Z0JBQ2xCLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ3pDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSw0REFBcUMsQ0FBQztZQUNoRSx3QkFBd0IsRUFBRSxzQkFBc0I7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsS0FBSyxHQUFHLEVBQUU7WUFDbkQsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDNUIsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDdEQ7YUFBTTtZQUNMLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzNCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsNkJBQTZCLENBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztLQUNuRDtJQUVELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsTUFBTSw2QkFBNkIsQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsSUFBSTtRQUNGLE1BQU0sNkJBQTZCLENBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNqQztRQUNELFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQzNCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEMsT0FBTyxRQUFRLENBQUM7S0FDakI7QUFFSCxDQUFDLENBQUM7QUFsRVcsUUFBQSxPQUFPLFdBa0VsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxuICBDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c0VudHJ5LFxuICBDb3N0RXhwbG9yZXJDbGllbnQsXG4gIExpc3RDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kLFxuICBVcGRhdGVDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXNDb21tYW5kXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtY29zdC1leHBsb3JlclwiO1xuXG5pbXBvcnQge1xuICBDZGtDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlLFxuICBDb250ZXh0LFxufSBmcm9tICdhd3MtbGFtYmRhJztcblxuY29uc3QgY29zdEV4cGxvcmVyQ2xpZW50ID0gbmV3IENvc3RFeHBsb3JlckNsaWVudCh7IHJlZ2lvbjogXCJ1cy1lYXN0LTFcIiB9KTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OiBDZGtDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuKTogUHJvbWlzZTxDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlPiA9PiB7XG4gIGNvbnNvbGUubG9nKCdMYW1iZGEgaXMgaW52b2tlZCB3aXRoOicgKyBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIGNvbnN0IHJlc3BvbnNlOiBDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge1xuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gIH07XG4gIFxuICBjb25zdCBhd3NDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c09wdGlvbnMgPSBbJ0FjdGl2ZScsICdJbmFjdGl2ZSddXG4gIFxuICBpbnRlcmZhY2UgQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMge1xuICAgIFN0YXR1czogdHlwZW9mIGF3c0Nvc3RBbGxvY2F0aW9uVGFnU3RhdHVzT3B0aW9uc1tudW1iZXJdO1xuICB9XG4gIFxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb3N0QWxsb2NhdGlvblRhZ1N0YXR1cyhjb3N0QWxsb2NhdGlvblRhZ1N0YXR1czogQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMpIHtcbiAgICBjb25zdCBhd3NDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kID0gbmV3IExpc3RDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kKHtcbiAgICAgIFR5cGU6IFwiQVdTR2VuZXJhdGVkXCIsXG4gICAgfSk7XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25UYWdzUmVzcG9uc2UgPSBjb3N0RXhwbG9yZXJDbGllbnQuc2VuZChhd3NDb3N0QWxsb2NhdGlvblRhZ3NDb21tYW5kKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgYXdzQ29zdEFsbG9jYXRpb25UYWdzUmVzcG9uc2U7XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25UYWdzID0gZGF0YS5Db3N0QWxsb2NhdGlvblRhZ3M/IGRhdGEuQ29zdEFsbG9jYXRpb25UYWdzIDogW107XG4gICAgY29uc3QgYXdzQ29zdEFsbG9jYXRpb25TdGF0ZTpDb3N0QWxsb2NhdGlvblRhZ1N0YXR1c0VudHJ5W10gPSBhd3NDb3N0QWxsb2NhdGlvblRhZ3MubWFwKCh0YWcpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFRhZ0tleTogdGFnLlRhZ0tleSxcbiAgICAgICAgICAgIFN0YXR1czogY29zdEFsbG9jYXRpb25UYWdTdGF0dXMuU3RhdHVzLFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZUF3c0Nvc3RUYWdzID0gbmV3IFVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c0NvbW1hbmQoe1xuICAgICAgICBDb3N0QWxsb2NhdGlvblRhZ3NTdGF0dXM6IGF3c0Nvc3RBbGxvY2F0aW9uU3RhdGVcbiAgICB9KTtcbiAgICBjb25zdCBvdXRwdXQgPSBjb3N0RXhwbG9yZXJDbGllbnQuc2VuZCh1cGRhdGVBd3NDb3N0VGFncyk7XG4gICAgaWYgKChhd2FpdCBvdXRwdXQpLiRtZXRhZGF0YS5odHRwU3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICByZXNwb25zZS5EYXRhID0geyBSZXN1bHQ6IChhd2FpdCBvdXRwdXQpLiRtZXRhZGF0YSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZS5TdGF0dXMgPSAnRkFJTEVEJztcbiAgICAgIHJlc3BvbnNlLkRhdGEgPSB7IFJlc3VsdDogKGF3YWl0IG91dHB1dCkuJG1ldGFkYXRhIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnQ3JlYXRlJykge1xuICAgIHVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnU3RhdHVzKHtTdGF0dXM6ICdBY3RpdmUnfSk7XG4gIH1cblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnKSB7XG4gICAgYXdhaXQgdXBkYXRlQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMoe1N0YXR1czogJ0luYWN0aXZlJ30pO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdXBkYXRlQ29zdEFsbG9jYXRpb25UYWdTdGF0dXMoe1N0YXR1czogJ0FjdGl2ZSd9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJlc3BvbnNlLlJlYXNvbiA9IGVycm9yLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdGQUlMRUQnO1xuICAgIHJlc3BvbnNlLkRhdGEgPSB7IFJlc3VsdDogZXJyb3IgfTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxufTsiXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomResourceExample = void 0;
|
|
4
|
-
const cdk = require("aws-cdk-lib");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
8
|
-
const lambda_1 = require("../resources/aws/compute/lambda");
|
|
9
|
-
const customResource_1 = require("../resources/aws/utilities/customResource");
|
|
10
|
-
const customResourceProvider_1 = require("../resources/aws/utilities/customResourceProvider");
|
|
11
|
-
// An example of how to use a custom provider, keeping for reference
|
|
12
|
-
// TODO: Turn into a pattern
|
|
13
|
-
class CustomResourceExample extends cdk.Stack {
|
|
14
|
-
constructor(scope, id) {
|
|
15
|
-
super(scope, id);
|
|
16
|
-
const lambdaFunction = new lambda_1.lambdaSingletonFunction(this, "costAllocationTagLambda", {
|
|
17
|
-
code: lambda.Code.fromAsset(path.join(__dirname, "./custom-resources/lambda/aws-cost-allocation-tags")),
|
|
18
|
-
handler: "awsCostAllocationTagsLambda.handler",
|
|
19
|
-
runtime: lambda.Runtime.NODEJS_18_X,
|
|
20
|
-
roleDescription: "Lambda role for AWS Cost Allocation Tags",
|
|
21
|
-
inlinePolicy: {
|
|
22
|
-
["costAllocationTag"]: new aws_iam_1.PolicyDocument({
|
|
23
|
-
statements: [
|
|
24
|
-
new aws_iam_1.PolicyStatement({
|
|
25
|
-
actions: [
|
|
26
|
-
"ce:ListCostAllocationTags",
|
|
27
|
-
"ce:UpdateCostAllocationTagsStatus"
|
|
28
|
-
],
|
|
29
|
-
resources: ["*"]
|
|
30
|
-
})
|
|
31
|
-
]
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
const provider = new customResourceProvider_1.CustomResourceProvider(this, "costAllocationTagsProvider", {
|
|
36
|
-
onEventHandler: lambdaFunction
|
|
37
|
-
});
|
|
38
|
-
const customResource = new customResource_1.CustomResource(this, "awsCostAllocationTagsCustomResource", {
|
|
39
|
-
serviceToken: provider.serviceToken
|
|
40
|
-
});
|
|
41
|
-
this.response = customResource.getAtt("Response").toString();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.CustomResourceExample = CustomResourceExample;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3V0b21SZXNvdXJjZUV4YW1wbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhhbXBsZXMvY3V0b21SZXNvdXJjZUV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFzRTtBQUN0RSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBRWpELDREQUEwRTtBQUMxRSw4RUFBMkU7QUFDM0UsOEZBQTJGO0FBRTNGLG9FQUFvRTtBQUNwRSw0QkFBNEI7QUFDNUIsTUFBYSxxQkFBc0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUdsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0NBQXVCLENBQ2hELElBQUksRUFDSix5QkFBeUIsRUFDekI7WUFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQ1AsU0FBUyxFQUNULG9EQUFvRCxDQUNyRCxDQUNGO1lBQ0QsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLGVBQWUsRUFBRSwwQ0FBMEM7WUFDM0QsWUFBWSxFQUFFO2dCQUNaLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQ3hDLFVBQVUsRUFBRTt3QkFDVixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE9BQU8sRUFBRTtnQ0FDUCwyQkFBMkI7Z0NBQzNCLG1DQUFtQzs2QkFDcEM7NEJBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksK0NBQXNCLENBQ3pDLElBQUksRUFDSiw0QkFBNEIsRUFDNUI7WUFDRSxjQUFjLEVBQUUsY0FBYztTQUMvQixDQUNGLENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLCtCQUFjLENBQ3ZDLElBQUksRUFDSixxQ0FBcUMsRUFDckM7WUFDRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7U0FDcEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQXJERCxzREFxREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUG9saWN5RG9jdW1lbnQsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcblxuaW1wb3J0IHsgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24gfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlUHJvdmlkZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VQcm92aWRlclwiO1xuXG4vLyBBbiBleGFtcGxlIG9mIGhvdyB0byB1c2UgYSBjdXN0b20gcHJvdmlkZXIsIGtlZXBpbmcgZm9yIHJlZmVyZW5jZVxuLy8gVE9ETzogVHVybiBpbnRvIGEgcGF0dGVyblxuZXhwb3J0IGNsYXNzIEN1c3RvbVJlc291cmNlRXhhbXBsZSBleHRlbmRzIGNkay5TdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbGFtYmRhRnVuY3Rpb24gPSBuZXcgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJjb3N0QWxsb2NhdGlvblRhZ0xhbWJkYVwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKFxuICAgICAgICAgICAgX19kaXJuYW1lLFxuICAgICAgICAgICAgXCIuL2N1c3RvbS1yZXNvdXJjZXMvbGFtYmRhL2F3cy1jb3N0LWFsbG9jYXRpb24tdGFnc1wiXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImF3c0Nvc3RBbGxvY2F0aW9uVGFnc0xhbWJkYS5oYW5kbGVyXCIsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICByb2xlRGVzY3JpcHRpb246IFwiTGFtYmRhIHJvbGUgZm9yIEFXUyBDb3N0IEFsbG9jYXRpb24gVGFnc1wiLFxuICAgICAgICBpbmxpbmVQb2xpY3k6IHtcbiAgICAgICAgICBbXCJjb3N0QWxsb2NhdGlvblRhZ1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJjZTpMaXN0Q29zdEFsbG9jYXRpb25UYWdzXCIsXG4gICAgICAgICAgICAgICAgICBcImNlOlVwZGF0ZUNvc3RBbGxvY2F0aW9uVGFnc1N0YXR1c1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEN1c3RvbVJlc291cmNlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgXCJjb3N0QWxsb2NhdGlvblRhZ3NQcm92aWRlclwiLFxuICAgICAge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogbGFtYmRhRnVuY3Rpb25cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJhd3NDb3N0QWxsb2NhdGlvblRhZ3NDdXN0b21SZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0gY3VzdG9tUmVzb3VyY2UuZ2V0QXR0KFwiUmVzcG9uc2VcIikudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Stack } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { lambdaSingletonFunctionProps } from "../../resources/aws/compute/lambda";
|
|
4
|
-
export declare class CustomResource extends Stack {
|
|
5
|
-
readonly response: string;
|
|
6
|
-
constructor(scope: Construct, id: string, props: lambdaSingletonFunctionProps);
|
|
7
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomResource = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const lambda_1 = require("../../resources/aws/compute/lambda");
|
|
6
|
-
const customResource_1 = require("../../resources/aws/utilities/customResource");
|
|
7
|
-
const customResourceProvider_1 = require("../../resources/aws/utilities/customResourceProvider");
|
|
8
|
-
class CustomResource extends aws_cdk_lib_1.Stack {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id);
|
|
11
|
-
const lambdaFunction = new lambda_1.lambdaSingletonFunction(this, `${id}SingletonLambda`, {
|
|
12
|
-
code: props.code,
|
|
13
|
-
handler: `${id}.handler`,
|
|
14
|
-
runtime: props.runtime,
|
|
15
|
-
roleDescription: props.roleDescription,
|
|
16
|
-
inlinePolicy: props.inlinePolicy
|
|
17
|
-
});
|
|
18
|
-
const provider = new customResourceProvider_1.CustomResourceProvider(this, `${id}Provider`, {
|
|
19
|
-
onEventHandler: lambdaFunction
|
|
20
|
-
});
|
|
21
|
-
const cr = new customResource_1.CustomResource(this, `${id}CustomResource`, {
|
|
22
|
-
serviceToken: provider.serviceToken
|
|
23
|
-
});
|
|
24
|
-
this.response = cr.getAtt("Response").toString();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.CustomResource = CustomResource;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2N1c3RvbVJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQywrREFBMkc7QUFDM0csaUZBQWdHO0FBQ2hHLGlHQUE4RjtBQUU5RixNQUFhLGNBQWUsU0FBUSxtQkFBSztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBdUIsQ0FDaEQsSUFBSSxFQUNKLEdBQUcsRUFBRSxpQkFBaUIsRUFDdEI7WUFDRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVO1lBQ3hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1NBQ2pDLENBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksK0NBQXNCLENBQ3pDLElBQUksRUFDSixHQUFHLEVBQUUsVUFBVSxFQUNmO1lBQ0UsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FDRixDQUFDO1FBRUYsTUFBTSxFQUFFLEdBQUcsSUFBSSwrQkFBYyxDQUMzQixJQUFJLEVBQ0osR0FBRyxFQUFFLGdCQUFnQixFQUNyQjtZQUNFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtTQUNwQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkQsQ0FBQztDQUVGO0FBckNELHdDQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb24sIGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgYXMgY3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVzb3VyY2UgZXh0ZW5kcyBTdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBsYW1iZGFTaW5nbGV0b25GdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGxhbWJkYUZ1bmN0aW9uID0gbmV3IGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfVNpbmdsZXRvbkxhbWJkYWAsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IHByb3BzLmNvZGUsXG4gICAgICAgIGhhbmRsZXI6IGAke2lkfS5oYW5kbGVyYCxcbiAgICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSxcbiAgICAgICAgcm9sZURlc2NyaXB0aW9uOiBwcm9wcy5yb2xlRGVzY3JpcHRpb24sXG4gICAgICAgIGlubGluZVBvbGljeTogcHJvcHMuaW5saW5lUG9saWN5XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEN1c3RvbVJlc291cmNlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9UHJvdmlkZXJgLFxuICAgICAge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogbGFtYmRhRnVuY3Rpb25cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY3IgPSBuZXcgY3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9Q3VzdG9tUmVzb3VyY2VgLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0gY3IuZ2V0QXR0KFwiUmVzcG9uc2VcIikudG9TdHJpbmcoKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MultiEnvironmentOrganisationStack = exports.MultiEnvironmentOrganisation = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const constructs_1 = require("constructs");
|
|
6
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
7
|
-
const app_1 = require("../../app");
|
|
8
|
-
const cdk_organizations_1 = require("@pepperize/cdk-organizations");
|
|
9
|
-
const addSuffixToEmail_1 = require("../../utils/addSuffixToEmail");
|
|
10
|
-
/**
|
|
11
|
-
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
12
|
-
*/
|
|
13
|
-
class MultiEnvironmentOrganisation extends constructs_1.Construct {
|
|
14
|
-
constructor(scope, id, props) {
|
|
15
|
-
super(scope, id);
|
|
16
|
-
this.organisationalUnits = [];
|
|
17
|
-
this.accounts = [];
|
|
18
|
-
this.props = props;
|
|
19
|
-
this.addOrganisation();
|
|
20
|
-
this.addProductionUnit();
|
|
21
|
-
this.addStagingUnit();
|
|
22
|
-
this.addDevelopmentUnit();
|
|
23
|
-
//todo: Consider adding the remaining AWS recommended organisational units
|
|
24
|
-
// https://aws.amazon.com/blogs/mt/best-practices-for-organizational-units-with-aws-organizations/
|
|
25
|
-
// - deployments (build agents - accounts may be specific per 'service')
|
|
26
|
-
// - security
|
|
27
|
-
// - infrastructure (shared networking and IT services)
|
|
28
|
-
// - sandbox (equivalent to development unit?)
|
|
29
|
-
// - workloads
|
|
30
|
-
}
|
|
31
|
-
addOrganisation() {
|
|
32
|
-
this.organisation = new cdk_organizations_1.Organization(this, this.props.organisationName, {
|
|
33
|
-
featureSet: cdk_organizations_1.FeatureSet.ALL
|
|
34
|
-
});
|
|
35
|
-
const enforcedPolicyTypes = [
|
|
36
|
-
cdk_organizations_1.PolicyType.SERVICE_CONTROL_POLICY,
|
|
37
|
-
cdk_organizations_1.PolicyType.TAG_POLICY,
|
|
38
|
-
cdk_organizations_1.PolicyType.BACKUP_POLICY,
|
|
39
|
-
cdk_organizations_1.PolicyType.AISERVICES_OPT_OUT_POLICY
|
|
40
|
-
];
|
|
41
|
-
for (const policyType of enforcedPolicyTypes) {
|
|
42
|
-
this.organisation.enablePolicyType(policyType);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
addProductionUnit() {
|
|
46
|
-
const prodOrgUnit = this.addOrganisationalUnit("productionOrganizationalUnit", "Production");
|
|
47
|
-
this.addAccount("productionAccount", "Production2", (0, addSuffixToEmail_1.default)(this.props.accountEmail, "production2"), { env: "production" }, prodOrgUnit);
|
|
48
|
-
}
|
|
49
|
-
addStagingUnit() {
|
|
50
|
-
const stagOrgUnit = this.addOrganisationalUnit("stagingOrganisationUnit", "Staging");
|
|
51
|
-
this.addAccount("stagingAccount", "Staging", (0, addSuffixToEmail_1.default)(this.props.accountEmail, "staging"), { env: "staging" }, stagOrgUnit);
|
|
52
|
-
}
|
|
53
|
-
addDevelopmentUnit() {
|
|
54
|
-
const devOrgUnit = this.addOrganisationalUnit("developmentOrganisationUnit", "Development");
|
|
55
|
-
this.addAccount("developmentAccount", "Development", (0, addSuffixToEmail_1.default)(this.props.accountEmail, "development"), { env: "development" }, devOrgUnit);
|
|
56
|
-
}
|
|
57
|
-
addOrganisationalUnit(id, name) {
|
|
58
|
-
const ou = new cdk_organizations_1.OrganizationalUnit(this, id, {
|
|
59
|
-
organizationalUnitName: name,
|
|
60
|
-
parent: this.organisation.root,
|
|
61
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY //todo: validate if this is best practice
|
|
62
|
-
// defaults
|
|
63
|
-
// importOnDuplicate: false, //todo: should we import pre-existing organisational units?
|
|
64
|
-
});
|
|
65
|
-
this.organisationalUnits.push(ou);
|
|
66
|
-
return ou;
|
|
67
|
-
}
|
|
68
|
-
addAccount(id, name, email, tags, organisationalUnit) {
|
|
69
|
-
const acc = new cdk_organizations_1.Account(this, id, {
|
|
70
|
-
accountName: name,
|
|
71
|
-
email: email,
|
|
72
|
-
parent: organisationalUnit
|
|
73
|
-
});
|
|
74
|
-
this.accounts.push(acc);
|
|
75
|
-
for (const tag in tags) {
|
|
76
|
-
aws_cdk_lib_2.Tags.of(acc).add(tag, tags[tag]);
|
|
77
|
-
}
|
|
78
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Id`, {
|
|
79
|
-
value: acc.accountId,
|
|
80
|
-
exportName: `${id}Id`
|
|
81
|
-
});
|
|
82
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}Arn`, {
|
|
83
|
-
value: acc.accountId,
|
|
84
|
-
exportName: `${id}Arn`
|
|
85
|
-
});
|
|
86
|
-
return acc;
|
|
87
|
-
}
|
|
88
|
-
getAccounts() {
|
|
89
|
-
return this.accounts;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.MultiEnvironmentOrganisation = MultiEnvironmentOrganisation;
|
|
93
|
-
exports.default = MultiEnvironmentOrganisation;
|
|
94
|
-
/**
|
|
95
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
96
|
-
*/
|
|
97
|
-
class MultiEnvironmentOrganisationStack extends aws_cdk_lib_1.Stack {
|
|
98
|
-
constructor(id, props) {
|
|
99
|
-
super(app_1.default.getInstance(), id);
|
|
100
|
-
this.resource = new MultiEnvironmentOrganisation(this, id, props);
|
|
101
|
-
}
|
|
102
|
-
getAccounts() {
|
|
103
|
-
return this.resource.getAccounts();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.MultiEnvironmentOrganisationStack = MultiEnvironmentOrganisationStack;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlFbnZpcm9ubWVudE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbXVsdGlFbnZpcm9ubWVudE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLDZDQUFtQztBQUVuQyxtQ0FBNEI7QUFFNUIsb0VBTXNDO0FBRXRDLG1FQUE0RDtBQU81RDs7R0FFRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFPekQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBd0M7UUFFeEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQVJYLHdCQUFtQixHQUF5QixFQUFFLENBQUM7UUFDL0MsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQVEvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLDBFQUEwRTtRQUMxRSxrR0FBa0c7UUFDbEcsd0VBQXdFO1FBQ3hFLGFBQWE7UUFDYix1REFBdUQ7UUFDdkQsOENBQThDO1FBQzlDLGNBQWM7SUFDaEIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEUsVUFBVSxFQUFFLDhCQUFVLENBQUMsR0FBRztTQUMzQixDQUFDLENBQUM7UUFFSCxNQUFNLG1CQUFtQixHQUFpQjtZQUN4Qyw4QkFBVSxDQUFDLHNCQUFzQjtZQUNqQyw4QkFBVSxDQUFDLFVBQVU7WUFDckIsOEJBQVUsQ0FBQyxhQUFhO1lBQ3hCLDhCQUFVLENBQUMseUJBQXlCO1NBQ3JDLENBQUM7UUFFRixLQUFLLE1BQU0sVUFBVSxJQUFJLG1CQUFtQixFQUFFO1lBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUMsOEJBQThCLEVBQzlCLFlBQVksQ0FDYixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FDYixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLElBQUEsMEJBQWdCLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQ3hELEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUNyQixXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUMseUJBQXlCLEVBQ3pCLFNBQVMsQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FDYixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULElBQUEsMEJBQWdCLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEVBQ3BELEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUNsQixXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUMzQyw2QkFBNkIsRUFDN0IsYUFBYSxDQUNkLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUNiLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsSUFBQSwwQkFBZ0IsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFDeEQsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEVBQ3RCLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVPLHFCQUFxQixDQUFDLEVBQVUsRUFBRSxJQUFZO1FBQ3BELE1BQU0sRUFBRSxHQUFHLElBQUksc0NBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMxQyxzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDOUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTyxDQUFDLHlDQUF5QztZQUM5RSxXQUFXO1lBQ1gsd0ZBQXdGO1NBQ3pGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sVUFBVSxDQUNoQixFQUFVLEVBQ1YsSUFBWSxFQUNaLEtBQWEsRUFDYixJQUErQixFQUMvQixrQkFBc0M7UUFFdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDaEMsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsa0JBQWtCO1NBQzNCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLGtCQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7WUFDN0IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDOUIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUExSUQsb0VBMElDO0FBQ0Qsa0JBQWUsNEJBQTRCLENBQUM7QUFFNUM7O0dBRUc7QUFDSCxNQUFhLGlDQUFrQyxTQUFRLG1CQUFLO0lBRzFELFlBQVksRUFBVSxFQUFFLEtBQXdDO1FBQzlELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDRCQUE0QixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVhELDhFQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7XG4gIEFjY291bnQsXG4gIEZlYXR1cmVTZXQsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uYWxVbml0LFxuICBQb2xpY3lUeXBlXG59IGZyb20gXCJAcGVwcGVyaXplL2Nkay1vcmdhbml6YXRpb25zXCI7XG5cbmltcG9ydCBhZGRTdWZmaXhUb0VtYWlsIGZyb20gXCIuLi8uLi91dGlscy9hZGRTdWZmaXhUb0VtYWlsXCI7XG5cbmludGVyZmFjZSBNdWx0aUVudmlyb25tZW50T3JnYW5pc2F0aW9uUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIGFjY291bnRFbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uc3RydWN0IGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTXVsdGlFbnZpcm9ubWVudE9yZ2FuaXNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBwcm9wczogTXVsdGlFbnZpcm9ubWVudE9yZ2FuaXNhdGlvblByb3BzO1xuXG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb247XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uYWxVbml0czogT3JnYW5pemF0aW9uYWxVbml0W10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NvdW50czogQWNjb3VudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBNdWx0aUVudmlyb25tZW50T3JnYW5pc2F0aW9uUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmFkZE9yZ2FuaXNhdGlvbigpO1xuXG4gICAgdGhpcy5hZGRQcm9kdWN0aW9uVW5pdCgpO1xuICAgIHRoaXMuYWRkU3RhZ2luZ1VuaXQoKTtcbiAgICB0aGlzLmFkZERldmVsb3BtZW50VW5pdCgpO1xuXG4gICAgLy90b2RvOiBDb25zaWRlciBhZGRpbmcgdGhlIHJlbWFpbmluZyBBV1MgcmVjb21tZW5kZWQgb3JnYW5pc2F0aW9uYWwgdW5pdHNcbiAgICAvLyBodHRwczovL2F3cy5hbWF6b24uY29tL2Jsb2dzL210L2Jlc3QtcHJhY3RpY2VzLWZvci1vcmdhbml6YXRpb25hbC11bml0cy13aXRoLWF3cy1vcmdhbml6YXRpb25zL1xuICAgIC8vIC0gZGVwbG95bWVudHMgKGJ1aWxkIGFnZW50cyAtIGFjY291bnRzIG1heSBiZSBzcGVjaWZpYyBwZXIgJ3NlcnZpY2UnKVxuICAgIC8vIC0gc2VjdXJpdHlcbiAgICAvLyAtIGluZnJhc3RydWN0dXJlIChzaGFyZWQgbmV0d29ya2luZyBhbmQgSVQgc2VydmljZXMpXG4gICAgLy8gLSBzYW5kYm94IChlcXVpdmFsZW50IHRvIGRldmVsb3BtZW50IHVuaXQ/KVxuICAgIC8vIC0gd29ya2xvYWRzXG4gIH1cblxuICBwcml2YXRlIGFkZE9yZ2FuaXNhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbiA9IG5ldyBPcmdhbml6YXRpb24odGhpcywgdGhpcy5wcm9wcy5vcmdhbmlzYXRpb25OYW1lLCB7XG4gICAgICBmZWF0dXJlU2V0OiBGZWF0dXJlU2V0LkFMTFxuICAgIH0pO1xuXG4gICAgY29uc3QgZW5mb3JjZWRQb2xpY3lUeXBlczogUG9saWN5VHlwZVtdID0gW1xuICAgICAgUG9saWN5VHlwZS5TRVJWSUNFX0NPTlRST0xfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5UQUdfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5CQUNLVVBfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5BSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgcG9saWN5VHlwZSBvZiBlbmZvcmNlZFBvbGljeVR5cGVzKSB7XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbi5lbmFibGVQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkUHJvZHVjdGlvblVuaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcHJvZE9yZ1VuaXQgPSB0aGlzLmFkZE9yZ2FuaXNhdGlvbmFsVW5pdChcbiAgICAgIFwicHJvZHVjdGlvbk9yZ2FuaXphdGlvbmFsVW5pdFwiLFxuICAgICAgXCJQcm9kdWN0aW9uXCJcbiAgICApO1xuXG4gICAgdGhpcy5hZGRBY2NvdW50KFxuICAgICAgXCJwcm9kdWN0aW9uQWNjb3VudFwiLFxuICAgICAgXCJQcm9kdWN0aW9uMlwiLFxuICAgICAgYWRkU3VmZml4VG9FbWFpbCh0aGlzLnByb3BzLmFjY291bnRFbWFpbCwgXCJwcm9kdWN0aW9uMlwiKSxcbiAgICAgIHsgZW52OiBcInByb2R1Y3Rpb25cIiB9LFxuICAgICAgcHJvZE9yZ1VuaXRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTdGFnaW5nVW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFnT3JnVW5pdCA9IHRoaXMuYWRkT3JnYW5pc2F0aW9uYWxVbml0KFxuICAgICAgXCJzdGFnaW5nT3JnYW5pc2F0aW9uVW5pdFwiLFxuICAgICAgXCJTdGFnaW5nXCJcbiAgICApO1xuXG4gICAgdGhpcy5hZGRBY2NvdW50KFxuICAgICAgXCJzdGFnaW5nQWNjb3VudFwiLFxuICAgICAgXCJTdGFnaW5nXCIsXG4gICAgICBhZGRTdWZmaXhUb0VtYWlsKHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLCBcInN0YWdpbmdcIiksXG4gICAgICB7IGVudjogXCJzdGFnaW5nXCIgfSxcbiAgICAgIHN0YWdPcmdVbml0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGV2ZWxvcG1lbnRVbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRldk9yZ1VuaXQgPSB0aGlzLmFkZE9yZ2FuaXNhdGlvbmFsVW5pdChcbiAgICAgIFwiZGV2ZWxvcG1lbnRPcmdhbmlzYXRpb25Vbml0XCIsXG4gICAgICBcIkRldmVsb3BtZW50XCJcbiAgICApO1xuXG4gICAgdGhpcy5hZGRBY2NvdW50KFxuICAgICAgXCJkZXZlbG9wbWVudEFjY291bnRcIixcbiAgICAgIFwiRGV2ZWxvcG1lbnRcIixcbiAgICAgIGFkZFN1ZmZpeFRvRW1haWwodGhpcy5wcm9wcy5hY2NvdW50RW1haWwsIFwiZGV2ZWxvcG1lbnRcIiksXG4gICAgICB7IGVudjogXCJkZXZlbG9wbWVudFwiIH0sXG4gICAgICBkZXZPcmdVbml0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uYWxVbml0KGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IE9yZ2FuaXphdGlvbmFsVW5pdCB7XG4gICAgY29uc3Qgb3UgPSBuZXcgT3JnYW5pemF0aW9uYWxVbml0KHRoaXMsIGlkLCB7XG4gICAgICBvcmdhbml6YXRpb25hbFVuaXROYW1lOiBuYW1lLFxuICAgICAgcGFyZW50OiB0aGlzLm9yZ2FuaXNhdGlvbi5yb290LFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZIC8vdG9kbzogdmFsaWRhdGUgaWYgdGhpcyBpcyBiZXN0IHByYWN0aWNlXG4gICAgICAvLyBkZWZhdWx0c1xuICAgICAgLy8gaW1wb3J0T25EdXBsaWNhdGU6IGZhbHNlLCAvL3RvZG86IHNob3VsZCB3ZSBpbXBvcnQgcHJlLWV4aXN0aW5nIG9yZ2FuaXNhdGlvbmFsIHVuaXRzP1xuICAgIH0pO1xuXG4gICAgdGhpcy5vcmdhbmlzYXRpb25hbFVuaXRzLnB1c2gob3UpO1xuICAgIHJldHVybiBvdTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQWNjb3VudChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBlbWFpbDogc3RyaW5nLFxuICAgIHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgb3JnYW5pc2F0aW9uYWxVbml0OiBPcmdhbml6YXRpb25hbFVuaXRcbiAgKTogQWNjb3VudCB7XG4gICAgY29uc3QgYWNjID0gbmV3IEFjY291bnQodGhpcywgaWQsIHtcbiAgICAgIGFjY291bnROYW1lOiBuYW1lLFxuICAgICAgZW1haWw6IGVtYWlsLFxuICAgICAgcGFyZW50OiBvcmdhbmlzYXRpb25hbFVuaXRcbiAgICB9KTtcbiAgICB0aGlzLmFjY291bnRzLnB1c2goYWNjKTtcblxuICAgIGZvciAoY29uc3QgdGFnIGluIHRhZ3MpIHtcbiAgICAgIFRhZ3Mub2YoYWNjKS5hZGQodGFnLCB0YWdzW3RhZ10pO1xuICAgIH1cblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9SWRgLCB7XG4gICAgICB2YWx1ZTogYWNjLmFjY291bnRJZCxcbiAgICAgIGV4cG9ydE5hbWU6IGAke2lkfUlkYFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9QXJuYCwge1xuICAgICAgdmFsdWU6IGFjYy5hY2NvdW50SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1Bcm5gXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWNjO1xuICB9XG5cbiAgcHVibGljIGdldEFjY291bnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRzO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBNdWx0aUVudmlyb25tZW50T3JnYW5pc2F0aW9uO1xuXG4vKipcbiAqIEEgc3RhY2sgZm9yIGNyZWF0aW5nIG11bHRpIGVudmlyb25tZW50IG9yZ2FuaXNhdGlvbnMgd2l0aCBhIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50IGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aUVudmlyb25tZW50T3JnYW5pc2F0aW9uU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIHByaXZhdGUgcmVzb3VyY2U6IE11bHRpRW52aXJvbm1lbnRPcmdhbmlzYXRpb247XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcHJvcHM6IE11bHRpRW52aXJvbm1lbnRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBNdWx0aUVudmlyb25tZW50T3JnYW5pc2F0aW9uKHRoaXMsIGlkLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjb3VudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZ2V0QWNjb3VudHMoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AwsStackProps } from "../../resources/aws/awsStack";
|
|
2
|
-
export interface WebAppProps {
|
|
3
|
-
account?: string;
|
|
4
|
-
region?: string;
|
|
5
|
-
environment?: string;
|
|
6
|
-
tags?: {
|
|
7
|
-
[key: string]: string;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
export declare class WebApp {
|
|
11
|
-
private vpcStack;
|
|
12
|
-
private databaseStack;
|
|
13
|
-
private computeStack;
|
|
14
|
-
constructor(id: string, props?: WebAppProps);
|
|
15
|
-
getStackProps(props?: WebAppProps): AwsStackProps | undefined;
|
|
16
|
-
}
|
|
17
|
-
export default WebApp;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebApp = void 0;
|
|
4
|
-
const awsStack_1 = require("../../resources/aws/awsStack");
|
|
5
|
-
const vpc_1 = require("../../resources/aws/constant/vpc");
|
|
6
|
-
const ecr_1 = require("../../resources/aws/constant/ecr");
|
|
7
|
-
const fargate_1 = require("../../resources/aws/compute/fargate");
|
|
8
|
-
const database_1 = require("../../resources/aws/store/database");
|
|
9
|
-
class WebApp {
|
|
10
|
-
constructor(id, props) {
|
|
11
|
-
this.vpcStack = new awsStack_1.default(`${id}Network`, [], this.getStackProps(props))
|
|
12
|
-
.addNetwork(vpc_1.Vpc.build(`${id}Vpc`))
|
|
13
|
-
.addResource(ecr_1.default.build(`${id}Ecr`));
|
|
14
|
-
this.databaseStack = new awsStack_1.default(`${id}Database`, this.vpcStack, this.getStackProps(props))
|
|
15
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
16
|
-
.addResource(database_1.default.build(`${id}Database`));
|
|
17
|
-
//todo: validate id does not contain special characters (no hyphens - no slashes etc)
|
|
18
|
-
// this is neccessary as database instances won't allow it
|
|
19
|
-
this.computeStack = new awsStack_1.default(`${id}Compute`, [this.vpcStack, this.databaseStack], this.getStackProps(props))
|
|
20
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
21
|
-
.addResource(fargate_1.default.build(`${id}Fargate`))
|
|
22
|
-
.connect(`${id}Fargate`, this.databaseStack.getResource(`${id}Database`), 5432);
|
|
23
|
-
}
|
|
24
|
-
getStackProps(props) {
|
|
25
|
-
if (!props)
|
|
26
|
-
return;
|
|
27
|
-
return {
|
|
28
|
-
account: props.account,
|
|
29
|
-
region: props.region,
|
|
30
|
-
environment: props.environment
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.WebApp = WebApp;
|
|
35
|
-
exports.default = WebApp;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViQXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy93ZWJBcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXVFO0FBQ3ZFLDBEQUF1RDtBQUN2RCwwREFBbUQ7QUFDbkQsaUVBQTBEO0FBQzFELGlFQUEwRDtBQVMxRCxNQUFhLE1BQU07SUFLakIsWUFBWSxFQUFVLEVBQUUsS0FBbUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFRLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4RSxVQUFVLENBQUMsU0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDakMsV0FBVyxDQUFDLGFBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtCQUFRLENBQy9CLEdBQUcsRUFBRSxVQUFVLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUMxQjthQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3RDLFdBQVcsQ0FBQyxrQkFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVoRCxxRkFBcUY7UUFDckYsMkRBQTJEO1FBRTNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxrQkFBUSxDQUM5QixHQUFHLEVBQUUsU0FBUyxFQUNkLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQzFCO2FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdEMsV0FBVyxDQUFDLGlCQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMxQyxPQUFPLENBQ04sR0FBRyxFQUFFLFNBQVMsRUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQy9DLElBQUksQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFtQjtRQUMvQixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE1Q0Qsd0JBNENDO0FBQ0Qsa0JBQWUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF3c1N0YWNrLCB7IEF3c1N0YWNrUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9hd3NTdGFja1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvdnBjXCI7XG5pbXBvcnQgRWNyIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbnN0YW50L2VjclwiO1xuaW1wb3J0IEZhcmdhdGUgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9mYXJnYXRlXCI7XG5pbXBvcnQgRGF0YWJhc2UgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc3RvcmUvZGF0YWJhc2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXZWJBcHBQcm9wcyB7XG4gIGFjY291bnQ/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgY2xhc3MgV2ViQXBwIHtcbiAgcHJpdmF0ZSB2cGNTdGFjazogQXdzU3RhY2s7XG4gIHByaXZhdGUgZGF0YWJhc2VTdGFjazogQXdzU3RhY2s7XG4gIHByaXZhdGUgY29tcHV0ZVN0YWNrOiBBd3NTdGFjaztcblxuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBwcm9wcz86IFdlYkFwcFByb3BzKSB7XG4gICAgdGhpcy52cGNTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1OZXR3b3JrYCwgW10sIHRoaXMuZ2V0U3RhY2tQcm9wcyhwcm9wcykpXG4gICAgICAuYWRkTmV0d29yayhWcGMuYnVpbGQoYCR7aWR9VnBjYCkpXG4gICAgICAuYWRkUmVzb3VyY2UoRWNyLmJ1aWxkKGAke2lkfUVjcmApKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTdGFjayA9IG5ldyBBd3NTdGFjayhcbiAgICAgIGAke2lkfURhdGFiYXNlYCxcbiAgICAgIHRoaXMudnBjU3RhY2ssXG4gICAgICB0aGlzLmdldFN0YWNrUHJvcHMocHJvcHMpXG4gICAgKVxuICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4gICAgICAuYWRkUmVzb3VyY2UoRGF0YWJhc2UuYnVpbGQoYCR7aWR9RGF0YWJhc2VgKSk7XG5cbiAgICAvL3RvZG86IHZhbGlkYXRlIGlkIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzIChubyBoeXBoZW5zIC0gbm8gc2xhc2hlcyBldGMpXG4gICAgLy8gIHRoaXMgaXMgbmVjY2Vzc2FyeSBhcyBkYXRhYmFzZSBpbnN0YW5jZXMgd29uJ3QgYWxsb3cgaXRcblxuICAgIHRoaXMuY29tcHV0ZVN0YWNrID0gbmV3IEF3c1N0YWNrKFxuICAgICAgYCR7aWR9Q29tcHV0ZWAsXG4gICAgICBbdGhpcy52cGNTdGFjaywgdGhpcy5kYXRhYmFzZVN0YWNrXSxcbiAgICAgIHRoaXMuZ2V0U3RhY2tQcm9wcyhwcm9wcylcbiAgICApXG4gICAgICAuYWRkTmV0d29yayh0aGlzLnZwY1N0YWNrLmdldE5ldHdvcmsoKSlcbiAgICAgIC5hZGRSZXNvdXJjZShGYXJnYXRlLmJ1aWxkKGAke2lkfUZhcmdhdGVgKSlcbiAgICAgIC5jb25uZWN0KFxuICAgICAgICBgJHtpZH1GYXJnYXRlYCxcbiAgICAgICAgdGhpcy5kYXRhYmFzZVN0YWNrLmdldFJlc291cmNlKGAke2lkfURhdGFiYXNlYCksXG4gICAgICAgIDU0MzJcbiAgICAgICk7XG4gIH1cblxuICBnZXRTdGFja1Byb3BzKHByb3BzPzogV2ViQXBwUHJvcHMpOiBBd3NTdGFja1Byb3BzIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzKSByZXR1cm47XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogcHJvcHMuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50XG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgV2ViQXBwO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
4
|
-
const awsStack_1 = require("../../awsStack");
|
|
5
|
-
const fargate_1 = require("../fargate");
|
|
6
|
-
const vpc_1 = require("../../constant/vpc");
|
|
7
|
-
describe("Fargate", () => {
|
|
8
|
-
it("creates Fargate construct with default cluster and vpc", () => {
|
|
9
|
-
const awsStack = new awsStack_1.default("Test").addResource(fargate_1.default.build("Fargate"));
|
|
10
|
-
const template = assertions_1.Template.fromStack(awsStack.getStack());
|
|
11
|
-
expect(template.toJSON()).toMatchSnapshot();
|
|
12
|
-
});
|
|
13
|
-
it("creates Fargate construct with specified VPC and Cluster", () => {
|
|
14
|
-
const awsStack = new awsStack_1.default("TestWithVpc")
|
|
15
|
-
.addNetwork(vpc_1.Vpc.build("Vpc"))
|
|
16
|
-
.addResource(fargate_1.default.build("Fargate"));
|
|
17
|
-
const template = assertions_1.Template.fromStack(awsStack.getStack());
|
|
18
|
-
expect(template.toJSON()).toMatchSnapshot();
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9fX3Rlc3RzX18vZmFyZ2F0ZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQWtEO0FBQ2xELDZDQUFzQztBQUN0Qyx3Q0FBaUM7QUFDakMsNENBQXlDO0FBRXpDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGFBQWEsQ0FBQzthQUN6QyxVQUFVLENBQUMsU0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QixXQUFXLENBQUMsaUJBQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV6QyxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCBBd3NTdGFjayBmcm9tIFwiLi4vLi4vYXdzU3RhY2tcIjtcbmltcG9ydCBGYXJnYXRlIGZyb20gXCIuLi9mYXJnYXRlXCI7XG5pbXBvcnQgeyBWcGMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnQvdnBjXCI7XG5cbmRlc2NyaWJlKFwiRmFyZ2F0ZVwiLCAoKSA9PiB7XG4gIGl0KFwiY3JlYXRlcyBGYXJnYXRlIGNvbnN0cnVjdCB3aXRoIGRlZmF1bHQgY2x1c3RlciBhbmQgdnBjXCIsICgpID0+IHtcbiAgICBjb25zdCBhd3NTdGFjayA9IG5ldyBBd3NTdGFjayhcIlRlc3RcIikuYWRkUmVzb3VyY2UoRmFyZ2F0ZS5idWlsZChcIkZhcmdhdGVcIikpO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soYXdzU3RhY2suZ2V0U3RhY2soKSk7XG4gICAgZXhwZWN0KHRlbXBsYXRlLnRvSlNPTigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG5cbiAgaXQoXCJjcmVhdGVzIEZhcmdhdGUgY29uc3RydWN0IHdpdGggc3BlY2lmaWVkIFZQQyBhbmQgQ2x1c3RlclwiLCAoKSA9PiB7XG4gICAgY29uc3QgYXdzU3RhY2sgPSBuZXcgQXdzU3RhY2soXCJUZXN0V2l0aFZwY1wiKVxuICAgICAgLmFkZE5ldHdvcmsoVnBjLmJ1aWxkKFwiVnBjXCIpKVxuICAgICAgLmFkZFJlc291cmNlKEZhcmdhdGUuYnVpbGQoXCJGYXJnYXRlXCIpKTtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGF3c1N0YWNrLmdldFN0YWNrKCkpO1xuICAgIGV4cGVjdCh0ZW1wbGF0ZS50b0pTT04oKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Cluster as CdkCluster, ClusterProps } from "aws-cdk-lib/aws-ecs";
|
|
2
|
-
import { IVpc, IConnectable, Connections } from "aws-cdk-lib/aws-ec2";
|
|
3
|
-
import { Construct } from "constructs";
|
|
4
|
-
import { StackBuilder } from "../awsStack";
|
|
5
|
-
export declare class Cluster extends CdkCluster {
|
|
6
|
-
constructor(scope: Construct, id: string, props: ClusterProps);
|
|
7
|
-
static build(id: string): (scope: Construct) => Construct;
|
|
8
|
-
}
|
|
9
|
-
interface FargateProps {
|
|
10
|
-
vpc?: IVpc;
|
|
11
|
-
cluster?: Cluster;
|
|
12
|
-
cpu?: number;
|
|
13
|
-
desiredCount?: number;
|
|
14
|
-
memoryLimitMiB?: number;
|
|
15
|
-
publicLoadBalancer?: boolean;
|
|
16
|
-
}
|
|
17
|
-
export default class Fargate extends Construct implements IConnectable {
|
|
18
|
-
private albFargateService;
|
|
19
|
-
connections: Connections;
|
|
20
|
-
constructor(scope: Construct, id: string, props: FargateProps);
|
|
21
|
-
static build(id: string, props?: FargateProps): (sb: StackBuilder) => Construct;
|
|
22
|
-
}
|
|
23
|
-
export {};
|