首页 > 解决方案 > 如何从 Node.js Lambda 函数调用 step 函数?

问题描述

我正在尝试从 Node.js lambda 函数调用 step 函数。我从这个线程尝试了解决方案并更新了实现。

显示错误响应但更新的代码显示成功响应的解决方案。但是更新后的代码没有调用 step 函数。

我的代码:


console.log('Loading function');
const AWS = require('aws-sdk');
exports.handler = function(event, context) {
    console.log('Loading step functions');
    const stepFunctions = new AWS.StepFunctions({
    region: 'us-east-2'
});
console.log('Loading init');
module.exports.init = (event, context, callback) => {
console.log('Loading params');
const params = {
        stateMachineArn: 'ARN of My State Machine',
        // input: JSON.stringify({}), Optional if your statemachine requires an application/json input, make sure its stringified 
        name: 'TestExecution' // name can be anything you want, but it should change for every execution
    };

console.log('start step functions');
stepFunctions.startExecution(params, (err, data) => {
        if (err) {
            console.log(err);
            const response = {
                statusCode: 500,
                body: JSON.stringify({
                    message: 'There was an error'
                })
            };
            callback(null, response);
        } else {
            console.log(data);
            const response = {
                statusCode: 200,
                body: JSON.stringify({
                    message: 'Step function worked'
                })
            };
            callback(null, response);
            console.log(response);
        }
    });
    };
};

我已经在 Lambda 函数中添加了上述代码并部署了这些代码。之后,我使用了 lambda 函数的 Test 选项。这是执行 Lambda 函数的正确方法吗?测试结果是成功,但是当我检查状态机时,最近没有执行。帮我找到解决方案,我对步进功能很陌生。提前致谢。

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

解决方案


以下是我所做的事情:

  • 创建了 lambda 并在lambda role
  • 创建了类型的阶跃函数(只是一个你好世界)standard。在创作时,我选择ALL LogsCloudWatch Log Group. 甚至它们也显示在step function控制台中,如下所示Logging

下面是我调用 step 函数的代码:

var aws = require('aws-sdk')
exports.handler = (event, context, callback) => {
  var params = {
    stateMachineArn: 'arn:aws:states:us-east-1:1234567890:stateMachine:Helloworld',
    input: JSON.stringify({})
  };
  var stepfunctions = new aws.StepFunctions()
  stepfunctions.startExecution(params, (err, data) => {
    if (err) {
    console.log(err);
    const response = {
        statusCode: 500,
        body: JSON.stringify({
        message: 'There was an error'
        })
    };
    callback(null, response);
    } else {
    console.log(data);
    const response = {
        statusCode: 200,
        body: JSON.stringify({
        message: 'Step function worked'
        })
    };
    callback(null, response);
    }
});
}

Lambda 执行日志

在此处输入图像描述

Step Function 执行日志

在此处输入图像描述


推荐阅读