带有Lambda的Amazon Step Function,从Kinesis获取触发器

Has*_*lil 2 amazon-s3 amazon-kinesis aws-lambda aws-step-functions

所以我想在Amazon AWS中创建一个简单的管道.我想使用由流生成的数据执行步骤函数,该流触发状态机的第一个lambda

我想做的是跟随.

输入数据由AWS Kinesis流式传输

此Kinesis流用作执行和写入S3 Bucket的lambda1的触发器.

这将触发(使用步骤函数)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
        }  
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是,Kinesis应该触发第一个Lambda,一旦执行了step函数就会执行lambda 2.这似乎不会发生.即使从流中触发我的Lambda 1并写入S3存储桶,步骤功能也不会执行任何操作.我可以选择手动启动新执行并传递JSON作为输入,但这不是我正在寻找的工作流程

Con*_*ang 9

你做错了开机状态机.

您需要添加另一个Starter Lambda函数以使用SDK来调用State Machine.过程是这样的:

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

使用Step Function的问题是缺少触发器.只有3个触发器是CloudWatch Events,SDK或API Gateway.