一次调用在无服务器中获取两步函数执行 [AWS]

Getting Two Step Function Executions in serverless for one call [AWS]

我正在使用无服务器框架和步骤函数,我有一个由 s3 对象上传触发的 lambda 函数,然后该 lambda 被编程为启动状态机执行,但每次我上传一些文件时它总是显示两次处决。

serverless.yml

plugins:
  - serverless-step-functions

provider:
   iamManagedPolicies:
       - arn:aws:iam::aws:policy/AWSStepFunctionsFullAccess

iamRoleStatements:
  - Effect: "Allow"
    Action:
      - states:*
    Resource: "*"

functions:
  init:
    handler: src/functions/main/handler.startStepFunction
    events:
      - s3:
          bucket: ${IMAGE_BUCKET_NAME}
          event: s3:ObjectCreated:*

函数

module.exports.startStepFunction = async event => {
  // start the step function with event parameter
  const params = {
    stateMachineArn: `${STATE_MACHINE}`,
    input: JSON.stringify(event)
  };

  const functionPromise = stepfunctions.startExecution(params, function(err, data) {
    if (err) console.log(err, err.stack);
    else     console.log(data);
  }).promise();

  await functionPromise;
};

单个文件上传执行(两次成功执行均为一个文件上传)

我不确定为什么会发生这样的事情,我错过了什么或者让它表现得很奇怪?提前致谢。

问题出在这些行中:

const functionPromise = stepfunctions.startExecution(params, function(err, data) {
    if (err) console.log(err, err.stack);
    else     console.log(data);
  }).promise();

我承诺了 startExecution 函数以及回调,

正确的代码应该是下面这样,

const functionPromise = stepfunctions.startExecution(params).promise();