1. Introduction
Private Service Connect pour les API Google (PSC) est une fonctionnalité de mise en réseau Google Cloud qui permet aux utilisateurs de configurer un accès privé via un point de terminaison global à adresse IP privée dans un VPC. Pour les utilisateurs qui exécutent du code ou des applications côté client dans un environnement hybride connecté à Google Cloud par un VPN ou une interconnexion, le PSC est utilisé pour résoudre les API Google via cette connexion hybride privée.
Le PSC pour les API Google peut résoudre de nombreux domaines différents. La liste complète est disponible ici. La plupart des API Google utilisent le domaine <API>.googleapis.com. En plus de ce domaine, PSC fournit également aux utilisateurs une version de googleapis.com qui est <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com. Grâce à ce domaine, les utilisateurs peuvent configurer des applications pour qu'elles utilisent des points de terminaison PSC spécifiques. Le cas d'utilisation le plus courant permet aux utilisateurs de choisir les applications qui utilisent le point de terminaison PSC pour acheminer le trafic de l'API Google via la connexion hybride, tout en permettant aux autres applications de continuer à acheminer le trafic vers le point de terminaison de l'API publique.
Gemini fait partie de la suite de produits Vertex AI de Google Cloud et figure dans la liste des API Google pouvant être résolues avec PSC pour les API Google.
Dans cet atelier de programmation, vous allez créer un environnement hybride simulé, héberger une instance Workbench sur site et exécuter du code Python Gemini qui accède à l'API Gemini de manière privée via un VPN haute disponibilité, en se connectant à un point de terminaison PSC pour les API Google.
Points abordés
- Créez un hub NCC.
- Configurez des spokes VPC dans un hub NCC.
- Créez un Cloud VPN haute disponibilité.
- Configurer des spokes hybrides dans un hub NCC
- Créez un point de terminaison PSC pour les API Google.
- Configurer une route personnalisée sur un VPN haute disponibilité
- Configurez une zone d'appairage DNS.
- Configurer une instance Vertex Workbench
- Configurez le code Python Gemini pour utiliser un PSC pour le point de terminaison de l'API Google APIs.
Prérequis
- Un projet Google Cloud avec des autorisations de "propriétaire" ou d'"éditeur" complet.
2. Topologie de l'atelier de programmation
Pour cet atelier de programmation, vous allez utiliser Google Cloud pour simuler un environnement hybride. Certaines étapes de cet atelier de programmation sont spécifiques à Google Cloud et seraient différentes si elles étaient configurées à partir d'un véritable environnement sur site. Ces étapes seront clairement indiquées.
Vous allez créer un hub NCC qui aura un routing-vpc en tant que spoke VPC. Dans ce VPC, un VPN haute disponibilité sera configuré sur le VPC sur site, qui simule un environnement sur site. Le VPN haute disponibilité sera configuré en tant que spoke hybride dans le hub NCC. Dans le VPC sur site, vous allez créer un sous-réseau dans lequel une instance Workbench sera hébergée. Vous allez également créer un Cloud NAT à utiliser pour télécharger des packages sur l'instance Workbench.
Enfin, vous allez créer une zone d'appairage DNS pour le VPC sur site afin de pouvoir utiliser la zone privée de l'annuaire de services pour p.googleapis.com que PSC pour les API Google crée automatiquement.
3. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. Si vous n'avez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID
). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Dans la console Google Cloud, cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez effectuer toutes les tâches de cet atelier de programmation dans un navigateur. Vous n'avez rien à installer.
4. Avant de commencerDurée : 2:00
Activer les API
Dans Cloud Shell, assurez-vous que votre projet est correctement configuré et définissez vos variables d'environnement.
Depuis 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
Activez toutes les API Google nécessaires dans le projet.
Depuis 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. Créer des VPC et des sous-réseauxDurée : 5:00
Créer des réseaux
Depuis Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
Depuis 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
Créer des routeurs cloud et Cloud NAT
Créez un routeur Cloud Router qui sera utilisé avec le VPN haute disponibilité dans le VPC de routage.
Depuis Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
Créez un routeur Cloud Router qui sera utilisé avec le VPN haute disponibilité dans le réseau VPC "onprem-vpc".
Depuis Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
Créez un routeur Cloud Router qui sera utilisé avec Cloud NAT dans le réseau VPC "onprem-vpc".
Depuis Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
Le Cloud NAT du réseau VPC sur site sera utilisé pour télécharger des packages sur l'instance Vertex AI Workbench qui sera configurée ultérieurement.
Depuis 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. Créer un VPN haute disponibilité CloudDurée : 7:00
Créez les passerelles VPN.
Depuis Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Depuis Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Créez les tunnels VPN provenant du routing-vpc.
Depuis 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
Créez les tunnels VPN provenant de onprem-vpc.
Depuis 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
Configurez des sessions BGP pour les deux tunnels provenant du VPC de routage.
Depuis 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
Configurez des sessions BGP pour les deux tunnels provenant de onprem-vpc.
Depuis 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
Accédez à la page "Connectivité réseau" > "VPN" de la console et assurez-vous que vos tunnels VPN haute disponibilité et vos sessions BGP sont correctement configurés.
7. Configurer un hub et des spokes NCCDurée : 10:00
Créer un hub NCC
Depuis Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
Créer des spokes NCC
NCC gcloud exige que tous les spokes soient configurés avec des noms de chemins d'accès complets ou des URI.
Depuis Cloud Shell
gcloud compute networks describe routing-vpc
Notez le chemin d'accès complet (URI) du VPC de routage pour la commande suivante.
Exemple de résultat
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
Configurer un spoke VPC de routage
Depuis Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
Depuis Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
Notez les chemins d'accès complets (URI) des tunnels VPN provenant du VPC de routage.
Exemple de résultat
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
Depuis 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
Avant de continuer, assurez-vous que tous vos spokes sont correctement configurés.
Depuis Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
Exemple de résultat
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. Configurer Private Service Connect pour les API GoogleDurée : 5:00
Les points de terminaison PSC pour les API Google sont créés à partir d'adresses IP globales qui ne se trouvent pas dans un sous-réseau VPC régional. L'adresse IP globale doit être réservée spécifiquement pour PRIVATE_SERVICE_CONNECT.
Depuis Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
Depuis 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
Depuis 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
Depuis 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. Configurer une instance Vertex WorkbenchDurée : 5:00
Créez un compte de service à utiliser comme identité de l'instance Workbench.
Depuis Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Notez le nom complet de votre compte de service et accordez-lui l'autorisation aiplatform.admin pour exécuter des appels vers Vertex AI/Gemini.
Depuis Cloud Shell
gcloud iam service-accounts list
Exemple de résultat
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
Veillez à remplacer <your-project-id> par l'ID de votre projet. Nous ne pouvons pas utiliser la variable $project ici en raison des guillemets requis.
Depuis 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
Depuis 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
Le provisionnement de l'instance Workbench peut prendre plus de temps que l'exécution de la commande gcloud.
10. Tester Gemini CodeDuration: 7:00
Dans l'interface utilisateur, cliquez sur "Ouvrir JupyterLab".
Une fois dans JupyterLab, ouvrez un nouveau notebook Python 3.
Exécutez le code suivant dans le notebook. Assurez-vous de mettre à jour le code pour inclure les informations spécifiques à votre projet et à votre région.
Depuis un notebook JupyterLab
pip install --upgrade google-genai
Redémarrez le noyau du notebook.
Notez le point de terminaison de l'API. Ici, nous utilisons le point de terminaison de l'API <YOUR_REGION>-aiplatform.googleapis.com. Il s'agit du point de terminaison de l'API standard pour Vertex AI.
Depuis un notebook JupyterLab
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, )
Depuis un notebook JupyterLab
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)
Exemple de réponse
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.
Notez le nom de l'API que vous avez utilisé lorsque vous avez exécuté le code. YOUR_REGION-aiplatform.googleapis.com est le nom d'API par défaut pour Vertex AI. Nous devons modifier le nom de l'API et exécuter à nouveau le code. Nous pouvons nous assurer que le code utilise le point de terminaison PSC en exécutant un TCPdump dans un terminal sur l'instance Workbench.
Exécuter un TCPdump dans un terminal
Ouvrez un terminal dans le Workbench en cliquant sur Fichier > Nouveau > Terminal.
Si vous ne voyez pas le texte dans le terminal, vous devez mettre à jour le thème du terminal. Pour ce faire, accédez à Paramètres > Thème du terminal > Clair OU Sombre.
Depuis le terminal
sudo tcpdump host 10.100.100.0
Mettre à jour Gemini Code
Revenez au notebook, mettez à jour le point de terminaison de l'API et exécutez à nouveau le code. Notez que nous avons modifié le point de terminaison de l'API en <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com. Cela correspond au format d'API spécifique au PSC <service>-<endpointname>.p.googleapis.com.
Depuis un notebook JupyterLab
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
Depuis un notebook JupyterLab
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Depuis un notebook JupyterLab
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)
Exemple de réponse
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
Vérifier TCPdump
Revenez au terminal et recherchez les appels au point de terminaison PSC (10.100.100.0). Arrêtez TCPdump (Ctrl+C).
Exemple de résultat
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
OPÉRATION RÉUSSIE !
11. Étapes de nettoyage
Fermez le notebook JupyterLab et revenez à Cloud Shell. Assurez-vous que votre Cloud Shell n'a pas expiré. Si c'est le cas, réinitialisez vos variables.
Depuis 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
Supprimez toutes les ressources.
Depuis 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. Félicitations !
Bravo ! Vous avez terminé cet atelier de programmation.
Points abordés
- Créez un hub NCC.
- Configurez des spokes VPC dans un hub NCC.
- Créez un Cloud VPN haute disponibilité.
- Configurer des spokes hybrides dans un hub NCC
- Créez un point de terminaison PSC pour les API Google.
- Configurer une route personnalisée sur un VPN haute disponibilité
- Configurez une zone d'appairage DNS.
- Configurer une instance Vertex Workbench
- Configurez le code Python Gemini pour utiliser un PSC pour le point de terminaison de l'API Google APIs.