Wenn eine ausgehende Anfrage von Ihrem Cloud Run-Agenten fehlschlägt oder das Agent Gateway umgeht, können Sie den Anfragepfad mit den folgenden Prüfungen verfolgen oder sich die häufigen Probleme und Lösungen ansehen. Eine Anleitung zur Einrichtung finden Sie unter Agenten mit Agent Gateway verwalten.
Bevor der Traffic das Agent Gateway erreicht, ruft der Cloud Run Envoy-Sidecar die Routing- und Zertifikatskonfiguration von der Traffic Director API ab. Der Sidecar-Proxy sendet ausgehenden Traffic über einen mTLS-CONNECT-Tunnel an Secure Web Proxy.
Ausgehendes Routing in den Envoy-Sidecar-Zugriffslogs prüfen
Wenn der Cloud Run Envoy-Sidecar eine ausgehende TCP-Verbindung abfängt, schreibt er einen JSON-Zugriffslogeintrag mit dem Feld jsonPayload.upstream_host in run.googleapis.com%2Fvar%2Flog%2Fenvoy_sidecar_log.
Lösen Sie eine ausgehende Anfrage von Ihrem Cloud Run-Dienst aus und fragen Sie die Sidecar-Zugriffslogs ab:
gcloud logging read \ 'resource.type="cloud_run_revision" AND resource.labels.service_name="SERVICE_NAME" AND logName=~"envoy_sidecar_log$" AND jsonPayload.upstream_host:*' \ --project=PROJECT_ID \ --freshness=7d \ --limit=20 \ --format="table(timestamp, jsonPayload.sni, jsonPayload.upstream_host, jsonPayload.response_flags, jsonPayload.bytes_sent, jsonPayload.bytes_received, jsonPayload.duration)"
Ersetzen Sie Folgendes:
SERVICE_NAME: der Name Ihres Cloud Run-Agentendienstes.PROJECT_ID: Projekt-ID in Google Cloud .
Eine fehlerfreie Verbindung über das Gateway gibt eine Ausgabe ähnlich der folgenden zurück:
TIMESTAMP SNI UPSTREAM_HOST RESPONSE_FLAGS BYTES_SENT BYTES_RECEIVED DURATION 2026-10-09T05:07:48.340693Z example.com envoy://tunnel_internal_listener/ - 4101 2899 489
Prüfen Sie die Werte UPSTREAM_HOST und RESPONSE_FLAGS:
- Wenn
UPSTREAM_HOSTden Wertenvoy://tunnel_internal_listener/undRESPONSE_FLAGSden Wert-hat, ist die Verbindung fehlerfrei. Der Envoy-Sidecar hat IhreEgressRouting-Richtlinie abgeglichen und die Verbindung an das Agent Gateway weitergeleitet. - Wenn
UPSTREAM_HOSTeine Ziel-IP-Adresse und ein Port wie93.184.216.34:443ist, konnte die Traffic Director API IhreEgressRouting-Richtlinie nicht abgleichen oder das Ziel-Gateway nicht auflösen. Envoy hatORIGINAL_DST-Passthrough verwendet und das Agent Gateway umgangen. Weitere Informationen finden Sie unter Ressourcen-URIs für EgressRouting und AgentGateway prüfen. - Wenn
UPSTREAM_HOSTden Wertenvoy://tunnel_internal_listener/hat undRESPONSE_FLAGSden WertUFoderUHhat oderBYTES_RECEIVEDden Wert0hat, konnte Envoy denCONNECT-Tunnel zu Secure Web Proxy nicht öffnen. Prüfen Sie die Subnetzverbindung Ihrer Virtual Private Cloud (VPC) oder lesen Sie den Abschnitt Aktualisierung des Secure Web Proxy-Gateways unterbricht Envoy-Tunneling. - Wenn keine Zeilen angezeigt werden, prüfen Sie
run.googleapis.com%2Frequests, ob die Anfrage Ihren Cloud Run-Container erreicht hat. Prüfen Sie, ob die aktive Überarbeitung--ambient-networkingaktiviert. Wenn immer noch keine Zeilen angezeigt werden, lesen Sie den Abschnitt Envoy-Sidecar-xDS- und Verbindungslogs prüfen.
Envoy-Sidecar-xDS- und Verbindungsprotokolle prüfen
Wenn die Envoy-Sidecar-Zugriffslogs keine Einträge zurückgeben oder einen Verbindungsfehler anzeigen, prüfen Sie die Sidecar-xDS- und Upstream-Verbindungslogs:
Prüfen Sie, ob xDS-Streamfehler der Traffic Director API oder Startstatusfehler vorliegen:
gcloud logging read \ 'resource.type="cloud_run_revision" AND resource.labels.service_name="SERVICE_NAME" AND logName=~"envoy_sidecar_log$" AND (severity>=INFO OR textPayload:"DeltaAggregatedResources")' \ --project=PROJECT_ID \ --freshness=7d \ --limit=30 \ --format="table(timestamp, severity, textPayload, jsonPayload.message)"
Prüfen Sie die Versuche, eine Upstream-Tunnelverbindung zu
ambient-swp-connect-clusterherzustellen:gcloud logging read \ 'resource.type="cloud_run_revision" AND resource.labels.service_name="SERVICE_NAME" AND logName=~"envoy_sidecar_log$" AND (textPayload:"ambient-swp-connect-cluster" OR jsonPayload.message:"ambient-swp-connect-cluster" OR jsonPayload.message:"tunnel_internal_listener")' \ --project=PROJECT_ID \ --freshness=7d \ --limit=30 \ --format="table(timestamp, severity, textPayload, jsonPayload.message)"
Ersetzen Sie Folgendes:
SERVICE_NAME: der Name Ihres Cloud Run-Agentendienstes.PROJECT_ID: Projekt-ID in Google Cloud .
Prüfen Sie die Logeinträge:
- Wenn die Logs
DeltaAggregatedResources gRPC config streamundThe caller does not have permissionenthalten, fehlt der Dienstidentitätroles/trafficdirector.client. Weitere Informationen finden Sie unter Envoy-Sidecar kann keine xDS-Konfiguration empfangen. - Wenn die Logs
Creating connection to cluster ambient-swp-connect-clusterenthalten, hat Envoy dieEgressRouting-Konfiguration empfangen und versucht, eine Verbindung zum Secure Web Proxy herzustellen.
Ressourcen-URIs für EgressRouting und AgentGateway prüfen
Wenn Sie gcloud alpha network-services egress-routings create oder gcloud beta network-services agent-gateways import ausführen, validiert die API die URI-Syntax, ohne zu prüfen, ob die Zielressourcen vorhanden sind. Ein Tippfehler in einem Ressourcennamen oder einer Region führt dazu, dass die Traffic Director API die EgressRouting-Übersetzung überspringt und Envoy Passthrough-Routing verwendet.
Prüfen Sie die gespeicherten URIs und vergleichen Sie sie mit Ihren bereitgestellten Ressourcen:
Prüfen Sie die Ressource
EgressRouting. In der Ausgabe werden Projekt-IDs in Projektnummern normalisiert:gcloud alpha network-services egress-routings describe EGRESS_ROUTING_NAME \ --location=REGION \ --project=PROJECT_ID
Listen Sie alle
EgressRouting-Ressourcen in der Region auf, um zu prüfen, ob keine doppelte Richtlinie auf denselben Dienst abzielt:gcloud alpha network-services egress-routings list \ --location=REGION \ --project=PROJECT_ID
Prüfen Sie, ob das Secure Web Proxy-Zielgateway mit dem URI in
EgressRouting.gatewayundAgentGateway.selfManaged.resourceUrisübereinstimmt:gcloud network-services gateways describe SWP_NAME \ --location=REGION \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
EGRESS_ROUTING_NAME: der Name IhrerEgressRouting-Ressource.REGION: die Region Ihrer Bereitstellung.PROJECT_ID: Projekt-ID in Google Cloud .SWP_NAME: der Name Ihres Secure Web Proxy-Gateways.
Prüfen Sie, ob alle drei URIs mit Ihrer Projekt-ID oder -nummer, der Region und dem Ressourcennamen übereinstimmen:
EgressRouting.sources[].workloadUri:- Dienstbezogen:
//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/SERVICE_NAME - Projektbezogen:
//run.googleapis.com/projects/PROJECT_IDoder//run.googleapis.com/projects/PROJECT_NUMBER
- Dienstbezogen:
EgressRouting.gateway://networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/SWP_NAMEAgentGateway.selfManaged.resourceUris[]:projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME
Secure Web Proxy-Transaktionslogs prüfen
Wenn der Envoy-Sidecar Traffic an Secure Web Proxy weiterleitet, die Anfragen aber fehlschlagen, prüfen Sie die Proxy-Logs wie unter Proxy-Transaktionslogs ansehen beschrieben:
- Wenn in den Proxy-Logs kein Traffic angezeigt wird, erreichen die Anfragen den Secure Web Proxy nicht. Prüfen Sie Ihre
EgressRouting-Konfiguration unter Ressourcen-URIs für EgressRouting und AgentGateway prüfen und Häufige Probleme und Lösungen. - Wenn Sie unerwartete
DENY- oderALLOW-Entscheidungen sehen, prüfen SiejsonPayload.authzPolicyInfoundjsonPayload.agentGatewayInfoim Logeintrag, um die übereinstimmendenAuthzPolicy- und Zielmetadaten zu untersuchen, und prüfen Sie alleExtensionBinding-Regeln, die an Ihre Agent Gateway-Ressource angehängt sind. Nachdem Sie eineExtensionBinding-Ressource erstellt oder aktualisiert haben, kann es bis zu fünf Minuten dauern, bis Konfigurationsänderungen an das Gateway weitergegeben werden.
Häufige Probleme und Lösungen
In den folgenden Abschnitten werden häufige Probleme und deren Behebung beschrieben.
Ausgehender Traffic umgeht das Agent Gateway aufgrund eines nicht übereinstimmenden Ressourcen-URI
Ausgehender Traffic von Cloud Run umgeht das Agent-Gateway oder es kommt zu einer Zeitüberschreitung, nachdem egress-routings create erfolgreich war. In envoy_sidecar_log zeigt jsonPayload.upstream_host die Ziel-IP-Adresse und den Port anstelle von envoy://tunnel_internal_listener/ an.
Einer der Ressourcen-URIs EgressRouting oder AgentGateway verweist auf einen nicht vorhandenen Ressourcennamen oder eine nicht übereinstimmende Region. Wenn die Traffic Director API die Kette vom Cloud Run-Dienst zum Secure Web Proxy nicht auflösen kann, wird die Tunnelübersetzung übersprungen und ORIGINAL_DST bereitgestellt.
Führen Sie die Befehle unter Ressourcen-URIs für EgressRouting und AgentGateway prüfen aus, um den nicht übereinstimmenden URI zu finden. Aktualisieren Sie die Konfiguration mit dem entsprechenden Ressourcennamen und der Region und erstellen Sie die Ressource AgentGateway oder EgressRouting neu.
Envoy-Sidecar kann keine xDS-Konfiguration empfangen
Ausgehende Anfragen vom Cloud Run-Container werden abgebrochen oder schlagen fehl und envoy_sidecar_log enthält den folgenden Fehler:
DeltaAggregatedResources gRPC config stream to trafficdirector.REGION.rep.googleapis.com:443 closed: 7, The caller does not have permission
Die Cloud Run-Laufzeitdienstidentität hat nicht die Berechtigung roles/trafficdirector.client. Wenn Sie einen Dienst mit --functional-type=agent und --identity-type=agent-identity bereitstellen, wird standardmäßig roles/run.agentDefaultAccess gewährt, einschließlich roles/trafficdirector.client und roles/cloudtrace.agent. Wenn Ihrer Dienstidentität diese Berechtigungen fehlen, weisen Sie die Rollen zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/run/projects/PROJECT_NUMBER/locations/REGION/services/SERVICE_NAME" \ --role="roles/trafficdirector.client" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/run/projects/PROJECT_NUMBER/locations/REGION/services/SERVICE_NAME" \ --role="roles/cloudtrace.agent"
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .ORGANIZATION_ID: Ihre Google Cloud Organisations-ID.PROJECT_NUMBER: Ihre Google Cloud -Projektnummer.REGION: die Region Ihres Dienstes.SERVICE_NAME: der Name Ihres Cloud Run-Agentendienstes. Wenn Ihr Dienst ein Dienstkonto anstelle der Agent-Identität verwendet, setzen Sie--memberaufserviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID..
Prüfen Sie, ob der Cloud Run-Dienst-Agent auf Ihr VPC-Netzwerk zugreifen kann. Standardmäßig enthält roles/run.serviceAgent diese Berechtigungen. Wenn Sie die Berechtigungen des Dienst-Agents geändert haben, weisen Sie roles/compute.networkUser zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod." \ --role="roles/compute.networkUser"
Durch das Aktualisieren des Secure Web Proxy-Gateways wird das Envoy-Tunneling unterbrochen.
Nachdem Sie die ServerTlsPolicy, das Zertifikat, die IP-Adresse oder den Port eines vorhandenen Secure Web Proxy-Gateways aktualisiert haben, schlagen ausgehende Anfragen mit den Fehlern 502, 503 oder 504 fehl oder envoy_sidecar_log meldet RESPONSE_FLAGS: UF.
Sie können addresses oder ports nach dem Erstellen eines Secure Web Proxy-Gateways nicht mehr ändern. Darüber hinaus werden Aktualisierungen von serverTlsPolicy oder certificateUrls auf einem vorhandenen Secure Web Proxy-Gateway nicht an EgressRouting-Endpunkte in der Traffic Director API weitergegeben.
So ändern Sie diese Secure Web Proxy-Felder ohne Ausfallzeit der Arbeitslast:
- Erstellen Sie ein Secure Web Proxy-Ersatz-Gateway mit einem anderen Ressourcennamen und der aktualisierten Konfiguration.
- Aktualisieren Sie
selfManaged.resourceUrisin der RessourceAgentGateway, um auf den Ersatz-URI des Secure Web Proxy-Gateways zu verweisen. - Erstellen Sie die
EgressRouting-Ressource neu, sodass sie auf das Ersatz-Secure Web Proxy-Gateway verweist. - Nachdem das Ersatz-Gateway Traffic weitergeleitet hat, entfernen Sie das alte Secure Web Proxy-Gateway aus der
AgentGateway-Ressource und löschen Sie das alte Secure Web Proxy-Gateway.
Ausgehende Anfragen schlagen mit 403-Fehlern fehl
Ausgehende Anfragen von Ihrem Cloud Run-Agenten, einschließlich Aufrufen von Modellendpunkten wie Vertex AI unter REGION-aiplatform.googleapis.com oder aiplatform.googleapis.com, schlagen mit 403 Forbidden-Fehlern fehl, nachdem Sie Richtlinien im Agent Gateway konfiguriert haben.
Da --vpc-egress=all den gesamten ausgehenden Container-Traffic über Secure Web Proxy weiterleitet, schlagen Anfragen aus einem der folgenden Gründe fehl:
- Ihr Identity-Aware Proxy (IAP)
ExtensionBindinglässtmatchConditionsaus (oder stimmt mit Hosts außerhalb von MCP-Servern (Model Context Protocol) überein), ohne dass eine Zulassungsregel für das Ziel in Ihrer Unified Access Policy für Identity and Access Management (IAM) vorhanden ist. - An Ihre Agent Gateway-Ressource (oder an den zugrunde liegenden Secure Web Proxy
Gateway) ist eineALLOW-AuthzPolicyangehängt und die ausgehenden Anfragen entsprechen nicht denALLOW-Regeln.
So lösen Sie dieses Problem:
- Beschränken Sie den Bereich
matchConditionsin Ihrer IAP-ExtensionBindingaufprefix: "urn:mcp"für MCP-Server (und optionalprefix: "urn:agent"für den Traffic zwischen KI-Agenten), damit Modellaufrufe und andere Nicht-MCP-Ziele die IAP-Prüfung umgehen, oder fügen Sie einedestination.unregistered.host-Zulassungsregel für Ihr Ziel (z. B.REGION-aiplatform.googleapis.comoderaiplatform.googleapis.com) in Ihrer IAM Unified Access Policy hinzu. Eine Anleitung finden Sie unter IAP-Richtlinien für ausgehenden Traffic konfigurieren. - Wenn Sie eine
AuthzPolicyvom TypALLOWangehängt haben, fügen SieALLOW-Regeln für die erforderlichen Ziele hinzu oder entfernen Sie dieAuthzPolicy, wenn Sie den Traffic nur mitExtensionBinding-Ressourcen steuern.
Secure Web Proxy ignoriert GatewaySecurityPolicyRules
Sie haben GatewaySecurityPolicyRule-Ressourcen auf dem Secure Web Proxy Gateway erstellt, diese haben jedoch keine Auswirkungen auf den ausgehenden Agent-Traffic.
Wenn Secure Web Proxy mit einer AgentGateway-Ressource verknüpft ist, ignoriert Secure Web Proxy alle GatewaySecurityPolicyRule-Ressourcen auf der zugrunde liegenden Gateway (die TlsInspectionPolicy bleibt aktiv).
Hängen Sie stattdessen ExtensionBinding-Ressourcen an Ihre Agent Gateway-Ressource an. Wenn Sie AuthzPolicy-Ressourcen verwenden, hängen Sie sie nur an Ihre Agent Gateway-Ressource an. Wenn Sie AuthzPolicy-Ressourcen sowohl an das AgentGateway als auch an das zugrunde liegende Secure Web Proxy-Gateway anhängen, führt dies zu einem Konfigurationskonflikt. Eine Anleitung finden Sie unter Richtlinien auf dem Agent-Gateway konfigurieren.
Ausgehende Anfragen bestehen die TLS-Prüfung nicht
Ausgehende Anfragen von Ihrem Cloud Run-Agenten schlagen bei jeder Verbindung mit TLS-Fehlern fehl.
Das Secure Web Proxy-Dienstkonto hat nicht die Berechtigung roles/privateca.certificateManager für Ihren Certificate Authority Service-Pool.
Gewähren Sie Ihrem Secure Web Proxy-Dienstkonto die Berechtigung roles/privateca.certificateManager für den CA-Pool. Informationen dazu finden Sie im Artikel Dienstkonto erstellen.
Ausgehende TLS-geprüfte Verbindungen schlagen mit SSLV3_ALERT_HANDSHAKE_FAILURE oder RemoteDisconnected fehl
Ausgehende Anfragen von Ihrem Agenten schlagen bei der ersten Verbindung zu einem Zielhost mit SSLV3_ALERT_HANDSHAKE_FAILURE oder mit RemoteDisconnected fehl.
Bei der ersten TLS-geprüften Verbindung zu einem Zielhost erstellt Secure Web Proxy ein untergeordnetes Zertifikat vom CA-Dienst und speichert es im Cache. Dies kann zu einem vorübergehenden Handshake-Fehler führen. HTTP-Clients, die standardmäßig Connection: close senden, z. B. urllib.request.urlopen, können während der TLS-Prüfung mit RemoteDisconnected fehlschlagen.
So vermeiden Sie diese Fehler in Ihrem KI-Agenten-Code:
- Verwenden Sie HTTP-Clients, die persistente Verbindungen wiederverwenden, z. B.
httpx.AsyncClientoderrequests.Session(). - Konfigurieren Sie Wiederholungsversuche für Verbindungen und Handshakes auf Ihrem HTTP-Client, z. B.
httpx.AsyncHTTPTransport(retries=2)oderurllib3.util.Retry.