【问题标题】:AWS Step Function's action startExecution doesn't start on mysql .query() callbackAWS Step Function 的操作 startExecution 未在 mysql .query() 回调上启动
【发布时间】:2017-07-07 12:57:40
【问题描述】:

我希望能够使用 mysql 查询的结果开始执行步进函数,但我无法让它工作。

我在 lambda 上使用 AWS-SDK,运行 nodejs 4.3 和 mysql 包。

我使用 AWS-SDK 轻松地开始执行 step-function,并将其包装在一个函数中:

function startExecution(){
    var AWS = require('aws-sdk');

    var stepfunctions = new AWS.StepFunctions();

    var params = {
      stateMachineArn: 'arn:aws:states:us-east-1:453687599700:stateMachine:Temp',
      input: '{"OrderID":266}',
      name: '00002'
    };

    stepfunctions.startExecution(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
}

在

下调用startExecution()
exports.handler = (event, context, callback) => {

完美运行。

但是,在mysql的connection.query的回调函数中调用同样的startExecution()不起作用:

connection.query('SELECT * FROM `books` WHERE `author` = "David"', function (error, results, fields) {
    startExecution(); //doesn't work :(
});

使用 console.log() 跟踪代码显示以下行:

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

好像被跳过了。

我们将非常感谢您的帮助!

非常感谢..

【问题讨论】:

  • 你能把整个函数贴出来吗?可能与 Lambda 在运行 startExecution() 之前退出或其他一些节点回调计时问题有关。

标签: mysql node.js aws-lambda aws-sdk-nodejs aws-step-functions


【解决方案1】:

您的 lambda 可能在 startExecution 完成之前完成。

试试这个语法:

const executeResult = await stepfunctions.startExecution(params).promise()

console.log('executeResult: ', executeResult)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多