使用 AWS Lambda 进行 Fastify
Fastify with AWS Lambda
我正在努力 Node.JS API 在 aws-lambda-fastify
.
的帮助下作为 AWS Lambda 在 fastify 运行 上完成
我已经到了可以在路由内做事的地步,比如连接到我的数据库等。但是,当我到达 res.send()
时,奇怪的事情发生了。
我的 lambda 只是 fastify lambda 包的基本示例。
const awsLambdaFastify = require('aws-lambda-fastify');
const app = require('./index');
const proxy = awsLambdaFastify(app);
exports.handler = proxy;
为了调试正在发生的事情,我在我的一条路线中添加了一些控制台语句,例如:
console.log('res.send():', res.send);
console.log('results:', filteredResults);
res.send(filteredResults);
在 CloudWatch 中,我看到:
INFO res.send(): [Function]
INFO results: [
{
id: 8,
address: 'Innsbruck Strasse',
city: 'Park City',
state: 'UT',
zip: '84098',
country: 'US',
},
...
{
id: 9,
address: '1000 5th Ave',
city: 'New York',
state: 'NY',
zip: '10028',
country: 'US',
}]
当我通过 API 网关访问该端点时,出现 502 错误。所有其他路线都有同样的问题。
我使用无服务器部署。有一个带有通配符的路由指向一个 lambda 处理程序,例如:
events:
- http:
path: /{any+}
method: ANY
cors: true
我还有一个资源文件 - api-gateway-errors.yml
,我可能根本不需要它。
相同的代码 [减去 aws lambda 代理] 在 Docker 和 physical/virtual 主机中工作正常 运行。
编写 lambda 的简单方法未包含在代理文档中。基本上,只需将其写为:
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
proxy(event, context, callback);
}
这样,回调就不会等待,lambda 也不会 time-out。 API 网关随后不会发送 502 代码。
我正在努力 Node.JS API 在 aws-lambda-fastify
.
我已经到了可以在路由内做事的地步,比如连接到我的数据库等。但是,当我到达 res.send()
时,奇怪的事情发生了。
我的 lambda 只是 fastify lambda 包的基本示例。
const awsLambdaFastify = require('aws-lambda-fastify');
const app = require('./index');
const proxy = awsLambdaFastify(app);
exports.handler = proxy;
为了调试正在发生的事情,我在我的一条路线中添加了一些控制台语句,例如:
console.log('res.send():', res.send);
console.log('results:', filteredResults);
res.send(filteredResults);
在 CloudWatch 中,我看到:
INFO res.send(): [Function]
INFO results: [
{
id: 8,
address: 'Innsbruck Strasse',
city: 'Park City',
state: 'UT',
zip: '84098',
country: 'US',
},
...
{
id: 9,
address: '1000 5th Ave',
city: 'New York',
state: 'NY',
zip: '10028',
country: 'US',
}]
当我通过 API 网关访问该端点时,出现 502 错误。所有其他路线都有同样的问题。
我使用无服务器部署。有一个带有通配符的路由指向一个 lambda 处理程序,例如:
events:
- http:
path: /{any+}
method: ANY
cors: true
我还有一个资源文件 - api-gateway-errors.yml
,我可能根本不需要它。
相同的代码 [减去 aws lambda 代理] 在 Docker 和 physical/virtual 主机中工作正常 运行。
编写 lambda 的简单方法未包含在代理文档中。基本上,只需将其写为:
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
proxy(event, context, callback);
}
这样,回调就不会等待,lambda 也不会 time-out。 API 网关随后不会发送 502 代码。