-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschedule.js
More file actions
68 lines (63 loc) · 2.08 KB
/
schedule.js
File metadata and controls
68 lines (63 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var AWS = require("aws-sdk");
var lambda = new AWS.Lambda;
exports.handler = function(event, context , callback) {
// TODO implement
console.log('Session Id:', event.sessionId);
console.log('Cron Expression:', event.cronExp);
console.log('Recording:', event.recording);
cloudWatchEventSchedule(event.sessionId,event.cronExp,event.recording);
const response = {
statusCode: 200,
body: JSON.stringify({"session":event.sessionId})
};
callback(null, response);
};
function cloudWatchEventSchedule(sessionId,cronExp,recording){
var cloudwatchevents = new AWS.CloudWatchEvents();
var scheduleExpression = "cron("+ cronExp +")";
//var scheduleExpression = "cron(09 02 * * ? *)";
//var scheduleExpression = "2018-10-10T01:22:00Z";
var params = {
Name: sessionId,
ScheduleExpression: scheduleExpression,
State: 'ENABLED',
};
cloudwatchevents.putRule(params, function(err, data) {
if (err) {
console.log(err, err.stack);
}
else {
console.log(data);
var lambdaparams = {
Action: "lambda:InvokeFunction",
FunctionName: "jitsi-create-liveclass",
Principal: "events.amazonaws.com",
StatementId: sessionId
};
lambda.addPermission(lambdaparams, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data);
});
var targetParams = {
Rule : params.Name,
Targets : [
{
Id : 'sessionId',
Arn : 'arn:aws:lambda:us-west-2::function:jitsi-create-liveclass',
//RoleArn: params['RoleArn'],
Input : JSON.stringify({sessionId: sessionId,schedule:'true',recording: recording}),
//Input : JSON.stringify({sessionId: 123})
}
]
};
cloudwatchevents.putTargets(targetParams, function(err, data) {
if (err) {
console.log(err, err.stack);
}
else {
console.log("Created a event"+ data);
}
});
}
});
}