2017-10-09 4 views
0

Ich habe Stage-Variablen definiert unter AWS API GATEWAY.Zugriffsstufenvariablen - AWS API-Gateway

Ich möchte auf die Werte, die ich für diese definiert habe, in dem in Scala geschriebenen Request-Handler zugreifen. Gemäß der AWS-API-Gateway-Konsole kann auf die Stage-Variablen mit dem Objekt $ context zugegriffen werden.

Stage variables through context

Die Dokumentation des Kontextobjekts vorhanden ist here aber nicht definieren, wie die Stufe Variablen in der handle Methode zu verwenden.

override def handleRequest(input: java.util.Map[java.lang.String, Object], context: Context): util.Map[String, _] = { 
    context.getLogger.log("Input: " + input + " \n") 
    // How do I access the Stage variable here? 
} 
+0

Haben Sie versucht, Überprüfung der Inhalt von 'context' Objekt? – Can

+0

@Can Wie mache ich das? Ich bin mit Scala noch relativ neu. – Vaulstein

Antwort

2

Sie können Body-Mapping-Vorlage in der Integration Anforderungsabschnitt verwenden und eine JSON wie die Probe erstellen unter Stufe Variable zu erhalten.

#set($inputRoot = $input.path('$')) 
{ 
"version" : "$stageVariables.version" 
} 

Quelle: - http://docs.aws.amazon.com/apigateway/latest/developerguide/amazon-api-gateway-using-stage-variables.html#call-api-lambda-backend-with-stage-variable

Wenn Sie über Body-Mapping-Vorlage sicher sind, haben Sie bitte einen Blick auf https://aws.amazon.com/blogs/compute/tag/mapping-templates/

0

Vijayanath Antwort ist eine einfache Art und Weise zu erreichen, was erforderlich ist.

Wenn Sie es in einer programmatisch Art und Weise und ohne die Notwendigkeit zu tun, wollen die stageVariables von der Konsole zu ändern dann würde ich vorschlagen Swagger API Integration über die Bühne Variablen zu handhaben.

Sie erreichen dies die json Vorlagen wie hier definiert - AWS labs Swagger Api und durch die folgenden Zeilen unter x-amazon-apigateway-integration Zugabe

"requestTemplates": { 
    "application/json": "#set($inputRoot = $input.path('$')) \n{ \n \"version\" : \"$stageVariables.version\" \n}" 
    } 

So ist die gesamte JSON-Datei wäre:

"x-amazon-apigateway-auth" : { 

    "type" : "aws_iam" 
}, 
"x-amazon-apigateway-integration" : { 
    "type" : "aws", 
    "uri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:MY_ACCT_ID:function:helloWorld/invocations", 
    "httpMethod" : "POST", 
    "credentials" : "arn:aws:iam::MY_ACCT_ID:role/lambda_exec_role", 
    "requestTemplates": { 
"application/json": "#set($inputRoot = $input.path('$')) \n{ \n \"version\" : \"$stageVariables.version\" \n}" 
}, 
    "requestParameters" : { 
     "integration.request.path.integrationPathParam" :  "method.request.querystring.latitude", 
     "integration.request.querystring.integrationQueryParam" :  "method.request.querystring.longitude" 
    }, 
    "cacheNamespace" : "cache-namespace", 
    "cacheKeyParameters" : [], 
    "responses" : { 
     "2\\d{2}" : { 
      "statusCode" : "200", 
      "responseParameters" : { 
       "method.response.header.test-method-response-header" :  "integration.response.header.integrationResponseHeaderParam1" 
      }, 
      "responseTemplates" : { 
       "application/json" : "json 200 response template", 
       "application/xml" : "xml 200 response template" 
      } 
     }, 
     "default" : { 
      "statusCode" : "400", 
      "responseParameters" : { 
       "method.response.header.test-method-response-header" : "'static value'" 
      }, 
      "responseTemplates" : { 
       "application/json" : "json 400 response template", 
       "application/xml" : "xml 400 response template" 
      } 
     } 
    } 
} 
Verwandte Themen