以从CloudWatch计时器处理ping的方式包装函数的最佳方法是什么?例如,采用下面的lambda函数:
export const fn = (event, context, callback) => {
const { year, make, model, } = event.queryStringParameters
return otherFn({ year, make, model, })
.then(res => response(callback, res))
.catch(err => console.log(err))
}
如果我ping函数,它将会出错,因为CloudWatch请求中没有queryStringParameters . 从技术上讲,这仍然可以保持Lambda函数的温暖(这是我的目标),但我不想有一个不必要的错误列表 .
我注意到CloudWatch允许您包含(可能)传递给Lambda函数的输入:
包装上面的函数以便它可以接受ping的最聪明的方法是什么?理想情况下它看起来像这样:
export const fn = (event, context, callback) => {
if (event.ping) return ping(callback) // the ping function is an import to stay DRY
const { year, make, model, } = event.queryStringParameters
return otherFn({ year, make, model, })
.then(res => response(callback, res))
.catch(err => console.log(err))
}
我会传递一些允许我改变事件的JSON,例如:
{ "ping": true }
我已经阅读了文档中的输入,但我并不清楚各种输入类型的含义或如何使用它们......
1 回答
如果选择输入选项Constant(JSON文本),则输入框应显示在下方 . 你需要输入json
{"ping": true}
. 您的函数将json作为event
对象,您可以像访问代码一样访问event.ping
.如果您使用的是无服务器框架,而不是在AWS控制台中执行此操作,则可以为您的函数添加计划事件 . 这将是您现有的http事件的补充 . 您可以在预定事件的输入部分下添加
ping: true
参数,如下所示:这将创建并启用具有指定计划的cloudwatch日志事件,并在
event
对象中发送输入参数ping
.