【发布时间】:2019-06-20 15:47:01
【问题描述】:
我正在使用context.logStreamName 来识别 lambda 实例。并发设置为无保留。但是日志显示只有 50 个实例在工作。
我是不是误解了 logStream(pre logStream pre instance)?我从this blog得到信息
下面是我对应的代码:
let instances = {};
for (let i = 0; i < each_invokes; i++) {
lambda.invoke(params, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
// console.log(data);
let logs = Buffer.from(data.LogResult, 'base64').toString('utf8');
let instanceID = logs.match(new RegExp("\\$InstanceID: (.*?) \\$END", "ig"))[0].split(" ")[1];
if (instanceID) {
if (instances.hasOwnProperty(instanceID)) {
instances[instanceID] += 1
} else {
instances[instanceID] = 0
}
console.log(instanceID, instances[instanceID], 'StatusCode:', data.StatusCode);
} else {
console.log('missing instanceID:', data.StatusCode)
}
}
console.log(Object.keys(instances).length)
});
}
我在我的 lambda 函数上console.log(context.logStreamName) 并使用RegExp 扭曲实例 ID。
尾日志一直显示如下输出:
b4afda96edf04e07ab819589d298521d 3 StatusCode: 200
50
a1ef1f4b518d47398daedda434ddd48c 3 StatusCode: 200
50
8dedc647796545ada94770895a8b190a 3 StatusCode: 200
50
7c4f48d72de0486e86e47c76ed3269ec 3 StatusCode: 200
50
2aa1f0dc9b0440fcac3d3127d123edb8 3 StatusCode: 200
50
3d1abeb38e7a45a4b933b669ad0c12d7 3 StatusCode: 200
50
531883ce26ac43b9bb0976726a2e5aa6 3 StatusCode: 200
50
cb9d0611a2e24244bd9ee98967a768c2 3 StatusCode: 200
50
这是否意味着,AWS lambda 只能运行 50 个实例?如果是,如何增加 AWS Lambda 中的并发计数?
【问题讨论】:
-
我又看了你的代码。上面的代码好像不完整(需要
lambda、each_invokes和params)。上面的代码似乎是调用端代码。我们还需要 lambda 端代码。我们很乐意解决这个问题,请发布重现此问题所需的最少代码:stackoverflow.com/help/minimal-reproducible-example -
@Taterhead
lambda是this doc 声明的客户;each_invokes是并发请求次数,我设置为100;参数也可以通过前面提到的文档找到。 -
嘿@Bruce,上面列出的代码是故事的一半。我们还需要查看为您的 Lambda 函数列出的代码。在 AWS 上运行的代码。我们只需要最少的代码,这样我们就可以在 50 时重现它。
标签: node.js amazon-web-services aws-lambda