首页 > 解决方案 > Aws 将值从 Lambda 触发器传递到 Step Function

问题描述

使用 Lambda 函数触发 Step Function 时,如何获取触发它的函数的输出?

标签: amazon-web-servicesaws-lambdaaws-step-functions

解决方案


好的,所以如果您想将输入传递给 Step Function 执行(或者,更准确地说,您的 'State Machine'的执行),您只需input在调用时设置所述输入属性StartExecution(请参阅AWS 文档:开始执行

在您的情况下,这很可能是您的 lambda 在调用它的回调之前的最后一步。

如果它是一个 node js lambda,那就是它的样子

const AWS = require("aws-sdk");
const stepfunctions = new AWS.StepFunctions();

exports.myHandler = function(event, context, callback) {

    ... your function's code

    const params = {
       stateMachineArn: 'YOUR_STATE_MACHINE_ARN', /* required */
       input: 'STRINGIFIED INPUT',
       name: 'AN EXECUTION NAME (such as an uuid or whatever)'
    };
    stepfunctions.startExecution(params, function(err, data) {
       if (err) callback(err); // an error occurred
       else     callback(null, "some success message"); // successful response
    });

}

或者,如果您的有效负载太大,您可以将数据存储在 S3 或 DynamoDB 中,并将对它的引用作为状态机执行的输入传递给它。


推荐阅读