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:World
wird ü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 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
---|---|---|
|
|
|
|
|
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 |
True |
|
API Gateway ruft die |
Wenn der Basispfad enthält |
False |
|
API Gateway ruft die |
Wenn der Basispfad enthält |
True |
|
API Gateway ruft die |
Wenn der Basispfad enthält |
False |
|
API Gateway ruft die |
Wenn der Basispfad enthält |
True |
|
API Gateway ruft die |
Wenn der Basispfad enthält |
False |
|
API Gateway ruft die |
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 sind a-z
,A-Z
0-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.