2017-06-15 2 views
1

Ich bin der Aufbau einen Web-App mit AWS Lambda zu laden. Ich kann die App lokal laufen, aber wenn ich es auf AWS bereitstellen, die App ist nicht in der Lage statische Ressourcen zu laden.ausgefallenen Knoten Ressource (css/js) AWS Lambda Express

app.js

app.use(express.static(__dirname + '/public')); 
app.get('/', function(req, res) { 
    res.sendFile(path.join(__dirname + '/public/index.html')); 
}); 

und in meiner index.html, das ist, wie ich die Ressourcen Referenz

<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> 

Die Struktur meiner Verzeichnis ist

My App/ 
    |app.js 
    |index.js 
    |public/ 
    |index.html 
    |assets/ 
     |css/ 
     |js/ 

Basierend auf meine Forschung, sollte die App sitzen in einer Lambda-Funktion, die keine speziellen Berechtigungen benötigen diese Ressourcen zuzugreifen.

Antwort

0

Nachdem an meinem Cloudwatch-Protokolle suchen, erkannte ich, dass, wenn ich „/assets/css/bootstrap.css“ anfordern, wird die Lambda-Funktion nicht aufgerufen wird. Das hat mir geholfen zu erkennen, dass ich zuerst mein API-Gateway konfigurieren muss, um mit Proxies umzugehen. Standardmäßig haben die meisten API Gateways nur einen GET und POST unter "/". So aktivieren Sie eine Proxy-Ressource erstellen und eine get-Methode erstellen, die die Lambda-Funktion Ihr ausdrückliches App löst sitzt auf. Dadurch nimmt das gesamte API-Gateway Anforderungen innerhalb des Stammverzeichnisses entgegen.