【发布时间】:2020-07-29 02:26:27
【问题描述】:
我的 Lambda 函数在调用 API 时有时返回错误。 (Lambda 会同时调用 2 个不同的 API)
非常有趣的是,我在启动 API 调用之前放置了一些 console.log,但是当 Lambda 启动时,它会立即返回错误,而不会打印任何日志并得到 2 种类型的错误:
{
“errorType”: “Runtime.UnhandledPromiseRejection”,
“errorMessage”: “Error: socket hang up”,
“trace”: [
“Runtime.UnhandledPromiseRejection: Error: socket hang up”,
” at process.<anonymous> (/var/runtime/index.js:35:15)“,
” at process.emit (events.js:310:20)“,
” at processPromiseRejections (internal/process/promises.js:209:33)“,
” at processTicksAndRejections (internal/process/task_queues.js:98:32)”
]
}
{
“errorType”: “Runtime.UnhandledPromiseRejection”,
“errorMessage”: “Error: Client network socket disconnected before secure TLS connection was established”,
“trace”: [
“Runtime.UnhandledPromiseRejection: Error: Client network socket disconnected before secure TLS connection was established”,
” at process.<anonymous> (/var/runtime/index.js:35:15)“,
” at process.emit (events.js:310:20)“,
” at processPromiseRejections (internal/process/promises.js:209:33)“,
” at processTicksAndRejections (internal/process/task_queues.js:98:32)”
]
}
注意1:API 是另一个 Lambda 函数,在 Api Gateway 中具有相同的域和代理,但我检查了 API 始终按预期返回数据。
注意 2: 基于此错误,CloudWatch 中没有任何日志。
注意3: Lambda 在 Node v12 上运行,RAM 超过 3000 MB,超时时间为 60 秒。
注意 4:我评论了 2 个 API 之一,现在出现以下错误:
{
"errorType": "Runtime.UnhandledPromiseRejection",
"errorMessage": "Error: read ECONNRESET",
"trace": [
"Runtime.UnhandledPromiseRejection: Error: read ECONNRESET",
" at process.<anonymous> (/var/runtime/index.js:35:15)",
" at process.emit (events.js:310:20)",
" at processPromiseRejections
(internal/process/promises.js:209:33)",
" at processTicksAndRejections
(internal/process/task_queues.js:98:32)"
]
}
处理程序:
'use strict'
console.log("in APP 1");
const awsServerlessExpress = require('aws-serverless-express');
console.log("APP 2");
//express app
const app = require('./start-server');
console.log("in APP 3");
const binaryMimeTypes = [
'application/json',
'text/html',
];
console.log("in APP 4");
const server = awsServerlessExpress.createServer(app,null,binaryMimeTypes);
console.log("in APP 5");
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context)
注5:
我总是可以访问 API bu url(正如我现在测试的那样,响应没有问题,但可能在 10 分钟后 返回错误,谁知道)但我开始在 AWS 面板中的 Api 网关中进行测试,有时开始出现以下错误:
转换前的端点响应正文:{"Message":null}
我不确定 Lambda 是否是一个稳定的平台。
在这个 Lambda 中,我使用 ExpressJS 并使用 Sequelize 作为 ORM。
【问题讨论】:
标签: aws-lambda aws-api-gateway aws-certificate-manager