通过步骤函数执行 lambda 时出错
Getting Error while executing lambda through step functions
我正在执行步骤函数。但是,我在执行一个状态时遇到错误。
它给出 错误:Lambda.Unknown 原因:无法确定原因,因为 Lambda 没有 return 错误类型。
我的 lambda 函数调用外部网络服务。我不想等到收到网络服务响应。
我们可以 return 函数中的数据而不等待网络服务响应吗??
我的 Lambda 函数
var http = require('http');
exports.handler = (event, context, callback) => {
var inputJson= {};
inputJson.firstname= event.firstname;
inputJson.lastname= event.lastname;
inputJson.workspacename= event.workspacename;
inputJson.customermailid= event.customermailid;
inputJson.mobilenumber= event.mobilenumber;
inputJson.orgname= event.orgname;
inputJson.sessionid= event.sessionid;
var post_data = JSON.stringify({
"domainname" : inputJson.domainname,
"orgname" : inputJson.orgname,
"customermailid" : inputJson.customermailid,
"adminmailid":"postmaster@test.int",
"product":3
});
// An object of options to indicate where to post to
var post_options = {
host: 'host_ip',
path: 'path',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};
// Set up the request
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
});
post_req.on('error', function (event) {
console.log('Response: Error=' + event);
callback(null, inputJson);
});
// post the data
post_req.write(post_data);
post_req.end();
callback(null, inputJson);
};
您可以,但它可能不会给出您期望的结果。特别是您的 post 错误处理。但是,如果您希望 Lambda return 不等待您的 post 响应。您可以设置:context.callbackWaitsForEmptyEventLoop = false
以下仅回答上述问题:错误:Lambda.Unknown原因:无法确定原因,因为 Lambda 没有 return 错误类型。
Standard Workflows guarantee exactly one execution of each workflow step, with a maximum duration of one year.
这来自 Step 函数 文档。这意味着调用 Lambda 函数 的步骤有将近 1 年的超时时间。而如果您看到 Lambda 函数,则有一个超时选项。
现在,如果您的 lambda 函数有超时,比如 X 秒 并且 Lambda 函数 的任务需要超过 X 秒 然后你的 lambda 将超时并且不会 return 任何响应返回到 Step 函数 。这也会产生您提到的上述错误!
但我相信你已经知道这些了,因为已经 2 年零 6 个月了...... :v :v
我正在执行步骤函数。但是,我在执行一个状态时遇到错误。
它给出 错误:Lambda.Unknown 原因:无法确定原因,因为 Lambda 没有 return 错误类型。
我的 lambda 函数调用外部网络服务。我不想等到收到网络服务响应。
我们可以 return 函数中的数据而不等待网络服务响应吗??
我的 Lambda 函数
var http = require('http');
exports.handler = (event, context, callback) => {
var inputJson= {};
inputJson.firstname= event.firstname;
inputJson.lastname= event.lastname;
inputJson.workspacename= event.workspacename;
inputJson.customermailid= event.customermailid;
inputJson.mobilenumber= event.mobilenumber;
inputJson.orgname= event.orgname;
inputJson.sessionid= event.sessionid;
var post_data = JSON.stringify({
"domainname" : inputJson.domainname,
"orgname" : inputJson.orgname,
"customermailid" : inputJson.customermailid,
"adminmailid":"postmaster@test.int",
"product":3
});
// An object of options to indicate where to post to
var post_options = {
host: 'host_ip',
path: 'path',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};
// Set up the request
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
});
post_req.on('error', function (event) {
console.log('Response: Error=' + event);
callback(null, inputJson);
});
// post the data
post_req.write(post_data);
post_req.end();
callback(null, inputJson);
};
您可以,但它可能不会给出您期望的结果。特别是您的 post 错误处理。但是,如果您希望 Lambda return 不等待您的 post 响应。您可以设置:context.callbackWaitsForEmptyEventLoop = false
以下仅回答上述问题:错误:Lambda.Unknown原因:无法确定原因,因为 Lambda 没有 return 错误类型。
Standard Workflows guarantee exactly one execution of each workflow step, with a maximum duration of one year.
这来自 Step 函数 文档。这意味着调用 Lambda 函数 的步骤有将近 1 年的超时时间。而如果您看到 Lambda 函数,则有一个超时选项。
现在,如果您的 lambda 函数有超时,比如 X 秒 并且 Lambda 函数 的任务需要超过 X 秒 然后你的 lambda 将超时并且不会 return 任何响应返回到 Step 函数 。这也会产生您提到的上述错误!
但我相信你已经知道这些了,因为已经 2 年零 6 个月了...... :v :v