AWS Lambda调用函数(js sdk): timeout重置为默认值
AWS Lambda invoke function (js sdk): timeout resets to default
我正在运行一个在AWS Lambda上执行长时间操作的Meteor (Node 4.4.7)应用程序。我从代码中调用lambda函数,并在继续进行下一次调用之前等待响应。我将超时设置为300000ms,如前一个问题所述(在Lambda和AWS上)。Lambda对象).
我的问题是,有时AWS.Lambda
超时值重置为默认值120000ms。因为我的Lambda函数需要更多的时间来执行(但仍然少于最大的300秒),所以我没有收到响应。此外,我看到,根据默认的maxRetries
值,我的函数被调用了3次以上,即使我将其设置为1。
AWS.Lambda
对象的属性,它仍然有300000ms超时间值,尽管它的行为就像它有默认的120000ms值。一旦发生这种情况,所有后续的调用请求都有同样的问题,我必须重新启动应用程序使其再次工作。
请注意,在Lambda日志中,我看到函数正在正确执行。持续时间& lt;120在我的代码中返回。持续时间大于120秒的重试
示例代码:var options = {
maxRetries: 1,
httpOptions: {
timeout: 300000
}
};
var lambda = new AWS.Lambda(options);
var myEventObject = {...};
var payload = JSON.stringify('myEventObject');
var params = {
FunctionName: 'myLambdaFunction'
InvocationType: 'RequestResponse',
LogType: 'None',
Payload: payload
};
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
在我尝试过的事情中:为每个调用创建一个new AWS.Lambda()
。
根据SDK文档,AWS中的httpOptions.timeout
键。Lambda不是函数超时-它是套接字超时。这是有道理的,因为Lambda函数的默认超时是3秒,而不是2分钟。
您可以使用updateConfiguration方法在代码中更改函数超时。或者,如果您使用无服务器框架来部署Lambda函数,则可以在Serverless .yml中设置超时。当然,您总是可以在AWS控制台中设置超时(当我使用Serverless/CloudFormation部署时,我在控制台中设置的配置被清除了,但我不知道您是如何部署的-如果您只是阅读S3代码或上传ZIP,这应该不是问题)。
需要设置调用lambda的lambda的超时时间。调用,而不是在lambda上。调用自己(就像你对options
所做的那样)。
因此,如果您有LambdaA
调用LambdaB
, LambdaA
的超时必须与LambdaB
的超时相同(或高于),否则LambdaA
可能会在LambdaB完成之前超时。
我假定您提供的代码在lambda中运行。您需要在上设置 lambda的超时时间。
用于创建AWS的options
。Lambda可以在这里提供的代码中被丢弃。
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- Selectize选择默认值
- 在KeystoneJS中为Types.Money设置默认值
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 防止在IE7中按回车键时出现默认值
- 如何覆盖jqGrid's语言默认值
- 如何为显示jquery滑块值的文本框设置默认值
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- AWS Lambda调用函数(js sdk): timeout重置为默认值