3つのラムダ関数を連鎖させ、手動で実行を作成するときに完璧に動作するAWSステップ関数ステートマシンを設定しました。 API Gatewayからの入力を受け取り、ステップ関数に渡したいものを渡し、新しい実行を開始するために4番目のラムダ関数を作成しました。ラムダ関数がAWS状態マシンで実行を開始しないのはなぜですか?
私はこれについてオンラインで見つけることができるすべてのアドバイスに従ったと信じていますが、何を試しても、ラムダ関数は常に(API Gatewayから呼び出されてもテストされたとしても)私はconsole.logの行を関数のほぼすべての点に移動したにもかかわらず、CloudWatchには何の誤りもない。 stepfunctions.StartExecution
行は決して実際には呼び出されないように見えますが、関数は決して返されません(callbackがstepfunctionブロック内にあるかどうかにかかわらず)。
は、ここでラムダ関数です:
'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);
});
};
また、ラムダIAMロールにはAWSのステップ機能へのフルアクセス権を持っているので、私はそこに問題があるとは思いません。
デフォルトのLambdaタイムアウトを3秒間使用している可能性はありますか? タイムアウトを1〜300秒の任意の値に設定できます。 – jarmod
いいえ、タイムアウトは現在60秒に設定されていますが、何回も使用しないように数回設定しています。 –