@kumologica/builder
Version:
Kumologica build and deploy module
74 lines (63 loc) • 1.74 kB
JavaScript
function trigger(params) {
let templateResources = {};
const name = "Event" + (params.name || process.hrtime.bigint());
// only default event bus supports cron, no need to pass bus name
/*templateResources[name] = {
Type : "AWS::Events::Rule",
Properties : {
ScheduleExpression: params.expression,
Name: name,
Targets : [
{
Id: kumohubListenerId,
Arn : {
"Fn::GetAtt": ["Lambda", "Arn"]
},
Input : `{"type": "kumohub-event", "id": "${kumohubListenerId}"}`
}
]
}
}*/
let input;
if (params.reference) {
input = `{"source": "kumologica", "detail": {"type": "kumologica-event", "reference": "${params.reference}"}}`;
};
templateResources[name] = {
Type : "AWS::Events::Rule",
Properties : {
ScheduleExpression: params.expression,
Name: name,
State: params.state,
Targets : [
{
Id: name,
Arn : {
"Fn::GetAtt": ["Lambda", "Arn"]
},
Input: input
}
]
}
}
if (params.reference) {
templateResources[name].Properties.EventPattern = {
"detail": {
"type": ["kumologica-event"],
"reference": [params.reference]
}
}
}
templateResources["Permissions" + name] = {
Type: "AWS::Lambda::Permission",
Properties: {
FunctionName: { "Ref": "Lambda" },
Action: "lambda:InvokeFunction",
Principal: "events.amazonaws.com",
SourceArn: { "Fn::GetAtt": [name, "Arn"] }
}
}
return templateResources;
}
module.exports = {
trigger
}