所以我试图在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作为输入,但这不是我正在寻找的工作流程
答案 0 :(得分:8)
你做错了启动状态机。
您需要添加另一个Starter Lambda函数以使用SDK来调用State Machine。过程是这样的:
kinesis - >起动器(lambda) - > StateMachine(启动Lambda 1和Lambda 2)
使用Step Function的问题是缺少触发器。只有3个触发器是CloudWatch Events,SDK或API Gateway。