diff --git a/package/lib/compileFunctions.js b/package/lib/compileFunctions.js index 4e05832..2c28e9d 100644 --- a/package/lib/compileFunctions.js +++ b/package/lib/compileFunctions.js @@ -103,6 +103,13 @@ module.exports = { const triggerResource = this.provider.getOSSTriggerResource(event.oss, funcObject); const triggerName = triggerResource.Properties.triggerName; _.merge(resources, { [triggerName]: triggerResource }); + } else if (eventType === 'timer') { + const triggerResource = this.provider.getTimerTriggerResource( + event.timer, + funcObject + ); + const triggerName = triggerResource.Properties.triggerName; + _.merge(resources, { [triggerName]: triggerResource }); } }); } diff --git a/provider/aliyunProvider.js b/provider/aliyunProvider.js index 3e93e41..cfefca1 100644 --- a/provider/aliyunProvider.js +++ b/provider/aliyunProvider.js @@ -522,6 +522,20 @@ class AliyunProvider { }; } + getTimerTriggerResource(event, funcObject) { + const eventType = 'timer'; + return { + 'Type': 'ALIYUN::FC::Trigger', + 'Properties': { + 'triggerConfig': event.triggerConfig, + 'triggerName': this.getEventName(eventType, funcObject.name), + 'triggerType': eventType, + 'functionName': funcObject.name, + 'serviceName': this.getServiceName() + } + }; + } + getServiceResource() { // TODO(joyeecheung): description return { @@ -979,9 +993,12 @@ deleteLogIndex(projectName, logstoreName, options) { * https://help.aliyun.com/document_detail/52877.html#triggerresponse */ createTrigger(serviceName, functionName, trigger, role) { - const triggerProps = Object.assign({}, trigger, { - invocationRole: role.Arn - }); + const triggerProps = Object.assign({}, trigger); + if (trigger.triggerType !== 'timer') { + Object.assign(triggerProps, { + invocationRole: role.Arn + }); + } return this.fcClient.createTrigger(serviceName, functionName, triggerProps); } @@ -1015,9 +1032,12 @@ deleteLogIndex(projectName, logstoreName, options) { * @return {TriggerResponse} */ updateTrigger(serviceName, functionName, triggerName, trigger, role) { - const triggerProps = Object.assign({}, trigger, { - invocationRole: role.Arn - }); + const triggerProps = Object.assign({}, trigger); + if (trigger.triggerType !== 'timer') { + Object.assign(triggerProps, { + invocationRole: role.Arn + }); + } return this.fcClient.updateTrigger( serviceName, functionName, triggerName, triggerProps); }