1. Einführung
Private Service Connect für Google APIs (PSC) ist eine Google Cloud-Netzwerkfunktion, mit der Nutzer privaten Zugriff über einen globalen Endpunkt mit privater IP-Adresse in einer VPC konfigurieren können. Für Nutzer, die Code oder clientseitige Anwendungen in einer hybriden Umgebung ausführen, die über ein VPN oder Interconnect mit Google Cloud verbunden ist, wird PSC verwendet, um Google APIs über diese private hybride Verbindung aufzulösen.
PSC für Google APIs kann viele verschiedene Domains auflösen. Die vollständige Liste finden Sie hier. Die Domain, die von den meisten Google-APIs verwendet wird, ist <API>.googleapis.com. Neben dieser Domain bietet PSC Nutzern auch eine Version von googleapis.com, die <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com lautet. Mit dieser Domain können Nutzer Anwendungen für die Verwendung bestimmter PSC-Endpunkte konfigurieren. Im häufigsten Anwendungsfall können Nutzer auswählen, welche Anwendungen den PSC-Endpunkt verwenden, um Google API-Traffic über die Hybridverbindung weiterzuleiten. Andere Anwendungen können weiterhin Traffic an den öffentlichen API-Endpunkt weiterleiten.
Gemini gehört zur Vertex AI-Produktfamilie von Google Cloud und ist in der Liste der Google-APIs enthalten, die mit PSC für Google-APIs aufgelöst werden können.
In diesem Codelab erstellen Sie eine simulierte Hybridumgebung, in der eine Workbench-Instanz lokal gehostet wird und Gemini-Python-Code ausgeführt wird, der privat über ein HA VPN auf die Gemini API zugreift und eine Verbindung zu einem PSC-Endpunkt für Google APIs herstellt.
Lerninhalte
- Erstellen Sie einen NCC Hub.
- VPC-Spokes in einem NCC-Hub konfigurieren
- Erstellen Sie ein Cloud HA VPN.
- Hybrid-Spokes in einem NCC-Hub konfigurieren
- Erstellen Sie einen PSC-Endpunkt für Google APIs.
- Benutzerdefinierte Route über HA VPN konfigurieren
- DNS-Peering-Zone konfigurieren
- Vertex Workbench-Instanz konfigurieren
- Konfigurieren Sie Gemini-Python-Code für die Verwendung eines PSC für Google APIs API-Endpunkts.
Voraussetzungen
- Ein Google Cloud-Projekt mit der Rolle „Inhaber“ oder vollständigen „Bearbeiter“-Berechtigungen.
2. Codelab-Topologie
In diesem Codelab verwenden Sie Google Cloud, um eine Hybridumgebung zu simulieren. Einige Schritte in diesem Codelab sind spezifisch für Google Cloud und würden sich unterscheiden, wenn sie in einer echten On-Premise-Umgebung konfiguriert würden. Diese Schritte werden hervorgehoben.
Sie erstellen einen NCC-Hub mit einer Routing-VPC als VPC-Spoke. In dieser VPC wird ein HA VPN für die On-Premise-VPC konfiguriert, die eine On-Premise-Umgebung simuliert. Das HA VPN wird als Hybrid-Spoke im NCC-Hub konfiguriert. In der lokalen VPC erstellen Sie ein Subnetz, in dem eine Workbench-Instanz gehostet wird. Außerdem erstellen Sie eine Cloud NAT-Instanz, die zum Herunterladen von Paketen auf die Workbench-Instanz verwendet wird.
Schließlich erstellen Sie eine DNS-Peering-Zone für die lokale VPC, damit Sie die private Service Directory-Zone für p.googleapis.com verwenden können, die von PSC für Google APIs automatisch erstellt wird.
3. Einrichtung und Anforderungen
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eins erstellen.
- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_ID
angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am Programm Kostenlose Testversion mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console in der Symbolleiste oben rechts auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Anschließend sehen Sie in etwa Folgendes:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
4. VorbereitungDauer: 2:00
APIs aktivieren
Prüfen Sie in Cloud Shell, ob Ihr Projekt richtig konfiguriert ist, und legen Sie Ihre Umgebungsvariablen fest.
Über Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
Aktivieren Sie alle erforderlichen Google APIs im Projekt.
Über Cloud Shell
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable notebooks.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable aiplatform.googleapis.com
5. VPCs und Subnetze erstellenDauer: 5:00
Netzwerke erstellen
Über Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
Über Cloud Shell
gcloud compute networks create onprem-vpc \ --subnet-mode=custom gcloud compute networks subnets create onprem-$region-subnet \ --network=onprem-vpc \ --range=10.0.0.0/24 \ --region=$region --enable-private-ip-google-access
Cloud Router und Cloud NAT erstellen
Erstellen Sie einen Cloud Router, der in Verbindung mit dem HA VPN in der Routing-VPC verwendet wird.
Über Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
Erstellen Sie einen Cloud Router, der in Verbindung mit dem HA VPN in der onprem-vpc verwendet wird.
Über Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
Erstellen Sie einen Cloud Router, der in Verbindung mit Cloud NAT in der onprem-vpc verwendet wird.
Über Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
Das Cloud NAT in der onprem-vpc wird zum Herunterladen von Paketen auf die Vertex AI Workbench-Instanz verwendet, die in einem späteren Schritt konfiguriert wird.
Über Cloud Shell
gcloud compute routers nats create onprem-$region-nat \ --router=onprem-$region-cr-4nat \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
6. Cloud HA VPN erstellenDuration: 7:00
Erstellen Sie die VPN-Gateways.
Über Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Über Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Erstellen Sie die VPN-Tunnel, die von der routing-vpc ausgehen.
Über Cloud Shell
gcloud compute vpn-tunnels create routing-to-onprem-tunnel0 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=0 gcloud compute vpn-tunnels create routing-to-onprem-tunnel1 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=1
Erstellen Sie die VPN-Tunnel, die von der onprem-vpc ausgehen.
Über Cloud Shell
gcloud compute vpn-tunnels create onprem-to-routing-tunnel0 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=0 gcloud compute vpn-tunnels create onprem-to-routing-tunnel1 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=1
Richten Sie BGP-Sitzungen für die beiden Tunnel ein, die von der routing-vpc ausgehen.
Über Cloud Shell
gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface0 \ --ip-address=169.254.0.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp0 \ --interface=routing-interface0 \ --peer-ip-address=169.254.0.2 \ --peer-asn=64513 \ --region=$region gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface1 \ --ip-address=169.254.1.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp1 \ --interface=routing-interface1 \ --peer-ip-address=169.254.1.2 \ --peer-asn=64513 \ --region=$region
Richten Sie BGP-Sitzungen für die beiden Tunnel ein, die von der onprem-vpc ausgehen.
Über Cloud Shell
gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface0 \ --ip-address=169.254.0.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp0 \ --interface=onprem-interface0 \ --peer-ip-address=169.254.0.1 \ --peer-asn=64512 \ --region=$region gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface1 \ --ip-address=169.254.1.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp1 \ --interface=onprem-interface1 \ --peer-ip-address=169.254.1.1 \ --peer-asn=64512 \ --region=$region
Rufen Sie in der Konsole die Seite „Network Connectivity“ > „VPN“ auf und prüfen Sie, ob Ihre HA VPN-Tunnel und BGP-Sitzungen richtig konfiguriert sind.
7. NCC-Hub und Spokes konfigurierenDuration:10:00
NCC-Hub erstellen
Über Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
NCC-Spokes erstellen
Für NCC gcloud müssen alle Spokes mit vollständigen Pfadnamen oder URIs konfiguriert werden.
Über Cloud Shell
gcloud compute networks describe routing-vpc
Notieren Sie sich den vollständigen Pfad (URI) der Routing-VPC für den folgenden Befehl.
Beispielausgabe
autoCreateSubnetworks: false creationTimestamp: '2025-08-20T11:13:42.233-07:00' id: 'xxx' kind: compute#network name: routing-vpc networkFirewallPolicyEnforcementOrder: AFTER_CLASSIC_FIREWALL routingConfig: bgpBestPathSelectionMode: LEGACY routingMode: REGIONAL selfLink: https://www.googleapis.com/compute/v1/projects/$project/global/networks/routing-vpc selfLinkWithId: https://www.googleapis.com/compute/v1/projects/$project/global/networks/355666541188722361 x_gcloud_bgp_routing_mode: REGIONAL x_gcloud_subnet_mode: CUSTOM
Routing-VPC-Spoke konfigurieren
Über Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
Über Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
Notieren Sie sich die vollständigen Pfade (URIs) für die VPN-Tunnel, die von der Routing-VPC stammen.
Beispielausgabe
creationTimestamp: '2025-08-20T11:33:37.494-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel0 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.54.166 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel0 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 0 creationTimestamp: '2025-08-20T11:33:41.829-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel1 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.246.117 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel1 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 1
Über Cloud Shell
gcloud network-connectivity spokes linked-vpn-tunnels create $region-vpn-spoke \ --hub=ncc-hub \ --vpn-tunnels=projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel0,projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel1 \ --region=$region
Prüfen Sie, ob alle Spokes richtig konfiguriert sind, bevor Sie fortfahren.
Über Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
Beispielausgabe
NAME: routing-vpc GROUP: default PROJECT: $project LOCATION: global TYPE: VPC_NETWORK STATE: ACTIVE STATE REASON: ETAG: 2 NAME: us-central1-vpn-spoke GROUP: default PROJECT: $project LOCATION: us-central1 TYPE: VPN_TUNNEL STATE: ACTIVE STATE REASON: ETAG:
8. Private Service Connect für Google APIs einrichtenDauer: 5:00
PSC-Endpunkte für Google APIs werden aus globalen IP-Adressen erstellt, die sich nicht in einem regionalen VPC-Subnetz befinden. Die globale IP-Adresse muss speziell für PRIVATE_SERVICE_CONNECT reserviert werden.
Über Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
Über Cloud Shell
gcloud compute forwarding-rules create psc4googep \ --global \ --network=routing-vpc \ --address=psc-ip \ --target-google-apis-bundle=all-apis \ --service-directory-registration=projects/$project/locations/$region
Über Cloud Shell
gcloud compute routers update routing-$region-cr \ --project=$project \ --region=$region \ --advertisement-mode custom \ --set-advertisement-groups=ALL_SUBNETS \ --set-advertisement-ranges=10.100.100.0/32
Über Cloud Shell
gcloud dns managed-zones create peeringzone \ --description="dns peer onprem to routing" \ --dns-name=p.googleapis.com \ --networks=onprem-vpc \ --target-network=routing-vpc \ --target-project=$project \ --visibility=private
9. Vertex Workbench-Instanz einrichten – Dauer: 5:00
Erstellen Sie ein Dienstkonto, das als Identität für die Workbench-Instanz verwendet werden soll.
Über Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Notieren Sie sich den vollständigen Namen Ihres Dienstkontos und gewähren Sie ihm die Berechtigung „aiplatform.admin“, um Aufrufe an Vertex AI/Gemini auszuführen.
Über Cloud Shell
gcloud iam service-accounts list
Beispielausgabe
DISPLAY NAME: Compute Engine default service account EMAIL: xxx-compute@developer.gserviceaccount.com DISABLED: False DISPLAY NAME: workbench-sa EMAIL: workbench-sa@$project.iam.gserviceaccount.com DISABLED: False
Ersetzen Sie <your-project-id> durch Ihre tatsächliche Projekt-ID. Die Variable $project kann hier aufgrund der erforderlichen Anführungszeichen nicht verwendet werden.
Über Cloud Shell
gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None
Über Cloud Shell
gcloud workbench instances create workbench-$region --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --location=$region-a --network=projects/$project/global/networks/onprem-vpc --subnet=projects/$project/regions/$region/subnetworks/onprem-$region-subnet --subnet-region=$region --disable-public-ip --service-account-email=workbench-sa@$project.iam.gserviceaccount.com
Die Bereitstellung der Workbench-Instanz kann länger dauern als die Ausführung des gcloud-Befehls.
10. Test Gemini CodeDuration: 7:00
Klicken Sie in der Benutzeroberfläche auf „JupyterLab öffnen“.
Öffnen Sie in JupyterLab ein neues Python 3-Notebook.
Führen Sie den folgenden Code im Notebook aus. Achten Sie darauf, dass Sie den Code so aktualisieren, dass er Ihr spezifisches Projekt und Ihre Regionsinformationen enthält.
Über ein JupyterLab-Notebook
pip install --upgrade google-genai
Starten Sie den Notebook-Kernel neu.
Notieren Sie sich den API-Endpunkt. Hier verwenden wir den API-Endpunkt <YOUR_REGION>-aiplatform.googleapis.com. Dies ist der Standard-API-Endpunkt für Vertex AI.
Über ein JupyterLab-Notebook
PROJECT_ID="YOUR_PROJECT_ID" # Google Cloud Project ID LOCATION_ID="YOUR_REGION" # Enter Vertex AI Gemini region such a s us-central1 API_ENDPOINT="https://<YOUR_REGION>-aiplatform.googleapis.com" # API Endpoint MODEL_ID="gemini-2.0-flash" # Gemini Model ID from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Über ein JupyterLab-Notebook
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
Beispielantwort:
This is a classic trick question! They both weigh the same: 1 kilogram. The difference is in the volume they occupy and the density of the materials.
Notieren Sie sich den API-Namen, den Sie beim Ausführen des Codes verwendet haben. YOUR_REGION-aiplatform.googleapis.com ist der Standard-API-Name für Vertex AI. Wir müssen den API-Namen ändern und den Code noch einmal ausführen. Wir können dafür sorgen, dass der Code den PSC-Endpunkt verwendet, indem wir einen TCPdump in einem Terminal auf der Workbench-Instanz ausführen.
TCPdump in einem Terminal ausführen
Öffnen Sie ein Terminal in der Workbench, indem Sie auf „File“ > „New“ > „Terminal“ (Datei > Neu > Terminal) klicken.
Wenn Sie Probleme mit der Textausgabe im Terminal haben, müssen Sie das Terminal-Theme aktualisieren. Sie können das Design unter „Einstellungen“ > „Terminaldesign“ > „Hell“ ODER „Dunkel“ ändern.
Vom Terminal
sudo tcpdump host 10.100.100.0
Gemini Code aktualisieren
Wechseln Sie zurück zum Notebook, aktualisieren Sie den API-Endpunkt und führen Sie den Code noch einmal aus. Der API-Endpunkt wurde zu <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com geändert. Dies entspricht dem PSC-spezifischen API-Format <service>-<endpointname>.p.googleapis.com.
Über ein JupyterLab-Notebook
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
Über ein JupyterLab-Notebook
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Über ein JupyterLab-Notebook
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
Beispielantwort:
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
TCPdump prüfen
Wechseln Sie zurück zum Terminal und suchen Sie nach Aufrufen des PSC-Endpunkts (10.100.100.0). Beenden Sie den TCPdump (Strg+C).
Beispielausgabe
listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:12:01.473886 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [S], seq 3367930834, win 65320, options [mss 1420,sackOK,TS val 2933602967 ecr 0,nop,wscale 7], length 0 19:12:01.476561 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [S.], seq 1863301110, ack 3367930835, win 65535, options [mss 1366,sackOK,TS val 3004118895 ecr 2933602967,nop,wscale 8], length 0 19:12:01.476602 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 1, win 511, options [nop,nop,TS val 2933602969 ecr 3004118895], length 0 19:12:01.477283 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1:1573, ack 1, win 511, options [nop,nop,TS val 2933602970 ecr 3004118895], length 1572 19:12:01.478836 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [.], ack 1573, win 1045, options [nop,nop,TS val 3004118898 ecr 2933602970], length 0 19:12:01.480181 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 1:6041, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 6040 19:12:01.480183 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 6041:8378, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 2337 19:12:01.480215 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 6041, win 485, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.480225 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 8378, win 473, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.482580 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1573:1653, ack 8378, win 501, options [nop,nop,TS val 2933602975 ecr 3004118899], length 80
Erfolgreich!
11. Bereinigungsschritte
Schließen Sie das JupyterLab-Notebook und kehren Sie zu Cloud Shell zurück. Prüfen Sie, ob für Ihre Cloud Shell ein Zeitlimit überschritten wurde. Wenn das der Fall ist, setzen Sie die Variablen zurück.
Über Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
Löschen Sie alle Ressourcen.
Über Cloud Shell
gcloud workbench instances delete workbench-$region --location=$zone -q gcloud iam service-accounts delete workbench-sa@$project.iam.gserviceaccount.com -q gcloud dns managed-zones delete peeringzone -q gcloud compute forwarding-rules delete psc4googep --global -q gcloud compute addresses delete psc-ip --global -q gcloud network-connectivity spokes delete $region-vpn-spoke --region=$region -q gcloud network-connectivity spokes delete routing-vpc --global -q gcloud network-connectivity hubs delete ncc-hub -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel0 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel0 --region=$region --project=$project -q gcloud compute vpn-gateways delete onprem-gateway --region=$region --project=$project -q gcloud compute vpn-gateways delete routing-gateway --region=$region --project=$project -q gcloud compute routers nats delete onprem-$region-nat --router=onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr --region=$region -q gcloud compute routers delete routing-$region-cr --region=$region -q gcloud compute networks subnets delete onprem-$region-subnet --region=$region -q gcloud compute networks delete onprem-vpc -q gcloud compute networks delete routing-vpc -q
12. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- Erstellen Sie einen NCC Hub.
- VPC-Spokes in einem NCC-Hub konfigurieren
- Erstellen Sie ein Cloud HA VPN.
- Hybrid-Spokes in einem NCC-Hub konfigurieren
- Erstellen Sie einen PSC-Endpunkt für Google APIs.
- Benutzerdefinierte Route über HA VPN konfigurieren
- DNS-Peering-Zone konfigurieren
- Vertex Workbench-Instanz konfigurieren
- Konfigurieren Sie Gemini-Python-Code für die Verwendung eines PSC für Google APIs API-Endpunkts.