使用从Kinesis触发的Lambda函数的Amazon Step Function

4
我正在尝试在亚马逊AWS中创建一个简单的流程,涉及到IT技术。我想要使用由流生成的数据来执行步骤函数,并触发状态机的第一个lambda。
我的目标是:输入数据通过AWS Kinesis进行流式传输。这个Kinesis流作为lambda1的触发器,将执行并写入S3 Bucket。然后,使用步骤函数触发lambda2,从指定的存储桶中读取内容并写入另一个存储桶。
现在,我想要使用Amazon Step Function实现状态机。我已经创建了这个状态机,它相当直观。
  {
  "Comment": "Linear step function test",
  "StartAt": "lambda1",
  "States": {
    "lambda1": {
      "Type": "Task",
      "Resource": "arn:....",
      "Next": "lambda2"
    },
    "lambda2": {
      "Type": "Task",
      "Resource": "arn:...",
       "End": true
        }  
    }
}

我想要的是,Kinesis触发第一个Lambda函数,一旦执行完成,步骤函数将执行Lambda 2。这似乎并没有发生。即使我的Lambda 1从流中触发并写入S3存储桶,步骤函数也没有任何动作。我可以选择手动启动新执行并传递JSON作为输入,但那不是我想要的工作流程。
1个回答

12

你错误地启动了状态机。

你需要添加另一个起始 Lambda 函数,使用 SDK 调用状态机。过程如下:

kinesis -> starter(lambda) -> StateMachine(启动 Lambda 1 和 Lambda 2)

使用 Step Function 的问题是缺乏触发器。只有 CloudWatch Events、SDK 或 API Gateway 这三个触发器。


谢谢,我已经以那种方式实现了,但我相信你的答案会帮助其他人。 - Hassan Jalil
现在您可以从IoT规则触发步骤函数。我不知道是否还有其他新的触发器... - Cecile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接