2016-03-19 1 views
2

Ich habe eine Bühnenvariable namens "Umgebung".In AWS API Gateway, Wie schließe ich einen Stage-Parameter als Teil der Ereignisvariable in Lambda (Node) ein?

Ich möchte es in einer POST Anfrage als Teil des JSON übergeben.

Beispiel:

Stufe Variablen

  • Umwelt: "Entwicklung"

JSON

{ 
    "name": "Toli", 
    "company": "SomeCompany" 
} 

event Variable aussehen sollte;

{ 
    "name": "Toli", 
    "company": "SomeCompany", 
    "environment": "development" 
} 

Bisher ist die beste, mit dem ich die folgenden Mapping-Vorlage kommen konnte (unter Integration Request):

{ 
    "body" : $input.json('$'), 
    "environment" : "$stageVariables.environment" 
} 

Dann in Knoten ich

exports.handler = function(event, context) { 
    var environment = event.environment; 
    // hack to merge stage and JSON 
    event = _.extend(event.body, { 
     environment : environment 
    }); 
    .... 
+0

, dass der offizielle Weg zu sein scheint, es zu tun : http://docs.aws.amazon.com/apigateway/latest/developerguide/amazon-api-gateway-using-stage-variables.html – TimoSolo

Antwort

1

Ihren Vorschlag der Verwendung Eine Zuordnungsvorlage zum Durchreichen der Variablen wäre die empfohlene Lösung für diesen Workflowtyp.

0

Sie können auch auf den Stufennamen im Objekt $context zugreifen.

Integration Anfrage:

{ 
    "environment" : "$context.stage" 
} 
2

Wenn Ihr API-Gateway-Methode Lambda Integration Proxy verwenden, alle Ihre Bühne Variablen werden über das event.stageVariables Objekt zur Verfügung.

Für das Projekt zur Zeit arbeite ich an, habe ich eine einfache Funktion, die in event.stageVariables über alle Eigenschaften geht und hängt sich an process.env (zB: Object.assign(process.env, event.stageVariables);)

+0

während trivial, war diese große Antwort sehr schwierig zu kommen .. 10x –

Verwandte Themen