【问题标题】:Unable to run AWS StepFunctions inside an AWS Lambda无法在 AWS Lambda 中运行 AWS StepFunctions
【发布时间】:2021-09-01 23:11:30
【问题描述】:

我正在尝试从 AWS Lambda 内部开始执行 AWS StepFunction,但结果我收到了 null,但没有错误消息。这里的 StepFunctions 是一个 Express 状态机,所以我使用 startSyncExecution(params = {}, callback) 的方法,正如 docs 中指出的那样。

这是 Lambda 的代码:

const AWS = require('aws-sdk');

exports.handler = async(event, context, callback) => {
    var params = {
        stateMachineArn: "arn:aws:states:us-east-1:[AccountID]:stateMachine:BookLectureStateMachine",
        input: JSON.stringify(event),
        name: "test-from-lambda"
    }
    
    var stepfunctions = new AWS.StepFunctions();

    console.log("Everything okay") //This one is logged

    stepfunctions.startSyncExecution(params, function(err, data) {

        console.log("This log isn't shown"); //This one isn't logged

        if (err) {
            callback(null, {
                statusCode: 400,
                body: err,
                headers: {
                    'Access-Control-Allow-Origin': '*'
                }
            })
        } else {
            callback(null, {
                statusCode: 200,
                body: 'Lecture booked',
                headers: {
                    'Access-Control-Allow-Origin': '*'
                }
            })
        }
    });
};

回复是null,没有别的。

我已经检查了权限,并且 Lambda 具有对 Step Functions 的完全访问权限。

你知道如何解决吗?

更新

  1. 我认为没有执行 StepFunction,因为日志是空的。
  2. 我将 Lambda 超时时间增加到 1 分钟,以避免出现超时情况。计费时长约为半秒

【问题讨论】:

  • 日志中还有其他内容吗?就像说函数超时?
  • 不,我将超时时间增加到一分钟以避免这种情况,并且它不会过期。我更新了问题
  • 我认为这可能与回调和async 的混合有关。由于您没有在任何地方的处理程序中使用await,我会尝试从处理程序中删除async。或者你可以尝试将代码更改为var data = await stepfunctions.startSyncExecution(params).promise()
  • @MarkB 删除 async 后它起作用了。将其发布为答案!

标签: node.js amazon-web-services aws-lambda aws-step-functions


【解决方案1】:

我相信这可能与回调和async 的混合有关。由于您没有在任何处理程序中使用await,我会尝试从处理程序中删除async

或者您可以尝试将代码更改为:

var data = await stepfunctions.startSyncExecution(params).promise()

【讨论】:

    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2016-10-27
    • 1970-01-01
    • 2021-12-17
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多