我正在使用AWS Lambda构建一个Web应用程序。我可以在本地运行应用程序,但是当我在AWS上部署它时,应用程序无法加载静态资源。
app.js
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/public/index.html'));
});
在我的index.html中,这就是我引用资源的方式
<link href="assets/css/bootstrap.css" rel="stylesheet">
<link href="assets/css/gradients.css" rel="stylesheet">
<script src="assets/js/angular.min-1.4.7.js"></script>
我的目录结构是
My App/
|app.js
|index.js
|public/
|index.html
|assets/
|css/
|js/
根据我的研究,让app坐在lambda函数中不需要特殊权限来访问这些资源。
答案 0 :(得分:-1)
在查看我的CloudWatch日志后,我意识到当我请求“/assets/css/bootstrap.css”时,不会调用lambda函数。这帮助我意识到我首先需要配置我的API网关来处理代理。默认情况下,大多数API网关只有“/”下的GET和POST。要启用,请创建代理资源并创建一个get方法,以触发您的快速应用程序所在的lambda函数。这将使您的所有API网关在根目录中获取请求。