Grundlegende Anfragevalidierung in API Gateway einrichten - Amazon API Gateway

Grundlegende Anfragevalidierung in API Gateway einrichten

In der OpenAPI-Definitionsdatei einer API können Sie die Anfragevalidierung einrichten und dann die OpenAPI-Definitionen in API Gateway importieren. Sie können sie auch in der API-Gateway-Konsole oder durch Aufruf der API-Gateway-REST-API, die AWS-CLI oder über eines der AWS-SDKs einrichten. Hier wird gezeigt, wie dies mit einer OpenAPI-Datei, in der Konsole und unter Verwendung der API Gateway-REST-API geschieht.

Einrichten der grundlegenden Anforderungsvalidierung durch den Import der OpenAPI-Definition

In den folgenden Schritten wird beschrieben, wie Sie die grundlegende Anforderungsvalidierung durch das Importieren einer OpenAPI-Datei aktivieren.

So aktivieren Sie die Anfragevalidierung durch Importieren einer OpenAPI-Datei in API Gateway:
  1. Deklarieren Sie die Anfragevalidierung in der OpenAPI-Datei, indem Sie eine Reihe von x-amazon-apigateway-request-validators.requestValidator-Objekt-Objekten in dem Mapping x-amazon-apigateway-request-validators-Objekt auf API-Ebene angeben. Beispielsweise enthält die OpenAPI-Datei für eine Beispiel-API die Zuweisung x-amazon-apigateway-request-validators und die Validierungsnamen dienen als Schlüssel.

    OpenAPI 3.0
    { "openapi": "3.0.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "servers": [ { "url": "/{basePath}", "variables": { "basePath": { "default": "/v1" } } } ], "x-amazon-apigateway-request-validators": { "all": { "validateRequestBody": true, "validateRequestParameters": true }, "params-only": { "validateRequestBody": false, "validateRequestParameters": true } } }
    OpenAPI 2.0
    { "swagger": "2.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "schemes": [ "https" ], "basePath": "/v1", "produces": [ "application/json" ], "x-amazon-apigateway-request-validators" : { "all" : { "validateRequestBody" : true, "validateRequestParameters" : true }, "params-only" : { "validateRequestBody" : false, "validateRequestParameters" : true } }, ... }

    Den Validierungsnamen wählen Sie bei der Aktivierung der Validierung für die API oder die Methode aus (wie im nächsten Schritt ausgeführt).

  2. Zum Aktivieren einer Anfragevalidierung für alle Methoden einer API geben Sie die Eigenschaft x-amazon-apigateway-request-validator-Eigenschaft auf API-Ebene in der API-OpenAPI-Definitionsdatei an. Zum Aktivieren einer Anforderungsvalidierung für eine einzelne Methode geben Sie die Eigenschaft x-amazon-apigateway-request-validator auf Methodenebene an. Beispielsweise wird mit der Eigenschaft x-amazon-apigateway-request-validator die Validierung params-only für alle API-Methoden aktiviert (außer sie wird anderweitig außer Kraft gesetzt).

    OpenAPI 3.0
    { "openapi": "3.0.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "servers": [ { "url": "/{basePath}", "variables": { "basePath": { "default": "/v1" } } } ], "x-amazon-apigateway-request-validator": "params-only", ... }
    OpenAPI 2.0
    { "swagger": "2.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "schemes": [ "https" ], "basePath": "/v1", "produces": [ "application/json" ], ... "x-amazon-apigateway-request-validator" : "params-only", ... }

    Zum Aktivieren einer Anforderungsvalidierung für eine einzelne Methode geben Sie die Eigenschaft x-amazon-apigateway-request-validator auf Methodenebene an. Beispielsweise wird mit der Eigenschaft x-amazon-apigateway-request-validator die Validierung all für die POST /validation-Methode aktiviert. Dadurch wird die von der API geerbte Validierung params-only außer Kraft gesetzt.

    OpenAPI 3.0
    { "openapi": "3.0.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "servers": [ { "url": "/{basePath}", "variables": { "basePath": { "default": "/v1" } } } ], "paths": { "/validation": { "post": { "x-amazon-apigateway-request-validator": "all", ... } } } ... }
    OpenAPI 2.0
    { "swagger": "2.0", "info": { "title": "ReqValidation Sample", "version": "1.0.0" }, "schemes": [ "https" ], "basePath": "/v1", "produces": [ "application/json" ], ... "paths": { "/validation": { "post": { "x-amazon-apigateway-request-validator" : "all", ... }, ... } } ... }

  3. Erstellen Sie in API Gateway die API mit aktivierten Anfragevalidierern, indem Sie diese Beispiel-OpenAPI-Definition importieren:

    POST /restapis?mode=import&failonwarning=true HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170306T234936Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170306/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash} Copy the JSON object from this sample OpenAPI definition and paste it here.
  4. Stellen Sie die neu erstellte API (abcdef123) für eine bestimmte Stufe (testStage) bereit.

    POST /restapis/abcdef123/deployments HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170306T234936Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170306/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash} { "stageName" : "testStage", "stageDescription" : "Test stage", "description" : "First deployment", "cacheClusterEnabled" : "false" }

Anweisungen zum Testen der Anfragevalidierung mit der API Gateway-REST-API finden Sie unter Grundlegende Anfragevalidierung mit der API Gateway-REST-API testen. Anweisungen zum Testen mit der API Gateway-Konsole finden Sie unter Grundlegende Anfragevalidierung mit der API Gateway-Konsole testen.

Anfragevalidierer unter Verwendung der API Gateway-REST-API einrichten

In der API Gateway-REST-API wird ein Anfragevalidierer über eine Anfragevalidierer-Ressource dargestellt. Damit eine API die gleiche Anfragevalidierung unterstützt wie die Beispiel-API, fügen Sie der RequestValidators-Sammlung die Validierung "params-only" mit dem Schlüssel params-only und eine umfassende Validierung mit dem Schlüssel all hinzu.

So aktivieren Sie die grundlegende Anfragevalidierung mit der API Gateway-REST-API:

Es wird davon ausgegangen, dass Sie eine API ähnlich der Beispiel-API haben, für die noch keine Anforderungsvalidierung eingerichtet ist. Falls für Ihre API die Anforderungsvalidierung bereits aktiviert ist, rufen Sie die entsprechende Aktion requestvalidator:update oder method:put auf (anstelle von requestvalidator:create oder method:put).

  1. Zum Einrichten der Anfragevalidierung params-only rufen Sie wie folgt die Aktion requestvalidator:create auf:

    POST /restapis/restapi-id/requestvalidators HTTP/1.1 Content-Type: application/json Host: apigateway.region.amazonaws.com X-Amz-Date: 20170223T172652Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170223/region/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} { "name" : "params-only", "validateRequestBody" : "false", "validateRequestParameters" : "true" }
  2. Zum Einrichten der Anforderungsvalidierung all rufen Sie wie folgt die Aktion requestvalidator:create auf:

    POST /restapis/restapi-id/requestvalidators HTTP/1.1 Content-Type: application/json Host: apigateway.region.amazonaws.com X-Amz-Date: 20170223T172652Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170223/region/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} { "name" : "all", "validateRequestBody" : "true", "validateRequestParameters" : "true" }

    Falls die oben angegebenen Validierungsschlüssel bereits in der Zuordnung RequestValidators vorhanden sind, rufen Sie die Aktion requestvalidator:update auf, um die Validierungsregeln zurückzusetzen.

  3. Um die all-Anfragevalidierung für die POST-Methode zu übernehmen, rufen Sie method:put auf und aktivieren Sie die entsprechende Validierung (identifiziert von der Eigenschaft requestValidatorId) oder rufen Sie method:update auf und aktualisieren Sie die aktivierte Validierung.

    PUT /restapis/restapi-id/resources/resource-id/methods/POST HTTP/1.1 Content-Type: application/json Host: apigateway.region.amazonaws.com X-Amz-Date: 20170223T172652Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170223/region/apigateway/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash} { "authorizationType" : "NONE", ..., "requestValidatorId" : "all" }

Grundlegenden Anfragevalidierung über die API Gateway-Konsole einrichten

Über die API Gateway-Konsole können Sie die grundlegende Anfragevalidierung für eine Methode mit einem der drei Validierer einrichten:

  • Validate body: Dies ist die Validierung nur für den Text.

  • Validate query string parameters and headers: Dies ist die Validierung nur für die Parameter.

  • Validate body, query string parameters, and headers: Diese Validierung gilt für text und Parameter.

Wenn Sie eine der obigen Validierungen auswählen, um sie für eine API-Methode zu aktivieren, fügt die API Gateway-Konsole die Validierung zur Zuordnung RequestValidators der API hinzu (sofern sie dort noch nicht vorhanden ist).

So aktivieren Sie die Anforderungsvalidierung für eine Methode
  1. Melden Sie sich bei der API Gateway-Konsole an, falls Sie nicht bereits angemeldet sind.

  2. Erstellen Sie eine neue API oder wählen Sie eine vorhandene API aus.

  3. Erstellen Sie eine neue Ressource oder wählen Sie eine vorhandene Ressource für die API aus.

  4. Erstellen Sie eine neue Methode oder wählen Sie eine vorhandene Methode für die Ressource aus.

  5. Wählen Sie Method Request (Methodenanforderung).

  6. Wählen Sie das Stiftsymbol für Request Validator unter Settings.

  7. Wählen Sie Validate body, Validate query string parameters and headers oder Validate body, query string parameters, and headers aus der Dropdown-Liste Anforderungsvalidierung aus. Klicken Sie dann auf das Häkchen-Symbol, um Ihre Auswahl zu speichern.

Zum Testen und Verwenden der Anforderungsvalidierung in der Konsole folgen Sie den Anweisungen im Thema Grundlegende Anfragevalidierung mit der API Gateway-Konsole testen.