2

所以我试图在 Amazon AWS 中创建一个简单的管道。我想使用触发状态机的第一个 lambda 的流生成的数据执行步进函数

我想做的是跟随。

输入数据由 AWS Kinesis 流式传输

此 Kinesis 流用作 lambda1 的触发器,该触发器执行并写入 S3 存储桶。

这将触发(使用阶跃函数)一个 lambda2,该 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 存储桶,Step 函数也不会执行任何操作。我可以选择手动启动新的执行并将 JSON 作为输入传递,但这不是我正在寻找的工作流程

4

1 回答 1

11

你做错了启动状态机。

您需要添加另一个 Starter Lambda 函数才能使用 SDK 调用状态机。过程是这样的:

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

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

于 2017-09-01T20:28:16.157 回答