首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CloudWatch中将值传递给Lambda函数?

如何在CloudWatch中将值传递给Lambda函数?
EN

Stack Overflow用户
提问于 2017-03-23 05:42:01
回答 1查看 19.2K关注 0票数 19

以处理来自CloudWatch定时器的ping的方式包装函数的最佳方式是什么?例如,使用下面的lambda函数:

代码语言:javascript
复制
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的最聪明的方法是什么?理想情况下,它应该是这样的:

代码语言:javascript
复制
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,比如:

代码语言:javascript
复制
{ "ping": true }

我已经通读了输入的文档,但我完全不清楚各种输入类型的含义或如何使用它们……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 20:20:46

如果您选择input option Constant (JSON text),下面应该会出现一个输入框。您需要输入json {"ping": true}。您的函数将获得json作为event对象,您可以像访问代码一样访问event.ping

如果您使用的是无服务器框架,则可以为您的函数添加计划事件,而不是在AWS控制台中执行此操作。这将是对现有http事件的补充。您可以在预定事件的输入部分下添加ping: true参数,如下所示:

代码语言:javascript
复制
scheduledFunction:
  handler: index.handler
  events:
    - schedule:
        rate: rate(1 minute)
        enabled: true
        input:
          ping: true

这将按照指定的时间表创建并启用cloudwatch日志事件,并在event对象中发送入参ping

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42963184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档