Routing-Regeln zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen für REST APIs - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Routing-Regeln zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen für REST APIs

Eine Routingregel besteht aus einer Reihe von Bedingungen, die, wenn sie erfüllt sind, eine Aktion auslösen. Eine Regel kann beispielsweise jede eingehende Anfrage an einen benutzerdefinierten Domainnamen weiterleiten, der den Header Hello:World und den Basispfad users zur production Phase einer REST-API enthält.

Regeln werden in der Reihenfolge ihrer Priorität ausgewertet. Wenn Sie den Routing-Modus auf einstellenROUTING_RULE_THEN_API_MAPPING, wertet API Gateway immer alle Routing-Regeln aus, bevor API-Zuordnungen ausgewertet werden. In der folgenden Liste wird beschrieben, wie eine Routing-Regel Bedingungen, Aktionen und Prioritäten verwendet.

Bedingungen

Wenn die Bedingungen für eine Regel erfüllt sind, wird die dazugehörige Aktion durchgeführt. API Gateway unterstützt bis zu zwei Header-Bedingungen und eine Pfadbedingung. API Gateway wertet Header-Bedingungen und Basispfadbedingungen zusammen aus.

Sie können eine Regel ohne Bedingungen erstellen. Wenn API Gateway diese Regel auswertet, wird die Aktion immer ausgeführt. Sie können eine Regel ohne Bedingungen als Sammelregel erstellen.

Weitere Hinweise zu Header-Bedingungen finden Sie unter. Passen Sie die Bedingungen der Header an Weitere Hinweise zu Pfadbedingungen finden Sie unterEntspricht den Bedingungen des Basispfads.

Aktionen

Aktionen sind das Ergebnis des Abgleichs von Bedingungen mit einer Routing-Regel. Derzeit besteht die einzige unterstützte Aktion darin, eine Phase einer REST-API aufzurufen.

Jede Regel kann eine Aktion haben.

Priorität

Die Priorität bestimmt, in welcher Reihenfolge die Regeln ausgewertet werden, vom niedrigsten Wert bis zum höchsten Wert. Regeln können nicht dieselbe Priorität haben.

Sie können die Priorität zwischen 1 und 1.000.000 festlegen. Wenn eine Regel die Priorität eins hat, wertet API Gateway sie zuerst aus. Wir empfehlen, dass Sie beim Erstellen einer Regel Lücken in den Prioritäten hinzufügen. Auf diese Weise können Sie die Priorität von Regeln ändern und neue Regeln hinzufügen. Weitere Informationen finden Sie unter Ändern Sie die Priorität einer Routing-Regel.

Beispiele dafür, wie API Gateway Routing-Regeln auswertet, finden Sie unterBeispiele dafür, wie API Gateway Routing-Regeln auswertet.

Bedingungstypen für API-Gateway-Routingregeln

Im folgenden Abschnitt werden die Bedingungstypen für Routing-Regeln beschrieben. API Gateway entspricht einer Regel nur, wenn alle Bedingungen erfüllt sind.

Passen Sie die Bedingungen der Header an

Wenn Sie eine Header-Bedingung erstellen, können Sie den Header-Namen und den Header-Glob-Wert abgleichen, z. B. Hello:World API Gateway verwendet eine Literalübereinstimmung, um die Bedingungen für Match-Header zu validieren. Ihre Bedingung kann bis zu zwei Header verwenden, die zwischen ihnen verwendet werdenAND. Ihre Bedingung kann beispielsweise übereinstimmen, wenn eine eingehende Anfrage Hello:World und x-version:beta enthält.

Beim Abgleich des Header-Namens wird nicht zwischen Groß- und Kleinschreibung unterschieden, beim Header-Glob-Wert jedoch zwischen Groß- und Kleinschreibung. Hello:Worldwird übereinstimmenhello:World, aber nicht. Hello:world

Eine Liste der eingeschränkten Header-Werte finden Sie unterEinschränkungen.

Verwendung von Platzhaltern mit Header-Bedingungen

Sie können nur Platzhalter im Header-Glob-Wert verwenden, und der Platzhalter muss, oder sein*prefix-match. suffix-match* *contains* Die folgende Tabelle enthält Beispiele für die Verwendung von Platzhaltern für den Abgleich von Header-Bedingungen.

Header-Bedingungen Anfragen, die der Routing-Regel entsprechen Anfragen, die nicht der Routing-Regel entsprechen

x-version: a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a

  • x-version: alpha

  • x-version: beta

  • x-version: account

  • x-version: backup

  • x-version: users

x-version: *a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a* und x-version: *b*

  • x-version: backup

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: users

x-version: b* und x-version: *a

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: users

x-version: *

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

Keine

Wenn Sie Bedingungen für mehrere Header-Werte erstellen, wie z. B.Accept:application/json,text/xml, empfehlen wir, *contains* für Ihre Header-Bedingungen zu verwenden und zu vermeiden, Bedingungen mit dem Komma (,) zu erstellen.

Da API Gateway den Header-Bedingungen wörtlich entspricht, werden semantische Treffer möglicherweise anders weitergeleitet. Die folgende Tabelle zeigt die unterschiedlichen Ergebnisse der Routing-Regeln.

Header-Bedingungen Anfragen, die der Routing-Regel entsprechen Anfragen, die nicht der Routing-Regel entsprechen

Accept: *json

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Accept: *json*

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Keine

Entspricht den Bedingungen des Basispfads

Wenn Sie eine Basispfadbedingung erstellen und die eingehende Anforderung den von Ihnen angegebenen Pfad enthält, wird die Regel erfüllt. Beim Abgleich wird zwischen Groß- und Kleinschreibung unterschieden, sodass der Pfad New/Users nicht mit übereinstimmtnew/users.

Sie können eine Basispfadbedingung nur für einen Basispfad erstellen.

Eine Liste der eingeschränkten Basispfadbedingungen finden Sie unterEinschränkungen.

Entfernen Sie den Basispfad mit den Bedingungen für den Basispfad

Wenn Sie eine Badepfadbedingung erstellen, können Sie wählen, ob der Basispfad entfernt werden soll. Wenn Sie den Basispfad entfernen, entfernt API Gateway den eingehenden passenden Basispfad, wenn es die Ziel-API aufruft. Dies ist dasselbe Verhalten wie bei der Verwendung eines API-Mappings. Wenn Sie den Basispfad nicht entfernen, leitet API Gateway den gesamten Basispfad an die Ziel-API weiter. Wir empfehlen, dass Sie den Basispfad nur entfernen, wenn Sie eine API-Zuordnung neu erstellen.

Die folgende Tabelle zeigt Beispiele dafür, wie API Gateway die Strip-Basis-Pfadbedingung auswertet.

Bedingung Strip-Basispfad Eingehende Anfrage Ergebnis

Wenn der Basispfad enthält PetStoreShopper/dogs

True

GET https://example.com/PetStoreShopper/dogs

API Gateway ruft die GET Methode der / Ressource auf.

Wenn der Basispfad enthältPetStoreShopper/dogs.

False

GET https://example.com/PetStoreShopper/dogs

API Gateway ruft die GET Methode der PetStoreShopper/dogs Ressource auf.

Wenn der Basispfad enthält PetStoreShopper

True

GET https://example.com/PetStoreShopper/dogs

API Gateway ruft die GET Methode der dogs Ressource auf.

Wenn der Basispfad enthält PetStoreShopper

False

GET https://example.com/PetStoreShopper/dogs

API Gateway ruft die GET Methode der PetStoreShopper/dogs Ressource auf.

Wenn der Basispfad enthält PetStoreShopper

True

GET https://example.com/PetStoreShopper?birds=available

API Gateway ruft die GET Methode der / Ressource mit dem Query-String-Parameter aufbirds=available.

Wenn der Basispfad enthält PetStoreShopper

False

GET https://example.com/PetStoreShopper?birds=available

API Gateway ruft die GET Methode der /PetStoreShopper Ressource mit dem Query-String-Parameter aufbirds=available.

Einschränkungen

  • Die Ziel-API und der benutzerdefinierte Domainname müssen sich im selben AWS Konto befinden.

  • Jede Regel kann eine Ziel-API haben.

  • Sie können nur eine Routing-Regel für einen privaten benutzerdefinierten Domainnamen zu einer privaten API und für einen öffentlichen benutzerdefinierten Domainnamen zu einer öffentlichen API erstellen. Sie können öffentliche und private Ressourcen nicht mischen.

  • Wenn Ihr benutzerdefinierter Domainname API-Zuordnungen sowohl zu REST als auch zu HTTP enthält APIs, werden Routing-Regeln nicht unterstützt.

  • Die maximale Prioritätszahl ist 1.000.000.

  • Header-Einschränkungen:

    • Jede anyOf Bedingung kann nur einen Header-Wert enthalten.

    • Die einzigen zulässigen Zeichen für Header-Namen und Header-Glob-Werte sind in RFC 7230 spezifiziert. Dies sinda-z, A-Z0-9, und die folgenden Sonderzeichen:. *?-!#$%&'.^_`|~

    • Sie können einen Platzhalter im Header-Glob-Wert verwenden, der Platzhalter muss jedoch, oder sein. *prefix-match suffix-match* *contains* Sie können den Wert nicht * in der Mitte eines Header-Glob-Werts verwenden.

    • Platzhalter-Header-Namen werden nicht unterstützt.

    • Der Headername muss weniger als 40 Zeichen lang sein.

    • Der Header-Glob-Wert muss weniger als 128 Zeichen lang sein.

    • Der Header-Glob-Wert für einen Infix-Match muss weniger als 40 Zeichen lang sein.

    • Die folgenden Header werden nicht als Bedingungen unterstützt:

      • access-control-*

      • apigw-*

      • Authorization

      • Connection

      • Content-Encoding

      • Content-Length

      • Content-Location

      • Forwarded

      • Keep-Alive

      • Origin

      • Proxy-Authenticate

      • Proxy-Authorization

      • TE

      • Trailers

      • Transfer-Encoding

      • Upgrade

      • x-amz-*

      • x-amzn-*

      • X-Forwarded-For

      • X-Forwarded-Host

      • X-Forwarded-Proto

      • Via

  • Einschränkungen für den Basispfad:

    • Die Länge des Basispfads muss weniger als 128 Zeichen betragen.

    • Der Basispfad darf nur Buchstaben, Zahlen und die folgenden Zeichen enthalten:$-_.+!*'()/.

    • Der Basispfad darf nicht mit einem umgekehrten Schrägstrich (/) beginnen oder enden.