ClaudiaJs 与多路由 ExpressJS 应用程序部署到 AWS Lambda 和 AWS API Gatewa



我有一个包含多个路由的 ExpressJS 项目

var app = new express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use('/car', car);
app.use('/bike', bike);
app.use('/bus', bus);
app.use('/train', train);
app.get('/',function(req,res){
res.render('layout', { title: 'app example' });
});
module.exports = app

我已经使用 ClaudiaJS 部署到 AWS Lambda,部署似乎有效。

之后,我将配置 AWS API 网关以在 Lambda 函数中调用不同的资源路径。我发现它适用于根路径"/",但是当我尝试从 API 网关调用不同的资源路径时,我在 API 网关中收到此错误:

"You do not have permission to perform this action"

此外,我在 Lambda 函数中收到此消息:

"The API with ID XXXXXXXXX does not include a resource with path /car having an integration arn:aws:lambda:myzone:XXXXXXXXXXXXX:function:functioname on the GET method."

目前是否可以使用 ClaudiaJS 甚至是 Lambda 函数中支持的配置(多个资源路径)来执行此操作?有经验吗?


更新 1:这似乎适用于 AWS Lambdas。请参阅此处:是否可以将 API 网关与 AWS lambda 中的节点路由连接?不确定克劳迪娅JS是否可以管理此用例


更新 2:ClaudiaJS 在他们的支持小组中确认 https://gitter.im/claudiajs/claudia 可以使用他们的产品将多路由 ExpressJS 应用程序部署到单个 AWS Lambda,并推荐我 https://livebook.manning.com/#!/book/serverless-apps-with-node-and-claudiajs/chapter-13/v-5/167 所以看起来我这边有一些配置/调用错误


更新 3:成功调用 2 条路由:

app.get('/test', function (req, res) {
res.send('Hello World test!');
});
app.get('/', function (req, res) {
res.send('Hello World!');
});

获取 {"消息": "内部服务器错误"} 用于在 EC2 上访问 MongoDB 的第三条路由。看起来是一个权限问题。

最后,这个问题与ClaudiaJS无关。

它只需要使用 EC2 的内部 IP,而不是外部 IP,如下所述 在 EC2 中从 Lambda 到 MongoDB 的权限无效

最新更新