带有Lambda的亚马逊步骤功能从Kinesis

时间:2017-08-19 19:27:13

标签: amazon-s3 aws-lambda amazon-kinesis 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
        }  
    }
}

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

1 个答案:

答案 0 :(得分:8)

你做错了启动状态机。

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

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

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