Qrvey scheduler
This is a library to use AWS Eventbridge, k8s scheduler or K8s jobs.
Installation
npm install @qrvey/scheduler
Require environment variables
AWS_ACCOUNT_ID;
AWS_DEFAULT_REGION;
PLATFORM_TYPE;
CRONJOB_NAMESPACE
Usage
Sample usage for scheduler
const { SchedulerService } = require("@qrvey/scheduler");
(async () => {
const scheduleParams = {
cronJobName: "multicloud-testcron",
scheduleExpression: "cron(*/1 * * * * *)",
description:
'{"userEmail":"email@useremail.com","datasetName":"DBName","appName":"AppName","readableCronExpr":"Every hour","owner":"ownerId","datasetId":"datasetId","userId":"userId","appId":"appId"}',
targetParams: {
Name: "demo_drScheduler_CJ_mra43sr0U",
Input: {
detail: {
appId: "appId",
userId: "userId",
owner: "owner",
datasetId: "datasetId",
cronSyncFrequency: "0 0/1 * * ? *",
version: 2.1,
},
source: "aws.events",
},
},
tags: [
{
Key: "version",
Value: "2.1",
},
{
Key: "datasetId",
Value: "datasetId",
},
{
Key: "appId",
Value: "appId",
},
{
Key: "userId",
Value: "userId",
},
{
Key: "state",
Value: "ENABLED",
},
{
Key: "owner",
Value: "userId",
},
],
targetResource: "arn:aws:lambda:{region}:{accountId}:function:{functionName}",
state: "DISABLED",
};
const schedulerClient = new schedulerService();
const res = await schedulerClient.create(scheduleParams);
})();
Sample usage for tasks
Create task
const { TaskService } = require('@qrvey/scheduler');
const main = async () => {
try {
const namespace = 'service-app';
const jobManifest = {
taskName: 'task-name',
containerName: 'container-name',
description: 'this is to run a task',
image: `image_service_registry_container/image_name:latest`,
imagePullSecret: 'image-secret',
environmentVariables: [
{ name: 'SERVER', value: 'some_prefix' },
{ name: 'NUMBER_OF_TYPES', value: 5 },
{ name: 'PLATFORM', value: 'AZURE' },
],
arguments: [
{ name: '--operation', value: 'getNames' },
{ name: '--id', value: 'mdK23ds' },
{ name: '--version', value: 'published' },
],
command: ['node', 'index.js'],
};
const newJob = new TaskService();
return await newJob.create(namespace, jobManifest);
} catch (error) {
console.error(error);
}
}
main();
Get Task
const { TaskService } = require('@qrvey/scheduler');
const main = async () => {
try {
const namespace = 'namespace';
const jobName = 'remove-something';
const getJob = new TaskService();
return await getJob.get(namespace, jobName);
} catch (error) {
console.error(error);
}
}
main();
List Tasks
const { TaskService } = require('@qrvey/scheduler');
const main = async () => {
try {
const namespace = 'namespace';
const listJobs = new TaskService();
return await listJobs.list(namespace);
} catch (error) {
console.error(error);
}
}
main();
Delete Task
const { TaskService } = require('@qrvey/scheduler');
const main = async () => {
try {
const namespace = 'namespace';
const jobName = 'remove-something';
const deleteJob = new TaskService();
return await deleteJob.delete(namespace, jobName);
} catch (error) {
console.error(error);
}
}
main();