【问题标题】:Why doesn't my Lambda function start an execution on an AWS State Machine?为什么我的 Lambda 函数没有在 AWS 状态机上开始执行?
【发布时间】:2017-12-14 11:59:46
【问题描述】:

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

我相信我已经遵循了我可以在网上找到的所有建议,但无论我尝试了什么,Lambda 函数似乎总是超时(无论是从 API Gateway 调用还是自行测试),而且我在 CloudWatch 中没有任何错误可言,即使我已将 console.log 行移至函数中的几乎每个点。似乎stepfunctions.StartExecution 行实际上从未被调用过,但该函数也从未返回(无论回调是否在 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 的完全访问权限,所以我认为那里没有问题。

【问题讨论】:

  • 您是否有可能使用 3 秒的默认 Lambda 超时?您可以将超时设置为 1 到 300 秒之间的任何值。
  • 不,现在超时设置为 60 秒,但我已经多次设置为 300 秒,但均无济于事。

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


【解决方案1】:

我用于 Lambda 函数在状态机上开始执行的一个或全部 VPC/子网/安全组组合显然存在问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2015-03-17
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多