API-Zuweisung mithilfe von Routing-Regeln neu erstellen
Sie können eine API-Zuweisung mithilfe von Routing-Regeln neu erstellen. Um eine API-Zuweisung neu zu erstellen, stellen Sie sicher, dass das Entfernen des Basispfads aktiviert ist. Dadurch bleibt das Verhalten der API-Zuweisungen erhalten. Weitere Informationen finden Sie unter Entfernen des Basispfads mit Basispfadbedingungen.
Das folgende Tutorial zeigt, wie Sie die API-Zuweisung https://
als Routing-Regel neu erstellen. Außerdem erfahren Sie, wie Sie Ihre Zugriffsprotokolle aktualisieren, um die Routing-Regel-ID zu protokollieren, die API Gateway verwendet, um Datenverkehr an Ihre API zu senden.api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
So setzen Sie den Routing-Modus auf ROUTING_RULE_THEN_API_MAPPING
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. Wählen Sie Benutzerdefinierte Domainnamen im Hauptnavigationsbereich aus.
-
Wählen Sie Ihren benutzerdefinierten Domainnamen aus.
-
Wählen Sie unter Domänendetails die Option Bearbeiten aus.
-
Wählen Sie unter Routing-Modus die Option ROUTING_RULE_THEN_API_MAPPING aus.
-
Wählen Sie Speichern aus.
Nachdem Sie den Routing-Modus festgelegt haben, erstellen Sie die Routing-Regel.
So erstellen Sie die Routing-Regel
-
Wählen Sie auf der Registerkarte Routing-Details die Option Routing-Regel hinzufügen aus.
-
Wählen Sie Neue Bedingung hinzufügen und dann Pfad aus.
-
Geben Sie unter Pfad den Wert
orders/v2/items/categories/5
ein. -
Wählen Sie für Leerzeichen des Basispfads entfernen die Option Aktiv aus.
Wählen Sie für Ziel-API Ihre Ziel-API aus.
Wählen Sie für Zielstufe Ihre Zielstufe aus.
-
Wählen Sie Next.
-
Geben Sie unter „Priorität“ eine Priorität ein.
Auch wenn Sie Ihre bestehende API-Zuweisung beibehalten, verwendet API Gateway immer die neue Routing-Regel, da Routing-Regeln stets Vorrang vor API-Zuweisungen haben.
Klicken Sie auf Änderungen speichern.
Nachdem Sie die Routing-Regel erstellt haben, aktualisieren Sie das Zugriffsprotokollformat für Ihre Stufe oder erstellen Sie ein neues Protokoll, um sicherzustellen, dass API Gateway Ihre Routing-Regel verwendet, um den Datenverkehr an Ihre API weiterzuleiten.
So aktualisieren Sie Ihre Zugriffsprotokolle
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. Wählen Sie Ihre API aus.
Klicken Sie im Hauptnavigationsbereich auf Stufen.
Wählen Sie unter Protokolle und Ablaufverfolgung die Option Bearbeiten aus.
Wenn Sie keine Protokollgruppe haben, siehe Einrichten der CloudWatch-Protokollierung für eine REST-API in API Gateway.
Fügen Sie
$context.customDomain.routingRuleIdMatched
Ihrem Protokollformat hinzu.Diese Protokollgruppe zeichnet die Routing-Regel-ID auf, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden. Weitere Informationen finden Sie unter Ich kann nicht sagen, wie API Gateway Datenverkehr an meine APIs sendet.
Wählen Sie Speichern aus.
Nachdem Sie Ihre Zugriffsprotokolle aktualisiert haben, rufen Sie Ihren benutzerdefinierten Domainnamen auf. Das folgende Beispiel zeigt einen curl-Befehl zum Aufrufen des benutzerdefinierten Domainnamens
https://
mit dem Basispfadapi.example.com
orders/v2/items/categories/5
.curl "https://
api.example.com
/orders/v2/items/categories/5"Nachdem Sie Ihren benutzerdefinierten Domainnamen erfolgreich aufgerufen haben, überprüfen Sie, dass in CloudWatch Logs
routingRuleIdMatched
angezeigt wird. Informationen zum Verwenden der CloudWatch Logs-Konsole zum Anzeigen einer Protokollgruppe finden Sie unter Anzeigen von API Gateway-Protokollereignissen in der CloudWatch-Konsole. - AWS CLI
-
-
Verwenden Sie den folgenden Befehl update-domain-name, um den Domainnamen
so zu aktualisieren, dass er den Routing-Modusapi.example.com
ROUTING_RULE_THEN_API_MAPPING
verwendet.aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
Verwenden Sie den folgenden Befehl create-routing-rule, um eine neue Routing-Regel zu erstellen und so die API-Zuweisung
https://
neu zu erstellen.api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
Verwenden Sie den folgenden Befehl update-stage, um das Format der Zugriffsprotokolle so zu aktualisieren, dass die Variable
$context.customDomain.routingRuleIdMatched
enthalten ist. Diese Variable zeichnet die Routing-Regel-ID auf, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden. Sie verwenden dieses Protokoll als Bestätigung, dass API Gateway Ihre Routing-Regel verwendet, um Datenverkehr an Ihre API zu senden. Weitere Informationen finden Sie unter Ich kann nicht sagen, wie API Gateway Datenverkehr an meine APIs sendet.aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"Wenn Sie keine Protokollgruppe haben, siehe Einrichten der CloudWatch-Protokollierung für eine REST-API in API Gateway.
-
Verwenden Sie den folgenden curl-Befehl, um Ihren benutzerdefinierten Domainnamen mit dem Basispfad
orders/v2/items/categories/5
aufzurufen.curl "https://
api.example.com
/orders/v2/items/categories/5 -
Verwenden Sie den folgenden Befehl filter-log-events, um die Protokollereignisse aus der Protokollgruppe
access-log-group-orders
abzurufen, die die Routing-Regel-IDabc123
enthalten.aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
Damit wird bestätigt, dass API Gateway die Routing-Regel verwendet hat, um den Datenverkehr an Ihre API zu senden.
-