1. Pengantar
Private Service Connect untuk Google API (PSC) adalah kemampuan jaringan Google Cloud yang memungkinkan pengguna mengonfigurasi akses pribadi melalui endpoint global IP pribadi dalam VPC. Untuk pengguna yang menjalankan kode atau aplikasi sisi klien di lingkungan hybrid yang terhubung ke Google Cloud melalui VPN atau Interconnect, PSC digunakan untuk menyelesaikan Google API melalui koneksi hybrid pribadi tersebut.
PSC untuk Google API dapat menyelesaikan banyak domain yang berbeda, yang daftar lengkapnya dapat ditemukan di sini. Domain yang digunakan sebagian besar Google API adalah <API>.googleapis.com. Selain domain ini, PSC juga menyediakan versi googleapis.com yang berupa <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com kepada pengguna. Dengan menggunakan domain ini, pengguna dapat mengonfigurasi aplikasi untuk menggunakan endpoint PSC tertentu. Kasus penggunaan yang paling umum memungkinkan pengguna memilih aplikasi mana yang menggunakan endpoint PSC untuk merutekan traffic Google API melalui koneksi hybrid, sekaligus memungkinkan aplikasi lain terus merutekan traffic ke endpoint API publik.
Gemini termasuk dalam rangkaian produk Vertex AI Google Cloud dan disertakan dalam daftar Google API yang dapat diselesaikan dengan PSC untuk Google API.
Dalam codelab ini, Anda akan membangun lingkungan hybrid simulasi, menghosting Instance Workbench di premis, dan menjalankan kode Python Gemini yang mengakses Gemini API secara pribadi melalui VPN dengan ketersediaan tinggi (HA), yang terhubung ke endpoint PSC untuk Google API.
Yang akan Anda pelajari
- Buat Hub NCC.
- Mengonfigurasi Spoke VPC di Hub NCC.
- Buat Cloud HA VPN.
- Mengonfigurasi Spoke Hybrid di Hub NCC.
- Buat endpoint PSC untuk Google API.
- Mengonfigurasi rute kustom melalui HA-VPN.
- Mengonfigurasi zona peering DNS.
- Mengonfigurasi Instance Vertex Workbench
- Konfigurasi kode Python Gemini untuk menggunakan PSC untuk Endpoint API Google API.
Yang Anda butuhkan
- Project Google Cloud dengan izin "Pemilik" atau "Editor" penuh.
2. Topologi Codelab
Untuk codelab ini, Anda akan menggunakan Google Cloud untuk menyimulasikan lingkungan hybrid. Ada langkah-langkah dalam codelab ini yang khusus untuk Google Cloud dan akan berbeda jika dikonfigurasi dari lingkungan lokal yang sebenarnya. Langkah-langkah tersebut akan ditandai.
Anda akan membuat Hub NCC yang memiliki routing-vpc sebagai Spoke VPC. Di VPC tersebut, HA-VPN akan dikonfigurasi ke VPC lokal, yang meniru lingkungan lokal. HA-VPN akan dikonfigurasi sebagai Spoke Hybrid di hub NCC. Di VPC lokal, Anda akan membuat subnet tempat Instance Workbench akan dihosting. Anda juga akan membuat Cloud NAT yang akan digunakan untuk mendownload paket di instance Workbench.
Terakhir, Anda akan membuat zona peering DNS untuk VPC lokal agar dapat menggunakan zona Pribadi Service Directory untuk p.googleapis.com yang dibuat secara otomatis oleh PSC untuk Google API.
3. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
4. Sebelum memulaiDurasi: 2:00
Mengaktifkan API
Di dalam Cloud Shell, pastikan project Anda dikonfigurasi dengan benar dan tetapkan variabel lingkungan Anda.
Dari 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
Aktifkan semua Google API yang diperlukan dalam project.
Dari 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. Membuat VPC dan SubnetDurasi: 5:00
Membuat Jaringan
Dari Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
Dari 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
Membuat Cloud Router dan Cloud NAT
Buat Cloud Router yang akan digunakan bersama dengan VPN dengan ketersediaan tinggi (HA) di routing-vpc.
Dari Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
Buat Cloud Router yang akan digunakan bersama dengan VPN dengan ketersediaan tinggi (HA) di onprem-vpc.
Dari Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
Buat Cloud Router yang akan digunakan bersama dengan Cloud NAT di onprem-vpc.
Dari Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
Cloud NAT di onprem-vpc akan digunakan untuk mendownload paket ke Instance Vertex AI Workbench yang akan dikonfigurasi pada langkah selanjutnya.
Dari 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. Membuat Cloud HA-VPNDurasi: 7:00
Buat Gateway VPN.
Dari Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Dari Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Buat tunnel VPN yang berasal dari routing-vpc.
Dari 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
Buat tunnel VPN yang berasal dari onprem-vpc.
Dari 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
Siapkan sesi BGP untuk dua tunnel yang berasal dari routing-vpc.
Dari 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
Siapkan sesi BGP untuk dua tunnel yang berasal dari onprem-vpc.
Dari 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
Buka halaman Network Connectivity > VPN di konsol dan pastikan tunnel HA-VPN dan sesi BGP Anda dikonfigurasi dengan benar.
7. Mengonfigurasi Hub dan Spoke NCCDurasi:10:00
Membuat Hub NCC
Dari Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
Membuat Spoke NCC
NCC gcloud mengharuskan semua spoke dikonfigurasi dengan nama jalur lengkap, atau URI.
Dari Cloud Shell
gcloud compute networks describe routing-vpc
Catat jalur lengkap (URI) routing-vpc untuk perintah berikut.
Contoh Output
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
Mengonfigurasi Spoke VPC Perutean
Dari Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
Dari Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
Perhatikan jalur lengkap (URI) untuk tunnel VPN yang berasal dari routing-vpc.
Contoh Output
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
Dari 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
Periksa untuk memastikan semua spoke Anda dikonfigurasi dengan benar sebelum Anda melanjutkan.
Dari Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
Contoh Output
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. Menyiapkan Private Service Connect untuk Google API Durasi: 5:00
Endpoint PSC untuk Google API dibuat dari alamat IP global yang tidak berada di subnet VPC regional. Alamat IP global harus dicadangkan secara khusus untuk tujuan PRIVATE_SERVICE_CONNECT.
Dari Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
Dari 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
Dari 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
Dari 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. Menyiapkan Instance Vertex WorkbenchDurasi: 5:00
Buat Akun Layanan yang akan digunakan untuk identitas Instance Workbench.
Dari Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Catat nama lengkap Akun Layanan Anda dan beri izin aiplatform.admin untuk menjalankan panggilan ke Vertex AI/Gemini.
Dari Cloud Shell
gcloud iam service-accounts list
Contoh Output
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
Pastikan Anda mengganti <your-project-id> dengan Project ID Anda yang sebenarnya. Kita tidak dapat menggunakan variabel $project di sini karena tanda petik yang diperlukan.
Dari 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
Dari 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
Penyediaan Instance Workbench mungkin memerlukan waktu lebih lama daripada saat perintah gcloud dijalankan.
10. Uji Gemini CodeDuration: 7:00
Di UI, klik "Open JupyterLab".
Setelah berada di JupyterLab, buka Notebook Python 3 baru.
Jalankan kode berikut di notebook. Pastikan Anda memperbarui kode untuk menyertakan project dan informasi wilayah tertentu.
Dari Notebook JupyterLab
pip install --upgrade google-genai
Mulai ulang kernel notebook.
Catat endpoint API. Di sini kita menggunakan endpoint API <YOUR_REGION>-aiplatform.googleapis.com. Ini adalah endpoint API standar untuk Vertex AI.
Dari 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, )
Dari 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)
Contoh Respons
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.
Perhatikan nama API yang Anda gunakan saat menjalankan kode. YOUR_REGION-aiplatform.googleapis.com adalah nama API default untuk Vertex AI. Kita perlu mengubah nama API dan menjalankan kode lagi. Kita dapat memastikan bahwa kode menggunakan Endpoint PSC dengan menjalankan TCPdump di terminal pada Instance Workbench.
Menjalankan TCPdump di Terminal
Buka Terminal di Workbench dengan mengklik File > New > Terminal.
Jika Anda mengalami masalah saat melihat output teks di terminal, Anda perlu memperbarui tema terminal. Lakukan ini di Setelan > Tema Terminal > Terang ATAU Gelap.
Dari Terminal
sudo tcpdump host 10.100.100.0
Memperbarui Kode Gemini
Beralih kembali ke notebook, perbarui Endpoint API, dan jalankan kembali kode. Perhatikan bahwa kami mengubah endpoint API menjadi <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com. Hal ini sesuai dengan format API khusus PSC <service>-<endpointname>.p.googleapis.com.
Dari Notebook JupyterLab
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
Dari Notebook JupyterLab
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Dari 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)
Contoh Respons
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
Periksa TCPdump
Kembali ke terminal dan cari panggilan ke endpoint PSC (10.100.100.0). Akhiri TCPdump (control+c)
Contoh Output
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
BERHASIL!
11. Langkah-langkah pembersihan
Tutup notebook JupyterLab dan kembali ke Cloud Shell. Pastikan Cloud Shell Anda belum kehabisan waktu. Jika sudah, reset variabel Anda.
Dari 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
Hapus semua resource.
Dari 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. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Buat Hub NCC.
- Mengonfigurasi Spoke VPC di Hub NCC.
- Buat Cloud HA VPN.
- Mengonfigurasi Spoke Hybrid di Hub NCC.
- Buat endpoint PSC untuk Google API.
- Mengonfigurasi rute kustom melalui HA-VPN.
- Mengonfigurasi zona peering DNS.
- Mengonfigurasi Instance Vertex Workbench
- Konfigurasi kode Python Gemini untuk menggunakan PSC untuk Endpoint API Google API.