@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
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrganisationId = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
+
class OrganisationId extends aws_cdk_lib_1.Stack {
|
|
9
|
+
constructor(scope, id) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
const organisation = new awsCustomResource_1.AwsCustomResource(this, "ipamDelegateAdmin", {
|
|
12
|
+
functionName: "organisationId",
|
|
13
|
+
onCreate: {
|
|
14
|
+
service: "organizations",
|
|
15
|
+
action: "describeOrganization",
|
|
16
|
+
physicalResourceId: customResources.PhysicalResourceId.of("organisationId")
|
|
17
|
+
},
|
|
18
|
+
onUpdate: {
|
|
19
|
+
service: "organizations",
|
|
20
|
+
action: "describeOrganization",
|
|
21
|
+
physicalResourceId: customResources.PhysicalResourceId.of("organisationId")
|
|
22
|
+
},
|
|
23
|
+
resourceType: "Custom::organisationId",
|
|
24
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
25
|
+
new aws_iam_1.PolicyStatement({
|
|
26
|
+
actions: ["organizations:DescribeOrganization"],
|
|
27
|
+
resources: ["*"],
|
|
28
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
29
|
+
})
|
|
30
|
+
])
|
|
31
|
+
});
|
|
32
|
+
new aws_cdk_lib_1.CfnOutput(this, "OrganisationId", {
|
|
33
|
+
key: "OrganisationId",
|
|
34
|
+
value: organisation.getResponseField("Organization.Id"),
|
|
35
|
+
exportName: "OrganisationId"
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.OrganisationId = OrganisationId;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uSWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9vcmdhbmlzYXRpb25JZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0M7QUFDL0MsZ0VBQWdFO0FBQ2hFLGlEQUE4RDtBQUc5RCx1RkFBb0Y7QUFFcEYsTUFBYSxjQUFlLFNBQVEsbUJBQUs7SUFDdkMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFlBQVksR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNwRSxZQUFZLEVBQUUsZ0JBQWdCO1lBQzlCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsa0JBQWtCLEVBQ2hCLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDMUQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxzQkFBc0I7Z0JBQzlCLGtCQUFrQixFQUNoQixlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQzFEO1lBQ0QsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNoQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2lCQUNyQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDcEMsR0FBRyxFQUFFLGdCQUFnQjtZQUNyQixLQUFLLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1lBQ3ZELFVBQVUsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbENELHdDQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIE9yZ2FuaXNhdGlvbklkIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG9yZ2FuaXNhdGlvbiA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcImlwYW1EZWxlZ2F0ZUFkbWluXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJvcmdhbmlzYXRpb25JZFwiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZXNjcmliZU9yZ2FuaXphdGlvblwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL09yZ2FuaXphdGlvbnMuaHRtbCNkZXNjcmliZU9yZ2FuaXphdGlvbi1wcm9wZXJ0eVxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcIm9yZ2FuaXNhdGlvbklkXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZXNjcmliZU9yZ2FuaXphdGlvblwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL09yZ2FuaXphdGlvbnMuaHRtbCNkZXNjcmliZU9yZ2FuaXphdGlvbi1wcm9wZXJ0eVxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcIm9yZ2FuaXNhdGlvbklkXCIpXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6b3JnYW5pc2F0aW9uSWRcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wib3JnYW5pemF0aW9uczpEZXNjcmliZU9yZ2FuaXphdGlvblwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiT3JnYW5pc2F0aW9uSWRcIiwge1xuICAgICAga2V5OiBcIk9yZ2FuaXNhdGlvbklkXCIsXG4gICAgICB2YWx1ZTogb3JnYW5pc2F0aW9uLmdldFJlc3BvbnNlRmllbGQoXCJPcmdhbml6YXRpb24uSWRcIiksXG4gICAgICBleHBvcnROYW1lOiBcIk9yZ2FuaXNhdGlvbklkXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StackProps, Stack } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class RamEnableSharing extends Stack {
|
|
4
4
|
constructor(scope: Construct, id: string, props?: StackProps);
|
|
5
5
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RamEnableSharing = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
+
class RamEnableSharing extends aws_cdk_lib_1.Stack {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id, props);
|
|
11
|
+
new awsCustomResource_1.AwsCustomResource(this, "ramEnableSharing", {
|
|
12
|
+
functionName: "ramEnableSharing",
|
|
13
|
+
onCreate: {
|
|
14
|
+
service: "RAM",
|
|
15
|
+
action: "enableSharingWithAwsOrganization",
|
|
16
|
+
parameters: {},
|
|
17
|
+
physicalResourceId: customResources.PhysicalResourceId.of("ramEnableSharing")
|
|
18
|
+
},
|
|
19
|
+
resourceType: "Custom::ramEnableSharing",
|
|
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.RamEnableSharing = RamEnableSharing;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFtRW5hYmxlU2hhcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL3JhbUVuYWJsZVNoYXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBQ2hELGdFQUFnRTtBQUNoRSxpREFBc0Q7QUFHdEQsdUZBQW9GO0FBRXBGLE1BQWEsZ0JBQWlCLFNBQVEsbUJBQUs7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM5QyxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsa0NBQWtDO2dCQUMxQyxVQUFVLEVBQUUsRUFBRTtnQkFDZCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUM1RDtZQUNELFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHNDQUFzQzt3QkFDdEMsNkJBQTZCO3dCQUM3QixzQ0FBc0M7d0JBQ3RDLG9DQUFvQztxQkFDckM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsNkNBQTZDO2lCQUMvRCxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNCRCw0Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFja1Byb3BzLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIFJhbUVuYWJsZVNoYXJpbmcgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwicmFtRW5hYmxlU2hhcmluZ1wiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwicmFtRW5hYmxlU2hhcmluZ1wiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJSQU1cIixcbiAgICAgICAgYWN0aW9uOiBcImVuYWJsZVNoYXJpbmdXaXRoQXdzT3JnYW5pemF0aW9uXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvUkFNLmh0bWwjZW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb24tcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge30sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwicmFtRW5hYmxlU2hhcmluZ1wiKVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OnJhbUVuYWJsZVNoYXJpbmdcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJyYW06RW5hYmxlU2hhcmluZ1dpdGhBd3NPcmdhbml6YXRpb25cIixcbiAgICAgICAgICAgIFwiaWFtOkNyZWF0ZVNlcnZpY2VMaW5rZWRSb2xlXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6ZW5hYmxlQVdTU2VydmljZUFjY2Vzc1wiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRlc2NyaWJlT3JnYW5pemF0aW9uXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSAvLyBUT0RPOiBGaW5kIG91dCB0aGUgZXhhY3QgcHJpY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Users = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
7
|
+
const identityStoreId = aws_cdk_lib_1.Fn.importValue("identityStoreID");
|
|
8
|
+
// TODO: Will need to customise what group they are assigned to
|
|
9
|
+
const adminGroupId = aws_cdk_lib_1.Fn.importValue("AdministratorAccessGroupId");
|
|
10
|
+
const adminUsers = [
|
|
11
|
+
{
|
|
12
|
+
IdentityStoreId: identityStoreId,
|
|
13
|
+
UserName: "paul@fjall.io",
|
|
14
|
+
DisplayName: "Paul Oram",
|
|
15
|
+
Name: {
|
|
16
|
+
FamilyName: "Oram",
|
|
17
|
+
GivenName: "Paul"
|
|
18
|
+
},
|
|
19
|
+
Emails: [
|
|
20
|
+
{
|
|
21
|
+
Primary: true,
|
|
22
|
+
Value: "paul@fjall.io"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
IdentityStoreId: identityStoreId,
|
|
28
|
+
UserName: "joseph@fjall.io",
|
|
29
|
+
DisplayName: "Joseph Eigenraam",
|
|
30
|
+
Name: {
|
|
31
|
+
FamilyName: "Eigenraam",
|
|
32
|
+
GivenName: "Joseph"
|
|
33
|
+
},
|
|
34
|
+
Emails: [
|
|
35
|
+
{
|
|
36
|
+
Primary: true,
|
|
37
|
+
Value: "joseph@fjall.io"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
class Users extends aws_cdk_lib_1.Stack {
|
|
43
|
+
constructor(scope, id, props) {
|
|
44
|
+
super(scope, id, props);
|
|
45
|
+
for (const user of adminUsers) {
|
|
46
|
+
const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${user.DisplayName.replace(/\s/g, "")}`, {
|
|
47
|
+
functionName: "createUsers",
|
|
48
|
+
onCreate: {
|
|
49
|
+
service: "IdentityStore",
|
|
50
|
+
action: "createUser",
|
|
51
|
+
parameters: user,
|
|
52
|
+
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
53
|
+
},
|
|
54
|
+
onUpdate: {
|
|
55
|
+
service: "IdentityStore",
|
|
56
|
+
action: "updateUser",
|
|
57
|
+
parameters: user,
|
|
58
|
+
physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
|
|
59
|
+
},
|
|
60
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
61
|
+
});
|
|
62
|
+
new awsCustomResource_1.AwsCustomResource(this, `deleteUser${user.DisplayName.replace(/\s/g, "")}`, {
|
|
63
|
+
functionName: "deleteUsers",
|
|
64
|
+
onDelete: {
|
|
65
|
+
service: "IdentityStore",
|
|
66
|
+
action: "deleteUser",
|
|
67
|
+
parameters: {
|
|
68
|
+
IdentityStoreId: identityStoreId,
|
|
69
|
+
UserId: createUser.getResponseField("UserId")
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
73
|
+
});
|
|
74
|
+
new aws_cdk_lib_1.CfnOutput(this, `${user.DisplayName.replace(/\s/g, "")}UserId`, {
|
|
75
|
+
key: `${user.DisplayName.replace(/\s/g, "")}UserId`,
|
|
76
|
+
value: createUser.getResponseField("UserId"),
|
|
77
|
+
exportName: `${user.DisplayName.replace(/\s/g, "")}UserId`
|
|
78
|
+
});
|
|
79
|
+
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${user.DisplayName.replace(/\s/g, "")}`, {
|
|
80
|
+
functionName: "createGroupMembership",
|
|
81
|
+
onCreate: {
|
|
82
|
+
service: "IdentityStore",
|
|
83
|
+
action: "createGroupMembership",
|
|
84
|
+
parameters: {
|
|
85
|
+
GroupId: adminGroupId,
|
|
86
|
+
IdentityStoreId: identityStoreId,
|
|
87
|
+
MemberId: {
|
|
88
|
+
UserId: createUser.getResponseField("UserId")
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
92
|
+
},
|
|
93
|
+
onUpdate: {
|
|
94
|
+
service: "IdentityStore",
|
|
95
|
+
action: "createGroupMembership",
|
|
96
|
+
parameters: {
|
|
97
|
+
GroupId: adminGroupId,
|
|
98
|
+
IdentityStoreId: identityStoreId,
|
|
99
|
+
MemberId: {
|
|
100
|
+
UserId: createUser.getResponseField("UserId")
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${user.DisplayName.replace(/\s/g, "")}`, {
|
|
107
|
+
functionName: "deleteGroupMembership",
|
|
108
|
+
onDelete: {
|
|
109
|
+
service: "IdentityStore",
|
|
110
|
+
action: "deleteGroupMembership",
|
|
111
|
+
parameters: {
|
|
112
|
+
IdentityStoreId: identityStoreId,
|
|
113
|
+
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
117
|
+
});
|
|
118
|
+
new aws_cdk_lib_1.CfnOutput(this, `${user.DisplayName.replace(/\s/g, "")}GroupMembershipId`, {
|
|
119
|
+
value: groupMembershipId.getResponseField("MembershipId"),
|
|
120
|
+
exportName: `${user.DisplayName.replace(/\s/g, "")}GroupMembershipId`
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Users = Users;
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy91c2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0Q7QUFDL0QsZ0VBQWdFO0FBRWhFLHVGQUFvRjtBQUVwRixNQUFNLGVBQWUsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzFELCtEQUErRDtBQUMvRCxNQUFNLFlBQVksR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sVUFBVSxHQUFHO0lBQ2pCO1FBQ0UsZUFBZSxFQUFFLGVBQWU7UUFDaEMsUUFBUSxFQUFFLGVBQWU7UUFDekIsV0FBVyxFQUFFLFdBQVc7UUFDeEIsSUFBSSxFQUFFO1lBQ0osVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLE1BQU07U0FDbEI7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsZUFBZTthQUN2QjtTQUNGO0tBQ0Y7SUFDRDtRQUNFLGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixJQUFJLEVBQUU7WUFDSixVQUFVLEVBQUUsV0FBVztZQUN2QixTQUFTLEVBQUUsUUFBUTtTQUNwQjtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxpQkFBaUI7YUFDekI7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQWEsS0FBTSxTQUFRLG1CQUFLO0lBQzlCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUU7WUFD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RUYsSUFBSSxxQ0FBaUIsQ0FDbkIsSUFBSSxFQUNKLHdCQUF3QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDN0Q7Z0JBQ0UsWUFBWSxFQUFFLHVCQUF1QjtnQkFDckMsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxlQUFlO29CQUN4QixNQUFNLEVBQUUsdUJBQXVCO29CQUMvQixVQUFVLEVBQUU7d0JBQ1YsZUFBZSxFQUFFLGVBQWU7d0JBQ2hDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7cUJBQ2pFO2lCQUNGO2dCQUNELFlBQVksRUFBRSw2QkFBNkI7YUFDNUMsQ0FDRixDQUFDO1lBRUYsSUFBSSx1QkFBUyxDQUNYLElBQUksRUFDSixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLEVBQ3pEO2dCQUNFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Z0JBQ3pELFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CO2FBQ3RFLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztDQUNGO0FBaEhELHNCQWdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRm4sIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuXG5jb25zdCBpZGVudGl0eVN0b3JlSWQgPSBGbi5pbXBvcnRWYWx1ZShcImlkZW50aXR5U3RvcmVJRFwiKTtcbi8vIFRPRE86IFdpbGwgbmVlZCB0byBjdXN0b21pc2Ugd2hhdCBncm91cCB0aGV5IGFyZSBhc3NpZ25lZCB0b1xuY29uc3QgYWRtaW5Hcm91cElkID0gRm4uaW1wb3J0VmFsdWUoXCJBZG1pbmlzdHJhdG9yQWNjZXNzR3JvdXBJZFwiKTtcblxuY29uc3QgYWRtaW5Vc2VycyA9IFtcbiAge1xuICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgIFVzZXJOYW1lOiBcInBhdWxAZmphbGwuaW9cIixcbiAgICBEaXNwbGF5TmFtZTogXCJQYXVsIE9yYW1cIixcbiAgICBOYW1lOiB7XG4gICAgICBGYW1pbHlOYW1lOiBcIk9yYW1cIixcbiAgICAgIEdpdmVuTmFtZTogXCJQYXVsXCJcbiAgICB9LFxuICAgIEVtYWlsczogW1xuICAgICAge1xuICAgICAgICBQcmltYXJ5OiB0cnVlLFxuICAgICAgICBWYWx1ZTogXCJwYXVsQGZqYWxsLmlvXCJcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHtcbiAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICBVc2VyTmFtZTogXCJqb3NlcGhAZmphbGwuaW9cIixcbiAgICBEaXNwbGF5TmFtZTogXCJKb3NlcGggRWlnZW5yYWFtXCIsXG4gICAgTmFtZToge1xuICAgICAgRmFtaWx5TmFtZTogXCJFaWdlbnJhYW1cIixcbiAgICAgIEdpdmVuTmFtZTogXCJKb3NlcGhcIlxuICAgIH0sXG4gICAgRW1haWxzOiBbXG4gICAgICB7XG4gICAgICAgIFByaW1hcnk6IHRydWUsXG4gICAgICAgIFZhbHVlOiBcImpvc2VwaEBmamFsbC5pb1wiXG4gICAgICB9XG4gICAgXVxuICB9XG5dO1xuXG5leHBvcnQgY2xhc3MgVXNlcnMgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgZm9yIChjb25zdCB1c2VyIG9mIGFkbWluVXNlcnMpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZVVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBjcmVhdGVVc2VyJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImNyZWF0ZVVzZXJzXCIsXG4gICAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVVzZXJcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9JZGVudGl0eVN0b3JlLmh0bWwjY3JlYXRlVXNlci1wcm9wZXJ0eVxuICAgICAgICAgICAgcGFyYW1ldGVyczogdXNlcixcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImNyZWF0ZVVzZXJzXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwidXBkYXRlVXNlclwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdXNlcixcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDpcbiAgICAgICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcInVwZGF0ZVVzZXJzXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgZGVsZXRlVXNlciR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVVc2Vyc1wiLFxuICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1Vc2VySWRgLCB7XG4gICAgICAgIGtleTogYCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9VXNlcklkYCxcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9VXNlcklkYFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcElkID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHt1c2VyLkRpc3BsYXlOYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogYWRtaW5Hcm91cElkLFxuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogYWRtaW5Hcm91cElkLFxuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGRlbGV0ZUdyb3VwTWVtYmVyc2hpcCR7dXNlci5EaXNwbGF5TmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICBvbkRlbGV0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3VzZXIuRGlzcGxheU5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpfUdyb3VwTWVtYmVyc2hpcElkYCxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpLFxuICAgICAgICAgIGV4cG9ydE5hbWU6IGAke3VzZXIuRGlzcGxheU5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpfUdyb3VwTWVtYmVyc2hpcElkYFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Stack } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export declare class FjallHostedZone extends Stack {
|
|
4
|
+
constructor(scope: Construct, id: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class FjallSubdomainHostedZone extends Stack {
|
|
7
|
+
constructor(scope: Construct, id: string, props: {
|
|
8
|
+
environment?: string;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FjallSubdomainHostedZone = exports.FjallHostedZone = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const networking_1 = require("../../../resources/aws/networking");
|
|
6
|
+
class FjallHostedZone extends aws_cdk_lib_1.Stack {
|
|
7
|
+
constructor(scope, id) {
|
|
8
|
+
super(scope, id);
|
|
9
|
+
new networking_1.HostedZone(this, "FjallHostedZone", {
|
|
10
|
+
zoneName: "fjall.io"
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.FjallHostedZone = FjallHostedZone;
|
|
15
|
+
class FjallSubdomainHostedZone extends aws_cdk_lib_1.Stack {
|
|
16
|
+
constructor(scope, id, props) {
|
|
17
|
+
super(scope, id);
|
|
18
|
+
new networking_1.SubdomainHostedZone(this, "FjallHostedZone", {
|
|
19
|
+
delegatedZone: `${props.environment}.fjall.io`,
|
|
20
|
+
parentHostedZoneName: "fjall.io"
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.FjallSubdomainHostedZone = FjallSubdomainHostedZone;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGwuaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29uZmlnL2ZqYWxsL2hvc3RlZFpvbmVzL2ZqYWxsLmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQyxrRUFHMkM7QUFFM0MsTUFBYSxlQUFnQixTQUFRLG1CQUFLO0lBQ3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0QyxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFSRCwwQ0FRQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsbUJBQUs7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksZ0NBQW1CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQy9DLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLFdBQVc7WUFDOUMsb0JBQW9CLEVBQUUsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFURCw0REFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSG9zdGVkWm9uZSxcbiAgU3ViZG9tYWluSG9zdGVkWm9uZVxufSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nXCI7XG5cbmV4cG9ydCBjbGFzcyBGamFsbEhvc3RlZFpvbmUgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgem9uZU5hbWU6IFwiZmphbGwuaW9cIlxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGamFsbFN1YmRvbWFpbkhvc3RlZFpvbmUgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiB7IGVudmlyb25tZW50Pzogc3RyaW5nIH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IFN1YmRvbWFpbkhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgZGVsZWdhdGVkWm9uZTogYCR7cHJvcHMuZW52aXJvbm1lbnR9LmZqYWxsLmlvYCxcbiAgICAgIHBhcmVudEhvc3RlZFpvbmVOYW1lOiBcImZqYWxsLmlvXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/dist/lib/index.d.ts
CHANGED
package/dist/lib/index.js
CHANGED
|
@@ -15,4 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./patterns/aws"), exports);
|
|
18
|
-
|
|
18
|
+
__exportStar(require("./utils"), exports);
|
|
19
|
+
__exportStar(require("./resources"), exports);
|
|
20
|
+
__exportStar(require("./app"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQjtBQUMvQiwwQ0FBd0I7QUFDeEIsOENBQTRCO0FBQzVCLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3BhdHRlcm5zL2F3c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBwXCI7XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AwsStackProps } from "../../resources/aws/awsStack";
|
|
2
|
+
import { KeyValue } from "../../resources/aws/compute/ecs";
|
|
3
|
+
import { ScalingType, Protocol } from "../../resources/aws/compute/ecs";
|
|
4
|
+
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
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
|
+
protocol: Protocol;
|
|
14
|
+
scalingType: ScalingType;
|
|
15
|
+
containerPort: number;
|
|
16
|
+
}
|
|
17
|
+
export interface BasicAppProps {
|
|
18
|
+
account?: string;
|
|
19
|
+
clusterName?: 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
|
+
protocol?: Protocol;
|
|
29
|
+
region?: string;
|
|
30
|
+
scalingType?: ScalingType;
|
|
31
|
+
serviceName?: string;
|
|
32
|
+
taskRoleInlinePolicies?: {
|
|
33
|
+
[name: string]: PolicyDocument;
|
|
34
|
+
};
|
|
35
|
+
taskRoleManagegedPolicies?: IManagedPolicy[];
|
|
36
|
+
tags?: KeyValue;
|
|
37
|
+
}
|
|
38
|
+
export declare class BasicApp {
|
|
39
|
+
private vpcStack;
|
|
40
|
+
private databaseStack;
|
|
41
|
+
private secretStack;
|
|
42
|
+
private computeStack;
|
|
43
|
+
constructor(id: string, rawProps: BasicAppProps);
|
|
44
|
+
getStackProps(props: BasicAppProps): AwsStackProps | undefined;
|
|
45
|
+
getProps(id: string, rawProps: BasicAppProps): BasicAppProps & BasicAppPropDefaults;
|
|
46
|
+
}
|
|
47
|
+
export default BasicApp;
|
|
@@ -0,0 +1,90 @@
|
|
|
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/constant/vpc");
|
|
6
|
+
const ecr_1 = require("../../resources/aws/constant/ecr");
|
|
7
|
+
const ecs_1 = require("../../resources/aws/compute/ecs");
|
|
8
|
+
const database_1 = require("../../resources/aws/store/database");
|
|
9
|
+
const ecs_2 = require("../../resources/aws/compute/ecs");
|
|
10
|
+
const secret_1 = require("../../resources/aws/store/secret");
|
|
11
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
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
|
+
tags: props.tags
|
|
20
|
+
}))
|
|
21
|
+
.addContainerRegistry(ecr_1.default.build(`${id}Ecr`));
|
|
22
|
+
this.databaseStack = new awsStack_1.default(`${id}Database`, this.vpcStack, stackProps)
|
|
23
|
+
.addNetwork(this.vpcStack.getNetwork())
|
|
24
|
+
.addResource(database_1.default.build(`${id}Database`));
|
|
25
|
+
//TODO: validate id does not contain special characters (no hyphens - no slashes etc) database instances won't allow it
|
|
26
|
+
const dbResource = this.databaseStack.getResource(`${id}Database`);
|
|
27
|
+
const secretObjectValue = {};
|
|
28
|
+
if (props.containerSecrets) {
|
|
29
|
+
for (const secretObject of props.containerSecrets) {
|
|
30
|
+
secretObjectValue[secretObject] = aws_cdk_lib_1.SecretValue.unsafePlainText("");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
this.secretStack = new awsStack_1.default(`${id}Secret`, [], stackProps).addResource(secret_1.default.build(`${id}Secret`, {
|
|
34
|
+
secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
35
|
+
secretObjectValue: secretObjectValue,
|
|
36
|
+
tags: props.tags
|
|
37
|
+
}));
|
|
38
|
+
this.computeStack = new awsStack_1.default(`${id}Compute`, [this.vpcStack, this.databaseStack, this.secretStack], stackProps)
|
|
39
|
+
.addNetwork(this.vpcStack.getNetwork())
|
|
40
|
+
.addResource(ecs_1.default.build(`${id}Fargate`, {
|
|
41
|
+
clusterName: props.clusterName,
|
|
42
|
+
protocol: props.protocol,
|
|
43
|
+
//TODO: This should work via line 110, but doesn't work (at least on update)
|
|
44
|
+
databaseConnection: dbResource.connections,
|
|
45
|
+
containerCommand: props.containerCommand,
|
|
46
|
+
containerEnvironment: props.containerEnvironment,
|
|
47
|
+
containerPort: props.containerPort,
|
|
48
|
+
containerSecrets: secretObjectValue,
|
|
49
|
+
ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
50
|
+
parentDomain: props.parentDomain,
|
|
51
|
+
listenerPort: props.listenerPort,
|
|
52
|
+
scalingType: props.scalingType,
|
|
53
|
+
serviceName: props.serviceName,
|
|
54
|
+
taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
55
|
+
taskRoleManagegedPolicies: props.taskRoleManagegedPolicies,
|
|
56
|
+
tags: props.tags
|
|
57
|
+
}))
|
|
58
|
+
.connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
59
|
+
}
|
|
60
|
+
getStackProps(props) {
|
|
61
|
+
if (!props)
|
|
62
|
+
return;
|
|
63
|
+
return {
|
|
64
|
+
account: props.account,
|
|
65
|
+
region: props.region,
|
|
66
|
+
environment: props.environment
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
getProps(id, rawProps) {
|
|
70
|
+
const defaultProps = {
|
|
71
|
+
tags: {
|
|
72
|
+
"fjall:costAllocation:service": "app",
|
|
73
|
+
"fjall:costAllocation:environment": rawProps.environment || 'production',
|
|
74
|
+
"fjall:costAllocation:owner": rawProps.owner || 'Engineer'
|
|
75
|
+
},
|
|
76
|
+
scalingType: ecs_2.ScalingType.CPU,
|
|
77
|
+
protocol: rawProps.parentDomain ? ecs_2.Protocol.HTTPS : ecs_2.Protocol.HTTP,
|
|
78
|
+
containerPort: 3000,
|
|
79
|
+
serviceName: `${id}Service`,
|
|
80
|
+
clusterName: `${id}Cluster`
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
...defaultProps,
|
|
84
|
+
...rawProps
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.BasicApp = BasicApp;
|
|
89
|
+
exports.default = BasicApp;
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWNBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2Jhc2ljQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUN2RSwwREFBdUQ7QUFDdkQsMERBQW1EO0FBQ25ELHlEQUd5QztBQUN6QyxpRUFBMEQ7QUFDMUQseURBQXdFO0FBQ3hFLDZEQUFzRDtBQUN0RCw2Q0FBMEM7QUF3QzFDLE1BQWEsUUFBUTtJQU1uQixZQUFZLEVBQVUsRUFBRSxRQUF1QjtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQzthQUN6RCxVQUFVLENBQ1QsU0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FBQyxDQUNIO2FBQ0Esb0JBQW9CLENBQUMsYUFBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0JBQVEsQ0FDL0IsR0FBRyxFQUFFLFVBQVUsRUFDZixJQUFJLENBQUMsUUFBUSxFQUNiLFVBQVUsQ0FDWDthQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3RDLFdBQVcsQ0FBQyxrQkFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVoRCx1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QUM1QixRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLElBQUk7WUFDaEUsYUFBYSxFQUFFLElBQUk7WUFDbkIsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTO1lBQzNCLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUztTQUM1QixDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsWUFBWTtZQUNmLEdBQUcsUUFBUTtTQUNaLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUEvR0QsNEJBK0dDO0FBQ0Qsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF3c1N0YWNrLCB7IEF3c1N0YWNrUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9hd3NTdGFja1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvdnBjXCI7XG5pbXBvcnQgRWNyIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbnN0YW50L2VjclwiO1xuaW1wb3J0IEZhcmdhdGUsIHtcbiAgQ29udGFpbmVyU2VjcmV0LFxuICBLZXlWYWx1ZVxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3N0b3JlL2RhdGFiYXNlXCI7XG5pbXBvcnQgeyBTY2FsaW5nVHlwZSwgUHJvdG9jb2wgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IFNlY3JldCBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zdG9yZS9zZWNyZXRcIjtcbmltcG9ydCB7IFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJTWFuYWdlZFBvbGljeSwgUG9saWN5RG9jdW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG5cbi8qKlxuICogSW50ZXJzZWN0ZWQgd2l0aCBCYXNpY0FwcFByb3BzIGluIHRoZSBnZXRQcm9wcyBtZXRob2QuIFRoaXMgYWxsb3dzIHRoZSBCYXNpY0FwcCBjb25zdHJ1Y3RcbiAqIHRvIHRyZWF0IHRoZXNlIGFzIHJlcXVpcmVkIHByb3BlcnRpZXMgYW5kIGF2b2lkIGNvbnN0YW50IG51bGwgY2hlY2tpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNBcHBQcm9wRGVmYXVsdHMge1xuICB0YWdzOiBLZXlWYWx1ZTtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgY2x1c3Rlck5hbWU6IHN0cmluZztcbiAgcHJvdG9jb2w6IFByb3RvY29sO1xuICBzY2FsaW5nVHlwZTogU2NhbGluZ1R5cGU7XG4gIGNvbnRhaW5lclBvcnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNpY0FwcFByb3BzIHtcbiAgYWNjb3VudD86IHN0cmluZztcbiAgY2x1c3Rlck5hbWU/OiBzdHJpbmc7XG4gIGNvbnRhaW5lckNvbW1hbmQ/OiBzdHJpbmdbXTtcbiAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiBLZXlWYWx1ZTtcbiAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcbiAgY29udGFpbmVyU2VjcmV0cz86IHN0cmluZ1tdO1xuICAvLyBUaGUgdGVhbS9kb21haW4vYnVzaW5lc3MtdW5pdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGlzIHNlcnZpY2VcbiAgb3duZXI/OiBzdHJpbmdcbiAgcGFyZW50RG9tYWluPzogc3RyaW5nOyAvLyBGaXggdG8gbWFrZSBhIGRlcGVuZGFuY3kgb2YgcHJvdG9jb2xcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xuICBwcm90b2NvbD86IFByb3RvY29sO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHNjYWxpbmdUeXBlPzogU2NhbGluZ1R5cGU7XG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuICB0YXNrUm9sZUlubGluZVBvbGljaWVzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbiAgdGFza1JvbGVNYW5hZ2VnZWRQb2xpY2llcz86IElNYW5hZ2VkUG9saWN5W107XG4gIHRhZ3M/OiBLZXlWYWx1ZTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2ljQXBwIHtcbiAgcHJpdmF0ZSB2cGNTdGFjazogQXdzU3RhY2s7XG4gIHByaXZhdGUgZGF0YWJhc2VTdGFjazogQXdzU3RhY2s7XG4gIHByaXZhdGUgc2VjcmV0U3RhY2s6IEF3c1N0YWNrO1xuICBwcml2YXRlIGNvbXB1dGVTdGFjazogQXdzU3RhY2s7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcmF3UHJvcHM6IEJhc2ljQXBwUHJvcHMpIHtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuZ2V0UHJvcHMoaWQsIHJhd1Byb3BzKTtcbiAgICBjb25zdCBzdGFja1Byb3BzID0gdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKTtcblxuICAgIHRoaXMudnBjU3RhY2sgPSBuZXcgQXdzU3RhY2soYCR7aWR9TmV0d29ya2AsIFtdLCBzdGFja1Byb3BzKVxuICAgICAgLmFkZE5ldHdvcmsoXG4gICAgICAgIFZwYy5idWlsZChgJHtpZH1WcGNgLCB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50LFxuICAgICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5hZGRDb250YWluZXJSZWdpc3RyeShFY3IuYnVpbGQoYCR7aWR9RWNyYCkpO1xuXG4gICAgdGhpcy5kYXRhYmFzZVN0YWNrID0gbmV3IEF3c1N0YWNrKFxuICAgICAgYCR7aWR9RGF0YWJhc2VgLFxuICAgICAgdGhpcy52cGNTdGFjayxcbiAgICAgIHN0YWNrUHJvcHNcbiAgICApXG4gICAgICAuYWRkTmV0d29yayh0aGlzLnZwY1N0YWNrLmdldE5ldHdvcmsoKSlcbiAgICAgIC5hZGRSZXNvdXJjZShEYXRhYmFzZS5idWlsZChgJHtpZH1EYXRhYmFzZWApKTtcblxuICAgIC8vVE9ETzogdmFsaWRhdGUgaWQgZG9lcyBub3QgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgKG5vIGh5cGhlbnMgLSBubyBzbGFzaGVzIGV0YykgZGF0YWJhc2UgaW5zdGFuY2VzIHdvbid0IGFsbG93IGl0XG5cbiAgICBjb25zdCBkYlJlc291cmNlID0gdGhpcy5kYXRhYmFzZVN0YWNrLmdldFJlc291cmNlKFxuICAgICAgYCR7aWR9RGF0YWJhc2VgXG4gICAgKSBhcyBEYXRhYmFzZTtcblxuICAgIGNvbnN0IHNlY3JldE9iamVjdFZhbHVlOiBDb250YWluZXJTZWNyZXQgPSB7fTtcbiAgICBpZiAocHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgZm9yIChjb25zdCBzZWNyZXRPYmplY3Qgb2YgcHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgICBzZWNyZXRPYmplY3RWYWx1ZVtzZWNyZXRPYmplY3RdID0gU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KFwiXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VjcmV0U3RhY2sgPSBuZXcgQXdzU3RhY2soXG4gICAgICBgJHtpZH1TZWNyZXRgLFxuICAgICAgW10sXG4gICAgICBzdGFja1Byb3BzXG4gICAgKS5hZGRSZXNvdXJjZShcbiAgICAgIFNlY3JldC5idWlsZChgJHtpZH1TZWNyZXRgLCB7XG4gICAgICAgIHNlY3JldE5hbWU6IGAvJHtwcm9wcy5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlTmFtZX1gLFxuICAgICAgICBzZWNyZXRPYmplY3RWYWx1ZTogc2VjcmV0T2JqZWN0VmFsdWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuY29tcHV0ZVN0YWNrID0gbmV3IEF3c1N0YWNrKFxuICAgICAgYCR7aWR9Q29tcHV0ZWAsXG4gICAgICBbdGhpcy52cGNTdGFjaywgdGhpcy5kYXRhYmFzZVN0YWNrLCB0aGlzLnNlY3JldFN0YWNrXSxcbiAgICAgIHN0YWNrUHJvcHNcbiAgICApXG4gICAgICAuYWRkTmV0d29yayh0aGlzLnZwY1N0YWNrLmdldE5ldHdvcmsoKSlcbiAgICAgIC5hZGRSZXNvdXJjZShcbiAgICAgICAgRmFyZ2F0ZS5idWlsZChgJHtpZH1GYXJnYXRlYCwge1xuICAgICAgICAgIGNsdXN0ZXJOYW1lOiBwcm9wcy5jbHVzdGVyTmFtZSxcbiAgICAgICAgICBwcm90b2NvbDogcHJvcHMucHJvdG9jb2wsXG4gICAgICAgICAgLy9UT0RPOiBUaGlzIHNob3VsZCB3b3JrIHZpYSBsaW5lIDExMCwgYnV0IGRvZXNuJ3Qgd29yayAoYXQgbGVhc3Qgb24gdXBkYXRlKVxuICAgICAgICAgIGRhdGFiYXNlQ29ubmVjdGlvbjogZGJSZXNvdXJjZS5jb25uZWN0aW9ucyxcbiAgICAgICAgICBjb250YWluZXJDb21tYW5kOiBwcm9wcy5jb250YWluZXJDb21tYW5kLFxuICAgICAgICAgIGNvbnRhaW5lckVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudCxcbiAgICAgICAgICBjb250YWluZXJQb3J0OiBwcm9wcy5jb250YWluZXJQb3J0LFxuICAgICAgICAgIGNvbnRhaW5lclNlY3JldHM6IHNlY3JldE9iamVjdFZhbHVlLFxuICAgICAgICAgIGVjclJlcG9zaXRvcnk6IHRoaXMudnBjU3RhY2suZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSxcbiAgICAgICAgICBwYXJlbnREb21haW46IHByb3BzLnBhcmVudERvbWFpbixcbiAgICAgICAgICBsaXN0ZW5lclBvcnQ6IHByb3BzLmxpc3RlbmVyUG9ydCxcbiAgICAgICAgICBzY2FsaW5nVHlwZTogcHJvcHMuc2NhbGluZ1R5cGUsXG4gICAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHRhc2tSb2xlSW5saW5lUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlSW5saW5lUG9saWNpZXMsXG4gICAgICAgICAgdGFza1JvbGVNYW5hZ2VnZWRQb2xpY2llczogcHJvcHMudGFza1JvbGVNYW5hZ2VnZWRQb2xpY2llcyxcbiAgICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuY29ubmVjdChgJHtpZH1GYXJnYXRlYCwgYCR7aWR9RGF0YWJhc2VgLCA1NDMyKTtcbiAgfVxuXG4gIGdldFN0YWNrUHJvcHMocHJvcHM6IEJhc2ljQXBwUHJvcHMpOiBBd3NTdGFja1Byb3BzIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzKSByZXR1cm47XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogcHJvcHMuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50XG4gICAgfTtcbiAgfVxuXG4gIGdldFByb3BzKGlkOiBzdHJpbmcsIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzKTogQmFzaWNBcHBQcm9wcyAmIEJhc2ljQXBwUHJvcERlZmF1bHRzIHtcblxuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IFwiYXBwXCIsXG4gICAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogcmF3UHJvcHMuZW52aXJvbm1lbnQgfHwgJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IHJhd1Byb3BzLm93bmVyIHx8ICdFbmdpbmVlcidcbiAgICAgIH0sXG4gICAgICBzY2FsaW5nVHlwZTogU2NhbGluZ1R5cGUuQ1BVLFxuICAgICAgcHJvdG9jb2w6IHJhd1Byb3BzLnBhcmVudERvbWFpbiA/IFByb3RvY29sLkhUVFBTIDogUHJvdG9jb2wuSFRUUCxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IDMwMDAsXG4gICAgICBzZXJ2aWNlTmFtZTogYCR7aWR9U2VydmljZWAsXG4gICAgICBjbHVzdGVyTmFtZTogYCR7aWR9Q2x1c3RlcmBcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgIC4uLnJhd1Byb3BzXG4gICAgfVxuICB9XG59XG5leHBvcnQgZGVmYXVsdCBCYXNpY0FwcDtcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { StackProps, Stack } from "aws-cdk-lib";
|
|
2
|
+
import { InstanceType } from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { KeyValue } from "../../resources/aws/compute/ecs";
|
|
5
|
+
declare enum agentRelease {
|
|
6
|
+
STABLE = "stable",
|
|
7
|
+
BETA = "beta",
|
|
8
|
+
EDGE = "edge"
|
|
9
|
+
}
|
|
10
|
+
export interface BuildkiteProps extends StackProps {
|
|
11
|
+
environment: string;
|
|
12
|
+
elasticStackVersion: string;
|
|
13
|
+
agentScalerVersion: string;
|
|
14
|
+
queueName: string;
|
|
15
|
+
spotCapacityPercentage: number;
|
|
16
|
+
agentInstanceType: InstanceType;
|
|
17
|
+
agentVolumeSize: number;
|
|
18
|
+
agentMinInstances: number;
|
|
19
|
+
agentMaxInstances: number;
|
|
20
|
+
instanceStorage: boolean;
|
|
21
|
+
dockerUserNamespaceRemap: boolean;
|
|
22
|
+
dockerExperimental: boolean;
|
|
23
|
+
scaleInPeriod: number;
|
|
24
|
+
agentsPerInstance: number;
|
|
25
|
+
agentTags: string;
|
|
26
|
+
timestampLines: boolean;
|
|
27
|
+
experiments: string;
|
|
28
|
+
tracingBackend: string;
|
|
29
|
+
agentRelease: agentRelease;
|
|
30
|
+
gitMirrors: boolean;
|
|
31
|
+
bootstrapScript: string;
|
|
32
|
+
envFileUrl: string;
|
|
33
|
+
authorizedUsersUrl: string;
|
|
34
|
+
ecrAccessPolicy: string;
|
|
35
|
+
instanceTerminationAfterJob: boolean;
|
|
36
|
+
sudoPermissions: string;
|
|
37
|
+
tags: KeyValue;
|
|
38
|
+
secretsPluginEnabled: boolean;
|
|
39
|
+
ecrPluginEnabled: boolean;
|
|
40
|
+
dockerLoginPluginEnabled: boolean;
|
|
41
|
+
scaleOutFactor: string;
|
|
42
|
+
scaleOutWaitingForJobs: boolean;
|
|
43
|
+
eventScheduledPeriod: string;
|
|
44
|
+
minPollInterval: string;
|
|
45
|
+
}
|
|
46
|
+
export declare const BuildkiteDefaultProps: Pick<BuildkiteProps, "elasticStackVersion" | "agentScalerVersion" | "spotCapacityPercentage" | "agentInstanceType" | "agentVolumeSize" | "agentMinInstances" | "agentMaxInstances" | "instanceStorage" | "dockerUserNamespaceRemap" | "dockerExperimental" | "scaleInPeriod" | "agentsPerInstance" | "agentTags" | "timestampLines" | "experiments" | "tracingBackend" | "agentRelease" | "gitMirrors" | "bootstrapScript" | "envFileUrl" | "authorizedUsersUrl" | "ecrAccessPolicy" | "instanceTerminationAfterJob" | "sudoPermissions" | "secretsPluginEnabled" | "ecrPluginEnabled" | "dockerLoginPluginEnabled" | "scaleOutFactor" | "scaleOutWaitingForJobs" | "eventScheduledPeriod" | "minPollInterval">;
|
|
47
|
+
export default class Buildkite extends Stack {
|
|
48
|
+
constructor(scope: Construct, id: string, props: BuildkiteProps);
|
|
49
|
+
}
|
|
50
|
+
export {};
|