@glicogh/healthcare-cdk 0.1.45 → 0.1.46
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.
|
@@ -19,6 +19,22 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
19
19
|
maxConnections: 20,
|
|
20
20
|
secretsManagerTimeout: cdk.Duration.seconds(300),
|
|
21
21
|
});
|
|
22
|
+
const lambdaRole = new cdk.aws_iam.Role(this, 'MigrationLambdaRole', {
|
|
23
|
+
assumedBy: new cdk.aws_iam.ServicePrincipal('lambda.amazonaws.com'),
|
|
24
|
+
managedPolicies: [cdk.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')],
|
|
25
|
+
inlinePolicies: {
|
|
26
|
+
migrationLambdas: new cdk.aws_iam.PolicyDocument({
|
|
27
|
+
statements: [
|
|
28
|
+
new cdk.aws_iam.PolicyStatement({
|
|
29
|
+
sid: 'AllowLambdaToReadSSMParameters',
|
|
30
|
+
resources: [`arn:aws:ssm:${initBuildConfig_1.buildConfig.aws.region}:${initBuildConfig_1.buildConfig.aws.account}:parameter/${initBuildConfig_1.buildConfig.envName}/microservices/*`],
|
|
31
|
+
actions: ['ssm:GetParameter*'],
|
|
32
|
+
effect: cdk.aws_iam.Effect.ALLOW,
|
|
33
|
+
}),
|
|
34
|
+
],
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
22
38
|
const lambdasRootDir = path.join(path.resolve('../../'), 'lambdas');
|
|
23
39
|
const lambdaProps = {
|
|
24
40
|
runtime: cdk.aws_lambda.Runtime.NODEJS_22_X,
|
|
@@ -35,20 +51,24 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
35
51
|
};
|
|
36
52
|
const migrationQueue = new cdk.aws_sqs.Queue(this, 'migrationQueue', { queueName: 'migration-queue.fifo', fifo: true });
|
|
37
53
|
if (lambdaProps.environment) {
|
|
38
|
-
lambdaProps.environment['
|
|
54
|
+
lambdaProps.environment['MIGRATION_QUEUE_URL'] = migrationQueue.queueUrl;
|
|
39
55
|
}
|
|
40
|
-
new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationProducerLambda', {
|
|
56
|
+
const producerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationProducerLambda', {
|
|
41
57
|
...lambdaProps,
|
|
42
58
|
functionName: 'migration-producer',
|
|
43
59
|
entry: path.join(lambdasRootDir, 'producer', 'index.ts'),
|
|
60
|
+
role: lambdaRole,
|
|
44
61
|
});
|
|
45
62
|
const consumerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationConsumerLambda', {
|
|
46
63
|
...lambdaProps,
|
|
47
64
|
functionName: 'migration-consumer',
|
|
48
65
|
entry: path.join(lambdasRootDir, 'consumer', 'index.ts'),
|
|
66
|
+
role: lambdaRole,
|
|
49
67
|
});
|
|
50
68
|
consumerLambda.addEventSource(new cdk.aws_lambda_event_sources.SqsEventSource(migrationQueue, { batchSize: 10, maxConcurrency: 10 }));
|
|
69
|
+
migrationQueue.grantSendMessages(producerLambda);
|
|
70
|
+
migrationQueue.grantConsumeMessages(consumerLambda);
|
|
51
71
|
}
|
|
52
72
|
}
|
|
53
73
|
exports.MicroserviceMigration = MicroserviceMigration;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW1pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9taWNyb3NlcnZpY2UtbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQyxpREFBbUQ7QUFDbkQsNkRBQXNEO0FBQ3RELGlEQUFrRDtBQUNsRCw2QkFBNkI7QUFFN0IsTUFBYSxxQkFBc0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyw2QkFBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUN4RCxPQUFPLEVBQUUsSUFBQSwwQkFBYyxFQUFDLE9BQU8sQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFFSCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFO1lBQ2pJLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztTQUNqRCxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNuRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lB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QUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUExRUQsc0RBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldExhbWJkYUVudnMgfSBmcm9tICcuLi91dGlsL21pZ3JhdGlvbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgY2xhc3MgTWljcm9zZXJ2aWNlTWlncmF0aW9uIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBjZGsuU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgaWYgKCFidWlsZENvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWlsZENvbmZpZyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjID0gY2RrLmF3c19lYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ1ZQQ0xvb2t1cCcsIHtcbiAgICAgIHZwY05hbWU6IGdldEVudkNvbnN0YW50KCd2cGNJZCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zQW5kU2VjcmV0cyA9IGNkay5hd3NfbGFtYmRhLlBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24uZnJvbVZlcnNpb24oY2RrLmF3c19sYW1iZGEuUGFyYW1zQW5kU2VjcmV0c1ZlcnNpb25zLlYxXzBfMTAzLCB7XG4gICAgICBtYXhDb25uZWN0aW9uczogMjAsXG4gICAgICBzZWNyZXRzTWFuYWdlclRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFSb2xlID0gbmV3IGNkay5hd3NfaWFtLlJvbGUodGhpcywgJ01pZ3JhdGlvbkxhbWJkYVJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBjZGsuYXdzX2lhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbY2RrLmF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKV0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBtaWdyYXRpb25MYW1iZGFzOiBuZXcgY2RrLmF3c19pYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xhbWJkYVRvUmVhZFNTTVBhcmFtZXRlcnMnLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzc206JHtidWlsZENvbmZpZy5hd3MucmVnaW9ufToke2J1aWxkQ29uZmlnLmF3cy5hY2NvdW50fTpwYXJhbWV0ZXIvJHtidWlsZENvbmZpZy5lbnZOYW1lfS9taWNyb3NlcnZpY2VzLypgXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzc206R2V0UGFyYW1ldGVyKiddLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGNkay5hd3NfaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxhbWJkYXNSb290RGlyID0gcGF0aC5qb2luKHBhdGgucmVzb2x2ZSgnLi4vLi4vJyksICdsYW1iZGFzJyk7XG4gICAgY29uc3QgbGFtYmRhUHJvcHM6IGNkay5hd3NfbGFtYmRhX25vZGVqcy5Ob2RlanNGdW5jdGlvblByb3BzID0ge1xuICAgICAgcnVudGltZTogY2RrLmF3c19sYW1iZGEuUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ3BhY2thZ2UtbG9jay5qc29uJyksXG4gICAgICBwcm9qZWN0Um9vdDogbGFtYmRhc1Jvb3REaXIsXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICB0c2NvbmZpZzogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAndHNjb25maWcuanNvbicpLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiBnZXRMYW1iZGFFbnZzKHRoaXMpLFxuICAgICAgdnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlOiBjZGsuYXdzX2VjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSxcbiAgICAgIHBhcmFtc0FuZFNlY3JldHMsXG4gICAgfTtcblxuICAgIGNvbnN0IG1pZ3JhdGlvblF1ZXVlID0gbmV3IGNkay5hd3Nfc3FzLlF1ZXVlKHRoaXMsICdtaWdyYXRpb25RdWV1ZScsIHsgcXVldWVOYW1lOiAnbWlncmF0aW9uLXF1ZXVlLmZpZm8nLCBmaWZvOiB0cnVlIH0pO1xuXG4gICAgaWYgKGxhbWJkYVByb3BzLmVudmlyb25tZW50KSB7XG4gICAgICBsYW1iZGFQcm9wcy5lbnZpcm9ubWVudFsnTUlHUkFUSU9OX1FVRVVFX1VSTCddID0gbWlncmF0aW9uUXVldWUucXVldWVVcmw7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvZHVjZXJMYW1iZGEgPSBuZXcgY2RrLmF3c19sYW1iZGFfbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdtaWdyYXRpb25Qcm9kdWNlckxhbWJkYScsIHtcbiAgICAgIC4uLmxhbWJkYVByb3BzLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbWlncmF0aW9uLXByb2R1Y2VyJyxcbiAgICAgIGVudHJ5OiBwYXRoLmpvaW4obGFtYmRhc1Jvb3REaXIsICdwcm9kdWNlcicsICdpbmRleC50cycpLFxuICAgICAgcm9sZTogbGFtYmRhUm9sZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnN1bWVyTGFtYmRhID0gbmV3IGNkay5hd3NfbGFtYmRhX25vZGVqcy5Ob2RlanNGdW5jdGlvbih0aGlzLCAnbWlncmF0aW9uQ29uc3VtZXJMYW1iZGEnLCB7XG4gICAgICAuLi5sYW1iZGFQcm9wcyxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ21pZ3JhdGlvbi1jb25zdW1lcicsXG4gICAgICBlbnRyeTogcGF0aC5qb2luKGxhbWJkYXNSb290RGlyLCAnY29uc3VtZXInLCAnaW5kZXgudHMnKSxcbiAgICAgIHJvbGU6IGxhbWJkYVJvbGUsXG4gICAgfSk7XG5cbiAgICBjb25zdW1lckxhbWJkYS5hZGRFdmVudFNvdXJjZShuZXcgY2RrLmF3c19sYW1iZGFfZXZlbnRfc291cmNlcy5TcXNFdmVudFNvdXJjZShtaWdyYXRpb25RdWV1ZSwgeyBiYXRjaFNpemU6IDEwLCBtYXhDb25jdXJyZW5jeTogMTAgfSkpO1xuXG4gICAgbWlncmF0aW9uUXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMocHJvZHVjZXJMYW1iZGEpO1xuICAgIG1pZ3JhdGlvblF1ZXVlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKGNvbnN1bWVyTGFtYmRhKTtcbiAgfVxufVxuIl19
|