2017-06-06 2 views
2

Sie können Ihre serverlose Anwendung problemlos mit dem Serverless Framework und dem Serverless Offline Plugin debuggen, wenn Sie nur einen haben, aber wie gehen Sie mit mehreren API Gateways/Diensten um?Serverless Offline: Mehrere API-Gateways behandeln

Sollte ich serverless offline für jeden Dienst ausführen, mit einem anderen Port in jedem .yml konfiguriert?
und Hardcode, dass Port in den Umgebungsvariablen, so dass ich auf diesen Port zugreifen kann, wenn process.env.offline wahr ist?

+0

Es scheint, dass 'serverless-offline' standardmäßig Anfragen an 'http: // localhost: 3000' proxyt und Anfragen mit mehreren Endpunkten/Funktionen behandelt werden. Aber es hört sich an, als hättest du etwas anderes vor - kannst du deine 'serverless.yml' postulieren? Ich kenne die Antwort auf diese Frage nicht wirklich, da dies ein sehr blutendes Projekt ist, aber ich könnte vielleicht ein paar Dinge durchsprechen. – killthrush

+0

Ich hatte mehrere Dienste/.ymls: so unterschiedliche API-Gateways, die auf verschiedenen Servern laufen mussten. – gr3g

Antwort

2

Wenn Sie zwei oder mehr serverlose API Gateways gleichzeitig lokal ausführen möchten, können Sie dies einfach mit dem Parameter tun.

Grundsätzlich öffnen zwei Kommandozeilen-Fenster und im ersten Fenster, gehen Sie zu Ihrem ersten Dienstverzeichnis und führt:

sls offline start --port 3001

im anderen Fenster, gehen Sie zu Ihrem zweiten Service und laufen:

sls offline start --port 3002

diese Weise werden Sie haben Sie zwei Dienste auf zwei Ports hören (in diesen Beispielen http://localhost:3001 und http://localhost:3002).

Es gibt einen Haken (zur Zeit), wenn Sie auch ohne Server-DynamoDB-local-Plugin verwenden:

Wenn Sie DynamoDB Plugin nicht dann Sie sind in Ordnung und jetzt aufhören zu lesen kann :)

DynamoDB Plugin die gleichen --port Parameter verwendet, und das verursacht java.net.BindException: Address already in use

dieses Problem Siehe: https://github.com/99xt/serverless-dynamodb-local/issues/135

T Er Workaround dafür ist serverless-offline-local Plugin in nur ein Service (wenn Sie zwei oder mehr haben) aktiviert zu halten.

Beispiel, In my-service-1 halten Sie alle DynamoDB config in serverless.yaml Datei und starten Sie diesen Dienst mit Standard-Port: sls offline start --migrate true. Im nächsten Service nennen wir es my-service-2 Sie entfernenserverless-dynamodb-local von plugins in serverless.yaml (es gibt keine Notwendigkeit für andere Änderungen) und dann können Sie den Service mit starten: sls offline start --port 3001.

Der erste Dienst wird DynamoDB starten und der zweite wird es verwenden können.

Verwandte Themen