@glicogh/healthcare-cdk 0.1.86 → 0.1.88
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/.env.example +4 -0
- package/README.md +2 -0
- package/dist/@types/common.d.ts +1 -1
- package/dist/@types/common.js +2 -1
- package/dist/lib/microservice-clickhouse.d.ts +5 -0
- package/dist/lib/microservice-clickhouse.js +42 -0
- package/dist/lib/microservice-infra-auth.js +2 -2
- package/dist/lib/microservice-migration.js +13 -5
- package/dist/lib/microservice-network.js +18 -1
- package/dist/scripts/post-deployment-clickhouse.sh +240 -0
- package/dist/scripts/post-deployment-mysql.sh +31 -0
- package/dist/util/constants.d.ts +2 -1
- package/dist/util/constants.js +2 -1
- package/dist/util/initCdkStack.js +5 -1
- package/dist/util/migration.js +1 -2
- package/package.json +1 -1
- package/scripts/post-deployment-clickhouse.sh +240 -0
- package/scripts/post-deployment-mysql.sh +31 -0
package/.env.example
CHANGED
|
@@ -13,6 +13,10 @@ EC2_MYSQL_INSTANCE_TYPE=t4g.nano
|
|
|
13
13
|
EC2_MYSQL_INSTANCE_STORAGE_SIZE=10
|
|
14
14
|
EC2_MYSQL_INSTANCE_STORAGE_TYPE=gp3
|
|
15
15
|
|
|
16
|
+
EC2_CLICKHOUSE_INSTANCE_TYPE=t4g.nano
|
|
17
|
+
EC2_CLICKHOUSE_INSTANCE_STORAGE_SIZE=50
|
|
18
|
+
EC2_CLICKHOUSE_INSTANCE_STORAGE_TYPE=gp3
|
|
19
|
+
|
|
16
20
|
EC2_API_GATEWAY_INSTANCE_TYPE=t4g.nano
|
|
17
21
|
EC2_API_GATEWAY_INSTANCE_STORAGE_SIZE=
|
|
18
22
|
EC2_API_GATEWAY_INSTANCE_STORAGE_TYPE=gp3
|
package/README.md
CHANGED
|
@@ -77,6 +77,7 @@ The output looks like this
|
|
|
77
77
|
MicroserviceNetwork
|
|
78
78
|
MicroserviceRedis
|
|
79
79
|
MicroserviceMySQL
|
|
80
|
+
MicroserviceClickHouse
|
|
80
81
|
```
|
|
81
82
|
|
|
82
83
|
## Running the CDK
|
|
@@ -89,6 +90,7 @@ The following stack are meant to be deployed once and shared across the microser
|
|
|
89
90
|
- MicroserviceInfraAuth
|
|
90
91
|
- MicroserviceRedis
|
|
91
92
|
- MicroserviceMySQL
|
|
93
|
+
- MicroserviceClickHouse
|
|
92
94
|
|
|
93
95
|
The only required option for these stack is `env`. For example, to deploy `MicroserviceNetwork` in the UAT environment, you would run the command
|
|
94
96
|
|
package/dist/@types/common.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type BuildConfig = {
|
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
export type Microservice = 'account' | 'plan' | 'policy' | 'claims' | 'notification' | 'reporting';
|
|
19
|
-
export type OtherCDKService = 'network' | 'api-gateway' | 'redis' | 'mysql' | 'portal' | 'migration';
|
|
19
|
+
export type OtherCDKService = 'network' | 'api-gateway' | 'redis' | 'mysql' | 'clickhouse' | 'portal' | 'migration';
|
|
20
20
|
export declare const MicroserviceEnum: Record<Microservice, Microservice>;
|
|
21
21
|
export declare const MicroserviceList: Microservice[];
|
|
22
22
|
export declare const LaravelBasedServiceList: ("account" | "plan" | "policy" | "claims" | "reporting")[];
|
package/dist/@types/common.js
CHANGED
|
@@ -16,8 +16,9 @@ exports.OtherCDKServiceEnum = {
|
|
|
16
16
|
'api-gateway': 'api-gateway',
|
|
17
17
|
redis: 'redis',
|
|
18
18
|
mysql: 'mysql',
|
|
19
|
+
clickhouse: 'clickhouse',
|
|
19
20
|
portal: 'portal',
|
|
20
21
|
migration: 'migration',
|
|
21
22
|
};
|
|
22
23
|
exports.OtherCDKServiceList = Object.values(exports.OtherCDKServiceEnum);
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vQHR5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQmEsUUFBQSxnQkFBZ0IsR0FBdUM7SUFDbEUsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixZQUFZLEVBQUUsY0FBYztJQUM1QixTQUFTLEVBQUUsV0FBVztJQUN0QixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBRVcsUUFBQSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUFnQixDQUFDLENBQUM7QUFFbkQsUUFBQSx1QkFBdUIsR0FBRyx3QkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQztBQUUvRSxRQUFBLG1CQUFtQixHQUE2QztJQUMzRSxPQUFPLEVBQUUsU0FBUztJQUNsQixhQUFhLEVBQUUsYUFBYTtJQUM1QixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFLFlBQVk7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7Q0FDdkIsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQywyQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRW52TmFtZSA9ICd1YXQnIHwgJ3Byb2QnO1xuZXhwb3J0IHR5cGUgUmVwb0JyYW5jaCA9ICdtYXN0ZXInIHwgJ3JlbGVhc2UnO1xuZXhwb3J0IHR5cGUgQnVpbGRDb25maWcgPSB7XG4gIGFwcE5hbWU6IHN0cmluZztcbiAgYXBwVmVyc2lvbjogc3RyaW5nO1xuICBidWlsZElkOiBzdHJpbmc7XG4gIGZvcm1hdHRlZEJ1aWxkSWQ6IHN0cmluZztcbiAgZW52TmFtZTogRW52TmFtZTtcbiAgZW52UGF0aDogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogTWljcm9zZXJ2aWNlIHwgT3RoZXJDREtTZXJ2aWNlO1xuICBicmFuY2g/OiBzdHJpbmc7XG4gIGNvbXBhbnlOYW1lOiBzdHJpbmc7XG4gIGF3czoge1xuICAgIGFjY291bnQ6IHN0cmluZztcbiAgICByZWdpb246IHN0cmluZztcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBNaWNyb3NlcnZpY2UgPSAnYWNjb3VudCcgfCAncGxhbicgfCAncG9saWN5JyB8ICdjbGFpbXMnIHwgJ25vdGlmaWNhdGlvbicgfCAncmVwb3J0aW5nJztcblxuZXhwb3J0IHR5cGUgT3RoZXJDREtTZXJ2aWNlID0gJ25ldHdvcmsnIHwgJ2FwaS1nYXRld2F5JyB8ICdyZWRpcycgfCAnbXlzcWwnIHwgJ2NsaWNraG91c2UnIHwgJ3BvcnRhbCcgfCAnbWlncmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IE1pY3Jvc2VydmljZUVudW06IFJlY29yZDxNaWNyb3NlcnZpY2UsIE1pY3Jvc2VydmljZT4gPSB7XG4gIGFjY291bnQ6ICdhY2NvdW50JyxcbiAgcGxhbjogJ3BsYW4nLFxuICBwb2xpY3k6ICdwb2xpY3knLFxuICBub3RpZmljYXRpb246ICdub3RpZmljYXRpb24nLFxuICByZXBvcnRpbmc6ICdyZXBvcnRpbmcnLFxuICBjbGFpbXM6ICdjbGFpbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IE1pY3Jvc2VydmljZUxpc3QgPSBPYmplY3QudmFsdWVzKE1pY3Jvc2VydmljZUVudW0pO1xuXG5leHBvcnQgY29uc3QgTGFyYXZlbEJhc2VkU2VydmljZUxpc3QgPSBNaWNyb3NlcnZpY2VMaXN0LmZpbHRlcigoaSkgPT4gaSAhPT0gJ25vdGlmaWNhdGlvbicpO1xuXG5leHBvcnQgY29uc3QgT3RoZXJDREtTZXJ2aWNlRW51bTogUmVjb3JkPE90aGVyQ0RLU2VydmljZSwgT3RoZXJDREtTZXJ2aWNlPiA9IHtcbiAgbmV0d29yazogJ25ldHdvcmsnLFxuICAnYXBpLWdhdGV3YXknOiAnYXBpLWdhdGV3YXknLFxuICByZWRpczogJ3JlZGlzJyxcbiAgbXlzcWw6ICdteXNxbCcsXG4gIGNsaWNraG91c2U6ICdjbGlja2hvdXNlJyxcbiAgcG9ydGFsOiAncG9ydGFsJyxcbiAgbWlncmF0aW9uOiAnbWlncmF0aW9uJyxcbn07XG5cbmV4cG9ydCBjb25zdCBPdGhlckNES1NlcnZpY2VMaXN0ID0gT2JqZWN0LnZhbHVlcyhPdGhlckNES1NlcnZpY2VFbnVtKTtcblxuZXhwb3J0IHR5cGUgUmVwb1VybHMgPSB7IFtrZXkgaW4gQnVpbGRDb25maWdbJ3NlcnZpY2VOYW1lJ11dPzogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBSZXBvQnJhbmNoZXMgPSB7IFtrZXkgaW4gRW52TmFtZV06IFJlcG9CcmFuY2ggfTtcbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MicroserviceClickHouse = void 0;
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const constants_1 = require("../util/constants");
|
|
6
|
+
const initBuildConfig_1 = require("../util/initBuildConfig");
|
|
7
|
+
const getInstanceType_1 = require("../util/getInstanceType");
|
|
8
|
+
const getEc2UserData_1 = require("../util/getEc2UserData");
|
|
9
|
+
const getInstanceStorage_1 = require("../util/getInstanceStorage");
|
|
10
|
+
class MicroserviceClickHouse extends cdk.Stack {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
if (!initBuildConfig_1.buildConfig) {
|
|
14
|
+
throw new Error('BuildConfig not set');
|
|
15
|
+
}
|
|
16
|
+
const vpc = cdk.aws_ec2.Vpc.fromLookup(this, 'VPCLookup', {
|
|
17
|
+
vpcName: (0, constants_1.getEnvConstant)('vpcId'),
|
|
18
|
+
});
|
|
19
|
+
const secGroup = cdk.aws_ec2.SecurityGroup.fromLookupByName(this, 'SecGroupLookup', (0, constants_1.getEnvConstant)('clickhouseSecurityGroupId'), vpc);
|
|
20
|
+
const instance = new cdk.aws_ec2.Instance(this, `ec2-clickhouse-${initBuildConfig_1.buildConfig.envName}`, {
|
|
21
|
+
vpc,
|
|
22
|
+
securityGroup: secGroup,
|
|
23
|
+
instanceType: new cdk.aws_ec2.InstanceType((0, getInstanceType_1.getInstanceType)('clickhouse')),
|
|
24
|
+
machineImage: cdk.aws_ec2.MachineImage.genericLinux({
|
|
25
|
+
[initBuildConfig_1.buildConfig.aws.region]: (0, constants_1.getConstant)('defaultImageAmi'),
|
|
26
|
+
}),
|
|
27
|
+
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS },
|
|
28
|
+
associatePublicIpAddress: false,
|
|
29
|
+
userData: cdk.aws_ec2.UserData.custom((0, getEc2UserData_1.getEc2UserData)('clickhouse')),
|
|
30
|
+
role: cdk.aws_iam.Role.fromRoleName(this, 'BaseRoleLookup', (0, constants_1.getConstant)('baseRoleName')),
|
|
31
|
+
blockDevices: (0, getInstanceStorage_1.getInstanceStorage)('clickhouse'),
|
|
32
|
+
});
|
|
33
|
+
new cdk.CfnOutput(this, 'internal-domain', {
|
|
34
|
+
value: instance.instancePrivateDnsName,
|
|
35
|
+
});
|
|
36
|
+
new cdk.CfnOutput(this, 'internal-ip', {
|
|
37
|
+
value: instance.instancePrivateIp,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.MicroserviceClickHouse = MicroserviceClickHouse;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWNsaWNraG91c2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLWNsaWNraG91c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFnRTtBQUNoRSw2REFBc0Q7QUFDdEQsNkRBQTBEO0FBQzFELDJEQUF3RDtBQUN4RCxtRUFBZ0U7QUFFaEUsTUFBYSxzQkFBdUIsU0FBUSxHQUFHLENBQUMsS0FBSztJQUNuRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyw2QkFBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUN4RCxPQUFPLEVBQUUsSUFBQSwwQkFBYyxFQUFDLE9BQU8sQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBQSwwQkFBYyxFQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEksTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLDZCQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkYsR0FBRztZQUNILGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUEsaUNBQWUsRUFBQyxZQUFZLENBQUMsQ0FBQztZQUN6RSxZQUFZLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2dCQUNsRCxDQUFDLDZCQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUEsdUJBQVcsRUFBQyxpQkFBaUIsQ0FBVzthQUNuRSxDQUFDO1lBQ0YsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFO1lBQ3RFLHdCQUF3QixFQUFFLEtBQUs7WUFDL0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFBLCtCQUFjLEVBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBQSx1QkFBVyxFQUFDLGNBQWMsQ0FBVyxDQUFDO1lBQ2xHLFlBQVksRUFBRSxJQUFBLHVDQUFrQixFQUFDLFlBQVksQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsc0JBQXNCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3JDLEtBQUssRUFBRSxRQUFRLENBQUMsaUJBQWlCO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBDRCx3REFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBnZXRDb25zdGFudCwgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldEluc3RhbmNlVHlwZSB9IGZyb20gJy4uL3V0aWwvZ2V0SW5zdGFuY2VUeXBlJztcbmltcG9ydCB7IGdldEVjMlVzZXJEYXRhIH0gZnJvbSAnLi4vdXRpbC9nZXRFYzJVc2VyRGF0YSc7XG5pbXBvcnQgeyBnZXRJbnN0YW5jZVN0b3JhZ2UgfSBmcm9tICcuLi91dGlsL2dldEluc3RhbmNlU3RvcmFnZSc7XG5cbmV4cG9ydCBjbGFzcyBNaWNyb3NlcnZpY2VDbGlja0hvdXNlIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBjZGsuU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgaWYgKCFidWlsZENvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWlsZENvbmZpZyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjID0gY2RrLmF3c19lYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ1ZQQ0xvb2t1cCcsIHtcbiAgICAgIHZwY05hbWU6IGdldEVudkNvbnN0YW50KCd2cGNJZCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjR3JvdXAgPSBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeU5hbWUodGhpcywgJ1NlY0dyb3VwTG9va3VwJywgZ2V0RW52Q29uc3RhbnQoJ2NsaWNraG91c2VTZWN1cml0eUdyb3VwSWQnKSwgdnBjKTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNkay5hd3NfZWMyLkluc3RhbmNlKHRoaXMsIGBlYzItY2xpY2tob3VzZS0ke2J1aWxkQ29uZmlnLmVudk5hbWV9YCwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cDogc2VjR3JvdXAsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBjZGsuYXdzX2VjMi5JbnN0YW5jZVR5cGUoZ2V0SW5zdGFuY2VUeXBlKCdjbGlja2hvdXNlJykpLFxuICAgICAgbWFjaGluZUltYWdlOiBjZGsuYXdzX2VjMi5NYWNoaW5lSW1hZ2UuZ2VuZXJpY0xpbnV4KHtcbiAgICAgICAgW2J1aWxkQ29uZmlnLmF3cy5yZWdpb25dOiBnZXRDb25zdGFudCgnZGVmYXVsdEltYWdlQW1pJykgYXMgc3RyaW5nLFxuICAgICAgfSksXG4gICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldFR5cGU6IGNkay5hd3NfZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9LFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiBmYWxzZSxcbiAgICAgIHVzZXJEYXRhOiBjZGsuYXdzX2VjMi5Vc2VyRGF0YS5jdXN0b20oZ2V0RWMyVXNlckRhdGEoJ2NsaWNraG91c2UnKSksXG4gICAgICByb2xlOiBjZGsuYXdzX2lhbS5Sb2xlLmZyb21Sb2xlTmFtZSh0aGlzLCAnQmFzZVJvbGVMb29rdXAnLCBnZXRDb25zdGFudCgnYmFzZVJvbGVOYW1lJykgYXMgc3RyaW5nKSxcbiAgICAgIGJsb2NrRGV2aWNlczogZ2V0SW5zdGFuY2VTdG9yYWdlKCdjbGlja2hvdXNlJyksXG4gICAgfSk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnaW50ZXJuYWwtZG9tYWluJywge1xuICAgICAgdmFsdWU6IGluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWUsXG4gICAgfSk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnaW50ZXJuYWwtaXAnLCB7XG4gICAgICB2YWx1ZTogaW5zdGFuY2UuaW5zdGFuY2VQcml2YXRlSXAsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -102,7 +102,7 @@ class MicroserviceInfraAuth extends cdk.Stack {
|
|
|
102
102
|
new cdk.aws_iam.PolicyStatement({
|
|
103
103
|
sid: 'AllowAppUserAccessToSQS',
|
|
104
104
|
actions: ['sqs:*'],
|
|
105
|
-
resources: [`arn:aws:
|
|
105
|
+
resources: [`arn:aws:sqs:${initBuildConfig_1.buildConfig.aws.region}:${initBuildConfig_1.buildConfig.aws.account}:*`],
|
|
106
106
|
}),
|
|
107
107
|
],
|
|
108
108
|
});
|
|
@@ -110,4 +110,4 @@ class MicroserviceInfraAuth extends cdk.Stack {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
exports.MicroserviceInfraAuth = MicroserviceInfraAuth;
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWluZnJhLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLWluZnJhLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLDZEQUFzRDtBQUN0RCxpREFBZ0Q7QUFDaEQscUVBQWtFO0FBRWxFLE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUEsdUJBQVcsRUFBQyxjQUFjLENBQVcsRUFBRTtZQUNqRixRQUFRLEVBQUUsSUFBQSx1QkFBVyxFQUFDLGNBQWMsQ0FBVztZQUMvQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1lBQ2hFLGVBQWUsRUFBRSxFQUFFO1lBQ25CLGNBQWMsRUFBRTtnQkFDZCxpQ0FBaUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNoRSxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs0QkFDOUIsR0FBRyxFQUFFLHFDQUFxQzs0QkFDMUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLElBQUEseUNBQW1CLEdBQUUsRUFBRSxFQUFFLGdCQUFnQixJQUFBLHlDQUFtQixHQUFFLElBQUksQ0FBQzs0QkFDL0YsT0FBTyxFQUFF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QUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDdkYsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ2xFLFVBQVUsRUFBRSxlQUFlO1lBQzNCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUM5QixHQUFHLEVBQUUsd0JBQXdCO29CQUM3QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixJQUFBLHlDQUFtQixHQUFFLElBQUksQ0FBQztpQkFDdkQsQ0FBQztnQkFDRixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUM5QixHQUFHLEVBQUUseUJBQXlCO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFNBQVMsRUFBRSxDQUFDLGVBQWUsNkJBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLDZCQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sYUFBYSxDQUFDO2lCQUMzRixDQUFDO2dCQUNGLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7b0JBQzlCLEdBQUcsRUFBRSx5QkFBeUI7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsU0FBUyxFQUFFLENBQUMsZUFBZSw2QkFBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksNkJBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUM7aUJBQ2xGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBOUdELHNEQThHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGJ1aWxkQ29uZmlnIH0gZnJvbSAnLi4vdXRpbC9pbml0QnVpbGRDb25maWcnO1xuaW1wb3J0IHsgZ2V0Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRQdWJsaWNCdWNrZXROYW1lIH0gZnJvbSAnLi4vdXRpbC9nZXRQdWJsaWNCdWNrZXROYW1lJztcblxuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZUluZnJhQXV0aCBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogY2RrLlN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmICghYnVpbGRDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRDb25maWcgbm90IHNldCcpO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBiYXNlIHJvbGUgZm9yIG1pY3Jvc2VydmljZSBlYzIgaW5zdGFuY2VzXG4gICAgY29uc3QgYmFzZVJvbGUgPSBuZXcgY2RrLmF3c19pYW0uUm9sZSh0aGlzLCBnZXRDb25zdGFudCgnYmFzZVJvbGVOYW1lJykgYXMgc3RyaW5nLCB7XG4gICAgICByb2xlTmFtZTogZ2V0Q29uc3RhbnQoJ2Jhc2VSb2xlTmFtZScpIGFzIHN0cmluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGNkay5hd3NfaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJyksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtdLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgbWljcm9zZXJ2aWNlRWMySW5zdGFuY2VSb2xlUG9saWN5OiBuZXcgY2RrLmF3c19pYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0luc3RhbmNlVG9BY2Nlc3NTaGFyZWRTM0J1Y2tldCcsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnMzOjo6JHtnZXRQdWJsaWNCdWNrZXROYW1lKCl9YCwgYGFybjphd3M6czM6Ojoke2dldFB1YmxpY0J1Y2tldE5hbWUoKX0vKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3MzOionXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0luc3RhbmNlVG9SZWFkU1NNUGFyYW1ldGVycycsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNzbToke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OnBhcmFtZXRlci8ke2J1aWxkQ29uZmlnLmVudk5hbWV9L21pY3Jvc2VydmljZXMvKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3NzbTpHZXRQYXJhbWV0ZXIqJ10sXG4gICAgICAgICAgICAgIGVmZmVjdDogY2RrLmF3c19pYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dJbnN0YW5jZVRvU2VuZFNFU0VtYWlsJyxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzZXM6U2VuZEVtYWlsJywgJ3NlczpTZW5kUmF3RW1haWwnXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBiYXNlUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGNkay5hd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdDbG91ZFdhdGNoQWdlbnRTZXJ2ZXJQb2xpY3knKSk7XG5cbiAgICAvLyBjcmVhdGUgcm9sZS9wZXJtaXNzaW9ucyBmb3IgR2l0aHViIHRvIGludm9rZSBDREtcbiAgICBjb25zdCBnaXRodWJQcm92aWRlciA9IG5ldyBjZGsuYXdzX2lhbS5PcGVuSWRDb25uZWN0UHJvdmlkZXIodGhpcywgJ0dpdGh1Yk9wZW5JZFByb3ZpZGVyJywge1xuICAgICAgdXJsOiAnaHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbScsXG4gICAgICBjbGllbnRJZHM6IFsnc3RzLmFtYXpvbmF3cy5jb20nXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdpdGh1YlByaW5jaXBhbCA9IG5ldyBjZGsuYXdzX2lhbS5PcGVuSWRDb25uZWN0UHJpbmNpcGFsKGdpdGh1YlByb3ZpZGVyKS53aXRoQ29uZGl0aW9ucyh7XG4gICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTpzdWInOiAncmVwbzpnbGljb2doLyonLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuYXdzX2lhbS5Sb2xlKHRoaXMsICdHaXRodWJDZGtEZXBsb3ltZW50Um9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogZ2l0aHViUHJpbmNpcGFsLFxuICAgICAgZGVzY3JpcHRpb246ICdSb2xlIGFzc3VtZWQgYnkgR2l0aHViIGZvciBkZXBsb3lpbmcgd2l0aCBDREsnLFxuICAgICAgcm9sZU5hbWU6ICdnaXRodWItY2RrLWRlcGxveW1lbnQtcm9sZScsXG4gICAgICBtYXhTZXNzaW9uRHVyYXRpb246IGNkay5EdXJhdGlvbi5ob3VycygxKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIEdpdGh1YkNka0RlcGxveW1lbnRQb2xpY3k6IG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGNkay5hd3NfaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0Fzc3VtZUV4aXN0aW5nQ2RrUm9sZXMnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGNkay5hd3NfaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7dGhpcy5hY2NvdW50fTpyb2xlL2Nkay0qYF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgLy8gICBzaWQ6ICdBbGxvd0FjY2Vzc1RvRXhpc3RpbmdDZm5DZGtUb29sa2l0JyxcbiAgICAgICAgICAgIC8vICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAvLyAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIC8vICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgICAgICAgLy8gICAgICdjbG91ZGZvcm1hdGlvbjpHZXRUZW1wbGF0ZScsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgIC8vICAgICAnY2xvdWRmb3JtYXRpb246RXhlY3V0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHMnLFxuICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgLy8gICByZXNvdXJjZXM6IFtgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjoke3RoaXMucmVnaW9ufToke3RoaXMuYWNjb3VudH06c3RhY2svQ0RLVG9vbGtpdC8qYF0sXG4gICAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBjcmVhdGUgYXBwIHVzZXIgYW5kIGFzc2lnbiBwZXJtaXNzaW9uc1xuICAgIGNvbnN0IGFwcFVzZXIgPSBuZXcgY2RrLmF3c19pYW0uVXNlcih0aGlzLCAnQXBwSWFtVXNlcicsIHsgdXNlck5hbWU6ICdhcHAtaWFtLXVzZXInIH0pO1xuICAgIGNvbnN0IGFwcFVzZXJQb2xpY3kgPSBuZXcgY2RrLmF3c19pYW0uUG9saWN5KHRoaXMsICdBcHBVc2VyUG9saWN5Jywge1xuICAgICAgcG9saWN5TmFtZTogJ0FwcFVzZXJQb2xpY3knLFxuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6ICdBbGxvd0FwcFVzZXJBY2Nlc3NUb1MzJyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3MzOionXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzMzo6OiR7Z2V0UHVibGljQnVja2V0TmFtZSgpfS8qYF0sXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6ICdBbGxvd0FwcFVzZXJBY2Nlc3NUb1NFUycsXG4gICAgICAgICAgYWN0aW9uczogWydzZXM6KiddLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNlczoke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OmlkZW50aXR5LypgXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHNpZDogJ0FsbG93QXBwVXNlckFjY2Vzc1RvU1FTJyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3NxczoqJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VzOiR7YnVpbGRDb25maWcuYXdzLnJlZ2lvbn06JHtidWlsZENvbmZpZy5hd3MuYWNjb3VudH06KmBdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYXBwVXNlclBvbGljeS5hdHRhY2hUb1VzZXIoYXBwVXNlcik7XG4gIH1cbn1cbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWluZnJhLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLWluZnJhLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLDZEQUFzRDtBQUN0RCxpREFBZ0Q7QUFDaEQscUVBQWtFO0FBRWxFLE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUEsdUJBQVcsRUFBQyxjQUFjLENBQVcsRUFBRTtZQUNqRixRQUFRLEVBQUUsSUFBQSx1QkFBVyxFQUFDLGNBQWMsQ0FBVztZQUMvQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1lBQ2hFLGVBQWUsRUFBRSxFQUFFO1lBQ25CLGNBQWMsRUFBRTtnQkFDZCxpQ0FBaUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNoRSxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs0QkFDOUIsR0FBRyxFQUFFLHFDQUFxQzs0QkFDMUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLElBQUEseUNBQW1CLEdBQUUsRUFBRSxFQUFFLGdCQUFnQixJQUFBLHlDQUFtQixHQUFFLElBQUksQ0FBQzs0QkFDL0YsT0FBTyxFQUFF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QUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDdkYsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ2xFLFVBQVUsRUFBRSxlQUFlO1lBQzNCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUM5QixHQUFHLEVBQUUsd0JBQXdCO29CQUM3QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixJQUFBLHlDQUFtQixHQUFFLElBQUksQ0FBQztpQkFDdkQsQ0FBQztnQkFDRixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUM5QixHQUFHLEVBQUUseUJBQXlCO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFNBQVMsRUFBRSxDQUFDLGVBQWUsNkJBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLDZCQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sYUFBYSxDQUFDO2lCQUMzRixDQUFDO2dCQUNGLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7b0JBQzlCLEdBQUcsRUFBRSx5QkFBeUI7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsU0FBUyxFQUFFLENBQUMsZUFBZSw2QkFBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksNkJBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUM7aUJBQ2xGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBOUdELHNEQThHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGJ1aWxkQ29uZmlnIH0gZnJvbSAnLi4vdXRpbC9pbml0QnVpbGRDb25maWcnO1xuaW1wb3J0IHsgZ2V0Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRQdWJsaWNCdWNrZXROYW1lIH0gZnJvbSAnLi4vdXRpbC9nZXRQdWJsaWNCdWNrZXROYW1lJztcblxuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZUluZnJhQXV0aCBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogY2RrLlN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmICghYnVpbGRDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRDb25maWcgbm90IHNldCcpO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBiYXNlIHJvbGUgZm9yIG1pY3Jvc2VydmljZSBlYzIgaW5zdGFuY2VzXG4gICAgY29uc3QgYmFzZVJvbGUgPSBuZXcgY2RrLmF3c19pYW0uUm9sZSh0aGlzLCBnZXRDb25zdGFudCgnYmFzZVJvbGVOYW1lJykgYXMgc3RyaW5nLCB7XG4gICAgICByb2xlTmFtZTogZ2V0Q29uc3RhbnQoJ2Jhc2VSb2xlTmFtZScpIGFzIHN0cmluZyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGNkay5hd3NfaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJyksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtdLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgbWljcm9zZXJ2aWNlRWMySW5zdGFuY2VSb2xlUG9saWN5OiBuZXcgY2RrLmF3c19pYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0luc3RhbmNlVG9BY2Nlc3NTaGFyZWRTM0J1Y2tldCcsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnMzOjo6JHtnZXRQdWJsaWNCdWNrZXROYW1lKCl9YCwgYGFybjphd3M6czM6Ojoke2dldFB1YmxpY0J1Y2tldE5hbWUoKX0vKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3MzOionXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0luc3RhbmNlVG9SZWFkU1NNUGFyYW1ldGVycycsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNzbToke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OnBhcmFtZXRlci8ke2J1aWxkQ29uZmlnLmVudk5hbWV9L21pY3Jvc2VydmljZXMvKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3NzbTpHZXRQYXJhbWV0ZXIqJ10sXG4gICAgICAgICAgICAgIGVmZmVjdDogY2RrLmF3c19pYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnQWxsb3dJbnN0YW5jZVRvU2VuZFNFU0VtYWlsJyxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzZXM6U2VuZEVtYWlsJywgJ3NlczpTZW5kUmF3RW1haWwnXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBiYXNlUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGNkay5hd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdDbG91ZFdhdGNoQWdlbnRTZXJ2ZXJQb2xpY3knKSk7XG5cbiAgICAvLyBjcmVhdGUgcm9sZS9wZXJtaXNzaW9ucyBmb3IgR2l0aHViIHRvIGludm9rZSBDREtcbiAgICBjb25zdCBnaXRodWJQcm92aWRlciA9IG5ldyBjZGsuYXdzX2lhbS5PcGVuSWRDb25uZWN0UHJvdmlkZXIodGhpcywgJ0dpdGh1Yk9wZW5JZFByb3ZpZGVyJywge1xuICAgICAgdXJsOiAnaHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbScsXG4gICAgICBjbGllbnRJZHM6IFsnc3RzLmFtYXpvbmF3cy5jb20nXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdpdGh1YlByaW5jaXBhbCA9IG5ldyBjZGsuYXdzX2lhbS5PcGVuSWRDb25uZWN0UHJpbmNpcGFsKGdpdGh1YlByb3ZpZGVyKS53aXRoQ29uZGl0aW9ucyh7XG4gICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTpzdWInOiAncmVwbzpnbGljb2doLyonLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuYXdzX2lhbS5Sb2xlKHRoaXMsICdHaXRodWJDZGtEZXBsb3ltZW50Um9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogZ2l0aHViUHJpbmNpcGFsLFxuICAgICAgZGVzY3JpcHRpb246ICdSb2xlIGFzc3VtZWQgYnkgR2l0aHViIGZvciBkZXBsb3lpbmcgd2l0aCBDREsnLFxuICAgICAgcm9sZU5hbWU6ICdnaXRodWItY2RrLWRlcGxveW1lbnQtcm9sZScsXG4gICAgICBtYXhTZXNzaW9uRHVyYXRpb246IGNkay5EdXJhdGlvbi5ob3VycygxKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIEdpdGh1YkNka0RlcGxveW1lbnRQb2xpY3k6IG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGNkay5hd3NfaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0Fzc3VtZUV4aXN0aW5nQ2RrUm9sZXMnLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGNkay5hd3NfaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7dGhpcy5hY2NvdW50fTpyb2xlL2Nkay0qYF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgLy8gICBzaWQ6ICdBbGxvd0FjY2Vzc1RvRXhpc3RpbmdDZm5DZGtUb29sa2l0JyxcbiAgICAgICAgICAgIC8vICAgZWZmZWN0OiBjZGsuYXdzX2lhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAvLyAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIC8vICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgICAgICAgLy8gICAgICdjbG91ZGZvcm1hdGlvbjpHZXRUZW1wbGF0ZScsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgIC8vICAgICAnY2xvdWRmb3JtYXRpb246RXhlY3V0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAvLyAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHMnLFxuICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgLy8gICByZXNvdXJjZXM6IFtgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjoke3RoaXMucmVnaW9ufToke3RoaXMuYWNjb3VudH06c3RhY2svQ0RLVG9vbGtpdC8qYF0sXG4gICAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBjcmVhdGUgYXBwIHVzZXIgYW5kIGFzc2lnbiBwZXJtaXNzaW9uc1xuICAgIGNvbnN0IGFwcFVzZXIgPSBuZXcgY2RrLmF3c19pYW0uVXNlcih0aGlzLCAnQXBwSWFtVXNlcicsIHsgdXNlck5hbWU6ICdhcHAtaWFtLXVzZXInIH0pO1xuICAgIGNvbnN0IGFwcFVzZXJQb2xpY3kgPSBuZXcgY2RrLmF3c19pYW0uUG9saWN5KHRoaXMsICdBcHBVc2VyUG9saWN5Jywge1xuICAgICAgcG9saWN5TmFtZTogJ0FwcFVzZXJQb2xpY3knLFxuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6ICdBbGxvd0FwcFVzZXJBY2Nlc3NUb1MzJyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3MzOionXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzMzo6OiR7Z2V0UHVibGljQnVja2V0TmFtZSgpfS8qYF0sXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgY2RrLmF3c19pYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6ICdBbGxvd0FwcFVzZXJBY2Nlc3NUb1NFUycsXG4gICAgICAgICAgYWN0aW9uczogWydzZXM6KiddLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNlczoke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OmlkZW50aXR5LypgXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHNpZDogJ0FsbG93QXBwVXNlckFjY2Vzc1RvU1FTJyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3NxczoqJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c3FzOiR7YnVpbGRDb25maWcuYXdzLnJlZ2lvbn06JHtidWlsZENvbmZpZy5hd3MuYWNjb3VudH06KmBdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYXBwVXNlclBvbGljeS5hdHRhY2hUb1VzZXIoYXBwVXNlcik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -23,7 +23,10 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
23
23
|
const lambdaRole = new cdk.aws_iam.Role(this, 'MigrationLambdaRole', {
|
|
24
24
|
roleName: 'MigrationLambda',
|
|
25
25
|
assumedBy: new cdk.aws_iam.ServicePrincipal('lambda.amazonaws.com'),
|
|
26
|
-
managedPolicies: [
|
|
26
|
+
managedPolicies: [
|
|
27
|
+
cdk.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole'),
|
|
28
|
+
cdk.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaVPCAccessExecutionRole'),
|
|
29
|
+
],
|
|
27
30
|
inlinePolicies: {
|
|
28
31
|
migrationLambdas: new cdk.aws_iam.PolicyDocument({
|
|
29
32
|
statements: [
|
|
@@ -37,7 +40,7 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
37
40
|
}),
|
|
38
41
|
},
|
|
39
42
|
});
|
|
40
|
-
const lambdasRootDir = path.join(path.resolve('../../'), 'lambdas');
|
|
43
|
+
const lambdasRootDir = path.join(path.resolve('../../migration'), 'lambdas');
|
|
41
44
|
if (fs.existsSync(lambdasRootDir)) {
|
|
42
45
|
const lambdaProps = {
|
|
43
46
|
runtime: cdk.aws_lambda.Runtime.NODEJS_22_X,
|
|
@@ -53,13 +56,15 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
53
56
|
vpc,
|
|
54
57
|
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS },
|
|
55
58
|
paramsAndSecrets,
|
|
56
|
-
timeout: cdk.Duration.minutes(
|
|
59
|
+
timeout: cdk.Duration.minutes(15),
|
|
57
60
|
};
|
|
58
61
|
const migrationQueue = new cdk.aws_sqs.Queue(this, 'migrationQueue', {
|
|
59
62
|
queueName: 'migration-queue.fifo',
|
|
60
63
|
fifo: true,
|
|
61
64
|
fifoThroughputLimit: cdk.aws_sqs.FifoThroughputLimit.PER_MESSAGE_GROUP_ID,
|
|
62
65
|
deduplicationScope: cdk.aws_sqs.DeduplicationScope.MESSAGE_GROUP,
|
|
66
|
+
visibilityTimeout: cdk.Duration.minutes(20),
|
|
67
|
+
receiveMessageWaitTime: cdk.Duration.seconds(10),
|
|
63
68
|
});
|
|
64
69
|
if (lambdaProps.environment) {
|
|
65
70
|
lambdaProps.environment['MIGRATION_QUEUE_URL'] = migrationQueue.queueUrl;
|
|
@@ -77,11 +82,14 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
77
82
|
role: lambdaRole,
|
|
78
83
|
reservedConcurrentExecutions: 50,
|
|
79
84
|
});
|
|
80
|
-
consumerLambda.addEventSource(new cdk.aws_lambda_event_sources.SqsEventSource(migrationQueue, {
|
|
85
|
+
consumerLambda.addEventSource(new cdk.aws_lambda_event_sources.SqsEventSource(migrationQueue, {
|
|
86
|
+
maxConcurrency: 50,
|
|
87
|
+
reportBatchItemFailures: true,
|
|
88
|
+
}));
|
|
81
89
|
migrationQueue.grantSendMessages(producerLambda);
|
|
82
90
|
migrationQueue.grantConsumeMessages(consumerLambda);
|
|
83
91
|
}
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
94
|
exports.MicroserviceMigration = MicroserviceMigration;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW1pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9taWNyb3NlcnZpY2UtbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQyxpREFBbUQ7QUFDbkQsNkRBQXNEO0FBQ3RELGlEQUFrRDtBQUNsRCw2QkFBNkI7QUFDN0IseUJBQXlCO0FBRXpCLE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUEsMEJBQWMsRUFBQyxPQUFPLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtZQUNqSSxjQUFjLEVBQUUsRUFBRTtZQUNsQixxQkFBcUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDbkUsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMs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RSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsVUFBVTthQUNqQixDQUFDLENBQUM7WUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUMvRixHQUFHLFdBQVc7Z0JBQ2QsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7Z0JBQ3hELElBQUksRUFBRSxVQUFVO2dCQUNoQiw0QkFBNEIsRUFBRSxFQUFFO2FBQ2pDLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxjQUFjLENBQzNCLElBQUksR0FBRyxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDdEksQ0FBQztZQUVGLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRCxjQUFjLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhGRCxzREF3RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBnZXRFbnZDb25zdGFudCB9IGZyb20gJy4uL3V0aWwvY29uc3RhbnRzJztcbmltcG9ydCB7IGJ1aWxkQ29uZmlnIH0gZnJvbSAnLi4vdXRpbC9pbml0QnVpbGRDb25maWcnO1xuaW1wb3J0IHsgZ2V0TGFtYmRhRW52cyB9IGZyb20gJy4uL3V0aWwvbWlncmF0aW9uJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBjbGFzcyBNaWNyb3NlcnZpY2VNaWdyYXRpb24gZXh0ZW5kcyBjZGsuU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGNkay5TdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAoIWJ1aWxkQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1aWxkQ29uZmlnIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cGMgPSBjZGsuYXdzX2VjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAnVlBDTG9va3VwJywge1xuICAgICAgdnBjTmFtZTogZ2V0RW52Q29uc3RhbnQoJ3ZwY0lkJyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXJhbXNBbmRTZWNyZXRzID0gY2RrLmF3c19sYW1iZGEuUGFyYW1zQW5kU2VjcmV0c0xheWVyVmVyc2lvbi5mcm9tVmVyc2lvbihjZGsuYXdzX2xhbWJkYS5QYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMsIHtcbiAgICAgIG1heENvbm5lY3Rpb25zOiAyMCxcbiAgICAgIHNlY3JldHNNYW5hZ2VyVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxhbWJkYVJvbGUgPSBuZXcgY2RrLmF3c19pYW0uUm9sZSh0aGlzLCAnTWlncmF0aW9uTGFtYmRhUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnTWlncmF0aW9uTGFtYmRhJyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGNkay5hd3NfaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtjZGsuYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpXSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIG1pZ3JhdGlvbkxhbWJkYXM6IG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGNkay5hd3NfaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGFtYmRhVG9SZWFkU1NNUGFyYW1ldGVycycsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNzbToke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OnBhcmFtZXRlci8ke2J1aWxkQ29uZmlnLmVudk5hbWV9L21pY3Jvc2VydmljZXMvKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3NzbTpHZXRQYXJhbWV0ZXIqJ10sXG4gICAgICAgICAgICAgIGVmZmVjdDogY2RrLmF3c19pYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgbGFtYmRhc1Jvb3REaXIgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKCcuLi8uLi8nKSwgJ2xhbWJkYXMnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhsYW1iZGFzUm9vdERpcikpIHtcbiAgICAgIGNvbnN0IGxhbWJkYVByb3BzOiBjZGsuYXdzX2xhbWJkYV9ub2RlanMuTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgcnVudGltZTogY2RrLmF3c19sYW1iZGEuUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBjZGsuYXdzX2xhbWJkYS5BcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ3BhY2thZ2UtbG9jay5qc29uJyksXG4gICAgICAgIHByb2plY3RSb290OiBsYW1iZGFzUm9vdERpcixcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICB0c2NvbmZpZzogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAndHNjb25maWcuanNvbicpLFxuICAgICAgICAgIGV4dGVybmFsTW9kdWxlczogWydiZXR0ZXItc3FsaXRlMycsICdwZycsICdteXNxbCcsICdzcWxpdGUzJywgJ3RlZGlvdXMnLCAnb3JhY2xlZGInLCAncGctcXVlcnktc3RyZWFtJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGVudmlyb25tZW50OiBnZXRMYW1iZGFFbnZzKHRoaXMpLFxuICAgICAgICB2cGMsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogY2RrLmF3c19lYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0sXG4gICAgICAgIHBhcmFtc0FuZFNlY3JldHMsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1pZ3JhdGlvblF1ZXVlID0gbmV3IGNkay5hd3Nfc3FzLlF1ZXVlKHRoaXMsICdtaWdyYXRpb25RdWV1ZScsIHtcbiAgICAgICAgcXVldWVOYW1lOiAnbWlncmF0aW9uLXF1ZXVlLmZpZm8nLFxuICAgICAgICBmaWZvOiB0cnVlLFxuICAgICAgICBmaWZvVGhyb3VnaHB1dExpbWl0OiBjZGsuYXdzX3Nxcy5GaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9NRVNTQUdFX0dST1VQX0lELFxuICAgICAgICBkZWR1cGxpY2F0aW9uU2NvcGU6IGNkay5hd3Nfc3FzLkRlZHVwbGljYXRpb25TY29wZS5NRVNTQUdFX0dST1VQLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChsYW1iZGFQcm9wcy5lbnZpcm9ubWVudCkge1xuICAgICAgICBsYW1iZGFQcm9wcy5lbnZpcm9ubWVudFsnTUlHUkFUSU9OX1FVRVVFX1VSTCddID0gbWlncmF0aW9uUXVldWUucXVldWVVcmw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2R1Y2VyTGFtYmRhID0gbmV3IGNkay5hd3NfbGFtYmRhX25vZGVqcy5Ob2RlanNGdW5jdGlvbih0aGlzLCAnbWlncmF0aW9uUHJvZHVjZXJMYW1iZGEnLCB7XG4gICAgICAgIC4uLmxhbWJkYVByb3BzLFxuICAgICAgICBmdW5jdGlvbk5hbWU6ICdtaWdyYXRpb24tcHJvZHVjZXInLFxuICAgICAgICBlbnRyeTogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAncHJvZHVjZXInLCAnaW5kZXgudHMnKSxcbiAgICAgICAgcm9sZTogbGFtYmRhUm9sZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25zdW1lckxhbWJkYSA9IG5ldyBjZGsuYXdzX2xhbWJkYV9ub2RlanMuTm9kZWpzRnVuY3Rpb24odGhpcywgJ21pZ3JhdGlvbkNvbnN1bWVyTGFtYmRhJywge1xuICAgICAgICAuLi5sYW1iZGFQcm9wcyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiAnbWlncmF0aW9uLWNvbnN1bWVyJyxcbiAgICAgICAgZW50cnk6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ2NvbnN1bWVyJywgJ2luZGV4LnRzJyksXG4gICAgICAgIHJvbGU6IGxhbWJkYVJvbGUsXG4gICAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDUwLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN1bWVyTGFtYmRhLmFkZEV2ZW50U291cmNlKFxuICAgICAgICBuZXcgY2RrLmF3c19sYW1iZGFfZXZlbnRfc291cmNlcy5TcXNFdmVudFNvdXJjZShtaWdyYXRpb25RdWV1ZSwgeyBiYXRjaFNpemU6IDIwLCBtYXhDb25jdXJyZW5jeTogNTAsIHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzOiB0cnVlIH0pXG4gICAgICApO1xuXG4gICAgICBtaWdyYXRpb25RdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhwcm9kdWNlckxhbWJkYSk7XG4gICAgICBtaWdyYXRpb25RdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyhjb25zdW1lckxhbWJkYSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW1pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9taWNyb3NlcnZpY2UtbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQyxpREFBbUQ7QUFDbkQsNkRBQXNEO0FBQ3RELGlEQUFrRDtBQUNsRCw2QkFBNkI7QUFDN0IseUJBQXlCO0FBRXpCLE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUEsMEJBQWMsRUFBQyxPQUFPLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtZQUNqSSxjQUFjLEVBQUUsRUFBRTtZQUNsQixxQkFBcUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDbkUsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMs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USxDQUFDO1lBQzNFLENBQUM7WUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUMvRixHQUFHLFdBQVc7Z0JBQ2QsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7Z0JBQ3hELElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztZQUVILE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUU7Z0JBQy9GLEdBQUcsV0FBVztnQkFDZCxZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztnQkFDeEQsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLDRCQUE0QixFQUFFLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1lBRUgsY0FBYyxDQUFDLGNBQWMsQ0FDM0IsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRTtnQkFDOUQsY0FBYyxFQUFFLEVBQUU7Z0JBQ2xCLHVCQUF1QixFQUFFLElBQUk7YUFDOUIsQ0FBQyxDQUNILENBQUM7WUFFRixjQUFjLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsY0FBYyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoR0Qsc0RBZ0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldExhbWJkYUVudnMgfSBmcm9tICcuLi91dGlsL21pZ3JhdGlvbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG5leHBvcnQgY2xhc3MgTWljcm9zZXJ2aWNlTWlncmF0aW9uIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBjZGsuU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgaWYgKCFidWlsZENvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWlsZENvbmZpZyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjID0gY2RrLmF3c19lYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ1ZQQ0xvb2t1cCcsIHtcbiAgICAgIHZwY05hbWU6IGdldEVudkNvbnN0YW50KCd2cGNJZCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zQW5kU2VjcmV0cyA9IGNkay5hd3NfbGFtYmRhLlBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24uZnJvbVZlcnNpb24oY2RrLmF3c19sYW1iZGEuUGFyYW1zQW5kU2VjcmV0c1ZlcnNpb25zLlYxXzBfMTAzLCB7XG4gICAgICBtYXhDb25uZWN0aW9uczogMjAsXG4gICAgICBzZWNyZXRzTWFuYWdlclRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFSb2xlID0gbmV3IGNkay5hd3NfaWFtLlJvbGUodGhpcywgJ01pZ3JhdGlvbkxhbWJkYVJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogJ01pZ3JhdGlvbkxhbWJkYScsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBjZGsuYXdzX2lhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGNkay5hd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyksXG4gICAgICAgIGNkay5hd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhVlBDQWNjZXNzRXhlY3V0aW9uUm9sZScpLFxuICAgICAgXSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIG1pZ3JhdGlvbkxhbWJkYXM6IG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGNkay5hd3NfaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0FsbG93TGFtYmRhVG9SZWFkU1NNUGFyYW1ldGVycycsXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNzbToke2J1aWxkQ29uZmlnLmF3cy5yZWdpb259OiR7YnVpbGRDb25maWcuYXdzLmFjY291bnR9OnBhcmFtZXRlci8ke2J1aWxkQ29uZmlnLmVudk5hbWV9L21pY3Jvc2VydmljZXMvKmBdLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ3NzbTpHZXRQYXJhbWV0ZXIqJ10sXG4gICAgICAgICAgICAgIGVmZmVjdDogY2RrLmF3c19pYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgbGFtYmRhc1Jvb3REaXIgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKCcuLi8uLi9taWdyYXRpb24nKSwgJ2xhbWJkYXMnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhsYW1iZGFzUm9vdERpcikpIHtcbiAgICAgIGNvbnN0IGxhbWJkYVByb3BzOiBjZGsuYXdzX2xhbWJkYV9ub2RlanMuTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgcnVudGltZTogY2RrLmF3c19sYW1iZGEuUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBjZGsuYXdzX2xhbWJkYS5BcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ3BhY2thZ2UtbG9jay5qc29uJyksXG4gICAgICAgIHByb2plY3RSb290OiBsYW1iZGFzUm9vdERpcixcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICB0c2NvbmZpZzogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAndHNjb25maWcuanNvbicpLFxuICAgICAgICAgIGV4dGVybmFsTW9kdWxlczogWydiZXR0ZXItc3FsaXRlMycsICdwZycsICdteXNxbCcsICdzcWxpdGUzJywgJ3RlZGlvdXMnLCAnb3JhY2xlZGInLCAncGctcXVlcnktc3RyZWFtJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGVudmlyb25tZW50OiBnZXRMYW1iZGFFbnZzKHRoaXMpLFxuICAgICAgICB2cGMsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogY2RrLmF3c19lYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0sXG4gICAgICAgIHBhcmFtc0FuZFNlY3JldHMsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1pZ3JhdGlvblF1ZXVlID0gbmV3IGNkay5hd3Nfc3FzLlF1ZXVlKHRoaXMsICdtaWdyYXRpb25RdWV1ZScsIHtcbiAgICAgICAgcXVldWVOYW1lOiAnbWlncmF0aW9uLXF1ZXVlLmZpZm8nLFxuICAgICAgICBmaWZvOiB0cnVlLFxuICAgICAgICBmaWZvVGhyb3VnaHB1dExpbWl0OiBjZGsuYXdzX3Nxcy5GaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9NRVNTQUdFX0dST1VQX0lELFxuICAgICAgICBkZWR1cGxpY2F0aW9uU2NvcGU6IGNkay5hd3Nfc3FzLkRlZHVwbGljYXRpb25TY29wZS5NRVNTQUdFX0dST1VQLFxuICAgICAgICB2aXNpYmlsaXR5VGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMjApLFxuICAgICAgICByZWNlaXZlTWVzc2FnZVdhaXRUaW1lOiBjZGsuRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgICB9KTtcblxuICAgICAgaWYgKGxhbWJkYVByb3BzLmVudmlyb25tZW50KSB7XG4gICAgICAgIGxhbWJkYVByb3BzLmVudmlyb25tZW50WydNSUdSQVRJT05fUVVFVUVfVVJMJ10gPSBtaWdyYXRpb25RdWV1ZS5xdWV1ZVVybDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvZHVjZXJMYW1iZGEgPSBuZXcgY2RrLmF3c19sYW1iZGFfbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdtaWdyYXRpb25Qcm9kdWNlckxhbWJkYScsIHtcbiAgICAgICAgLi4ubGFtYmRhUHJvcHMsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogJ21pZ3JhdGlvbi1wcm9kdWNlcicsXG4gICAgICAgIGVudHJ5OiBwYXRoLmpvaW4obGFtYmRhc1Jvb3REaXIsICdwcm9kdWNlcicsICdpbmRleC50cycpLFxuICAgICAgICByb2xlOiBsYW1iZGFSb2xlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbnN1bWVyTGFtYmRhID0gbmV3IGNkay5hd3NfbGFtYmRhX25vZGVqcy5Ob2RlanNGdW5jdGlvbih0aGlzLCAnbWlncmF0aW9uQ29uc3VtZXJMYW1iZGEnLCB7XG4gICAgICAgIC4uLmxhbWJkYVByb3BzLFxuICAgICAgICBmdW5jdGlvbk5hbWU6ICdtaWdyYXRpb24tY29uc3VtZXInLFxuICAgICAgICBlbnRyeTogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAnY29uc3VtZXInLCAnaW5kZXgudHMnKSxcbiAgICAgICAgcm9sZTogbGFtYmRhUm9sZSxcbiAgICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogNTAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3VtZXJMYW1iZGEuYWRkRXZlbnRTb3VyY2UoXG4gICAgICAgIG5ldyBjZGsuYXdzX2xhbWJkYV9ldmVudF9zb3VyY2VzLlNxc0V2ZW50U291cmNlKG1pZ3JhdGlvblF1ZXVlLCB7XG4gICAgICAgICAgbWF4Q29uY3VycmVuY3k6IDUwLFxuICAgICAgICAgIHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgbWlncmF0aW9uUXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMocHJvZHVjZXJMYW1iZGEpO1xuICAgICAgbWlncmF0aW9uUXVldWUuZ3JhbnRDb25zdW1lTWVzc2FnZXMoY29uc3VtZXJMYW1iZGEpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -41,6 +41,11 @@ class MicroserviceNetwork extends cdk.Stack {
|
|
|
41
41
|
}),
|
|
42
42
|
restrictDefaultSecurityGroup: true,
|
|
43
43
|
});
|
|
44
|
+
// route S3 traffic from private subnets through a gateway endpoint instead of the NAT gateway
|
|
45
|
+
vpc.addGatewayEndpoint('S3GatewayEndpoint', {
|
|
46
|
+
service: cdk.aws_ec2.GatewayVpcEndpointAwsService.S3,
|
|
47
|
+
subnets: [{ subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS }],
|
|
48
|
+
});
|
|
44
49
|
// security group for Portal
|
|
45
50
|
const portalSecGrp = new cdk.aws_ec2.SecurityGroup(this, (0, constants_1.getEnvConstant)('portalSecurityGroupId'), {
|
|
46
51
|
vpc,
|
|
@@ -87,6 +92,18 @@ class MicroserviceNetwork extends cdk.Stack {
|
|
|
87
92
|
mysqlSecGrp.addIngressRule(cdk.aws_ec2.Peer.ipv4(vpc.vpcCidrBlock), cdk.aws_ec2.Port.tcp(22), 'SSH from within VPC');
|
|
88
93
|
// add rule for MySQL access
|
|
89
94
|
mysqlSecGrp.addIngressRule(cdk.aws_ec2.Peer.ipv4(vpc.vpcCidrBlock), cdk.aws_ec2.Port.tcp(3306), 'MySQL from within VPC');
|
|
95
|
+
// security group for ClickHouse server
|
|
96
|
+
const clickhouseSecGrp = new cdk.aws_ec2.SecurityGroup(this, (0, constants_1.getEnvConstant)('clickhouseSecurityGroupId'), {
|
|
97
|
+
vpc,
|
|
98
|
+
securityGroupName: (0, constants_1.getEnvConstant)('clickhouseSecurityGroupId'),
|
|
99
|
+
allowAllOutbound: true,
|
|
100
|
+
});
|
|
101
|
+
// add rule for SSH access
|
|
102
|
+
clickhouseSecGrp.addIngressRule(cdk.aws_ec2.Peer.ipv4(vpc.vpcCidrBlock), cdk.aws_ec2.Port.tcp(22), 'SSH from within VPC');
|
|
103
|
+
// add rule for ClickHouse HTTP access
|
|
104
|
+
clickhouseSecGrp.addIngressRule(cdk.aws_ec2.Peer.ipv4(vpc.vpcCidrBlock), cdk.aws_ec2.Port.tcp(8123), 'ClickHouse HTTP from within VPC');
|
|
105
|
+
// add rule for ClickHouse native access
|
|
106
|
+
clickhouseSecGrp.addIngressRule(cdk.aws_ec2.Peer.ipv4(vpc.vpcCidrBlock), cdk.aws_ec2.Port.tcp(9000), 'ClickHouse native from within VPC');
|
|
90
107
|
// security group for Notification service
|
|
91
108
|
const notificationSecGrp = new cdk.aws_ec2.SecurityGroup(this, (0, constants_1.getEnvConstant)('notificationServiceSecurityGroupId'), {
|
|
92
109
|
vpc,
|
|
@@ -133,4 +150,4 @@ class MicroserviceNetwork extends cdk.Stack {
|
|
|
133
150
|
}
|
|
134
151
|
}
|
|
135
152
|
exports.MicroserviceNetwork = MicroserviceNetwork;
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLW5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFnRTtBQUNoRSw2REFBc0Q7QUFDdEQscUVBQWtFO0FBRWxFLE1BQWEsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzVDLFVBQVUsRUFBRSxJQUFBLHlDQUFtQixHQUFFO1lBQ2pDLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlO1lBQy9ELGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDdkMsSUFBSSxFQUFFO2dCQUNKO29CQUNFLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hHLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsY0FBYyxFQUFFLEVBQUU7aUJBQ25CO2FBQ0Y7U0FDRixDQUFDLENB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QyxJQUFBLHVCQUFXLEVBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUEsdUJBQVcsRUFBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5KRCxrREFtSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBnZXRDb25zdGFudCwgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldFB1YmxpY0J1Y2tldE5hbWUgfSBmcm9tICcuLi91dGlsL2dldFB1YmxpY0J1Y2tldE5hbWUnO1xuXG5leHBvcnQgY2xhc3MgTWljcm9zZXJ2aWNlTmV0d29yayBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogY2RrLlN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmICghYnVpbGRDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRDb25maWcgbm90IHNldCcpO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBwdWJsaWMgczMgYnVja2V0XG4gICAgbmV3IGNkay5hd3NfczMuQnVja2V0KHRoaXMsICdQdWJsaWNTM0J1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IGdldFB1YmxpY0J1Y2tldE5hbWUoKSxcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IHRydWUsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogY2RrLmF3c19zMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BQ0xTX09OTFksXG4gICAgICByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBjb3JzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbGxvd2VkSGVhZGVyczogWycqJ10sXG4gICAgICAgICAgYWxsb3dlZE1ldGhvZHM6IFtjZGsuYXdzX3MzLkh0dHBNZXRob2RzLlBPU1QsIGNkay5hd3NfczMuSHR0cE1ldGhvZHMuUFVULCBjZGsuYXdzX3MzLkh0dHBNZXRob2RzLkRFTEVURV0sXG4gICAgICAgICAgYWxsb3dlZE9yaWdpbnM6IFsnKiddLFxuICAgICAgICAgIGV4cG9zZWRIZWFkZXJzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2cGMgPSBuZXcgY2RrLmF3c19lYzIuVnBjKHRoaXMsIGdldEVudkNvbnN0YW50KCd2cGNJZCcpLCB7XG4gICAgICB2cGNOYW1lOiBnZXRFbnZDb25zdGFudCgndnBjSWQnKSxcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdHJ1ZSxcbiAgICAgIGVuYWJsZURuc1N1cHBvcnQ6IHRydWUsXG4gICAgICBtYXhBenM6IDEsXG4gICAgICBuYXRHYXRld2F5czogMSxcbiAgICAgIC8vIHByb3Zpc2lvbiBhbmQgdXNlIGFuIEVDMiBpbnN0YW5jZSBhcyBOQVQgZ2F0ZXdheSBpbiBub24tcHJvZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIGluIHByb2QsIHRoZSBkZWZhdWx0IG1vcmUgc2NhbGFibGUvZXhwZW5zaXZlIE5BVCBnYXRld2F5IHdpbGwgYmUgdXNlZFxuICAgICAgLi4uKGJ1aWxkQ29uZmlnLmVudk5hbWUgIT09ICdwcm9kJyAmJiB7XG4gICAgICAgIG5hdEdhdGV3YXlQcm92aWRlcjogbmV3IGNkay5hd3NfZWMyLk5hdEluc3RhbmNlUHJvdmlkZXJWMih7XG4gICAgICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgY2RrLmF3c19lYzIuSW5zdGFuY2VUeXBlKCd0NGcubmFubycpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAgcmVzdHJpY3REZWZhdWx0U2VjdXJpdHlHcm91cDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIHNlY3VyaXR5IGdyb3VwIGZvciBQb3J0YWxcbiAgICBjb25zdCBwb3J0YWxTZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgncG9ydGFsU2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgncG9ydGFsU2VjdXJpdHlHcm91cElkJyksXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gYWRkIHJ1bGUgZm9yIEhUVFAgYWNjZXNzXG4gICAgcG9ydGFsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuYW55SXB2NCgpLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg4MCksICdIVFRQIGZyb20gYW55d2hlcmUnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgSFRUUFMgYWNjZXNzXG4gICAgcG9ydGFsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuYW55SXB2NCgpLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg0NDMpLCAnSFRUUFMgZnJvbSBhbnl3aGVyZScpO1xuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgcG9ydGFsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMjIpLCAnU1NIIGZyb20gd2l0aGluIFZQQycpO1xuXG4gICAgLy8gc2VjdXJpdHkgZ3JvdXAgZm9yIEFQSSBHYXRld2F5XG4gICAgY29uc3QgYXBpR2F0ZXdheVNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdhcGlHYXRld2F5U2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgnYXBpR2F0ZXdheVNlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBIVFRQIGFjY2Vzc1xuICAgIGFwaUdhdGV3YXlTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5hbnlJcHY0KCksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwKSwgJ0hUVFAgZnJvbSBhbnl3aGVyZScpO1xuICAgIC8vIGFkZCBydWxlIGZvciBIVFRQUyBhY2Nlc3NcbiAgICBhcGlHYXRld2F5U2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuYW55SXB2NCgpLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg0NDMpLCAnSFRUUFMgZnJvbSBhbnl3aGVyZScpO1xuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgYXBpR2F0ZXdheVNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmFueUlwdjQoKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMjIpLCAnU1NIIGZyb20gYW55d2hlcmUnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgaW50ZXJuYWwgY29tbXVuaWNhdGlvblxuICAgIGFwaUdhdGV3YXlTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg4MDgxKSwgJ0ludGVybmFsIG1pY3Jvc2VydmljZSBjb21tdW5pY2F0aW9uIGZyb20gd2l0aGluIFZQQycpO1xuXG4gICAgLy8gc2VjdXJpdHkgZ3JvdXAgZm9yIFJlZGlzIHNlcnZlclxuICAgIGNvbnN0IHJlZGlzU2VjR3JwID0gbmV3IGNkay5hd3NfZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgZ2V0RW52Q29uc3RhbnQoJ3JlZGlzU2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgncmVkaXNTZWN1cml0eUdyb3VwSWQnKSxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgcnVsZSBmb3IgU1NIIGFjY2Vzc1xuICAgIHJlZGlzU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMjIpLCAnU1NIIGZyb20gd2l0aGluIFZQQycpO1xuICAgIC8vIGFkZCBydWxlIGZvciBSZWRpcyBhY2Nlc3NcbiAgICByZWRpc1NlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDYzNzkpLCAnUmVkaXMgZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgTXlTUUwgc2VydmVyXG4gICAgY29uc3QgbXlzcWxTZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgnbXlzcWxTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdteXNxbFNlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgbXlzcWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggZnJvbSB3aXRoaW4gVlBDJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIE15U1FMIGFjY2Vzc1xuICAgIG15c3FsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMzMwNiksICdNeVNRTCBmcm9tIHdpdGhpbiBWUEMnKTtcblxuICAgIC8vIHNlY3VyaXR5IGdyb3VwIGZvciBOb3RpZmljYXRpb24gc2VydmljZVxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdub3RpZmljYXRpb25TZXJ2aWNlU2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgnbm90aWZpY2F0aW9uU2VydmljZVNlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgbm90aWZpY2F0aW9uU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMjIpLCAnU1NIIGZyb20gd2l0aGluIFZQQycpO1xuICAgIC8vIGFkZCBydWxlIGZvciBIVFRQIGFjY2Vzc1xuICAgIG5vdGlmaWNhdGlvblNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwODApLCAnSFRUUCBmcm9tIHdpdGhpbiBWUEMnKTtcblxuICAgIC8vIHNlY3VyaXR5IGdyb3VwIGZvciBMYXJhdmVsLWJhc2VkIHNlcnZpY2VzXG4gICAgY29uc3QgbGFyYXZlbFNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdsYXJhdmVsQmFzZWRTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdsYXJhdmVsQmFzZWRTZWN1cml0eUdyb3VwSWQnKSxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgcnVsZSBmb3IgU1NIIGFjY2Vzc1xuICAgIGxhcmF2ZWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggZnJvbSB3aXRoaW4gVlBDJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIEhUVFBcbiAgICBsYXJhdmVsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoODA4MCksICdIVFRQIGZyb20gd2l0aGluIFZQQycpO1xuICAgIC8vIGFkZCBydWxlIGZvciBwcmludCBXZWJTb2NrZXRcbiAgICBsYXJhdmVsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoODA5MCksICdQcmludCBXZWJTb2NrZXQgZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgSW5zdGFuY2UgQ29ubmVjdGlvbiBFbmRwb2ludFxuICAgIGNvbnN0IGljZVNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdlYzJJbnN0YW5jZUNvbm5lY3RFbmRwb2ludFNlY3VyaXR5R3JvdXBJZCcpLCB7XG4gICAgICB2cGMsXG4gICAgICBzZWN1cml0eUdyb3VwTmFtZTogZ2V0RW52Q29uc3RhbnQoJ2VjMkluc3RhbmNlQ29ubmVjdEVuZHBvaW50U2VjdXJpdHlHcm91cElkJyksXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBvdXRib3VuZCBTU0hcbiAgICBpY2VTZWNHcnAuYWRkRWdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDIyKSwgJ1NTSCB0byB3aXRoaW4gVlBDJyk7XG5cbiAgICBuZXcgY2RrLmF3c19lYzIuQ2ZuSW5zdGFuY2VDb25uZWN0RW5kcG9pbnQodGhpcywgZ2V0RW52Q29uc3RhbnQoJ2VjMkluc3RhbmNlQ29ubmVjdEVuZHBvaW50SWQnKSwge1xuICAgICAgc2VjdXJpdHlHcm91cElkczogW2ljZVNlY0dycC5zZWN1cml0eUdyb3VwSWRdLFxuICAgICAgc3VibmV0SWQ6IHZwYy5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZCxcbiAgICB9KTtcblxuICAgIC8vIEFQSSBnYXRld2F5J3MgZWxhc3RpYyBJUFxuICAgIGNvbnN0IGFwaUdhdGV3YXlFSVAgPSBuZXcgY2RrLmF3c19lYzIuQ2ZuRUlQKHRoaXMsIFN0cmluZyhnZXRDb25zdGFudCgnYXBpR2F0ZXdheUVJUElkJykpLCB7IGRvbWFpbjogJ3ZwYycgfSk7XG4gICAgY2RrLlRhZ3Mub2YoYXBpR2F0ZXdheUVJUCkuYWRkKCdOYW1lJywgU3RyaW5nKGdldENvbnN0YW50KCdhcGlHYXRld2F5RUlQSWQnKSkpO1xuXG4gICAgLy8gUG9ydGFsJ3MgZWxhc3RpYyBJUFxuICAgIGNvbnN0IHBvcnRhbEVJUCA9IG5ldyBjZGsuYXdzX2VjMi5DZm5FSVAodGhpcywgU3RyaW5nKGdldENvbnN0YW50KCdwb3J0YWxFSVBJZCcpKSwgeyBkb21haW46ICd2cGMnIH0pO1xuICAgIGNkay5UYWdzLm9mKHBvcnRhbEVJUCkuYWRkKCdOYW1lJywgU3RyaW5nKGdldENvbnN0YW50KCdwb3J0YWxFSVBJZCcpKSk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAndnBjIElEJywge1xuICAgICAgdmFsdWU6IHZwYy52cGNJZCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLW5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFnRTtBQUNoRSw2REFBc0Q7QUFDdEQscUVBQWtFO0FBRWxFLE1BQWEsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzVDLFVBQVUsRUFBRSxJQUFBLHlDQUFtQixHQUFFO1lBQ2pDLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlO1lBQy9ELGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDdkMsSUFBSSxFQUFFO2dCQUNKO29CQUNFLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hHLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsY0FBYyxFQUFFLEVBQUU7aUJBQ25CO2FBQ0Y7U0FDRixDQUFDLENB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QUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBQSx1QkFBVyxFQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFBLHVCQUFXLEVBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZFLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2S0Qsa0RBdUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZ2V0Q29uc3RhbnQsIGdldEVudkNvbnN0YW50IH0gZnJvbSAnLi4vdXRpbC9jb25zdGFudHMnO1xuaW1wb3J0IHsgYnVpbGRDb25maWcgfSBmcm9tICcuLi91dGlsL2luaXRCdWlsZENvbmZpZyc7XG5pbXBvcnQgeyBnZXRQdWJsaWNCdWNrZXROYW1lIH0gZnJvbSAnLi4vdXRpbC9nZXRQdWJsaWNCdWNrZXROYW1lJztcblxuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZU5ldHdvcmsgZXh0ZW5kcyBjZGsuU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGNkay5TdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAoIWJ1aWxkQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1aWxkQ29uZmlnIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGUgcHVibGljIHMzIGJ1Y2tldFxuICAgIG5ldyBjZGsuYXdzX3MzLkJ1Y2tldCh0aGlzLCAnUHVibGljUzNCdWNrZXQnLCB7XG4gICAgICBidWNrZXROYW1lOiBnZXRQdWJsaWNCdWNrZXROYW1lKCksXG4gICAgICBwdWJsaWNSZWFkQWNjZXNzOiB0cnVlLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IGNkay5hd3NfczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUNMU19PTkxZLFxuICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgY29yczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWxsb3dlZEhlYWRlcnM6IFsnKiddLFxuICAgICAgICAgIGFsbG93ZWRNZXRob2RzOiBbY2RrLmF3c19zMy5IdHRwTWV0aG9kcy5QT1NULCBjZGsuYXdzX3MzLkh0dHBNZXRob2RzLlBVVCwgY2RrLmF3c19zMy5IdHRwTWV0aG9kcy5ERUxFVEVdLFxuICAgICAgICAgIGFsbG93ZWRPcmlnaW5zOiBbJyonXSxcbiAgICAgICAgICBleHBvc2VkSGVhZGVyczogW10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdnBjID0gbmV3IGNkay5hd3NfZWMyLlZwYyh0aGlzLCBnZXRFbnZDb25zdGFudCgndnBjSWQnKSwge1xuICAgICAgdnBjTmFtZTogZ2V0RW52Q29uc3RhbnQoJ3ZwY0lkJyksXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXM6IHRydWUsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0OiB0cnVlLFxuICAgICAgbWF4QXpzOiAxLFxuICAgICAgbmF0R2F0ZXdheXM6IDEsXG4gICAgICAvLyBwcm92aXNpb24gYW5kIHVzZSBhbiBFQzIgaW5zdGFuY2UgYXMgTkFUIGdhdGV3YXkgaW4gbm9uLXByb2QgZW52aXJvbm1lbnRzXG4gICAgICAvLyBpbiBwcm9kLCB0aGUgZGVmYXVsdCBtb3JlIHNjYWxhYmxlL2V4cGVuc2l2ZSBOQVQgZ2F0ZXdheSB3aWxsIGJlIHVzZWRcbiAgICAgIC4uLihidWlsZENvbmZpZy5lbnZOYW1lICE9PSAncHJvZCcgJiYge1xuICAgICAgICBuYXRHYXRld2F5UHJvdmlkZXI6IG5ldyBjZGsuYXdzX2VjMi5OYXRJbnN0YW5jZVByb3ZpZGVyVjIoe1xuICAgICAgICAgIGluc3RhbmNlVHlwZTogbmV3IGNkay5hd3NfZWMyLkluc3RhbmNlVHlwZSgndDRnLm5hbm8nKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIHJlc3RyaWN0RGVmYXVsdFNlY3VyaXR5R3JvdXA6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyByb3V0ZSBTMyB0cmFmZmljIGZyb20gcHJpdmF0ZSBzdWJuZXRzIHRocm91Z2ggYSBnYXRld2F5IGVuZHBvaW50IGluc3RlYWQgb2YgdGhlIE5BVCBnYXRld2F5XG4gICAgdnBjLmFkZEdhdGV3YXlFbmRwb2ludCgnUzNHYXRld2F5RW5kcG9pbnQnLCB7XG4gICAgICBzZXJ2aWNlOiBjZGsuYXdzX2VjMi5HYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzLFxuICAgICAgc3VibmV0czogW3sgc3VibmV0VHlwZTogY2RrLmF3c19lYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH1dLFxuICAgIH0pO1xuXG4gICAgLy8gc2VjdXJpdHkgZ3JvdXAgZm9yIFBvcnRhbFxuICAgIGNvbnN0IHBvcnRhbFNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdwb3J0YWxTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdwb3J0YWxTZWN1cml0eUdyb3VwSWQnKSxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgcnVsZSBmb3IgSFRUUCBhY2Nlc3NcbiAgICBwb3J0YWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5hbnlJcHY0KCksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwKSwgJ0hUVFAgZnJvbSBhbnl3aGVyZScpO1xuICAgIC8vIGFkZCBydWxlIGZvciBIVFRQUyBhY2Nlc3NcbiAgICBwb3J0YWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5hbnlJcHY0KCksIGNkay5hd3NfZWMyLlBvcnQudGNwKDQ0MyksICdIVFRQUyBmcm9tIGFueXdoZXJlJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIFNTSCBhY2Nlc3NcbiAgICBwb3J0YWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgQVBJIEdhdGV3YXlcbiAgICBjb25zdCBhcGlHYXRld2F5U2VjR3JwID0gbmV3IGNkay5hd3NfZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgZ2V0RW52Q29uc3RhbnQoJ2FwaUdhdGV3YXlTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdhcGlHYXRld2F5U2VjdXJpdHlHcm91cElkJyksXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gYWRkIHJ1bGUgZm9yIEhUVFAgYWNjZXNzXG4gICAgYXBpR2F0ZXdheVNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmFueUlwdjQoKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoODApLCAnSFRUUCBmcm9tIGFueXdoZXJlJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIEhUVFBTIGFjY2Vzc1xuICAgIGFwaUdhdGV3YXlTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5hbnlJcHY0KCksIGNkay5hd3NfZWMyLlBvcnQudGNwKDQ0MyksICdIVFRQUyBmcm9tIGFueXdoZXJlJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIFNTSCBhY2Nlc3NcbiAgICBhcGlHYXRld2F5U2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuYW55SXB2NCgpLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggZnJvbSBhbnl3aGVyZScpO1xuICAgIC8vIGFkZCBydWxlIGZvciBpbnRlcm5hbCBjb21tdW5pY2F0aW9uXG4gICAgYXBpR2F0ZXdheVNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwODEpLCAnSW50ZXJuYWwgbWljcm9zZXJ2aWNlIGNvbW11bmljYXRpb24gZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgUmVkaXMgc2VydmVyXG4gICAgY29uc3QgcmVkaXNTZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgncmVkaXNTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdyZWRpc1NlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgcmVkaXNTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggZnJvbSB3aXRoaW4gVlBDJyk7XG4gICAgLy8gYWRkIHJ1bGUgZm9yIFJlZGlzIGFjY2Vzc1xuICAgIHJlZGlzU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoNjM3OSksICdSZWRpcyBmcm9tIHdpdGhpbiBWUEMnKTtcblxuICAgIC8vIHNlY3VyaXR5IGdyb3VwIGZvciBNeVNRTCBzZXJ2ZXJcbiAgICBjb25zdCBteXNxbFNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdteXNxbFNlY3VyaXR5R3JvdXBJZCcpLCB7XG4gICAgICB2cGMsXG4gICAgICBzZWN1cml0eUdyb3VwTmFtZTogZ2V0RW52Q29uc3RhbnQoJ215c3FsU2VjdXJpdHlHcm91cElkJyksXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gYWRkIHJ1bGUgZm9yIFNTSCBhY2Nlc3NcbiAgICBteXNxbFNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDIyKSwgJ1NTSCBmcm9tIHdpdGhpbiBWUEMnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgTXlTUUwgYWNjZXNzXG4gICAgbXlzcWxTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgzMzA2KSwgJ015U1FMIGZyb20gd2l0aGluIFZQQycpO1xuXG4gICAgLy8gc2VjdXJpdHkgZ3JvdXAgZm9yIENsaWNrSG91c2Ugc2VydmVyXG4gICAgY29uc3QgY2xpY2tob3VzZVNlY0dycCA9IG5ldyBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGdldEVudkNvbnN0YW50KCdjbGlja2hvdXNlU2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgnY2xpY2tob3VzZVNlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBydWxlIGZvciBTU0ggYWNjZXNzXG4gICAgY2xpY2tob3VzZVNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDIyKSwgJ1NTSCBmcm9tIHdpdGhpbiBWUEMnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgQ2xpY2tIb3VzZSBIVFRQIGFjY2Vzc1xuICAgIGNsaWNraG91c2VTZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg4MTIzKSwgJ0NsaWNrSG91c2UgSFRUUCBmcm9tIHdpdGhpbiBWUEMnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgQ2xpY2tIb3VzZSBuYXRpdmUgYWNjZXNzXG4gICAgY2xpY2tob3VzZVNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDkwMDApLCAnQ2xpY2tIb3VzZSBuYXRpdmUgZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgTm90aWZpY2F0aW9uIHNlcnZpY2VcbiAgICBjb25zdCBub3RpZmljYXRpb25TZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgnbm90aWZpY2F0aW9uU2VydmljZVNlY3VyaXR5R3JvdXBJZCcpLCB7XG4gICAgICB2cGMsXG4gICAgICBzZWN1cml0eUdyb3VwTmFtZTogZ2V0RW52Q29uc3RhbnQoJ25vdGlmaWNhdGlvblNlcnZpY2VTZWN1cml0eUdyb3VwSWQnKSxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgcnVsZSBmb3IgU1NIIGFjY2Vzc1xuICAgIG5vdGlmaWNhdGlvblNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDIyKSwgJ1NTSCBmcm9tIHdpdGhpbiBWUEMnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgSFRUUCBhY2Nlc3NcbiAgICBub3RpZmljYXRpb25TZWNHcnAuYWRkSW5ncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCg4MDgwKSwgJ0hUVFAgZnJvbSB3aXRoaW4gVlBDJyk7XG5cbiAgICAvLyBzZWN1cml0eSBncm91cCBmb3IgTGFyYXZlbC1iYXNlZCBzZXJ2aWNlc1xuICAgIGNvbnN0IGxhcmF2ZWxTZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgnbGFyYXZlbEJhc2VkU2VjdXJpdHlHcm91cElkJyksIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBnZXRFbnZDb25zdGFudCgnbGFyYXZlbEJhc2VkU2VjdXJpdHlHcm91cElkJyksXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gYWRkIHJ1bGUgZm9yIFNTSCBhY2Nlc3NcbiAgICBsYXJhdmVsU2VjR3JwLmFkZEluZ3Jlc3NSdWxlKGNkay5hd3NfZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY2RrLmF3c19lYzIuUG9ydC50Y3AoMjIpLCAnU1NIIGZyb20gd2l0aGluIFZQQycpO1xuICAgIC8vIGFkZCBydWxlIGZvciBIVFRQXG4gICAgbGFyYXZlbFNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwODApLCAnSFRUUCBmcm9tIHdpdGhpbiBWUEMnKTtcbiAgICAvLyBhZGQgcnVsZSBmb3IgcHJpbnQgV2ViU29ja2V0XG4gICAgbGFyYXZlbFNlY0dycC5hZGRJbmdyZXNzUnVsZShjZGsuYXdzX2VjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGNkay5hd3NfZWMyLlBvcnQudGNwKDgwOTApLCAnUHJpbnQgV2ViU29ja2V0IGZyb20gd2l0aGluIFZQQycpO1xuXG4gICAgLy8gc2VjdXJpdHkgZ3JvdXAgZm9yIEluc3RhbmNlIENvbm5lY3Rpb24gRW5kcG9pbnRcbiAgICBjb25zdCBpY2VTZWNHcnAgPSBuZXcgY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBnZXRFbnZDb25zdGFudCgnZWMySW5zdGFuY2VDb25uZWN0RW5kcG9pbnRTZWN1cml0eUdyb3VwSWQnKSwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cE5hbWU6IGdldEVudkNvbnN0YW50KCdlYzJJbnN0YW5jZUNvbm5lY3RFbmRwb2ludFNlY3VyaXR5R3JvdXBJZCcpLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgcnVsZSBmb3Igb3V0Ym91bmQgU1NIXG4gICAgaWNlU2VjR3JwLmFkZEVncmVzc1J1bGUoY2RrLmF3c19lYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjZGsuYXdzX2VjMi5Qb3J0LnRjcCgyMiksICdTU0ggdG8gd2l0aGluIFZQQycpO1xuXG4gICAgbmV3IGNkay5hd3NfZWMyLkNmbkluc3RhbmNlQ29ubmVjdEVuZHBvaW50KHRoaXMsIGdldEVudkNvbnN0YW50KCdlYzJJbnN0YW5jZUNvbm5lY3RFbmRwb2ludElkJyksIHtcbiAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IFtpY2VTZWNHcnAuc2VjdXJpdHlHcm91cElkXSxcbiAgICAgIHN1Ym5ldElkOiB2cGMucHJpdmF0ZVN1Ym5ldHNbMF0uc3VibmV0SWQsXG4gICAgfSk7XG5cbiAgICAvLyBBUEkgZ2F0ZXdheSdzIGVsYXN0aWMgSVBcbiAgICBjb25zdCBhcGlHYXRld2F5RUlQID0gbmV3IGNkay5hd3NfZWMyLkNmbkVJUCh0aGlzLCBTdHJpbmcoZ2V0Q29uc3RhbnQoJ2FwaUdhdGV3YXlFSVBJZCcpKSwgeyBkb21haW46ICd2cGMnIH0pO1xuICAgIGNkay5UYWdzLm9mKGFwaUdhdGV3YXlFSVApLmFkZCgnTmFtZScsIFN0cmluZyhnZXRDb25zdGFudCgnYXBpR2F0ZXdheUVJUElkJykpKTtcblxuICAgIC8vIFBvcnRhbCdzIGVsYXN0aWMgSVBcbiAgICBjb25zdCBwb3J0YWxFSVAgPSBuZXcgY2RrLmF3c19lYzIuQ2ZuRUlQKHRoaXMsIFN0cmluZyhnZXRDb25zdGFudCgncG9ydGFsRUlQSWQnKSksIHsgZG9tYWluOiAndnBjJyB9KTtcbiAgICBjZGsuVGFncy5vZihwb3J0YWxFSVApLmFkZCgnTmFtZScsIFN0cmluZyhnZXRDb25zdGFudCgncG9ydGFsRUlQSWQnKSkpO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ3ZwYyBJRCcsIHtcbiAgICAgIHZhbHVlOiB2cGMudnBjSWQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# install ClickHouse
|
|
4
|
+
sudo apt install lsb-release curl gpg -yq
|
|
5
|
+
curl -fsSL https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
|
|
6
|
+
sudo chmod 644 /usr/share/keyrings/clickhouse-keyring.gpg
|
|
7
|
+
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
|
|
8
|
+
sudo apt update -yq
|
|
9
|
+
sudo DEBIAN_FRONTEND=noninteractive apt install clickhouse-server clickhouse-client -yq
|
|
10
|
+
|
|
11
|
+
# the deb postinst may write a default-user password file when it cannot prompt;
|
|
12
|
+
# remove it so our users.d config (from SSM) is the one applied
|
|
13
|
+
sudo rm -f /etc/clickhouse-server/users.d/default-password.xml
|
|
14
|
+
|
|
15
|
+
# stop the auto-started server so we can drop in configs before first run
|
|
16
|
+
sudo systemctl stop clickhouse-server || true
|
|
17
|
+
|
|
18
|
+
# fetch credentials from SSM
|
|
19
|
+
clickhouse_root_password=$(aws ssm get-parameter --name ${ssm_global_parameter_path}CLICKHOUSE_ROOT_PASSWORD --with-decryption --query "Parameter.Value" --output text)
|
|
20
|
+
microservices_clickhouse_password=$(aws ssm get-parameter --name ${ssm_global_parameter_path}MICROSERVICES_CLICKHOUSE_PASSWORD --with-decryption --query "Parameter.Value" --output text)
|
|
21
|
+
|
|
22
|
+
# store passwords as sha256 hashes so password content can never break the users config XML
|
|
23
|
+
clickhouse_root_password_sha256=$(echo -n "$clickhouse_root_password" | sha256sum | awk '{print $1}')
|
|
24
|
+
microservices_clickhouse_password_sha256=$(echo -n "$microservices_clickhouse_password" | sha256sum | awk '{print $1}')
|
|
25
|
+
|
|
26
|
+
# compute tuning values from instance hardware (query-optimized)
|
|
27
|
+
total_mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
|
28
|
+
total_cpus=$(nproc)
|
|
29
|
+
|
|
30
|
+
# server memory budget: total RAM minus 1.5GB OS headroom, but never below 50% of RAM
|
|
31
|
+
server_max_memory_kb=$(( total_mem_kb - 1536 * 1024 ))
|
|
32
|
+
half_mem_kb=$(( total_mem_kb / 2 ))
|
|
33
|
+
if [ $server_max_memory_kb -lt $half_mem_kb ]; then
|
|
34
|
+
server_max_memory_kb=$half_mem_kb
|
|
35
|
+
fi
|
|
36
|
+
server_max_memory=$(( server_max_memory_kb * 1024 ))
|
|
37
|
+
|
|
38
|
+
# per-query memory: 70% of server budget; spill to disk right before the limit
|
|
39
|
+
query_max_memory=$(( server_max_memory * 70 / 100 ))
|
|
40
|
+
spill_max_memory=$(( query_max_memory * 80 / 100 ))
|
|
41
|
+
|
|
42
|
+
# mark cache: 10% of RAM for analytic scans, capped at 25% of the server budget so it can't starve queries on small instances (min 32MB)
|
|
43
|
+
mark_cache_kb=$(( total_mem_kb * 10 / 100 ))
|
|
44
|
+
mark_cache_cap_kb=$(( server_max_memory_kb * 25 / 100 ))
|
|
45
|
+
if [ $mark_cache_kb -gt $mark_cache_cap_kb ]; then
|
|
46
|
+
mark_cache_kb=$mark_cache_cap_kb
|
|
47
|
+
fi
|
|
48
|
+
min_mark_cache_kb=$(( 32 * 1024 ))
|
|
49
|
+
if [ $mark_cache_kb -lt $min_mark_cache_kb ]; then
|
|
50
|
+
mark_cache_kb=$min_mark_cache_kb
|
|
51
|
+
fi
|
|
52
|
+
mark_cache=$(( mark_cache_kb * 1024 ))
|
|
53
|
+
|
|
54
|
+
# concurrency and background pools scale with cores
|
|
55
|
+
max_concurrent_queries=$(( total_cpus * 4 ))
|
|
56
|
+
if [ $max_concurrent_queries -lt 8 ]; then
|
|
57
|
+
max_concurrent_queries=8
|
|
58
|
+
fi
|
|
59
|
+
background_pool_size=$total_cpus
|
|
60
|
+
background_schedule_pool_size=$(( total_cpus * 2 ))
|
|
61
|
+
if [ $background_schedule_pool_size -lt 16 ]; then
|
|
62
|
+
background_schedule_pool_size=16
|
|
63
|
+
fi
|
|
64
|
+
background_buffer_flush_schedule_pool_size=16
|
|
65
|
+
max_part_threads=$total_cpus
|
|
66
|
+
|
|
67
|
+
# background pool task capacity and mutation/optimize thresholds derived from cores
|
|
68
|
+
background_merges_mutations_concurrency_ratio=2
|
|
69
|
+
pool_tasks=$(( background_pool_size * background_merges_mutations_concurrency_ratio ))
|
|
70
|
+
pool_free_entries=$(( pool_tasks / 2 ))
|
|
71
|
+
if [ $pool_free_entries -lt 1 ]; then
|
|
72
|
+
pool_free_entries=1
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# merge pool sizing so merges use available disk instead of stalling on small volumes
|
|
76
|
+
disk_free_gb=$(df -B1 / | awk 'NR==2{print int($4/1024/1024/1024)}')
|
|
77
|
+
disk_bytes=$(( disk_free_gb * 1024 * 1024 * 1024 ))
|
|
78
|
+
merge_max_space=$(( disk_bytes * 90 / 100 ))
|
|
79
|
+
|
|
80
|
+
# allow connections from all interfaces (native + HTTP)
|
|
81
|
+
sudo tee /etc/clickhouse-server/config.d/network.xml >/dev/null <<EOF
|
|
82
|
+
<clickhouse>
|
|
83
|
+
<listen_host>0.0.0.0</listen_host>
|
|
84
|
+
</clickhouse>
|
|
85
|
+
EOF
|
|
86
|
+
|
|
87
|
+
# server-wide performance and scalability tuning
|
|
88
|
+
sudo tee /etc/clickhouse-server/config.d/performance.xml >/dev/null <<EOF
|
|
89
|
+
<clickhouse>
|
|
90
|
+
<max_server_memory_usage>${server_max_memory}</max_server_memory_usage>
|
|
91
|
+
<max_concurrent_queries>${max_concurrent_queries}</max_concurrent_queries>
|
|
92
|
+
<mark_cache_size>${mark_cache}</mark_cache_size>
|
|
93
|
+
<background_pool_size>${background_pool_size}</background_pool_size>
|
|
94
|
+
<background_merges_mutations_concurrency_ratio>${background_merges_mutations_concurrency_ratio}</background_merges_mutations_concurrency_ratio>
|
|
95
|
+
<background_schedule_pool_size>${background_schedule_pool_size}</background_schedule_pool_size>
|
|
96
|
+
<background_buffer_flush_schedule_pool_size>${background_buffer_flush_schedule_pool_size}</background_buffer_flush_schedule_pool_size>
|
|
97
|
+
<merge_tree>
|
|
98
|
+
<max_part_loading_threads>${max_part_threads}</max_part_loading_threads>
|
|
99
|
+
<max_part_removal_threads>${max_part_threads}</max_part_removal_threads>
|
|
100
|
+
<max_bytes_to_merge_at_min_space_in_pool>104857600</max_bytes_to_merge_at_min_space_in_pool>
|
|
101
|
+
<max_bytes_to_merge_at_max_space_in_pool>${merge_max_space}</max_bytes_to_merge_at_max_space_in_pool>
|
|
102
|
+
<max_delay_to_insert>5</max_delay_to_insert>
|
|
103
|
+
<number_of_free_entries_in_pool_to_execute_mutation>${pool_free_entries}</number_of_free_entries_in_pool_to_execute_mutation>
|
|
104
|
+
<number_of_free_entries_in_pool_to_lower_max_size_of_merge>${pool_free_entries}</number_of_free_entries_in_pool_to_lower_max_size_of_merge>
|
|
105
|
+
<number_of_free_entries_in_pool_to_execute_optimize_entire_partition>${pool_free_entries}</number_of_free_entries_in_pool_to_execute_optimize_entire_partition>
|
|
106
|
+
</merge_tree>
|
|
107
|
+
<query_log>
|
|
108
|
+
<database>system</database>
|
|
109
|
+
<table>query_log</table>
|
|
110
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
111
|
+
</query_log>
|
|
112
|
+
<query_thread_log>
|
|
113
|
+
<database>system</database>
|
|
114
|
+
<table>query_thread_log</table>
|
|
115
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
116
|
+
</query_thread_log>
|
|
117
|
+
<part_log>
|
|
118
|
+
<database>system</database>
|
|
119
|
+
<table>part_log</table>
|
|
120
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
121
|
+
</part_log>
|
|
122
|
+
<metric_log>
|
|
123
|
+
<database>system</database>
|
|
124
|
+
<table>metric_log</table>
|
|
125
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
126
|
+
</metric_log>
|
|
127
|
+
<text_log>
|
|
128
|
+
<database>system</database>
|
|
129
|
+
<table>text_log</table>
|
|
130
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
131
|
+
</text_log>
|
|
132
|
+
</clickhouse>
|
|
133
|
+
EOF
|
|
134
|
+
|
|
135
|
+
# query-optimized default profile: keep aggregations in RAM, spill only as safety net
|
|
136
|
+
sudo tee /etc/clickhouse-server/users.d/profiles.xml >/dev/null <<EOF
|
|
137
|
+
<clickhouse>
|
|
138
|
+
<profiles>
|
|
139
|
+
<default>
|
|
140
|
+
<max_memory_usage>${query_max_memory}</max_memory_usage>
|
|
141
|
+
<max_bytes_before_external_group_by>${spill_max_memory}</max_bytes_before_external_group_by>
|
|
142
|
+
<max_bytes_before_external_sort>${spill_max_memory}</max_bytes_before_external_sort>
|
|
143
|
+
<max_partitions_per_insert_block>500</max_partitions_per_insert_block>
|
|
144
|
+
<parts_to_delay_insert>300</parts_to_delay_insert>
|
|
145
|
+
<parts_to_throw_insert>600</parts_to_throw_insert>
|
|
146
|
+
</default>
|
|
147
|
+
</profiles>
|
|
148
|
+
</clickhouse>
|
|
149
|
+
EOF
|
|
150
|
+
|
|
151
|
+
# set the ClickHouse superuser (default) password.
|
|
152
|
+
# `replace="replace"` replaces the packaged `default` user (which ships with an empty
|
|
153
|
+
# `<password>` method) instead of merging children, so only our sha256 method survives
|
|
154
|
+
sudo tee /etc/clickhouse-server/users.d/default-user.xml >/dev/null <<EOF
|
|
155
|
+
<clickhouse>
|
|
156
|
+
<users>
|
|
157
|
+
<default replace="replace">
|
|
158
|
+
<password_sha256_hex>${clickhouse_root_password_sha256}</password_sha256_hex>
|
|
159
|
+
<profile>default</profile>
|
|
160
|
+
<quota>default</quota>
|
|
161
|
+
<networks>
|
|
162
|
+
<ip>::/0</ip>
|
|
163
|
+
</networks>
|
|
164
|
+
<access_management>1</access_management>
|
|
165
|
+
<named_collection_control>1</named_collection_control>
|
|
166
|
+
</default>
|
|
167
|
+
</users>
|
|
168
|
+
</clickhouse>
|
|
169
|
+
EOF
|
|
170
|
+
|
|
171
|
+
# create the microservices application user
|
|
172
|
+
sudo tee /etc/clickhouse-server/users.d/microservices.xml >/dev/null <<EOF
|
|
173
|
+
<clickhouse>
|
|
174
|
+
<users>
|
|
175
|
+
<microservices replace="replace">
|
|
176
|
+
<password_sha256_hex>${microservices_clickhouse_password_sha256}</password_sha256_hex>
|
|
177
|
+
<profile>default</profile>
|
|
178
|
+
<quota>default</quota>
|
|
179
|
+
<networks>
|
|
180
|
+
<ip>::/0</ip>
|
|
181
|
+
</networks>
|
|
182
|
+
</microservices>
|
|
183
|
+
</users>
|
|
184
|
+
</clickhouse>
|
|
185
|
+
EOF
|
|
186
|
+
|
|
187
|
+
# OS-level tuning: THP off (systemd unit so it survives reboot)
|
|
188
|
+
sudo tee /etc/systemd/system/disable-transparent-huge-pages.service >/dev/null <<EOF
|
|
189
|
+
[Unit]
|
|
190
|
+
Description=Disable Transparent Huge Pages (THP)
|
|
191
|
+
After=multi-user.target
|
|
192
|
+
|
|
193
|
+
[Service]
|
|
194
|
+
Type=oneshot
|
|
195
|
+
RemainAfterExit=yes
|
|
196
|
+
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'
|
|
197
|
+
|
|
198
|
+
[Install]
|
|
199
|
+
WantedBy=multi-user.target
|
|
200
|
+
EOF
|
|
201
|
+
sudo systemctl enable --now disable-transparent-huge-pages
|
|
202
|
+
|
|
203
|
+
# kernel tuning: avoid mmap exhaustion under heavy merges
|
|
204
|
+
sudo tee /etc/sysctl.d/99-clickhouse.conf >/dev/null <<EOF
|
|
205
|
+
vm.max_map_count = 262144
|
|
206
|
+
EOF
|
|
207
|
+
sudo sysctl --system
|
|
208
|
+
|
|
209
|
+
# raise open file limits for the clickhouse server
|
|
210
|
+
sudo mkdir -p /etc/systemd/system/clickhouse-server.service.d
|
|
211
|
+
sudo tee /etc/systemd/system/clickhouse-server.service.d/limits.conf >/dev/null <<EOF
|
|
212
|
+
[Service]
|
|
213
|
+
LimitNOFILE=1048576
|
|
214
|
+
LimitCORE=infinity
|
|
215
|
+
EOF
|
|
216
|
+
|
|
217
|
+
# apply configs and start
|
|
218
|
+
sudo systemctl daemon-reload
|
|
219
|
+
sudo systemctl enable clickhouse-server
|
|
220
|
+
|
|
221
|
+
# pre-flight: run the server in the foreground briefly so config errors surface in the deployment log
|
|
222
|
+
# exit 124 (killed by timeout) means it started fine; anything else is a startup failure.
|
|
223
|
+
# wrapping the run as an if-condition suppresses both `set -e` and the global ERR trap
|
|
224
|
+
# on the expected non-zero exit, so it can't abort the deployment
|
|
225
|
+
if sudo -u clickhouse timeout 5 clickhouse-server --config-file=/etc/clickhouse-server/config.xml; then
|
|
226
|
+
preflight_status=0
|
|
227
|
+
else
|
|
228
|
+
preflight_status=$?
|
|
229
|
+
fi
|
|
230
|
+
if [ $preflight_status -eq 124 ] || [ $preflight_status -eq 0 ]; then
|
|
231
|
+
echo "ClickHouse config pre-flight: server started successfully (exit $preflight_status)"
|
|
232
|
+
else
|
|
233
|
+
echo "ClickHouse config pre-flight FAILED (exit $preflight_status); dumping error log:"
|
|
234
|
+
fi
|
|
235
|
+
sudo tail -n 30 /var/log/clickhouse-server/clickhouse-server.err.log || true
|
|
236
|
+
|
|
237
|
+
sudo systemctl restart clickhouse-server
|
|
238
|
+
|
|
239
|
+
# verify the server is up and the credentials work
|
|
240
|
+
sudo clickhouse-client --password "$clickhouse_root_password" --query "SELECT version()"
|
|
@@ -18,5 +18,36 @@ sudo mysql -e "CREATE USER '$microservices_db_user'@'%' IDENTIFIED BY '$microser
|
|
|
18
18
|
sudo mysql -e "FLUSH PRIVILEGES;"
|
|
19
19
|
sudo sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf
|
|
20
20
|
|
|
21
|
+
# scale MariaDB for high concurrency (buffer pool = 70% of instance RAM)
|
|
22
|
+
total_mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
|
23
|
+
innodb_buffer_pool=$(( total_mem_kb / 1024 * 70 / 100 ))M
|
|
24
|
+
|
|
25
|
+
sudo tee /etc/mysql/mariadb.conf.d/99-scalability.cnf >/dev/null <<EOF
|
|
26
|
+
[mysqld]
|
|
27
|
+
# connections / concurrency
|
|
28
|
+
max_connections = 1000
|
|
29
|
+
thread_handling = pool-of-threads
|
|
30
|
+
back_log = 300
|
|
31
|
+
thread_cache_size = 64
|
|
32
|
+
wait_timeout = 600
|
|
33
|
+
interactive_timeout = 600
|
|
34
|
+
max_connect_errors = 1000000
|
|
35
|
+
max_allowed_packet = 128M
|
|
36
|
+
|
|
37
|
+
# innodb / storage (SSD/gp3)
|
|
38
|
+
innodb_buffer_pool_size = ${innodb_buffer_pool}
|
|
39
|
+
innodb_flush_method = O_DIRECT
|
|
40
|
+
innodb_flush_log_at_trx_commit = 1
|
|
41
|
+
innodb_io_capacity = 1000
|
|
42
|
+
innodb_io_capacity_max = 4000
|
|
43
|
+
innodb_flush_neighbors = 0
|
|
44
|
+
innodb_log_file_size = 512M
|
|
45
|
+
|
|
46
|
+
# open tables
|
|
47
|
+
table_open_cache = 4096
|
|
48
|
+
table_definition_cache = 2048
|
|
49
|
+
open_files_limit = 65535
|
|
50
|
+
EOF
|
|
51
|
+
|
|
21
52
|
# restart MySQL
|
|
22
53
|
sudo systemctl restart mariadb
|
package/dist/util/constants.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ declare const CONSTANTS: {
|
|
|
17
17
|
readonly laravelBasedSecurityGroupId: "Laravel-Based-SG";
|
|
18
18
|
readonly notificationServiceSecurityGroupId: "Notification-Service-SG";
|
|
19
19
|
readonly mysqlSecurityGroupId: "MySQL-SG";
|
|
20
|
+
readonly clickhouseSecurityGroupId: "ClickHouse-SG";
|
|
20
21
|
readonly ec2InstanceConnectEndpointId: "Instance-Connect-Endpoint";
|
|
21
22
|
readonly ec2InstanceConnectEndpointSecurityGroupId: "Instance-Connect-Endpoint-SG";
|
|
22
23
|
readonly defaultImageAmi: "ami-0e182bc1c32ba03c3";
|
|
@@ -31,7 +32,7 @@ declare const CONSTANTS: {
|
|
|
31
32
|
readonly gitBranches: RepoBranches;
|
|
32
33
|
};
|
|
33
34
|
};
|
|
34
|
-
export declare function getConstant(key: keyof typeof CONSTANTS): 8 | "gp3" | "Microservice-VPC" | "API-Gateway-SG" | "API-Gateway-EIP" | "Portal-SG" | "Portal-EIP" | "Redis-SG" | "Laravel-Based-SG" | "Notification-Service-SG" | "MySQL-SG" | "Instance-Connect-Endpoint" | "Instance-Connect-Endpoint-SG" | "ami-0e182bc1c32ba03c3" | "t4g.nano" | "isa" | "EC2-Instance-Base-Role" | "glicogh-healthcare-files" | {
|
|
35
|
+
export declare function getConstant(key: keyof typeof CONSTANTS): 8 | "gp3" | "Microservice-VPC" | "API-Gateway-SG" | "API-Gateway-EIP" | "Portal-SG" | "Portal-EIP" | "Redis-SG" | "Laravel-Based-SG" | "Notification-Service-SG" | "MySQL-SG" | "ClickHouse-SG" | "Instance-Connect-Endpoint" | "Instance-Connect-Endpoint-SG" | "ami-0e182bc1c32ba03c3" | "t4g.nano" | "isa" | "EC2-Instance-Base-Role" | "glicogh-healthcare-files" | {
|
|
35
36
|
readonly prod: "api.insurecorehub.com";
|
|
36
37
|
readonly uat: "api.uat.insurecorehub.com";
|
|
37
38
|
} | {
|
package/dist/util/constants.js
CHANGED
|
@@ -35,6 +35,7 @@ const CONSTANTS = {
|
|
|
35
35
|
laravelBasedSecurityGroupId: 'Laravel-Based-SG',
|
|
36
36
|
notificationServiceSecurityGroupId: 'Notification-Service-SG',
|
|
37
37
|
mysqlSecurityGroupId: 'MySQL-SG',
|
|
38
|
+
clickhouseSecurityGroupId: 'ClickHouse-SG',
|
|
38
39
|
ec2InstanceConnectEndpointId: 'Instance-Connect-Endpoint',
|
|
39
40
|
ec2InstanceConnectEndpointSecurityGroupId: 'Instance-Connect-Endpoint-SG',
|
|
40
41
|
defaultImageAmi: 'ami-0e182bc1c32ba03c3', // ARM based
|
|
@@ -55,4 +56,4 @@ function getConstant(key) {
|
|
|
55
56
|
function getEnvConstant(key) {
|
|
56
57
|
return `${getConstant(key)}-${initBuildConfig_1.buildConfig?.envName}`;
|
|
57
58
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXRpbC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxREEsa0NBRUM7QUFFRCx3Q0FFQztBQTFERCx1REFBZ0Q7QUFFaEQsTUFBTSxTQUFTLEdBQWE7SUFDMUIsT0FBTyxFQUFFLDZDQUE2QztJQUN0RCxJQUFJLEVBQUUsMENBQTBDO0lBQ2hELE1BQU0sRUFBRSw0Q0FBNEM7SUFDcEQsTUFBTSxFQUFFLDRDQUE0QztJQUNwRCxTQUFTLEVBQUUsK0NBQStDO0lBQzFELFlBQVksRUFBRSxrREFBa0Q7SUFDaEUsYUFBYSxFQUFFLG9DQUFvQztJQUNuRCxNQUFNLEVBQUUsK0JBQStCO0NBQ3hDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBaUI7SUFDakMsR0FBRyxFQUFFLFFBQVE7SUFDYixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUc7SUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6Qix5QkFBeUIsRUFBRSxnQkFBZ0I7SUFDM0MsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxvQkFBb0IsRUFBRTtRQUNwQixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLEdBQUcsRUFBRSwyQkFBMkI7S0FDakM7SUFDRCxxQkFBcUIsRUFBRSxXQUFXO0lBQ2xDLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGdCQUFnQixFQUFFO1FBQ2hCLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsR0FBRyxFQUFFLDhCQUE4QjtLQUNwQztJQUNELG9CQUFvQixFQUFFLFVBQVU7SUFDaEMsMkJBQTJCLEVBQUUsa0JBQWtCO0lBQy9DLGtDQUFrQyxFQUFFLHlCQUF5QjtJQUM3RCxvQkFBb0IsRUFBRSxVQUFVO0lBQ2hDLHlCQUF5QixFQUFFLGVBQWU7SUFDMUMsNEJBQTRCLEVBQUUsMkJBQTJCO0lBQ3pELHlDQUF5QyxFQUFFLDhCQUE4QjtJQUN6RSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsWUFBWTtJQUN0RCxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUM3QyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsWUFBWSxFQUFFLHdCQUF3QjtJQUN0QyxnQkFBZ0IsRUFBRSwwQkFBMEI7SUFDNUMsVUFBVSxFQUFFO1FBQ1YsZUFBZSxFQUFFLFNBQVM7UUFDMUIsV0FBVyxFQUFFLFlBQVk7S0FDMUI7Q0FDTyxDQUFDO0FBRVgsU0FBZ0IsV0FBVyxDQUFDLEdBQTJCO0lBQ3JELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBMkI7SUFDeEQsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSw2QkFBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvQnJhbmNoZXMsIFJlcG9VcmxzIH0gZnJvbSAnLi4vQHR5cGVzL2NvbW1vbic7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4vaW5pdEJ1aWxkQ29uZmlnJztcblxuY29uc3QgcmVwb1BhdGhzOiBSZXBvVXJscyA9IHtcbiAgYWNjb3VudDogJ2dsaWNvZ2gvaGVhbHRoY2FyZS1taWNyb3NlcnZpY2UtYWNjb3VudC5naXQnLFxuICBwbGFuOiAnZ2xpY29naC9oZWFsdGhjYXJlLW1pY3Jvc2VydmljZS1wbGFuLmdpdCcsXG4gIHBvbGljeTogJ2dsaWNvZ2gvaGVhbHRoY2FyZS1taWNyb3NlcnZpY2UtcG9saWN5LmdpdCcsXG4gIGNsYWltczogJ2dsaWNvZ2gvaGVhbHRoY2FyZS1taWNyb3NlcnZpY2UtY2xhaW1zLmdpdCcsXG4gIHJlcG9ydGluZzogJ2dsaWNvZ2gvaGVhbHRoY2FyZS1taWNyb3NlcnZpY2UtcmVwb3J0aW5nLmdpdCcsXG4gIG5vdGlmaWNhdGlvbjogJ2dsaWNvZ2gvaGVhbHRoY2FyZS1taWNyb3NlcnZpY2Utbm90aWZpY2F0aW9uLmdpdCcsXG4gICdhcGktZ2F0ZXdheSc6ICdnbGljb2doL2hlYWx0aGNhcmUtYXBpLWdhdGV3YXkuZ2l0JyxcbiAgcG9ydGFsOiAnZ2xpY29naC9oZWFsdGhjYXJlLXBvcnRhbC5naXQnLFxufTtcblxuY29uc3QgcmVwb0JyYW5jaGVzOiBSZXBvQnJhbmNoZXMgPSB7XG4gIHVhdDogJ21hc3RlcicsXG4gIHByb2Q6ICdyZWxlYXNlJyxcbn07XG5cbmNvbnN0IENPTlNUQU5UUyA9IHtcbiAgdnBjSWQ6ICdNaWNyb3NlcnZpY2UtVlBDJyxcbiAgYXBpR2F0ZXdheVNlY3VyaXR5R3JvdXBJZDogJ0FQSS1HYXRld2F5LVNHJyxcbiAgYXBpR2F0ZXdheUVJUElkOiAnQVBJLUdhdGV3YXktRUlQJyxcbiAgYXBpR2F0ZXdheURvbWFpbk5hbWU6IHtcbiAgICBwcm9kOiAnYXBpLmluc3VyZWNvcmVodWIuY29tJyxcbiAgICB1YXQ6ICdhcGkudWF0Lmluc3VyZWNvcmVodWIuY29tJyxcbiAgfSxcbiAgcG9ydGFsU2VjdXJpdHlHcm91cElkOiAnUG9ydGFsLVNHJyxcbiAgcG9ydGFsRUlQSWQ6ICdQb3J0YWwtRUlQJyxcbiAgcG9ydGFsRG9tYWluTmFtZToge1xuICAgIHByb2Q6ICdwb3J0YWwuaW5zdXJlY29yZWh1Yi5jb20nLFxuICAgIHVhdDogJ3BvcnRhbC51YXQuaW5zdXJlY29yZWh1Yi5jb20nLFxuICB9LFxuICByZWRpc1NlY3VyaXR5R3JvdXBJZDogJ1JlZGlzLVNHJyxcbiAgbGFyYXZlbEJhc2VkU2VjdXJpdHlHcm91cElkOiAnTGFyYXZlbC1CYXNlZC1TRycsXG4gIG5vdGlmaWNhdGlvblNlcnZpY2VTZWN1cml0eUdyb3VwSWQ6ICdOb3RpZmljYXRpb24tU2VydmljZS1TRycsXG4gIG15c3FsU2VjdXJpdHlHcm91cElkOiAnTXlTUUwtU0cnLFxuICBjbGlja2hvdXNlU2VjdXJpdHlHcm91cElkOiAnQ2xpY2tIb3VzZS1TRycsXG4gIGVjMkluc3RhbmNlQ29ubmVjdEVuZHBvaW50SWQ6ICdJbnN0YW5jZS1Db25uZWN0LUVuZHBvaW50JyxcbiAgZWMySW5zdGFuY2VDb25uZWN0RW5kcG9pbnRTZWN1cml0eUdyb3VwSWQ6ICdJbnN0YW5jZS1Db25uZWN0LUVuZHBvaW50LVNHJyxcbiAgZGVmYXVsdEltYWdlQW1pOiAnYW1pLTBlMTgyYmMxYzMyYmEwM2MzJywgLy8gQVJNIGJhc2VkXG4gIGRlZmF1bHRJbnN0YW5jZVNpemU6ICd0NGcubmFubycsIC8vIEFSTSBiYXNlZFxuICBkZWZhdWx0U3RvcmFnZVNpemU6IDgsXG4gIGRlZmF1bHRTdG9yYWdlVHlwZTogJ2dwMycsXG4gIGtleVBhaXJOYW1lOiAnaXNhJyxcbiAgYmFzZVJvbGVOYW1lOiAnRUMyLUluc3RhbmNlLUJhc2UtUm9sZScsXG4gIHB1YmxpY0J1Y2tldE5hbWU6ICdnbGljb2doLWhlYWx0aGNhcmUtZmlsZXMnLFxuICBkZXBsb3ltZW50OiB7XG4gICAgZ2l0aHViUmVwb1BhdGhzOiByZXBvUGF0aHMsXG4gICAgZ2l0QnJhbmNoZXM6IHJlcG9CcmFuY2hlcyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zdGFudChrZXk6IGtleW9mIHR5cGVvZiBDT05TVEFOVFMpIHtcbiAgcmV0dXJuIENPTlNUQU5UU1trZXldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52Q29uc3RhbnQoa2V5OiBrZXlvZiB0eXBlb2YgQ09OU1RBTlRTKSB7XG4gIHJldHVybiBgJHtnZXRDb25zdGFudChrZXkpfS0ke2J1aWxkQ29uZmlnPy5lbnZOYW1lfWA7XG59XG4iXX0=
|
|
@@ -15,6 +15,7 @@ const microservice_mysql_1 = require("../lib/microservice-mysql");
|
|
|
15
15
|
const microservice_portal_1 = require("../lib/microservice-portal");
|
|
16
16
|
const microservice_infra_auth_1 = require("../lib/microservice-infra-auth");
|
|
17
17
|
const microservice_migration_1 = require("../lib/microservice-migration");
|
|
18
|
+
const microservice_clickhouse_1 = require("../lib/microservice-clickhouse");
|
|
18
19
|
function initCdkStack() {
|
|
19
20
|
const app = new cdk.App();
|
|
20
21
|
const buildConfig = (0, initBuildConfig_1.initBuildConfig)(app);
|
|
@@ -65,9 +66,12 @@ function initCdkStack() {
|
|
|
65
66
|
new microservice_mysql_1.MicroserviceMySql(app, `MicroserviceMySQL${buildConfig.formattedBuildId ? '-' + buildConfig.formattedBuildId : ''}`, {
|
|
66
67
|
env: buildConfig.aws,
|
|
67
68
|
});
|
|
69
|
+
new microservice_clickhouse_1.MicroserviceClickHouse(app, `MicroserviceClickHouse${buildConfig.formattedBuildId ? '-' + buildConfig.formattedBuildId : ''}`, {
|
|
70
|
+
env: buildConfig.aws,
|
|
71
|
+
});
|
|
68
72
|
new microservice_migration_1.MicroserviceMigration(app, 'MicroserviceMigration', {
|
|
69
73
|
env: buildConfig.aws,
|
|
70
74
|
});
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdENka1N0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXRpbC9pbml0Q2RrU3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsb0NBeURDO0FBekVELHVDQUFxQztBQUNyQyxtQ0FBbUM7QUFDbkMsdURBQW9EO0FBQ3BELDJDQUF1RDtBQUN2RCxrRkFBNkU7QUFDN0Usc0VBQWtFO0FBQ2xFLDhFQUF5RTtBQUN6RSxrRUFBOEQ7QUFDOUQsZ0dBQTJGO0FBQzNGLHFEQUFrRDtBQUNsRCxrRUFBOEQ7QUFDOUQsb0VBQWdFO0FBQ2hFLDRFQUF1RTtBQUN2RSwwRUFBc0U7QUFDdEUsNEVBQXdFO0FBRXhFLFNBQWdCLFlBQVk7SUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBQSxpQ0FBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLElBQUEscUJBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQztJQUVmLElBQUksSUFBQSwrQkFBYyxHQUFFLEVBQUUsQ0FBQztRQUNyQixJQUFBLHlCQUFhLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxxREFBd0IsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLFdBQVcsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDdkgsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO1lBQ3BCOzs2RUFFaUU7WUFFakU7K0VBQ21FO1lBQ25FLDZGQUE2RjtZQUU3Rjs4Q0FDa0M7WUFDbEMseURBQXlEO1lBRXpELDhGQUE4RjtTQUMvRixDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3RELElBQUEseUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLG1FQUErQixDQUFDLEdBQUcsRUFBRSxtQ0FBbUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDMUcsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUFJLFdBQVcsQ0FBQyxXQUFXLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDckQsSUFBSSxpREFBc0IsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDakksR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUFJLFdBQVcsQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBQSx5QkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksd0NBQWtCLENBQUMsR0FBRyxFQUFFLHFCQUFxQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3pILEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksMENBQW1CLENBQUMsR0FBRyxFQUFFLHFCQUFxQixFQUFFO1lBQ2xELEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRztTQUNyQixDQUFDLENBQUM7UUFDSCxJQUFJLCtDQUFxQixDQUFDLEdBQUcsRUFBRSx1QkFBdUIsRUFBRTtZQUN0RCxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUc7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxzQ0FBaUIsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDdkgsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksc0NBQWlCLENBQUMsR0FBRyxFQUFFLG9CQUFvQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3ZILEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRztTQUNyQixDQUFDLENBQUM7UUFDSCxJQUFJLGdEQUFzQixDQUFDLEdBQUcsRUFBRSx5QkFBeUIsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNqSSxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUc7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSw4Q0FBcUIsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLEVBQUU7WUFDdEQsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGluaXRCdWlsZENvbmZpZyB9IGZyb20gJy4vaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGFkZFJlcG9Ub1RhZ3MsIGFwcGx5VGFncyB9IGZyb20gJy4vYXBwbHlUYWdzJztcbmltcG9ydCB7IE1pY3Jvc2VydmljZUxhcmF2ZWxCYXNlZCB9IGZyb20gJy4uL2xpYi9taWNyb3NlcnZpY2UtbGFyYXZlbC1iYXNlZCc7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VOZXR3b3JrIH0gZnJvbSAnLi4vbGliL21pY3Jvc2VydmljZS1uZXR3b3JrJztcbmltcG9ydCB7IE1pY3Jvc2VydmljZUFwaUdhdGV3YXkgfSBmcm9tICcuLi9saWIvbWljcm9zZXJ2aWNlLWFwaS1nYXRld2F5JztcbmltcG9ydCB7IE1pY3Jvc2VydmljZVJlZGlzIH0gZnJvbSAnLi4vbGliL21pY3Jvc2VydmljZS1yZWRpcyc7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbGliL21pY3Jvc2VydmljZS1ub3RpZmljYXRpb24tc2VydmljZSc7XG5pbXBvcnQgeyBpc0xhcmF2ZWxCYXNlZCB9IGZyb20gJy4vaXNMYXJhdmVsQmFzZWQnO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlTXlTcWwgfSBmcm9tICcuLi9saWIvbWljcm9zZXJ2aWNlLW15c3FsJztcbmltcG9ydCB7IE1pY3Jvc2VydmljZVBvcnRhbCB9IGZyb20gJy4uL2xpYi9taWNyb3NlcnZpY2UtcG9ydGFsJztcbmltcG9ydCB7IE1pY3Jvc2VydmljZUluZnJhQXV0aCB9IGZyb20gJy4uL2xpYi9taWNyb3NlcnZpY2UtaW5mcmEtYXV0aCc7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VNaWdyYXRpb24gfSBmcm9tICcuLi9saWIvbWljcm9zZXJ2aWNlLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VDbGlja0hvdXNlIH0gZnJvbSAnLi4vbGliL21pY3Jvc2VydmljZS1jbGlja2hvdXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRDZGtTdGFjaygpIHtcbiAgY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcbiAgY29uc3QgYnVpbGRDb25maWcgPSBpbml0QnVpbGRDb25maWcoYXBwKTtcbiAgYXBwbHlUYWdzKGFwcCk7XG5cbiAgaWYgKGlzTGFyYXZlbEJhc2VkKCkpIHtcbiAgICBhZGRSZXBvVG9UYWdzKGFwcCk7XG4gICAgbmV3IE1pY3Jvc2VydmljZUxhcmF2ZWxCYXNlZChhcHAsIGBNaWNyb3NlcnZpY2VMYXJhdmVsQmFzZWQtJHtidWlsZENvbmZpZy5zZXJ2aWNlTmFtZX0tJHtidWlsZENvbmZpZy5mb3JtYXR0ZWRCdWlsZElkfWAsIHtcbiAgICAgIGVudjogYnVpbGRDb25maWcuYXdzLFxuICAgICAgLyogSWYgeW91IGRvbid0IHNwZWNpZnkgJ2VudicsIHRoaXMgc3RhY2sgd2lsbCBiZSBlbnZpcm9ubWVudC1hZ25vc3RpYy5cbiAgICAgICAqIEFjY291bnQvUmVnaW9uLWRlcGVuZGVudCBmZWF0dXJlcyBhbmQgY29udGV4dCBsb29rdXBzIHdpbGwgbm90IHdvcmssXG4gICAgICAgKiBidXQgYSBzaW5nbGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUgY2FuIGJlIGRlcGxveWVkIGFueXdoZXJlLiAqL1xuXG4gICAgICAvKiBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBzcGVjaWFsaXplIHRoaXMgc3RhY2sgZm9yIHRoZSBBV1MgQWNjb3VudFxuICAgICAgICogYW5kIFJlZ2lvbiB0aGF0IGFyZSBpbXBsaWVkIGJ5IHRoZSBjdXJyZW50IENMSSBjb25maWd1cmF0aW9uLiAqL1xuICAgICAgLy8gZW52OiB7IGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIH0sXG5cbiAgICAgIC8qIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSBrbm93IGV4YWN0bHkgd2hhdCBBY2NvdW50IGFuZCBSZWdpb24geW91XG4gICAgICAgKiB3YW50IHRvIGRlcGxveSB0aGUgc3RhY2sgdG8uICovXG4gICAgICAvLyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcblxuICAgICAgLyogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2xhdGVzdC9ndWlkZS9lbnZpcm9ubWVudHMuaHRtbCAqL1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGJ1aWxkQ29uZmlnLnNlcnZpY2VOYW1lID09PSAnbm90aWZpY2F0aW9uJykge1xuICAgIGFkZFJlcG9Ub1RhZ3MoYXBwKTtcbiAgICBuZXcgTWljcm9zZXJ2aWNlTm90aWZpY2F0aW9uU2VydmljZShhcHAsIGBNaWNyb3NlcnZpY2VOb3RpZmljYXRpb25TZXJ2aWNlLSR7YnVpbGRDb25maWcuZm9ybWF0dGVkQnVpbGRJZH1gLCB7XG4gICAgICBlbnY6IGJ1aWxkQ29uZmlnLmF3cyxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChidWlsZENvbmZpZy5zZXJ2aWNlTmFtZSA9PT0gJ2FwaS1nYXRld2F5Jykge1xuICAgIG5ldyBNaWNyb3NlcnZpY2VBcGlHYXRld2F5KGFwcCwgYE1pY3Jvc2VydmljZUFwaUdhdGV3YXkke2J1aWxkQ29uZmlnLmZvcm1hdHRlZEJ1aWxkSWQgPyAnLScgKyBidWlsZENvbmZpZy5mb3JtYXR0ZWRCdWlsZElkIDogJyd9YCwge1xuICAgICAgZW52OiBidWlsZENvbmZpZy5hd3MsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoYnVpbGRDb25maWcuc2VydmljZU5hbWUgPT09ICdwb3J0YWwnKSB7XG4gICAgYWRkUmVwb1RvVGFncyhhcHApO1xuICAgIG5ldyBNaWNyb3NlcnZpY2VQb3J0YWwoYXBwLCBgTWljcm9zZXJ2aWNlUG9ydGFsJHtidWlsZENvbmZpZy5mb3JtYXR0ZWRCdWlsZElkID8gJy0nICsgYnVpbGRDb25maWcuZm9ybWF0dGVkQnVpbGRJZCA6ICcnfWAsIHtcbiAgICAgIGVudjogYnVpbGRDb25maWcuYXdzLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG5ldyBNaWNyb3NlcnZpY2VOZXR3b3JrKGFwcCwgJ01pY3Jvc2VydmljZU5ldHdvcmsnLCB7XG4gICAgICBlbnY6IGJ1aWxkQ29uZmlnLmF3cyxcbiAgICB9KTtcbiAgICBuZXcgTWljcm9zZXJ2aWNlSW5mcmFBdXRoKGFwcCwgJ01pY3Jvc2VydmljZUluZnJhQXV0aCcsIHtcbiAgICAgIGVudjogYnVpbGRDb25maWcuYXdzLFxuICAgIH0pO1xuICAgIG5ldyBNaWNyb3NlcnZpY2VSZWRpcyhhcHAsIGBNaWNyb3NlcnZpY2VSZWRpcyR7YnVpbGRDb25maWcuZm9ybWF0dGVkQnVpbGRJZCA/ICctJyArIGJ1aWxkQ29uZmlnLmZvcm1hdHRlZEJ1aWxkSWQgOiAnJ31gLCB7XG4gICAgICBlbnY6IGJ1aWxkQ29uZmlnLmF3cyxcbiAgICB9KTtcbiAgICBuZXcgTWljcm9zZXJ2aWNlTXlTcWwoYXBwLCBgTWljcm9zZXJ2aWNlTXlTUUwke2J1aWxkQ29uZmlnLmZvcm1hdHRlZEJ1aWxkSWQgPyAnLScgKyBidWlsZENvbmZpZy5mb3JtYXR0ZWRCdWlsZElkIDogJyd9YCwge1xuICAgICAgZW52OiBidWlsZENvbmZpZy5hd3MsXG4gICAgfSk7XG4gICAgbmV3IE1pY3Jvc2VydmljZUNsaWNrSG91c2UoYXBwLCBgTWljcm9zZXJ2aWNlQ2xpY2tIb3VzZSR7YnVpbGRDb25maWcuZm9ybWF0dGVkQnVpbGRJZCA/ICctJyArIGJ1aWxkQ29uZmlnLmZvcm1hdHRlZEJ1aWxkSWQgOiAnJ31gLCB7XG4gICAgICBlbnY6IGJ1aWxkQ29uZmlnLmF3cyxcbiAgICB9KTtcbiAgICBuZXcgTWljcm9zZXJ2aWNlTWlncmF0aW9uKGFwcCwgJ01pY3Jvc2VydmljZU1pZ3JhdGlvbicsIHtcbiAgICAgIGVudjogYnVpbGRDb25maWcuYXdzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/dist/util/migration.js
CHANGED
|
@@ -36,7 +36,6 @@ function getLambdaEnvs(scope) {
|
|
|
36
36
|
...lookupSsmParameters(scope, ssmStringVars),
|
|
37
37
|
...lookupSsmParameters(scope, ssmSecureVars, true),
|
|
38
38
|
ENV: String(initBuildConfig_1.buildConfig?.envName),
|
|
39
|
-
DB_DATABASE: 'migration',
|
|
40
39
|
};
|
|
41
40
|
return vars;
|
|
42
41
|
}
|
|
@@ -59,4 +58,4 @@ function lookupSsmParameters(scope, keys, secure = false) {
|
|
|
59
58
|
return acc;
|
|
60
59
|
}, {});
|
|
61
60
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXRpbC9taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxzQ0F1Q0M7QUE3Q0QsNkNBQTZDO0FBQzdDLHVEQUFnRDtBQUtoRCxTQUFnQixhQUFhLENBQUMsS0FBWTtJQUN4QyxNQUFNLGFBQWEsR0FBYTtRQUM5QixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBRW5CLDRCQUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsMkJBQTJCO1FBQzNCLDJCQUEyQjtRQUUzQixnQ0FBZ0M7UUFDaEMsOEJBQThCO1FBQzlCLG1DQUFtQztRQUNuQyx1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLDBDQUEwQztRQUMxQywwQ0FBMEM7UUFDMUMsa0NBQWtDO1FBQ2xDLGtDQUFrQztRQUNsQyxzQ0FBc0M7UUFDdEMsOENBQThDO1FBQzlDLHdDQUF3QztRQUN4Qyw4QkFBOEI7UUFDOUIsNEJBQTRCO1FBQzVCLDhCQUE4QjtRQUM5QiwrQkFBK0I7S0FDaEMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFhLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUV0RixNQUFNLElBQUksR0FBRztRQUNYLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztRQUM1QyxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDO1FBQ2xELEdBQUcsRUFBRSxNQUFNLENBQUMsNkJBQVcsRUFBRSxPQUFPLENBQUM7S0FDbEMsQ0FBQztJQUNGLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBWSxFQUFFLElBQWMsRUFBRSxNQUFNLEdBQUcsS0FBSztJQUN2RSxNQUFNLEdBQUcsR0FBRyw2QkFBVyxFQUFFLE9BQU8sQ0FBQztJQUNqQyxNQUFNLFNBQVMsR0FBcUMsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsa0JBQWtCLFNBQVMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUM5RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FDckIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDWixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcscUJBQU8sQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3NzbSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4vaW5pdEJ1aWxkQ29uZmlnJztcblxudHlwZSBTc21OYW1lc3BhY2UgPSAnZ2xvYmFsJyB8ICdtaWdyYXRpb24nIHwgJ3BvcnRhbCc7XG50eXBlIFNzbUtleSA9IGAke1NzbU5hbWVzcGFjZX06JHtzdHJpbmd9YDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbWJkYUVudnMoc2NvcGU6IFN0YWNrKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IHNzbVN0cmluZ1ZhcnM6IFNzbUtleVtdID0gW1xuICAgICdnbG9iYWw6REJfSE9TVCcsXG4gICAgJ2dsb2JhbDpEQl9VU0VSTkFNRScsXG4gICAgJ2dsb2JhbDpEQl9QT1JUJyxcbiAgICAnZ2xvYmFsOlJFRElTX0hPU1QnLFxuICAgICdnbG9iYWw6UkVESVNfUE9SVCcsXG5cbiAgICAncG9ydGFsOkFDQ09VTlRfU0VSVklDRV9VUkwnLFxuICAgICdwb3J0YWw6UExBTl9TRVJWSUNFX1VSTCcsXG4gICAgJ3BvcnRhbDpQT0xJQ1lfU0VSVklDRV9VUkwnLFxuICAgICdwb3J0YWw6Q0xBSU1TX1NFUlZJQ0VfVVJMJyxcblxuICAgICdtaWdyYXRpb246TUlHUkFUSU9OX0ZFVENIX1NJWkUnLFxuICAgICdtaWdyYXRpb246REVGQVVMVF9JTlNVUkVSX0lEJyxcbiAgICAnbWlncmF0aW9uOkRFRkFVTFRfSU5TVVJFUl9ST0xFX0lEJyxcbiAgICAnbWlncmF0aW9uOkRCX0RBVEFCQVNFJyxcbiAgICAnbWlncmF0aW9uOkRCX1BPT0xfTUFYJyxcbiAgICAnbWlncmF0aW9uOk1JR1JBVElPTl9QUk9EVUNFUl9DT05DVVJSRU5DWScsXG4gICAgJ21pZ3JhdGlvbjpNSUdSQVRJT05fQ09OU1VNRVJfQ09OQ1VSUkVOQ1knLFxuICAgICdtaWdyYXRpb246TUlHUkFUSU9OX1FVRVVFX1NIQVJEUycsXG4gICAgJ21pZ3JhdGlvbjpCRU5FRklDSUFSWV9QSE9UT1NfVVJMJyxcbiAgICAnbWlncmF0aW9uOlRQQV9CRU5FRklDSUFSWV9QSE9UT1NfVVJMJyxcbiAgICAnbWlncmF0aW9uOkVYUElSRURfUE9MSUNZX0dSQUNFX1BFUklPRF9NT05USFMnLFxuICAgICdtaWdyYXRpb246Q0xBSU1TX0JFTkVGSVRfVFlQRV9GQUxMQkFDSycsXG4gICAgJ21pZ3JhdGlvbjpDTEFJTVNfU1RBVFVTX0hFTEQnLFxuICAgICdtaWdyYXRpb246SFRUUF9NQVhfU09DS0VUUycsXG4gICAgJ21pZ3JhdGlvbjpSRVFVRVNUX1RJTUVPVVRfTVMnLFxuICAgICdtaWdyYXRpb246UkVRVUVTVF9NQVhfUkVUUklFUycsXG4gIF07XG5cbiAgY29uc3Qgc3NtU2VjdXJlVmFyczogU3NtS2V5W10gPSBbJ2dsb2JhbDpEQl9QQVNTV09SRCcsICdtaWdyYXRpb246TUlHUkFUSU9OX0FQSV9LRVknXTtcblxuICBjb25zdCB2YXJzID0ge1xuICAgIC4uLmxvb2t1cFNzbVBhcmFtZXRlcnMoc2NvcGUsIHNzbVN0cmluZ1ZhcnMpLFxuICAgIC4uLmxvb2t1cFNzbVBhcmFtZXRlcnMoc2NvcGUsIHNzbVNlY3VyZVZhcnMsIHRydWUpLFxuICAgIEVOVjogU3RyaW5nKGJ1aWxkQ29uZmlnPy5lbnZOYW1lKSxcbiAgfTtcbiAgcmV0dXJuIHZhcnM7XG59XG5cbmZ1bmN0aW9uIGxvb2t1cFNzbVBhcmFtZXRlcnMoc2NvcGU6IFN0YWNrLCBrZXlzOiBTc21LZXlbXSwgc2VjdXJlID0gZmFsc2UpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZW52ID0gYnVpbGRDb25maWc/LmVudk5hbWU7XG4gIGNvbnN0IHZhcmlhYmxlczogeyBwYXRoOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9W10gPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGtleS5zdWJzdHJpbmcoMCwga2V5LmluZGV4T2YoJzonKSk7XG4gICAgY29uc3QgbmFtZSA9IGtleS5zdWJzdHJpbmcobmFtZXNwYWNlLmxlbmd0aCArIDEpO1xuICAgIGNvbnN0IHBhdGggPSBgLyR7ZW52fS9taWNyb3NlcnZpY2VzLyR7bmFtZXNwYWNlfS9lbnYvJHtuYW1lfWA7XG4gICAgdmFyaWFibGVzLnB1c2goeyBwYXRoLCBuYW1lIH0pO1xuICB9XG4gIHJldHVybiB2YXJpYWJsZXMucmVkdWNlKFxuICAgIChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGlmIChzZWN1cmUpIHtcbiAgICAgICAgYWNjW2l0ZW0ubmFtZV0gPSBgc3NtOi8vJHtpdGVtLnBhdGh9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY1tpdGVtLm5hbWVdID0gYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHNjb3BlLCBpdGVtLnBhdGgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgKTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# install ClickHouse
|
|
4
|
+
sudo apt install lsb-release curl gpg -yq
|
|
5
|
+
curl -fsSL https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
|
|
6
|
+
sudo chmod 644 /usr/share/keyrings/clickhouse-keyring.gpg
|
|
7
|
+
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
|
|
8
|
+
sudo apt update -yq
|
|
9
|
+
sudo DEBIAN_FRONTEND=noninteractive apt install clickhouse-server clickhouse-client -yq
|
|
10
|
+
|
|
11
|
+
# the deb postinst may write a default-user password file when it cannot prompt;
|
|
12
|
+
# remove it so our users.d config (from SSM) is the one applied
|
|
13
|
+
sudo rm -f /etc/clickhouse-server/users.d/default-password.xml
|
|
14
|
+
|
|
15
|
+
# stop the auto-started server so we can drop in configs before first run
|
|
16
|
+
sudo systemctl stop clickhouse-server || true
|
|
17
|
+
|
|
18
|
+
# fetch credentials from SSM
|
|
19
|
+
clickhouse_root_password=$(aws ssm get-parameter --name ${ssm_global_parameter_path}CLICKHOUSE_ROOT_PASSWORD --with-decryption --query "Parameter.Value" --output text)
|
|
20
|
+
microservices_clickhouse_password=$(aws ssm get-parameter --name ${ssm_global_parameter_path}MICROSERVICES_CLICKHOUSE_PASSWORD --with-decryption --query "Parameter.Value" --output text)
|
|
21
|
+
|
|
22
|
+
# store passwords as sha256 hashes so password content can never break the users config XML
|
|
23
|
+
clickhouse_root_password_sha256=$(echo -n "$clickhouse_root_password" | sha256sum | awk '{print $1}')
|
|
24
|
+
microservices_clickhouse_password_sha256=$(echo -n "$microservices_clickhouse_password" | sha256sum | awk '{print $1}')
|
|
25
|
+
|
|
26
|
+
# compute tuning values from instance hardware (query-optimized)
|
|
27
|
+
total_mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
|
28
|
+
total_cpus=$(nproc)
|
|
29
|
+
|
|
30
|
+
# server memory budget: total RAM minus 1.5GB OS headroom, but never below 50% of RAM
|
|
31
|
+
server_max_memory_kb=$(( total_mem_kb - 1536 * 1024 ))
|
|
32
|
+
half_mem_kb=$(( total_mem_kb / 2 ))
|
|
33
|
+
if [ $server_max_memory_kb -lt $half_mem_kb ]; then
|
|
34
|
+
server_max_memory_kb=$half_mem_kb
|
|
35
|
+
fi
|
|
36
|
+
server_max_memory=$(( server_max_memory_kb * 1024 ))
|
|
37
|
+
|
|
38
|
+
# per-query memory: 70% of server budget; spill to disk right before the limit
|
|
39
|
+
query_max_memory=$(( server_max_memory * 70 / 100 ))
|
|
40
|
+
spill_max_memory=$(( query_max_memory * 80 / 100 ))
|
|
41
|
+
|
|
42
|
+
# mark cache: 10% of RAM for analytic scans, capped at 25% of the server budget so it can't starve queries on small instances (min 32MB)
|
|
43
|
+
mark_cache_kb=$(( total_mem_kb * 10 / 100 ))
|
|
44
|
+
mark_cache_cap_kb=$(( server_max_memory_kb * 25 / 100 ))
|
|
45
|
+
if [ $mark_cache_kb -gt $mark_cache_cap_kb ]; then
|
|
46
|
+
mark_cache_kb=$mark_cache_cap_kb
|
|
47
|
+
fi
|
|
48
|
+
min_mark_cache_kb=$(( 32 * 1024 ))
|
|
49
|
+
if [ $mark_cache_kb -lt $min_mark_cache_kb ]; then
|
|
50
|
+
mark_cache_kb=$min_mark_cache_kb
|
|
51
|
+
fi
|
|
52
|
+
mark_cache=$(( mark_cache_kb * 1024 ))
|
|
53
|
+
|
|
54
|
+
# concurrency and background pools scale with cores
|
|
55
|
+
max_concurrent_queries=$(( total_cpus * 4 ))
|
|
56
|
+
if [ $max_concurrent_queries -lt 8 ]; then
|
|
57
|
+
max_concurrent_queries=8
|
|
58
|
+
fi
|
|
59
|
+
background_pool_size=$total_cpus
|
|
60
|
+
background_schedule_pool_size=$(( total_cpus * 2 ))
|
|
61
|
+
if [ $background_schedule_pool_size -lt 16 ]; then
|
|
62
|
+
background_schedule_pool_size=16
|
|
63
|
+
fi
|
|
64
|
+
background_buffer_flush_schedule_pool_size=16
|
|
65
|
+
max_part_threads=$total_cpus
|
|
66
|
+
|
|
67
|
+
# background pool task capacity and mutation/optimize thresholds derived from cores
|
|
68
|
+
background_merges_mutations_concurrency_ratio=2
|
|
69
|
+
pool_tasks=$(( background_pool_size * background_merges_mutations_concurrency_ratio ))
|
|
70
|
+
pool_free_entries=$(( pool_tasks / 2 ))
|
|
71
|
+
if [ $pool_free_entries -lt 1 ]; then
|
|
72
|
+
pool_free_entries=1
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# merge pool sizing so merges use available disk instead of stalling on small volumes
|
|
76
|
+
disk_free_gb=$(df -B1 / | awk 'NR==2{print int($4/1024/1024/1024)}')
|
|
77
|
+
disk_bytes=$(( disk_free_gb * 1024 * 1024 * 1024 ))
|
|
78
|
+
merge_max_space=$(( disk_bytes * 90 / 100 ))
|
|
79
|
+
|
|
80
|
+
# allow connections from all interfaces (native + HTTP)
|
|
81
|
+
sudo tee /etc/clickhouse-server/config.d/network.xml >/dev/null <<EOF
|
|
82
|
+
<clickhouse>
|
|
83
|
+
<listen_host>0.0.0.0</listen_host>
|
|
84
|
+
</clickhouse>
|
|
85
|
+
EOF
|
|
86
|
+
|
|
87
|
+
# server-wide performance and scalability tuning
|
|
88
|
+
sudo tee /etc/clickhouse-server/config.d/performance.xml >/dev/null <<EOF
|
|
89
|
+
<clickhouse>
|
|
90
|
+
<max_server_memory_usage>${server_max_memory}</max_server_memory_usage>
|
|
91
|
+
<max_concurrent_queries>${max_concurrent_queries}</max_concurrent_queries>
|
|
92
|
+
<mark_cache_size>${mark_cache}</mark_cache_size>
|
|
93
|
+
<background_pool_size>${background_pool_size}</background_pool_size>
|
|
94
|
+
<background_merges_mutations_concurrency_ratio>${background_merges_mutations_concurrency_ratio}</background_merges_mutations_concurrency_ratio>
|
|
95
|
+
<background_schedule_pool_size>${background_schedule_pool_size}</background_schedule_pool_size>
|
|
96
|
+
<background_buffer_flush_schedule_pool_size>${background_buffer_flush_schedule_pool_size}</background_buffer_flush_schedule_pool_size>
|
|
97
|
+
<merge_tree>
|
|
98
|
+
<max_part_loading_threads>${max_part_threads}</max_part_loading_threads>
|
|
99
|
+
<max_part_removal_threads>${max_part_threads}</max_part_removal_threads>
|
|
100
|
+
<max_bytes_to_merge_at_min_space_in_pool>104857600</max_bytes_to_merge_at_min_space_in_pool>
|
|
101
|
+
<max_bytes_to_merge_at_max_space_in_pool>${merge_max_space}</max_bytes_to_merge_at_max_space_in_pool>
|
|
102
|
+
<max_delay_to_insert>5</max_delay_to_insert>
|
|
103
|
+
<number_of_free_entries_in_pool_to_execute_mutation>${pool_free_entries}</number_of_free_entries_in_pool_to_execute_mutation>
|
|
104
|
+
<number_of_free_entries_in_pool_to_lower_max_size_of_merge>${pool_free_entries}</number_of_free_entries_in_pool_to_lower_max_size_of_merge>
|
|
105
|
+
<number_of_free_entries_in_pool_to_execute_optimize_entire_partition>${pool_free_entries}</number_of_free_entries_in_pool_to_execute_optimize_entire_partition>
|
|
106
|
+
</merge_tree>
|
|
107
|
+
<query_log>
|
|
108
|
+
<database>system</database>
|
|
109
|
+
<table>query_log</table>
|
|
110
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
111
|
+
</query_log>
|
|
112
|
+
<query_thread_log>
|
|
113
|
+
<database>system</database>
|
|
114
|
+
<table>query_thread_log</table>
|
|
115
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
116
|
+
</query_thread_log>
|
|
117
|
+
<part_log>
|
|
118
|
+
<database>system</database>
|
|
119
|
+
<table>part_log</table>
|
|
120
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
121
|
+
</part_log>
|
|
122
|
+
<metric_log>
|
|
123
|
+
<database>system</database>
|
|
124
|
+
<table>metric_log</table>
|
|
125
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
126
|
+
</metric_log>
|
|
127
|
+
<text_log>
|
|
128
|
+
<database>system</database>
|
|
129
|
+
<table>text_log</table>
|
|
130
|
+
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
|
131
|
+
</text_log>
|
|
132
|
+
</clickhouse>
|
|
133
|
+
EOF
|
|
134
|
+
|
|
135
|
+
# query-optimized default profile: keep aggregations in RAM, spill only as safety net
|
|
136
|
+
sudo tee /etc/clickhouse-server/users.d/profiles.xml >/dev/null <<EOF
|
|
137
|
+
<clickhouse>
|
|
138
|
+
<profiles>
|
|
139
|
+
<default>
|
|
140
|
+
<max_memory_usage>${query_max_memory}</max_memory_usage>
|
|
141
|
+
<max_bytes_before_external_group_by>${spill_max_memory}</max_bytes_before_external_group_by>
|
|
142
|
+
<max_bytes_before_external_sort>${spill_max_memory}</max_bytes_before_external_sort>
|
|
143
|
+
<max_partitions_per_insert_block>500</max_partitions_per_insert_block>
|
|
144
|
+
<parts_to_delay_insert>300</parts_to_delay_insert>
|
|
145
|
+
<parts_to_throw_insert>600</parts_to_throw_insert>
|
|
146
|
+
</default>
|
|
147
|
+
</profiles>
|
|
148
|
+
</clickhouse>
|
|
149
|
+
EOF
|
|
150
|
+
|
|
151
|
+
# set the ClickHouse superuser (default) password.
|
|
152
|
+
# `replace="replace"` replaces the packaged `default` user (which ships with an empty
|
|
153
|
+
# `<password>` method) instead of merging children, so only our sha256 method survives
|
|
154
|
+
sudo tee /etc/clickhouse-server/users.d/default-user.xml >/dev/null <<EOF
|
|
155
|
+
<clickhouse>
|
|
156
|
+
<users>
|
|
157
|
+
<default replace="replace">
|
|
158
|
+
<password_sha256_hex>${clickhouse_root_password_sha256}</password_sha256_hex>
|
|
159
|
+
<profile>default</profile>
|
|
160
|
+
<quota>default</quota>
|
|
161
|
+
<networks>
|
|
162
|
+
<ip>::/0</ip>
|
|
163
|
+
</networks>
|
|
164
|
+
<access_management>1</access_management>
|
|
165
|
+
<named_collection_control>1</named_collection_control>
|
|
166
|
+
</default>
|
|
167
|
+
</users>
|
|
168
|
+
</clickhouse>
|
|
169
|
+
EOF
|
|
170
|
+
|
|
171
|
+
# create the microservices application user
|
|
172
|
+
sudo tee /etc/clickhouse-server/users.d/microservices.xml >/dev/null <<EOF
|
|
173
|
+
<clickhouse>
|
|
174
|
+
<users>
|
|
175
|
+
<microservices replace="replace">
|
|
176
|
+
<password_sha256_hex>${microservices_clickhouse_password_sha256}</password_sha256_hex>
|
|
177
|
+
<profile>default</profile>
|
|
178
|
+
<quota>default</quota>
|
|
179
|
+
<networks>
|
|
180
|
+
<ip>::/0</ip>
|
|
181
|
+
</networks>
|
|
182
|
+
</microservices>
|
|
183
|
+
</users>
|
|
184
|
+
</clickhouse>
|
|
185
|
+
EOF
|
|
186
|
+
|
|
187
|
+
# OS-level tuning: THP off (systemd unit so it survives reboot)
|
|
188
|
+
sudo tee /etc/systemd/system/disable-transparent-huge-pages.service >/dev/null <<EOF
|
|
189
|
+
[Unit]
|
|
190
|
+
Description=Disable Transparent Huge Pages (THP)
|
|
191
|
+
After=multi-user.target
|
|
192
|
+
|
|
193
|
+
[Service]
|
|
194
|
+
Type=oneshot
|
|
195
|
+
RemainAfterExit=yes
|
|
196
|
+
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'
|
|
197
|
+
|
|
198
|
+
[Install]
|
|
199
|
+
WantedBy=multi-user.target
|
|
200
|
+
EOF
|
|
201
|
+
sudo systemctl enable --now disable-transparent-huge-pages
|
|
202
|
+
|
|
203
|
+
# kernel tuning: avoid mmap exhaustion under heavy merges
|
|
204
|
+
sudo tee /etc/sysctl.d/99-clickhouse.conf >/dev/null <<EOF
|
|
205
|
+
vm.max_map_count = 262144
|
|
206
|
+
EOF
|
|
207
|
+
sudo sysctl --system
|
|
208
|
+
|
|
209
|
+
# raise open file limits for the clickhouse server
|
|
210
|
+
sudo mkdir -p /etc/systemd/system/clickhouse-server.service.d
|
|
211
|
+
sudo tee /etc/systemd/system/clickhouse-server.service.d/limits.conf >/dev/null <<EOF
|
|
212
|
+
[Service]
|
|
213
|
+
LimitNOFILE=1048576
|
|
214
|
+
LimitCORE=infinity
|
|
215
|
+
EOF
|
|
216
|
+
|
|
217
|
+
# apply configs and start
|
|
218
|
+
sudo systemctl daemon-reload
|
|
219
|
+
sudo systemctl enable clickhouse-server
|
|
220
|
+
|
|
221
|
+
# pre-flight: run the server in the foreground briefly so config errors surface in the deployment log
|
|
222
|
+
# exit 124 (killed by timeout) means it started fine; anything else is a startup failure.
|
|
223
|
+
# wrapping the run as an if-condition suppresses both `set -e` and the global ERR trap
|
|
224
|
+
# on the expected non-zero exit, so it can't abort the deployment
|
|
225
|
+
if sudo -u clickhouse timeout 5 clickhouse-server --config-file=/etc/clickhouse-server/config.xml; then
|
|
226
|
+
preflight_status=0
|
|
227
|
+
else
|
|
228
|
+
preflight_status=$?
|
|
229
|
+
fi
|
|
230
|
+
if [ $preflight_status -eq 124 ] || [ $preflight_status -eq 0 ]; then
|
|
231
|
+
echo "ClickHouse config pre-flight: server started successfully (exit $preflight_status)"
|
|
232
|
+
else
|
|
233
|
+
echo "ClickHouse config pre-flight FAILED (exit $preflight_status); dumping error log:"
|
|
234
|
+
fi
|
|
235
|
+
sudo tail -n 30 /var/log/clickhouse-server/clickhouse-server.err.log || true
|
|
236
|
+
|
|
237
|
+
sudo systemctl restart clickhouse-server
|
|
238
|
+
|
|
239
|
+
# verify the server is up and the credentials work
|
|
240
|
+
sudo clickhouse-client --password "$clickhouse_root_password" --query "SELECT version()"
|
|
@@ -18,5 +18,36 @@ sudo mysql -e "CREATE USER '$microservices_db_user'@'%' IDENTIFIED BY '$microser
|
|
|
18
18
|
sudo mysql -e "FLUSH PRIVILEGES;"
|
|
19
19
|
sudo sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf
|
|
20
20
|
|
|
21
|
+
# scale MariaDB for high concurrency (buffer pool = 70% of instance RAM)
|
|
22
|
+
total_mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
|
23
|
+
innodb_buffer_pool=$(( total_mem_kb / 1024 * 70 / 100 ))M
|
|
24
|
+
|
|
25
|
+
sudo tee /etc/mysql/mariadb.conf.d/99-scalability.cnf >/dev/null <<EOF
|
|
26
|
+
[mysqld]
|
|
27
|
+
# connections / concurrency
|
|
28
|
+
max_connections = 1000
|
|
29
|
+
thread_handling = pool-of-threads
|
|
30
|
+
back_log = 300
|
|
31
|
+
thread_cache_size = 64
|
|
32
|
+
wait_timeout = 600
|
|
33
|
+
interactive_timeout = 600
|
|
34
|
+
max_connect_errors = 1000000
|
|
35
|
+
max_allowed_packet = 128M
|
|
36
|
+
|
|
37
|
+
# innodb / storage (SSD/gp3)
|
|
38
|
+
innodb_buffer_pool_size = ${innodb_buffer_pool}
|
|
39
|
+
innodb_flush_method = O_DIRECT
|
|
40
|
+
innodb_flush_log_at_trx_commit = 1
|
|
41
|
+
innodb_io_capacity = 1000
|
|
42
|
+
innodb_io_capacity_max = 4000
|
|
43
|
+
innodb_flush_neighbors = 0
|
|
44
|
+
innodb_log_file_size = 512M
|
|
45
|
+
|
|
46
|
+
# open tables
|
|
47
|
+
table_open_cache = 4096
|
|
48
|
+
table_definition_cache = 2048
|
|
49
|
+
open_files_limit = 65535
|
|
50
|
+
EOF
|
|
51
|
+
|
|
21
52
|
# restart MySQL
|
|
22
53
|
sudo systemctl restart mariadb
|