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.
Themen
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:
-
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.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).
-
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 Eigenschaftx-amazon-apigateway-request-validator
die Validierungparams-only
für alle API-Methoden aktiviert (außer sie wird anderweitig außer Kraft gesetzt).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 Eigenschaftx-amazon-apigateway-request-validator
die Validierungall
für diePOST /validation
-Methode aktiviert. Dadurch wird die von der API geerbte Validierungparams-only
außer Kraft gesetzt. -
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.
-
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
).
-
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" } -
Zum Einrichten der Anforderungsvalidierung
all
rufen Sie wie folgt die Aktionrequestvalidator: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. -
Um die
all
-Anfragevalidierung für diePOST
-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
-
Melden Sie sich bei der API Gateway-Konsole an, falls Sie nicht bereits angemeldet sind.
-
Erstellen Sie eine neue API oder wählen Sie eine vorhandene API aus.
-
Erstellen Sie eine neue Ressource oder wählen Sie eine vorhandene Ressource für die API aus.
-
Erstellen Sie eine neue Methode oder wählen Sie eine vorhandene Methode für die Ressource aus.
-
Wählen Sie Method Request (Methodenanforderung).
-
Wählen Sie das Stiftsymbol für Request Validator unter Settings.
-
Wählen Sie
Validate body
,Validate query string parameters and headers
oderValidate 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.