2017-09-16 2 views
1

Ich versuche die HTTP-Passthrough-Funktionalität im API-Gateway, indem ich eine Ressourcenmethode an eine andere API übergebe. Ich möchte die Pfadparameter von der API-Gateway-URL an die Back-End-API übergeben, die diese Pfadparameter ebenfalls benötigt.AWS-API-Gateway - HTTP-Passthrough-Pfadparameter

Ich habe das folgende einfache Swagger Dokument versucht, dies zu testen:

{ 
    "swagger": "2.0", 
    "info": { 
    "version": "2017-09-15T03:33:48Z", 
    "title": "api-gateway-http-test" 
    }, 
    "schemes": [ 
    "https" 
    ], 
    "paths": { 
    "/subresource/{name}": { 
     "get": { 
     "produces": [ 
      "application/json" 
     ], 
     "responses": { 
      "200": { 
      "description": "200 response", 
      "schema": { 
       "$ref": "#/definitions/Empty" 
      } 
      } 
     }, 
     "x-amazon-apigateway-integration": { 
      "uri": "http://my.web.service.url/subresource/{name}", 
      "passthroughBehavior": "when_no_match", 
      "httpMethod": "GET", 
      "type": "http_proxy", 
      "requestParameters": { 
      "integration.request.path.name": "method.request.path.name" 
      } 
     } 
     } 
    } 
    }, 
    "definitions": { 
    "Empty": { 
     "type": "object", 
     "title": "Empty Schema" 
    } 
    } 
} 

Als ich dies über Cloudformation zu API-Gateway versuchen bereitstellen, API-Gateway gibt mir diese Fehlermeldung:

Unable to put integration on 'GET' for resource at path '/subresource/{name}': 
Invalid mapping expression specified: 
Validation Result: 
warnings : [], errors : [Invalid mapping expression parameter specified: method.request.path.name] 

I habe online verschiedene Quellen angeschaut, und diese Art des Konfigurierens des "requestParameters" -Abschnitts scheint der empfohlene Weg zu sein, Pfadparameter an die Backend-API zu übergeben.

Was fehlt mir hier, dass dies nicht funktionieren würde?

+0

Haben die Antwort Ihr Problem gelöst? – Kannaiyan

+0

Ja das hat funktioniert, danke! Ich bin ziemlich neu bei Swagger, daher weiß ich immer noch nicht genau, welche Teile des Dokuments von API Gateway benötigt werden. – dsw88

Antwort

2

Es fehlen Parameterdefinitionen.

es Überprüfen Sie mit dem unten heraus,

{ 
    "swagger": "2.0", 
    "info": { 
    "version": "2017-09-15T03:33:48Z", 
    "title": "api-gateway-http-test" 
    }, 
    "schemes": [ 
    "https" 
    ], 
    "paths": { 
    "/subresource/{name}": { 
     "get": { 
     "produces": [ 
      "application/json" 
     ], 
     "parameters": [ 
      { 
      "name": "name", 
      "in": "path", 
      "required": true, 
      "type": "string" 
      } 
     ], 
     "responses": { 
      "200": { 
      "description": "200 response", 
      "schema": { 
       "$ref": "#/definitions/Empty" 
      } 
      } 
     }, 
     "x-amazon-apigateway-integration": { 
      "uri": "http://google.com/subresource/{name}", 
      "passthroughBehavior": "when_no_match", 
      "httpMethod": "GET", 
      "type": "http_proxy", 
      "requestParameters": { 
      "integration.request.path.name": "method.request.path.name" 
      } 
     } 
     } 
    } 
    }, 
    "definitions": { 
    "Empty": { 
     "type": "object", 
     "title": "Empty Schema" 
    } 
    } 
}