当前位置: 首页 > 知识库问答 >
问题:

带有多路由ExpressJS应用程序部署到AWS Lambda和AWS API Gateway的ClaudiaJs

侯善
2023-03-14

我有一个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来说似乎是可能的。看到这里:在AWS lambda中有没有可能把API gateway和节点路由连接起来?不确定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的第三个路由的{"message ":"内部服务器错误" }。看起来是权限问题。

共有1个答案

柴凌
2023-03-14

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

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

 类似资料:
  • 我已经构建了一个Springboot应用程序,其中包括AngLuar5。我有一个gradle构建脚本,它将angular文件加载到我的springboot项目中,这些文件位于springboot项目的resources/static下。当我启动我的应用程序时,angular的路由不再工作,我得到了 错误:无法匹配任何路由。URL段:“访问” 我的项目结构: 如果我打字 www.mysite.com

  • 我想部署两个应用程序foo。war和条形图。war到同一个Tomcat实例。他们是否可以侦听不同端口上的连接,例如,foo侦听端口81,bar侦听端口82?如果是,我如何配置?我意识到应用程序没有必要监听不同的端口,但这正是我想要实现的。 此外,如果我将重命名为,使其在根上下文中运行,那么对该Tomcat实例的所有请求都将由foo应用程序处理,因此bar必须部署到单独的Tomcat实例,这是否正确

  • 我正在使用spring cloud路由应用程序,但无法这样做,下面是详细信息 我还尝试将路径添加为

  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 我有一个小难题来解决这个问题。 我有一个用户和一个管理员角色。 用户应该能够列出除管理员以外的所有用户。管理员可以列出所有用户。 我想到的第一个解决方案是检查控制器级别的角色: 但是我更想做的是在路线层面上,保持控制器更干净,但不知何故它确实起作用了。它只列出用户,即使我作为管理员登录。 有什么建议吗?谢谢!

  • 问题内容: 我正在尝试在Heroku上使用Flask开发我的第一个“大型”应用程序,并尝试将此处的基本教程与以下说明结合:https : //devcenter.heroku.com/articles/python与以下说明:http:// flask.pocoo.org/docs/patterns/packages/#larger- applications。它在本地与“先行启动”一起工作,但是