无法在AWS Lambda中运行AWS StepFunctions



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

下面是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对步骤函数有完全访问权。

你知道怎么解决吗?

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

我认为这可能与回调和async的混合有关。因为你没有在任何地方使用await处理程序,我会尝试从处理程序中删除async

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

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

相关内容

  • 没有找到相关文章

最新更新