API-Zuweisung mithilfe von Routing-Regeln neu erstellen - Amazon API Gateway

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:// api.example.com/orders/v2/items/categories/5 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.

AWS Management Console
So setzen Sie den Routing-Modus auf ROUTING_RULE_THEN_API_MAPPING
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Benutzerdefinierte Domainnamen im Hauptnavigationsbereich aus.

  3. Wählen Sie Ihren benutzerdefinierten Domainnamen aus.

  4. Wählen Sie unter Domänendetails die Option Bearbeiten aus.

  5. Wählen Sie unter Routing-Modus die Option ROUTING_RULE_THEN_API_MAPPING aus.

  6. Wählen Sie Speichern aus.

Nachdem Sie den Routing-Modus festgelegt haben, erstellen Sie die Routing-Regel.

So erstellen Sie die Routing-Regel
  1. Wählen Sie auf der Registerkarte Routing-Details die Option Routing-Regel hinzufügen aus.

  2. Wählen Sie Neue Bedingung hinzufügen und dann Pfad aus.

  3. Geben Sie unter Pfad den Wert orders/v2/items/categories/5 ein.

  4. Wählen Sie für Leerzeichen des Basispfads entfernen die Option Aktiv aus.

  5. Wählen Sie für Ziel-API Ihre Ziel-API aus.

  6. Wählen Sie für Zielstufe Ihre Zielstufe aus.

  7. Wählen Sie Next.

  8. 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.

  9. 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
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre API aus.

  3. Klicken Sie im Hauptnavigationsbereich auf Stufen.

  4. 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.

  5. 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.

  6. 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://api.example.com mit dem Basispfad 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
  1. Verwenden Sie den folgenden Befehl update-domain-name, um den Domainnamen api.example.com so zu aktualisieren, dass er den Routing-Modus ROUTING_RULE_THEN_API_MAPPING verwendet.

    aws apigatewayv2 update-domain-name \ --domain-name 'api.example.com' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING
  2. Verwenden Sie den folgenden Befehl create-routing-rule, um eine neue Routing-Regel zu erstellen und so die API-Zuweisung https://api.example.com/orders/v2/items/categories/5 neu zu erstellen.

    aws 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 } } ]'
  3. 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.

  4. 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
  5. Verwenden Sie den folgenden Befehl filter-log-events, um die Protokollereignisse aus der Protokollgruppe access-log-group-orders abzurufen, die die Routing-Regel-ID abc123 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.