Aws lambda 如何使用事件将json输入传递给部署在Serverless中的Cron调度Lambda?

Aws lambda 如何使用事件将json输入传递给部署在Serverless中的Cron调度Lambda?,aws-lambda,serverless-framework,Aws Lambda,Serverless Framework,我一直在尝试在Serverless中部署一个Lambda,以便在每小时调用一次的Cron调度上运行。调用它时,我希望Lambda中的事件由我自己的JSON输入填充,而不是来自Cron事件的信息,Cron事件是部署它时的默认输入 在AWS控制台中,我可以手动进入Lambda的Cron触发器,并将输入从“匹配事件”更改为“常量(JSON文本)”,以获得我想要的结果。由于Serverless在部署Lambda时创建了这个规则,因此我觉得应该有某种方法通过Serverless.yml文件中的配置来更改输

我一直在尝试在Serverless中部署一个Lambda,以便在每小时调用一次的Cron调度上运行。调用它时,我希望Lambda中的事件由我自己的JSON输入填充,而不是来自Cron事件的信息,Cron事件是部署它时的默认输入

在AWS控制台中,我可以手动进入Lambda的Cron触发器,并将输入从“匹配事件”更改为“常量(JSON文本)”,以获得我想要的结果。由于Serverless在部署Lambda时创建了这个规则,因此我觉得应该有某种方法通过Serverless.yml文件中的配置来更改输入。在搜索Serverless的文档时,我找不到任何东西,所以现在我想知道,在Serverless的当前状态下,这是否可以实现,如果可以,如何实现

如有任何建议,将不胜感激

编辑:有一个应该添加此功能的更新,但是我仍然无法使用Serverless 1.3.0(并且已经使用1.2.0进行了测试)使用JSON进行部署。下面是我使用的serverless.yml的一些示例:

functions:
  test:
    handler: test.test
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
        rate: rate(10 minutes)
        input:
          key: value
      - schedule:
        rate: rate(10 minutes)
        input: '{"key": "value"}'
      - schedule:
        rate: rate(10 minutes)
        input:
          key: 'value'
从1.3.0开始,是否有人能够评论Serverless中此功能的状态,以及上面我的Serverless.yml是否正常

编辑2:发布正在工作的serverless.yml

functions:
  test:
    handler: test.test
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
          rate: rate(10 minutes)
          enabled: true
          input:
            key: value
      - schedule:
          rate: rate(10 minutes)
          input: '{"key": "value"}'
          enabled: true
      - schedule:
          rate: rate(10 minutes)
          input:
            key: 'value'
          enabled: true

编辑到您的编辑:我做了一些挖掘,似乎serverless会自动禁用不是字符串的计划。这意味着如果您的整个活动是
-schedule:rate(10分钟)
,它将被启用。但如果您有其他属性,则必须启用它,因为默认情况下它将被禁用

因此,您当前的.yml应该如下所示:

functions:   test:
    handler: test.test
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
        rate: rate(10 minutes)
        enabled: true
        input:
          key: value
      - schedule:
        rate: rate(10 minutes)
        input: '{"key": "value"}'
        enabled: true
      - schedule:
        rate: rate(10 minutes)
        input:
          key: 'value'
        enabled: true

您可以在serverless.yml文件中使用相同的
input
inputPath
,就像使用cloudwatch事件规则一样。与cloudwath规则的唯一区别在于,您实际上可以传递一个对象,而serverless将自动为您将其字符串化

例如:

functions:
  crawl:
    handler: crawl
    events:
      - schedule: 
          rate: rate(1 hours)
          input: 
            key1: value1
            key2: value2
这将等同于使用
输入:“{'key1':'value1','key2':'value2'}”
传递json而不是匹配的事件的cloudformation事件规则


我刚才注意到这个问题是在11月2日提出的。当时不可能这样做,但在提出问题后不久就实施了

谢谢你的回复。实际上,我一直在关注这个PR,但仍然无法使用我输入的JSON进行部署。我会更新这个问题并在其中发布一些例子。我看了你再次发布的第一个例子,我注意到问题出在缩进上。我最初是从PR中复制格式的,它不包括缩进,这导致日程根本没有出现。将enabled设置为true的提示也非常有用,非常感谢您的帮助!你能传递一个数组吗?输入:['test1','test2']或必须用引号括起来吗?输入:'[“test1”,“test2”]@OamarKanji您应该为它创建一个单独的问题,我更新了我的答案