ClaudiaJs使用多路线ExpressJS应用程序部署到AWS Lambda和AWS API Gateway

时间:2018-05-06 22:29:53

标签: express aws-lambda aws-api-gateway claudiajs claudia.js

我有一个包含多条路线的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 Gateway以调用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。请参阅此处:Is it possible to connect API gateway with node routes in AWS lambda?不确定ClaudiaJS是否可以管理此用例

更新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的第三个路由。查看权限问题。

1 个答案:

答案 0 :(得分:0)

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

只需要使用EC2的内部IP,而不是外部IP,如此处所述Invalid permission from Lambda to MongoDB in EC2