为什么我的 Lambda 函数不在 AWS 状态机上开始执行?

Why doesn't my Lambda function start an execution on an AWS State Machine?

我已经设置了一个 AWS Step Function 状态机,它链接 3 个 lambda 函数并且在我手动创建执行时运行得非常好。我创建了第四个 lambda 函数以从 API Gateway 获取输入,将我想要的内容传递给 Step Function 并开始新的执行。

我相信我已经遵循了我可以在网上找到的所有建议,但无论我尝试了什么,Lambda 函数似乎总是超时(无论是从 API 网关调用还是自行测试),我在 CloudWatch 中没有任何错误可言,即使我已经将 console.log 行移动到函数中的几乎每个点。看起来 stepfunctions.StartExecution 行似乎从未真正被调用过,但该函数也从未 returns 过(无论回调是否在 stepfunction 块内),所以我被打败了办公桌。

这是 Lambda 函数:

'use strict';
const AWS = require('aws-sdk');
const moment = require('moment');

exports.postArchive = (event, context, callback) => {
    const parsedInput = JSON.parse(event.body);
    const stepInput = JSON.stringify({ "thingId": parsedInput.thingId });
    const rightNow = moment().format('YYYYMMDD-hhmmss');
    const params = {
        stateMachineArn: 'arn:aws:states:us-east-1:ACCOUNT_ID:stateMachine:create-archive',
        input: stepInput,
        name: `ArchiveAt${rightNow}`
    };
    console.log(JSON.stringify(params));
    const stepfunctions = new AWS.StepFunctions({apiVersion: '2016-11-23'});

    stepfunctions.startExecution(params, function (err, data) {
        if (err) {
            console.log(err, err.stack);
            callback(err, null);
            return;
        }
        const response = {
            statusCode: 200,
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({
                message: "State Machine started successfully.",
                result: data
            })
        };
        callback(null, response);
     });
};

此外,Lambda IAM 角色具有对 AWS Step Functions 的完全访问权限,因此我认为这没有问题。

我用于 Lambda 函数在状态机上开始执行的 VPC/Subnets/Security 组组合中的一个或全部显然有问题。

我找不到任何关于此的文档,所以我可能错了或遗漏了什么,但这对我有用。这可能没问题,因为我仍然可以 运行 所有实际与私有子网内的数据库交互的函数,并将它们链接到 Step Functions 中。