Erste Schritte mit dem Apigee Extension Processor

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Auf dieser Seite wird beschrieben, wie Sie den Apigee Extension Processor konfigurieren, um die Durchsetzung von API-Richtlinien für API-Traffic mit einem Load Balancer zu ermöglichen, der für Service Extensions aktiviert ist.

Weitere Informationen zu den vorgeschlagenen Anwendungsfällen und Vorteilen der Verwendung des Apigee Extension Processor für die API-Verwaltung finden Sie unter Apigee Extension Processor – Übersicht.

Der Apigee Extension Processor ist eine Traffic-Erweiterung (eine Art Diensterweiterung), mit der Sie Cloud Load Balancing verwenden können, um Callouts vom Datenverarbeitungspfad des Application Load Balancer an den Apigee Extension Processor zu senden. Nachdem der Load-Balancer und die Traffic-Erweiterung konfiguriert wurden, wird der API-Traffic vom Load-Balancer verarbeitet. Die Richtlinien im Apigee Extension Processor werden auf API-Traffic angewendet, der die Traffic-Erweiterungs-Callouts verwendet.

In den folgenden Abschnitten werden Sie durch die Schritte geführt, die zum Konfigurieren der Schlüsselelemente des Apigee Extension Processor erforderlich sind:

  • Load-Balancer für einen Backend-Dienst konfigurieren
  • Apigee Extension Processor konfigurieren
  • Traffic-Erweiterung konfigurieren
  • Richtlinien mit dem Extension Processor verwenden
  • Hinweise

    Bevor Sie mit der Einrichtung des Apigee Extension Processor beginnen, müssen Sie die folgenden Aufgaben ausführen:

    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Apigee, Compute Engine, and Network Services APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    6. Verify that billing is enabled for your Google Cloud project.

    7. Enable the Apigee, Compute Engine, and Network Services APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    8. Installieren Sie die Google Cloud CLI.

      Führen Sie nach der Installation der Google Cloud CLI den Befehl gcloud components update aus, um die neuesten gcloud-Komponenten abzurufen.

    9. Stellen Sie eine Apigee-Instanz mit Version 1-15-0-apigee-2 oder höher bereit, falls Sie dies noch nicht getan haben.

      Sie können Instanzversionen in der Apigee-UI in der Google Cloud Console auf der Seite Instanzdetails ansehen. Rufen Sie in der Google Cloud Console die Seite Instanzen auf, um eine Instanz auszuwählen und ihre Details aufzurufen:

      Zur Seite „VM-Instanzen“

      Sie können Extension Processor mit einer Abo- oder Pay-as-you-go-Apigee-Organisation verwenden. Wenn Sie sich nicht sicher sind, ob Sie ein Abo oder eine „Pay as you go“-Apigee-Organisation verwenden, wenden Sie sich an den Administrator Ihrer Apigee-Organisation. Weitere Informationen zum Bereitstellen von kostenpflichtigen Apigee-Instanzen finden Sie unter Vorbereitung.

    10. Prüfen Sie, ob in der Apigee-Instanz, die Sie verwenden möchten, ein VPC-Netzwerk und ein Subnetz aktiviert sind. Rufen Sie in der Google Cloud -Console die Seite VPC-Netzwerke auf:

      Zur Seite VPC-Netzwerke

    11. Erforderliche Rollen

      Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Installieren des Apigee Extension Processor benötigen:

      Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

      Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

      Umgebungsvariablen festlegen

      Legen Sie im Google Cloud -Projekt, das Ihre Apigee-Instanz enthält, Umgebungsvariablen mit dem folgenden Befehl fest:

      export PROJECT_ID=PROJECT_ID
      export ORG_NAME=$PROJECT_ID
      export REGION=REGION
      export INSTANCE=INSTANCE
      export VPC_NETWORK_NAME=VPC_NETWORK_NAME
      export SUBNET=SUBNET

      Wobei:

      • PROJECT_ID ist die ID des Projekts mit Ihrer Apigee-Instanz.
      • REGION ist die Google Cloud Region Ihrer Apigee-Instanz.
      • INSTANCE ist der Name Ihrer Apigee-Instanz.
      • VPC_NETWORK_NAME ist der Name des VPC-Netzwerk in Ihrem Google Cloud -Projekt, das Sie für den Apigee Extension Processor verwenden möchten.
      • SUBNET ist der Name des Subnetzes in Ihrem Google Cloud -Projekt, das Sie für den Apigee Extension Processor verwenden möchten.

      Führen Sie den folgenden Befehl aus und prüfen Sie die Ausgabe, um zu bestätigen, dass die Umgebungsvariablen richtig festgelegt sind:

      echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET

      Authentifizierungstoken konfigurieren

      Führen Sie den folgenden Befehl aus, um ein Authentifizierungstoken zu konfigurieren:

      export TOKEN=$(gcloud auth print-access-token)
      echo $TOKEN

      Load-Balancer für einen Backend-Dienst konfigurieren

      In den folgenden Abschnitten werden die Schritte beschrieben, die zum Einrichten eines globalen externen Application Load Balancers für einen Backend-Dienst erforderlich sind. Als Beispiel wird httpbin.org verwendet:

      1. Globalen externen Application Load Balancer erstellen
      2. Netzwerk-Endpunktgruppe (NEG) erstellen
      3. Back-End-Dienst erstellen
      4. URL-Zuordnung erstellen
      5. Ziel-Proxy erstellen
      6. Globale Weiterleitungsregel erstellen

      Globalen externen Application Load Balancer erstellen

      So erstellen Sie das Lastenausgleichsmodul:

      1. Konfigurieren Sie gcloud für die Verwendung Ihres aktuellen Projekts:
        gcloud config set project PROJECT_ID

        Dabei ist PROJECT_ID die ID des Projekts mit Ihrer Apigee-Instanz.

      2. So erstellen Sie eine globale statische IP-Adresse:
        gcloud compute addresses create IP_ADDRESS --ip-version=IPV4 --global

        Dabei ist IP_ADDRESS der Name der IP-Adresse, die Sie erstellen möchten. Der Name muss dem regulären Ausdruck (?:a-z?) entsprechen.

      3. Rufen Sie die IP-Adresse ab und speichern Sie sie als Umgebungsvariable:
        IP=$(gcloud compute addresses describe IP_ADDRESS --format="get(address)" --global)

        Dabei ist IP_ADDRESS der Name der IP-Adresse, die Sie im vorherigen Schritt erstellt haben.

      4. Erstellen Sie ein TLS-Zertifikat für nip.io, einen Drittanbieterdienst, der Platzhalter-DNS-Einträge für IP-Adressen bereitstellt:
        gcloud compute ssl-certificates create SSL_CERT_NAME \
          --domains="nip.io"

        Dabei ist SSL_CERT_NAME der Name des Zertifikats, das Sie erstellen möchten.

      Netzwerk-Endpunktgruppe (NEG) erstellen

      So erstellen Sie die Netzwerk-Endpunktgruppe (NEG) für Ihren Load-Balancer:

      1. NEG erstellen:
        gcloud compute network-endpoint-groups create NEG_NAME \
          --network-endpoint-type=INTERNET_FQDN_PORT \
          --default-port=443 \
          --global

        Dabei ist NEG_NAME der Name der NEG, die Sie erstellen möchten.

      2. Fügen Sie der NEG den Endpunkt für httpbin.org hinzu:
        gcloud compute network-endpoint-groups update NEG_NAME \
          --add-endpoint=fqdn=httpbin.org,port=443 \
          --global

        Dabei ist NEG_NAME der Name der NEG, die Sie im vorherigen Schritt erstellt haben.

      Backend-Dienst erstellen

      So erstellen Sie den Back-End-Dienst, der vom Load-Balancer bereitgestellt wird:

      1. Erstellen Sie den Back-End-Dienst:
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --protocol=HTTPS \
          --global

        Dabei ist BACKEND_SERVICE_NAME der Name des Back-End-Dienstes, den Sie erstellen möchten.

      2. Fügen Sie dem Backend die NEG hinzu:
        gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
          --network-endpoint-group=NEG_NAME \
          --global-network-endpoint-group \
          --global

        Wobei:

        • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes, den Sie im vorherigen Schritt erstellt haben.
        • NEG_NAME ist der Name der NEG, die Sie in einem vorherigen Schritt erstellt haben.

      URL-Zuordnung erstellen

      Verwenden Sie den folgenden Befehl, um eine URL-Zuordnung zwischen dem Load Balancer und dem Backend-Dienst zu erstellen:

      gcloud compute url-maps create URL_MAP_NAME \
        --default-service BACKEND_SERVICE_NAME \
        --global

      Wobei:

      • URL_MAP_NAME ist der Name der URL-Zuordnung, die Sie erstellen möchten.
      • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes, den Sie in einem vorherigen Schritt erstellt haben.

      Zielproxy erstellen

      Verwenden Sie den folgenden Befehl, um einen Zielproxy für den Load Balancer zu erstellen:

      gcloud compute target-https-proxies create TARGET_PROXY_NAME \
        --global \
        --ssl-certificates SSL_CERT_NAME \
        --global-ssl-certificates \
        --url-map URL_MAP_NAME \
        --global-url-map

      Wobei:

      • TARGET_PROXY_NAME ist der Name des Zielproxys, den Sie erstellen möchten.
      • URL_MAP_NAME ist der Name der URL-Zuordnung, die Sie in einem vorherigen Schritt erstellt haben.
      • SSL_CERT_NAME ist der Name des SSL-Zertifikats, das Sie in einem vorherigen Schritt für nip.io erstellt haben.

      Globale Weiterleitungsregel erstellen

      Verwenden Sie den folgenden Befehl, um eine globale Weiterleitungsregel für den Load Balancer zu erstellen:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=IP_ADDRESS \
        --target-https-proxy=TARGET_PROXY_NAME \
        --ports=443 \
        --global

      Wobei:

      • FORWARDING_RULE_NAME ist der Name der Weiterleitungsregel, die Sie erstellen möchten.
      • IP_ADDRESS ist der Name der IP-Adresse des NEG-Endpunkts, den Sie in einem vorherigen Schritt erstellt haben.
      • TARGET_PROXY_NAME ist der Name des Zielproxys, den Sie in einem vorherigen Schritt erstellt haben.

      Apigee Extension Processor konfigurieren

      In den folgenden Abschnitten werden die Schritte beschrieben, die zum Einrichten des Apigee Extension Processor erforderlich sind:

      1. Apigee-Umgebung erstellen
      2. Erstellen Sie den Extension Processor-Proxy.

      Apigee-Umgebung erstellen

      1. Erstellen Sie mit dem folgenden Befehl eine Apigee-Umgebung:
        curl -i -X POST -H  "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments" -H "Content-Type:application/json" -d \
            '{
                "name": "ENV_NAME",
                "displayName": "ENV_NAME",
                "state": "ACTIVE",
                "deploymentType": "PROXY",
                "apiProxyType": "PROGRAMMABLE",
                "type": "COMPREHENSIVE",
                "properties":
                {"property": [
                    {
                    "name": "apigee-service-extension-enabled",
                    "value": "true"
                    }
                  ]
                }
            }'

        Dabei ist ENV_NAME der Name der Umgebung, die Sie erstellen. Der Name muss zwischen 2 und 32 Zeichen lang sein. Kleinbuchstaben, Zahlen und Bindestriche sind zulässig. Der Name muss mit einem Buchstaben beginnen und darf nicht mit einem Bindestrich enden. Der Name muss sich von jedem anderen Umgebungsnamen in Ihrer Organisation unterscheiden.

        Prüfen Sie, ob die Umgebung erstellt wurde:

        curl -i -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

        Die Liste der Umgebungen sollte die Umgebung enthalten, die Sie gerade erstellt haben.

      2. Hängen Sie die neu erstellte Umgebung an Ihre Apigee-Instanz an:
        curl -i -X POST -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances/$INSTANCE/attachments" -H "Content-Type:application/json" -d \
            '{
                "environment": "ENV_NAME"
                }'

        Dabei ist ENV_NAME der Name der Umgebung, die Sie im vorherigen Schritt erstellt haben.

        Dieser Vorgang kann bis zu 10 Minuten dauern.

      3. Erstellen Sie die Apigee-Umgebungsgruppe:
        curl -H "Authorization: Bearer $TOKEN" -X POST \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups" -H "Content-Type:application/json" -d \
            '{
                "name": "ENV_GROUP_NAME",
                "hostnames": ["ENV_GROUP_HOSTNAME"]
                }'

        Wobei:

        • ENV_GROUP_NAME ist der Name der Umgebungsgruppe, die Sie erstellen.
        • ENV_GROUP_HOSTNAME ist der Hostname der Umgebungsgruppe, die Sie erstellen. Der Hostname muss ein voll qualifizierter Domainname (FQDN) sein.
      4. Hängen Sie die neue Umgebung an die neue Umgebungsgruppe an:
        curl -H "Authorization: Bearer $TOKEN" -X POST\
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/ENV_GROUP_NAME/attachments" -H "content-type:application/json" -d \
                '{
                    "name": "ENV_GROUP_NAME",
                    "environment": "ENV_NAME"
                }' 

        Wobei:

        • ENV_GROUP_NAME ist der Name der Umgebungsgruppe, die Sie erstellen.
        • ENV_NAME ist der Name der Umgebung, die Sie in einem früheren Schritt erstellt haben.

      Proxy für den Erweiterungsprozessor erstellen

      Der Extension Processor-Proxy ist ein Apigee-API-Proxy, der verwendet wird, um API-Verwaltungsrichtlinien auf den Load-Balancer-Traffic anzuwenden. Sie können einen Proxy ohne Ziel oder einen SSE-Proxy (Server-Sent Events) erstellen. Weitere Informationen zur Verwendung von SSE mit Apigee finden Sie unter Server-sent events.

      So erstellen Sie einen Apigee-API-Proxy für die Verwendung mit dem Extension Processor-Load Balancer:

      Kein Ziel-Proxy

      1. Folgen Sie der Anleitung unter API-Proxy erstellen, um einen Kein Ziel-Proxy mit den folgenden Spezifikationen zu erstellen:
        • Proxy-Vorlage: Wählen Sie Kein Ziel aus.
        • Proxyname: Geben Sie einen Namen für den Proxy ein.
        • Basispfad: Legen Sie einen beliebigen Basispfad fest. Der Pfad wird nicht verwendet.

        Die XML-Spezifikation für den Proxy sollte in etwa so aussehen:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <APIProxy revision="1" name="extproc-sample">
            <DisplayName/>
            <Description/>
            <CreatedAt>1739581781912</CreatedAt>
            <LastModifiedAt>1739582447868</LastModifiedAt>
            <BasePaths>/</BasePaths>
            <Policies></Policies>
            <ProxyEndpoints>
                <ProxyEndpoint>default</ProxyEndpoint>
            </ProxyEndpoints>
        </APIProxy>
      2. Folgen Sie der Anleitung unter API-Proxy bereitstellen, um den Proxy in der zuvor erstellten Umgebung bereitzustellen.

      SSE-fähiger Proxy

      1. Folgen Sie der Anleitung unter API-Proxy erstellen, um einen Server-Sent Events-Proxy mit den folgenden Spezifikationen zu erstellen:
        • Proxy-Vorlage: Wählen Sie Kein Ziel aus.
        • Proxyname: Geben Sie einen Namen für den Proxy ein.
        • Basispfad: Legen Sie einen beliebigen Basispfad fest. Der Pfad wird nicht verwendet.

        Die XML-Spezifikation für den Proxy sollte in etwa so aussehen:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <APIProxy revision="1" name="extproc-sample">
            <DisplayName/>
            <Description/>
            <CreatedAt>1739581781912</CreatedAt>
            <LastModifiedAt>1739582447868</LastModifiedAt>
            <BasePaths>/</BasePaths>
            <ProxyEndpoints>
                <ProxyEndpoint>default</ProxyEndpoint>
            </ProxyEndpoints>
        </APIProxy>
      2. Konfigurieren Sie EventFlow im Proxy:
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <APIProxy revision="1" name="extproc-sample">
            <DisplayName/>
            <Description/>
            <CreatedAt>1739581781912</CreatedAt>
            <LastModifiedAt>1739582447868</LastModifiedAt>
            <BasePaths>/</BasePaths>
            <ProxyEndpoints>
                <ProxyEndpoint>default</ProxyEndpoint>
                <EventFlow name="EventFlow" content-type="text/event-stream">
                  <Response/>
                </EventFlow>
                <HTTPProxyConnection>
                  <Properties/>
                  <URL>https://httpbin.org/sse</URL>
                </HTTPProxyConnection>
            </ProxyEndpoints>
        </APIProxy>
      3. Folgen Sie der Anleitung unter API-Proxy bereitstellen, um den Proxy in der zuvor erstellten Umgebung bereitzustellen.

      Traffic-Erweiterung konfigurieren

      In diesem Abschnitt wird beschrieben, wie Sie die Traffic-Diensterweiterung für Ihren Extension Processor konfigurieren. Gehen Sie dazu so vor:

      1. Netzwerk-Endpunktgruppe von Apigee Private Service Connect erstellen
      2. Load-Balancer-Diensterweiterung erstellen
      3. Senden Sie eine Anfrage an den Load-Balancer.

      Netzwerk-Endpunktgruppe von Apigee Private Service Connect erstellen

      In diesem Abschnitt erstellen Sie eine Apigee Private Service Connect-Netzwerk-Endpunktgruppe (PSC-NEG), die zum Herstellen einer Verbindung zu Ihrer Apigee-Instanz verwendet wird. Weitere Informationen zu PSC finden Sie unter Southbound-Netzwerkmuster.

      So erstellen Sie eine Apigee-PSC-NEG:

      1. Rufen Sie den Apigee PSC-Dienstanhang ab:
        PSC_ATTACHMENT=$(curl -s -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances" \
            | jq -r '.instances[] | select(.name = "'$INSTANCE'") | .serviceAttachment' \
            )

        So rufen Sie den Dienstanhang auf:

        echo $PSC_ATTACHMENT

        Die Antwort sollte in etwa so aussehen:

        projects/apigee-psc-autopush/regions/us-west1/serviceAttachments/apigee-us-west1-1234567890-psc-service-attachment

      2. Erstellen Sie die PSC-NEG in derselben Region wie Ihre Apigee-Instanz:
        gcloud compute network-endpoint-groups create apigee-neg-$REGION \
          --network-endpoint-type=private-service-connect \
          --psc-target-service=$PSC_ATTACHMENT \
          --region=$REGION \
          --network=$VPC_NETWORK_NAME \
          --subnet=$SUBNET

        Die Antwort sollte in etwa so aussehen:

        projects/ab123456cd78ef910g-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-abcd

      3. Erstellen Sie einen HTTP/2-Backend-Dienst, der auf die PSC-NEG verweist, falls noch keiner vorhanden ist:
        gcloud compute backend-services create PSC_NEG_BACKEND_SERVICE \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --protocol=HTTP2 \
          --global

        Dabei ist PSC_NEG_BACKEND_SERVICE der Name des Back-End-Dienstes, den Sie erstellen möchten.

      4. Fügen Sie den PSC-NEG-Backend-Dienst hinzu:
        gcloud compute backend-services add-backend PSC_NEG_BACKEND_SERVICE \
          --network-endpoint-group=apigee-neg-$REGION \
          --network-endpoint-group-region=$REGION \
          --global

        Dabei ist PSC_NEG_BACKEND_SERVICE der Name des Back-End-Dienstes, den Sie in einem vorherigen Schritt erstellt haben.

      5. Aktivieren Sie das Logging für den Backend-Dienst:
        gcloud compute backend-services update PSC_NEG_BACKEND_SERVICE \
          --global \
          --enable-logging \
          --logging-sample-rate=1.0

        Dabei ist PSC_NEG_BACKEND_SERVICE der Name des Back-End-Dienstes, den Sie in einem vorherigen Schritt erstellt haben.

      Load-Balancer-Diensterweiterung erstellen

      Wenn Sie eine Load-Balancer-Diensterweiterung erstellen, können Sie das Verhalten des Erweiterungsprozessor-Proxys anpassen, indem Sie die Werte verschiedener Felder ändern, die die Erweiterung beschreiben. Das geht so:

      Körperbearbeitung Unterstützte Ereignisse Metadaten Sendemodus
      Verarbeitung von Anfrage- und Antworttext

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-request-body: true

      apigee-response-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      Nur Anfragetextverarbeitung

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      apigee-request-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      Nur Antworttextverarbeitung

      REQUEST_HEADERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-response-body: true

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      In diesem Schritt erstellen Sie eine Load-Balancer-Diensterweiterung, die die Verarbeitung von Anfrage- und Antworttext unterstützt:

      curl -X POST "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions?lbTrafficExtensionId=global-xlb-httpbin-apim-policy" \
        -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
          "name": "global-xlb-httpbin-apim-policy",
          "forwardingRules": [
              "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME"
          ],
          "extensionChains": [
              {
                  "name": "httpbin-apigee-extension-chain",
                  "matchCondition": {
                      "celExpression": "true"
                  },
                  "extensions": [
                      {
                          "name": "httpbin-apigee-extension",
                          "authority": "ENV_GROUP_HOSTNAME",
                          "service": "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/backendServices/PSC_NEG_BACKEND_SERVICE",
                          "supportedEvents": [
                              "REQUEST_HEADERS",
                              "REQUEST_BODY",
                              "REQUEST_TRAILERS",
                              "RESPONSE_HEADERS",
                              "RESPONSE_BODY",
                              "RESPONSE_TRAILERS"
                          ],
                          "timeout": "1s",
                          "requestBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED",
                          "responseBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED"
                      }
                  ]
              }
          ],
          "loadBalancingScheme": "EXTERNAL_MANAGED",
          "metadata": {
              "apigee-extension-processor": "EXT_PROC_NAME",
              "apigee-request-body": "true",
              "apigee-response-body": "true"
          }
      }'

      Wobei:

      • EXT_PROC_NAME Dieser Name muss mit dem Namen des API-Proxy übereinstimmen, den Sie in einem früheren Schritt erstellt haben.
      • FORWARDING_RULE_NAME ist der Name der Weiterleitungsregel, die Sie in einem früheren Schritt erstellt haben.
      • ENV_GROUP_HOSTNAME ist der Domainname, der für die Umgebungsgruppe verwendet wird.
      • PSC_NEG_BACKEND_SERVICE ist der Name des Backend-Dienstes, den Sie in einem früheren Schritt erstellt haben.

      Dieser Vorgang kann einige Minuten dauern.

      Verwenden Sie den folgenden Befehl, um zu bestätigen, dass die Dienst-Extension erstellt wurde:

      curl "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions/httpbin-apigee-extension" \
        -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json"

      Die Antwort sollte in etwa so aussehen und die Weiterleitungsregel und den Backend-Dienst enthalten:

      createTime: '2025-03-22T00:29:16.056719825Z'
      extensionChains:
      - extensions:
        - authority: extension-processor-test.hybrid.e2e.apigeeks.net
          name: httpbin-apigee-extension
          service: https://www.googleapis.com/compute/v1/projects/123456789012/global/backendServices/ep-test-psc-neg-bes
          supportedEvents:
          - REQUEST_HEADERS
          - REQUEST_BODY
          - REQUEST_TRAILERS
          - RESPONSE_HEADERS
          - RESPONSE_BODY
          - RESPONSE_TRAILERS
          timeout: 1s
        matchCondition:
          celExpression: 'true'
        name: httpbin-apigee-extension-chain
      forwardingRules:
      - https://www.googleapis.com/compute/v1/projects/123456789012/global/forwardingRules/ep-test-fw-rule
      loadBalancingScheme: EXTERNAL_MANAGED
      metadata:
        apigee-extension-processor: ep-test-proxy
        apigee-request-body: true
        apigee-response-body: true
      name: projects/extension-processor-test/locations/global/lbTrafficExtensions/global-xlb-httpbin-apim-policy
      updateTime: '2025-03-22T00:29:31.183275055Z'

      Anfrage an den Load Balancer senden

      So testen Sie den Load Balancer und die Einrichtung des Extension Processors:

      curl "https://LB_DOMAIN_NAME/get"

      Dabei ist LB_DOMAIN_NAME der Domainname, den Sie für den Load-Balancer und das SSL-Zertifikat verwendet haben. Wenn Sie nip.io verwendet haben, sieht der Domainname in etwa so aus: IP_ADDRESS.nip.io.

      Die Antwort sollte in etwa so aussehen:

      {"status": 200,
        {
          "args": {},
          "headers": {
            ...
          },
          "origin": "173.93.50.108",
          "url": "https://httpbin.org/get"
        }
      }

      Richtlinien mit dem Extension Processor verwenden

      In diesem Abschnitt wird beschrieben, wie Sie Richtlinien mit dem Extension Processor verwenden.

      In diesem Beispiel sind eine VerifyAPIkey- und eine AssignMessage-Richtlinie für den Erweiterungsprozessor konfiguriert. Diese Richtlinien werden verwendet, um API-Schlüssel zu validieren, die in Anfragen an Apigee enthalten sind, und um ein Google-Token in Anfrageheadern für Aufrufe eines Back-End-Dienstes einzufügen. Dieses Szenario ist nützlich für API-Anbieter, die den Apigee Extension Processor verwenden, um Anfragen an ihre Apigee-Dienste zu autorisieren und zu authentifizieren und die für einen Backend-Dienst wie Vertex AI erforderlichen Google auth-Tokens nahtlos einzufügen.

      VerifyAPIKey-Richtlinie für die API-Schlüsselvalidierung hinzufügen

      In den folgenden Abschnitten wird beschrieben, wie Sie die VerifyAPIKey-Richtlinie verwenden, um API-Schlüssel für Aufrufe Ihres Back-End-Dienstes mit dem Extension Processor zu validieren:

      1. Hängen Sie die VerifyAPIKey-Richtlinie an den Extension Processor an.
      2. API-Produkt erstellen
      3. Entwickler-App und App-Anmeldedaten erstellen.
      4. Senden Sie mit dem API-Schlüssel eine Anfrage an den Load Balancer.

      VerifyAPIKey-Richtlinie an den Proxy anhängen

      So hängen Sie eine VerifyAPIKey-Richtlinie an den Extension Processor-Proxy an:

      1. Rufen Sie in der Google Cloud Console die Seite Proxy-Entwicklung > API-Proxys auf.

        Zu „API-Proxys“

      2. Wählen Sie den Extension Processor-Proxy aus, den Sie im Abschnitt Extension Processor erstellen erstellt haben.
      3. Klicken Sie auf den Tab Entwickeln.
      4. Klicken Sie im Navigationsbereich im Abschnitt Richtlinien auf .
      5. Wählen Sie im Dialogfeld Richtlinie erstellen in der Liste der Richtlinien die Option VerifyAPIKey aus.
      6. Füllen Sie im Bereich VerifyAPIKey die erforderlichen Felder in den Abschnitten Name und Display name mit den folgenden Werten aus:
        • Name: Geben Sie einen Richtliniennamen ein. Beispiel: VA-verify-api-key.
        • Anzeigename: Geben Sie den Namen der Richtlinie ein, der in der Benutzeroberfläche verwendet werden soll. Beispiel: VA-verify-api-key.
      7. Klicken Sie auf Erstellen.

        Die XML-Spezifikation für die VerifyAPIKey-Richtlinie, die im Extension Processor-Proxy enthalten ist, sollte in etwa so aussehen:

          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <VerifyAPIKey continueOnError="false" enabled="true" name="VA-verify-api-key">
            <DisplayName>VA-verify-api-key</DisplayName>
            <Properties/>
            <APIKey ref="request.queryparam.x-api-key"/>
          </VerifyAPIKey>
      8. Stellen Sie die neue Proxy-Überarbeitung bereit.

      API-Produkt erstellen

      So erstellen Sie ein API-Produkt und konfigurieren die API-Vorgangsmenge für Ihren Dienst:

      1. Folgen Sie der Anleitung unter API-Produkt erstellen, um ein API-Produkt für Ihren Dienst zu erstellen. Sie können die Produktdetails für das API-Produkt beliebig konfigurieren.
      2. Folgen Sie der Anleitung unter Vorgänge, um dem API-Produkt einen API-Vorgangssatz hinzuzufügen. Beachten Sie dabei die folgenden Spezifikationen:
        • Quelle:

          Rufen Sie in der Google Cloud Console die Seite Verteilung > API-Produkte auf.

          Zu „API-Produkte“

          Wählen Sie das API-Produkt aus, das Sie in einem vorherigen Schritt erstellt haben.
        • Vorgang: Klicken Sie auf Bearbeiten und konfigurieren Sie die folgenden Pfade und Methoden:
          • Pfad: /get mit Methode: GET
          • Pfad: /PROXY_NAME mit Methode: GET

            PROXY_NAME ist der Name des Proxys, den Sie in einem früheren Schritt erstellt haben.

      Entwickler-App und App-Anmeldedaten erstellen

      So erstellen Sie eine Entwickler-App und App-Anmeldedaten für das neu erstellte API-Produkt:

      1. Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:

        API-Verwaltung mit Apigee

      2. Entwickler erstellen:
        1. Wählen Sie Vertrieb > Entwickler aus.
        2. Klicken Sie auf der Seite Entwickler auf + Erstellen.
        3. Füllen Sie auf der Seite Entwickler hinzufügen die erforderlichen Felder mit beliebigen Werten aus.
        4. Klicken Sie auf Hinzufügen.
      3. App erstellen:
        1. Wählen Sie Vertrieb> Apps aus.
        2. Klicken Sie auf der Seite Apps auf + Erstellen.
        3. Füllen Sie auf der Seite App erstellen die erforderlichen Felder im Bereich App-Details mit den folgenden Werten aus:
          • App-Name: Geben Sie einen Namen für die App ein, z. B. ext-proc-app.
          • Entwickler: Wählen Sie den Entwickler aus, den Sie im vorherigen Schritt erstellt haben, oder einen anderen Entwickler aus der Liste.
        4. Klicken Sie im Abschnitt App-Anmeldedaten auf + Anmeldedaten hinzufügen.
        5. Wählen Sie im Bereich Anmeldedaten im Listenfeld Ablauf die Option Nie aus.
        6. Klicken Sie im Bereich Produkte auf + Produkte hinzufügen, um den Bereich Produkte hinzufügen aufzurufen.
        7. Wählen Sie das API-Produkt aus, das Sie im vorherigen Schritt erstellt haben.
        8. Klicken Sie auf OK.
        9. Klicken Sie auf Hinzufügen, um den Bereich Produkte hinzufügen zu schließen.
        10. Klicken Sie auf Erstellen.
      4. Klicken Sie auf der Seite App Details im Abschnitt Credential auf , um den Wert des Key anzuzeigen.

        Kopieren Sie den Wert Key. Mit diesem Schlüssel führen Sie in einem späteren Schritt API-Aufrufe an Ihren Dienst aus.

      5. Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf , um den Wert des App-Secrets aufzurufen.

      Senden Sie mit dem API-Schlüssel eine Anfrage an den Load-Balancer.

      So testen Sie die API-Schlüsselvalidierung: Senden Sie eine Anfrage mit dem API-Schlüssel an den Load Balancer:

      curl "https://LB_DOMAIN_NAME/get"

      Dabei ist LB_DOMAIN_NAME der Domainname, den Sie für den Load-Balancer und das SSL-Zertifikat verwendet haben.

      Die Antwort sollte ohne API-Schlüssel fehlschlagen.

      Senden Sie eine weitere Anfrage an den Load-Balancer und verwenden Sie dabei den API-Schlüssel in der Anfrage:

      curl "https://LB_DOMAIN_NAME/get?key=API_KEY"

      Wobei:

      • LB_DOMAIN_NAME ist der Domainname, den Sie für den Load-Balancer und das SSL-Zertifikat verwendet haben.
      • API_KEY ist der API-Schlüssel aus den Anmeldedaten der Entwickler-App, die in einem früheren Schritt angezeigt wurden.

      Die Antwort sollte eine erfolgreiche Autorisierung für den Endpunkt angeben. Dies gibt an, dass der Erweiterungsprozessor den API-Schlüssel validiert hat und die Anfrage jetzt vom Apigee-Proxy verarbeitet werden kann.

      AssignMessage-Richtlinie für die Google Authentifizierung hinzufügen

      Wenn Sie Ihren Extension Processor verwenden möchten, um die API-Verwaltung für einen von Google authentifizierten Dienst bereitzustellen, können Sie mit der AssignMessage-Richtlinie ein Google-Zugriffstoken oder ein Google-ID-Token in Anfragen einfügen, die an den Back-End-Dienst gesendet werden.

      In den folgenden Abschnitten wird beschrieben, wie Sie mit der AssignMessage-Richtlinie ein Google -Authentifizierungstoken in Anfragen einfügen, die mit dem Extension Processor an den Back-End-Dienst gesendet werden:

      1. Hängen Sie die AssignMessage-Richtlinie an den Proxy an.
      2. Anfrage an den Load-Balancer senden, um die Token-Einfügung zu testen

      AssignMessage-Richtlinie an den Proxy anhängen

      So fügen Sie Ihrem Proxy die AssignMessage-Richtlinie hinzu:

      1. Rufen Sie in der Google Cloud Console die Seite Proxy-Entwicklung > API-Proxys auf.

        Zu „API-Proxys“

      2. Wählen Sie den Extension Processor-Proxy aus, den Sie im Abschnitt Extension Processor erstellen erstellt haben.
      3. Klicken Sie auf den Tab Entwickeln.
      4. Klicken Sie im Navigationsbereich im Abschnitt Richtlinien auf .
      5. Wählen Sie im Dialogfeld Richtlinie erstellen in der Liste der Richtlinien die Option AssignMessage aus.
      6. Füllen Sie im Bereich Mitteilung zuweisen die erforderlichen Felder in den Abschnitten Name und Anzeigename mit den folgenden Werten aus:
        • Name: Geben Sie einen Richtliniennamen ein. Beispiel: AM-auth.
        • Anzeigename: Geben Sie einen Richtliniennamen ein, der in der Benutzeroberfläche angezeigt werden soll. Beispiel: AM-auth.
      7. Klicken Sie auf Erstellen.
      8. Fügen Sie unter dem <Set>-Element die folgenden untergeordneten Elemente hinzu:
        <Set>
            <Authentication>
            <HeaderName>Authorization</HeaderName>
            <GoogleAccessToken>
                <Scopes>
                <Scope>https://www.googleapis.com/auth/cloud-platform</Scope>
                </Scopes>
            </GoogleAccessToken>
            </Authentication>
        </Set>
      9. Klicken Sie auf Speichern.
      10. Stellen Sie die neue Überarbeitung mit einem Google -Dienstkonto bereit.

      Das Dienstkonto wird verwendet, um Google Zugriffstokens zu generieren und in den Anfrageheader für API-Aufrufe an Google Backend-Dienste einzufügen.

      Anfrage an den Load Balancer senden, um die Token-Einfügung zu testen

      Senden Sie eine Anfrage an den Load Balancer, um zu bestätigen, dass die Token-Einfügung funktioniert:

      curl "https://LB_DOMAIN_NAME/get"

      Dabei ist LB_DOMAIN_NAME der Domainname, den Sie für den Load-Balancer und das SSL-Zertifikat verwendet haben.

      Die Antwort sollte in etwa so aussehen:

      {
        ...
        "headers": {
          "Accept": "*/*",
          "Authorization": "Bearer ya29.c.c0ASRK0Gbw03y9cfvxL11DxaRYBQUU18SmUP4Vu63OckHI5cX7wJ4DmGMG2vbDDS69HXJHqMj-lak4tcqOsJGmE65crn2gNuJLanXidwM8",
          "First": "1.0",
          "Host": "apigee-ext-proc-test.apigee.net",
          "Second": "1.0",
          "Sum": "2",
          "User-Agent": "curl/8.7.1",
          "X-Api-Key": "McYcHGR3PTSGLXExvKADwQ1JJeCjgPDUvAakCl0rJKCFaX0Y",
          "X-Cloud-Trace-Context": "0fd3dadc2a3c328fa968d5f5f1434c29/18300783092696918345"
        },
        ...
      }

      In der Antwort sollte die erfolgreiche Einfügung des Google -Authentifizierungstokens in den Anfrage-Header zu sehen sein.

      Nach erfolgreicher Anwendung der AssignMessage-Richtlinie wird die erfolgreiche Anfrage des Clients (mit dem API-Schlüssel) an Apigee im Beispielszenario weiter modifiziert, um einen Google-Authentifizierungstoken im Anfrageheader einzufügen, wie es vom Google-authentifizierten Back-End-Dienst erforderlich ist.