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

Posted

技术标签:

【中文标题】如何将值传递给 CloudWatch 中的 Lambda 函数?【英文标题】:How to pass values to a Lambda function in CloudWatch? 【发布时间】:2017-08-15 05:57:26 【问题描述】:

以处理来自 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】:

如果您选择输入选项常量(JSON 文本),输入框应显示在下方。您需要输入 json "ping": true。您的函数将获取 json 作为 event 对象,您可以像访问代码一样访问 event.ping

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

scheduledFunction:
  handler: index.handler
  events:
    - schedule:
        rate: rate(1 minute)
        enabled: true
        input:
          ping: true

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

【讨论】:

这实际上是对问题的回答。版主可以标记吗? 一个非常优雅的问题答案,但它只链接到无服务器框架,我建议一些接近 AWS SAM 或 AWS Cloudformation 的东西会更有帮助。 确实是一个绝对的答案。真的很有帮助,想在 AWS 文档中找不到它 再添加一个与任何框架无关的示例,它是一个 CloudFormation 示例:gist.github.com/RichardSilveira/…

以上是关于如何将值传递给 CloudWatch 中的 Lambda 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从字段传递给 Odoo 13 中的向导?

如何从rails中的视图将值传递给jquery?

如何将值收集到数组中并将集合传递给 C# 中的 datagridview?

将值传递给makefile中的现有变量[重复]

我们如何将值 - 从 views.py 中的列表 - 传递给 html

如何将值传递给 react-router-relay 中的根查询