1. Ringkasan
Vertex AI API dapat diakses melalui internet, tetapi di perusahaan Anda, Anda mungkin ingin mengakses Vertex AI API secara pribadi tanpa melalui internet. Di lab ini, Anda akan melakukannya terlebih dahulu.
- Mengakses Gemini 3 Pro API melalui Vertex menggunakan Python SDK
- Ini akan berjalan di instance VM
- Koneksi akan dilakukan melalui Cloud NAT ke internet publik.
Kemudian, Anda akan membuat endpoint Private Service Connect ke Google API, dan mengubah alur traffic untuk menggunakan endpoint pribadi guna terhubung ke Gemini Chat API. Konfigurasi akan berupa kombinasi Terraform, gcloud, dan konsol.
Di lab ini, Anda akan membuat pola berikut.
Gambar 1.

2. Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menyiapkan instance VM untuk menggunakan python SDK
- Menghubungkan ke percakapan Gemini melalui skrip python
- Mengonfigurasi endpoint PSC untuk terhubung ke Googleapis
- Memverifikasi jalur konektivitas ke Googleais
- Mengonfigurasi entri DNS manual
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.
3. Tugas 1. Menyiapkan Lingkungan dengan Terraform
Kita akan membuat VPC kustom dengan aturan Firewall dan subnet. Buka konsol cloud dan pilih project yang akan Anda gunakan.
- Buka Cloud Shell yang berada di bagian atas konsol Anda di sebelah kanan, pastikan Anda melihat project id yang benar di Cloud Shell, dan konfirmasi setiap perintah untuk mengizinkan akses.

- Buat folder bernama terraform-build dan pindahkan ke folder
mkdir terraform-build && cd terraform-build
- Buat file main.tf dan variable.tf.
touch main.tf variable.tf
- Beralihlah ke tampilan Cloud Shell Editor. Pilih editor, pastikan Anda mengizinkan perintah yang diperlukan agar antarmuka dapat dimuat.
- Setelah dimuat, buka File > Open Folder, lalu buka /home/your-user-name/terraform-build, dan pilih Ok untuk membuka folder di editor.

- Pilih file variable.tf dan tambahkan kode berikut. Ganti teks
your-project-id-heredengan project ID Anda yang sebenarnya dalam tanda petik
variable "project_id" {
type = string
default = "your-project-id-here"
}
variable "network_id" {
type = string
default = "python-net"
}
- Selanjutnya, buka file main.tf. Kita akan menambahkan beberapa kode terraform untuk melakukan berbagai tindakan seperti yang dijelaskan di bawah.
Mengaktifkan API |
|
Buat VPC bernama python-net |
|
Menambahkan subnet |
|
Tambahkan dua aturan Firewall |
|
- Salin dan tempel kode berikut ke dalam file main .tf.
resource "google_project_service" "default" {
project = var.project_id
for_each = toset([
"dns.googleapis.com",
"aiplatform.googleapis.com",
"servicedirectory.googleapis.com"
])
service = each.value
disable_on_destroy = false
}
resource "google_compute_network" "default" {
project = var.project_id
name = var.network_id
auto_create_subnetworks = false
mtu = 1460
routing_mode = "GLOBAL"
}
resource "google_compute_subnetwork" "default" {
name = "vm1-subnet"
ip_cidr_range = "10.0.11.0/24"
project = var.project_id
region = "us-east1"
stack_type = "IPV4_ONLY"
network = google_compute_network.default.id
}
resource "google_compute_firewall" "allow_icmp" {
name = "allow-icmp-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-icmp"]
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-ssh"]
}
- Beralih kembali ke terminal Cloud Shell, pastikan Anda berada di direktori terraform-build
cd terraform-build, lalu jalankan perintah berikut
terraform init
Menginisialisasi direktori kerja. Langkah ini mendownload penyedia yang diperlukan untuk konfigurasi tertentu.
terraform plan
Membuat rencana eksekusi, yang menunjukkan tindakan yang akan dilakukan Terraform untuk men-deploy infrastruktur Anda.
- Sekarang untuk membuat resource, jalankan perintah
terraform applydan ketikyesuntuk menjalankan.
4. Tugas 2. Membuat gateway NAT dan VM dengan Terraform
Kita perlu memberikan akses eksternal keluar ke internet, jadi mari buat dan lampirkan gateway Cloud NAT.
- Buka Cloud Shell, buka folder terraform-build, lalu buat file berikut (total tiga file). Kita akan mengeditnya nanti.
touch nat-vm.tf psc.tf dns.tf
- Beralihlah ke tampilan Cloud Shell editor, pilih file nat-vm.tf, lalu tambahkan kode Terraform berikut. Tindakan ini akan membuat gateway NAT dan dua VM.
Terraform nat-vm.tf
resource "google_compute_router" "default" {
name = "py-outbound-nat"
region = "us-east1"
network = google_compute_network.default.id
project = var.project_id
bgp {
asn = 64514
}
}
resource "google_compute_router_nat" "default" {
name = "py-outbound-nat-gw"
router = google_compute_router.default.name
region = google_compute_router.default.region
nat_ip_allocate_option = "AUTO_ONLY"
project = var.project_id
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}
resource "google_compute_instance" "vm1" {
name = "py-vm1"
zone = "us-east1-b"
machine_type = "n2-standard-2"
project = var.project_id
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
subnetwork = google_compute_subnetwork.default.id
stack_type = "IPV4_ONLY"
}
tags = ["allow-ssh", "allow-icmp"]
metadata_startup_script = <<-EOF
#! /bin/bash
sudo apt-get update
sudo apt-get install python3 python3-dev python3-venv git -y
sudo apt-get install tcpdump dnsutils -y
mkdir -p ~/py-gem-env
cd ~/py-gem-env
python3 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install ipython google-genai
'
EOF
}
- Beralihlah ke terminal Cloud Shell, pastikan Anda berada di folder terraform-build, lalu jalankan
terraform plan. Perintah ini akan menunjukkan bahwa 4 item akan ditambahkan, lalu jalankanterraform applydan ketikyesuntuk membuat gateway NAT dan VM.
5. Tugas 3. Mengonfigurasi VM dan menguji
- Buka instance VM. Pilih VM yang dimulai dengan py-vm1. Pilih SSH.
- Setelah Anda menerapkan SSH ke py-vm1, aktifkan root dengan mengetik
sudo -i - Aktifkan lingkungan venv Anda:
cd py-gem-env
source env/bin/activate
- Sekarang, mari kita autentikasi ini untuk melakukan beberapa pengujian nanti. Jalankan perintah berikut di VM, tekan y saat diminta.
gcloud auth application-default login
- Selanjutnya, salin URL yang muncul dan diawali dengan https://, buka tab baru di jendela browser lab Anda, lalu tempel URL tersebut. Terima perintah.
- Saat Anda melihat perintah berikut, pilih salin, kembali ke sesi vm py-vm1, dan untuk Enter authorization code:, tempel kode yang Anda salin, lalu tekan enter untuk mengautentikasi.

- Sekarang, mari kita lakukan pengujian cepat untuk melihat apakah kita dapat terhubung ke Vertex API, yang menggunakan *-aiplatform.googleapis.com, jadi kita akan melakukan
digke alamat tersebut untuk melihat cara perutean traffic.
dig *-aiplatform.googleapis.com
- Anda akan melihat sesuatu yang serupa (alamat akan berbeda). Perhatikan bahwa jalur ini menggunakan alamat IP publik karena API adalah API publik. JANGAN DISALIN
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> *-aiplatform.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60947 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;*-aiplatform.googleapis.com. IN A ;; ANSWER SECTION: *-aiplatform.googleapis.com. 300 IN A 173.194.216.95 *-aiplatform.googleapis.com. 300 IN A 108.177.11.95 *-aiplatform.googleapis.com. 300 IN A 192.178.219.95 *-aiplatform.googleapis.com. 300 IN A 74.125.134.95 *-aiplatform.googleapis.com. 300 IN A 74.125.139.95 *-aiplatform.googleapis.com. 300 IN A 108.177.12.95 *-aiplatform.googleapis.com. 300 IN A 173.194.210.95 *-aiplatform.googleapis.com. 300 IN A 74.125.26.95 *-aiplatform.googleapis.com. 300 IN A 173.194.212.95 *-aiplatform.googleapis.com. 300 IN A 172.217.204.95
- Sekarang mari kita gunakan python. Ketik
ipythonuntuk mengaktifkan antarmuka ipython.
ipython

- Sekarang salin dan tempel berikut. Hal ini akan menanyakan "Apa saja warna logo Google" dan "Apa warna langit" kepada Gemini.
from google import genai
from google.genai import types
import os
import sys
LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview"
try:
client = genai.Client(vertexai=True, location=LOCATION)
print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
print(f"Error initializing client: {e}")
print("Ensure you have installed the library: `pip install google-genai`")
print("And authenticated: `gcloud auth application-default login`")
sys.exit(1)
class SimpleChatSession:
def __init__(self, model_id):
self.model_id = model_id
self.history = []
def send_message(self, prompt, stream=True):
user_content = types.Content(
role="user",
parts=[types.Part(text=prompt)]
)
self.history.append(user_content)
try:
response_stream = client.models.generate_content_stream(
model=self.model_id,
contents=self.history,
config=types.GenerateContentConfig(
temperature=0.7
)
)
accumulated_text = ""
for chunk in response_stream:
if chunk.text:
yield chunk.text
accumulated_text += chunk.text
model_content = types.Content(
role="model",
parts=[types.Part(text=accumulated_text)]
)
self.history.append(model_content)
except Exception as e:
print(f"\n[Error during generation: {e}]")
def get_chat_response(session: SimpleChatSession, prompt: str):
print(f"\n--- User: {prompt} ---")
print("--- Model: ", end="")
stream_generator = session.send_message(prompt)
full_text = ""
for chunk_text in stream_generator:
full_text += chunk_text
print(chunk_text, end="", flush=True)
print()
return full_text
if __name__ == "__main__":
chat_session = SimpleChatSession(MODEL_ID)
get_chat_response(chat_session, "Hello.")
get_chat_response(chat_session, "What are all the colors of the Google logo?")
get_chat_response(chat_session, "What color is the sky?")
- Tekan enter dua kali untuk menjalankan dan melihat hasilnya.
- Permintaan ini mengakses Vertex melalui API publik.
- Tutup sesi SSH, lalu lanjutkan.
6. Tugas 4. Buat endpoint PSC ke googleapis dengan Terraform
Untuk mengaktifkan konektivitas pribadi ke endpoint Vertex API kami, kita akan membuat endpoint Private Service Connect untuk Google API. Hal ini akan memungkinkan kita menggunakan alamat IP pribadi yang kita tetapkan untuk merutekan traffic ke Google API yang kita butuhkan, dalam hal ini Vertex.
- Buka Cloud Shell dalam tampilan editor jika belum terbuka. Kita akan membuat hal berikut:
- Buat IP untuk endpoint PSC 192.168.255.250 (
resource "google_compute_global_address" "default") - Buat endpoint PSC ke Google API (
resource "google_compute_global_forwarding_rule" "default")
Buka file psc.tf di folder terraform-build. Tambahkan kode berikut ke file.
Terraform psc.tf
resource "google_compute_global_address" "default" {
name = "vertex-ip"
purpose = "PRIVATE_SERVICE_CONNECT"
network = google_compute_network.default.id
address_type = "INTERNAL"
address = "192.168.255.250"
}
resource "google_compute_global_forwarding_rule" "default" {
name = "pscvertexgemini"
target = "all-apis"
network = google_compute_network.default.id
ip_address = google_compute_global_address.default.id
load_balancing_scheme = ""
}
- Beralih ke terminal Cloud Shell, pastikan Anda berada di folder
terraform-build. Kemudian, jalankanterraform initLalu, jalankanterraform plan, yang akan menunjukkan bahwa 2 item akan ditambahkan,
lalu jalankanterraform applydan ketikyesuntuk membuat endpoint IP dan PSC Google API. - Memverifikasi keberadaan endpoint
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global
7. Tugas 5. Membuat entri DNS Manual ke googleapis dengan Terraform
Anda dapat membuat entri DNS manual untuk mengarah ke endpoint PSC menggunakan DNS pribadi. Tindakan ini akan memengaruhi semua jaringan yang Anda tetapkan ke perangkat tersebut.
- Buka Network services, lalu pilih Cloud DNS.
- Di zona, Anda akan melihat zona yang dibuat secara otomatis untuk Private Service Connect untuk Google API, dengan jenis zona direktori layanan. Hal ini dapat digunakan untuk terhubung ke endpoint PSC dengan format **SERVICE-ENDPOINT.p.googleapis.com Contoh:
aiplatform-pscvertexgemini.p.googleapis.com - Dalam hal ini, kita ingin membuat entri DNS pribadi secara manual. Konfigurasinya adalah sebagai berikut
- Buat zona DNS pribadi bernama "googleapis-private" untuk "googleapis.com" dan batasi ke jaringan "python-net".
- Tambahkan data A untuk memetakan "googleapis.com" ke alamat IP "192.168.255.250".
- Tambahkan data CNAME untuk mengalihkan semua subdomain "googleapis.com" (misalnya, www.googleapis.com) ke "googleapis.com".
- Buka Cloud Shell dalam tampilan editor jika belum terbuka. Buka file dns.tf di folder terraform-build. Tambahkan kode berikut ke file.
Terraform dns.tf
resource "google_dns_managed_zone" "private_zone" {
name = "googleapis-private"
dns_name = "googleapis.com."
visibility = "private"
project = var.project_id
private_visibility_config {
networks {
network_url = google_compute_network.default.id
}
}
}
resource "google_dns_record_set" "a_record" {
name = "googleapis.com."
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["192.168.255.250"]
}
resource "google_dns_record_set" "cname_record" {
name = "*.googleapis.com."
type = "CNAME"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["googleapis.com."]
}
- Beralih ke terminal Cloud Shell, pastikan Anda berada di folder
terraform-build. Kemudian, jalankanterraform planini akan menunjukkan item yang akan ditambahkan,
Kemudian, jalankanterraform applydan ketikyesuntuk membuat entri DNS pribadi. - Anda akan melihat penyiapan dengan data A dan CNAME seperti ini, lihat

- Selanjutnya, kita akan memverifikasi konektivitas dengan perubahan ini di py-vm1
8. Tugas 6. Memverifikasi konektivitas endpoint melalui alamat IP
Mari kita terhubung menggunakan endpoint pribadi untuk terhubung ke Gemini.
- Buka Instance VM py-vm1. Pilih SSH dan SSH ke VM
- Dapatkan akses root dengan mengetik
sudo -i - Periksa jalur konektivitas ke aiplatform.googleapis.com menggunakan perintah
ping. Tindakan ini akan melakukan ping ke alamat IP di DNS pribadi, data A untuk googleapis. IP ini adalah endpoint PSC dan ping Anda tidak akan berhasil.
ping -c 2 aiplatform.googleapis.com
- Periksa jalur konektivitas dengan
pingmenggunakan entri DNS yang dibuat secara otomatis untuk Google API PSC denganaiplatform-pscvertexgemini.p.googleapis.com. Hal ini mengarah ke alamat IP endpoint PSC dan ping Anda akan gagal.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
- Periksa jalur konektivitas ke aiplatform.googleapis.com menggunakan perintah
dig. Ini harus berupa alamat IP endpoint PSC.
dig aiplatform.googleapis.com
- Kembali ke konsol dan buka instance VM py-vm1 lainnya. Pilih SSH dan SSH ke VM
- Dapatkan akses root dengan mengetik
sudo -i - Jalankan perintah berikut untuk melihat konektivitas dalam TCP dump
sudo tcpdump -i any port 53 -n or host aiplatform.googleapis.com
- Sekarang, beralih kembali ke instance SSH pertama dari Instance VM py-vm1
- Aktifkan env menggunakan
cd py-gem-env
source env/bin/activate
- Sekarang mari kita uji python. Ketik
ipythonuntuk mengaktifkan antarmuka ipython.
ipython
- Sekarang salin dan tempel berikut. Perintah ini meminta Gemini "Dalam satu kalimat singkat, ringkaslah apa itu tokenisasi dalam konteks AI?" dan "Apakah paus itu keren atau tidak?".
from google import genai
from google.genai import types
import os
import sys
LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview"
try:
client = genai.Client(vertexai=True, location=LOCATION)
print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
print(f"Error initializing client: {e}")
print("Ensure you have installed the library: `pip install google-genai`")
print("And authenticated: `gcloud auth application-default login`")
sys.exit(1)
class SimpleChatSession:
def __init__(self, model_id):
self.model_id = model_id
self.history = []
def send_message(self, prompt, stream=True):
user_content = types.Content(
role="user",
parts=[types.Part(text=prompt)]
)
self.history.append(user_content)
try:
response_stream = client.models.generate_content_stream(
model=self.model_id,
contents=self.history,
config=types.GenerateContentConfig(
temperature=0.7
)
)
accumulated_text = ""
for chunk in response_stream:
if chunk.text:
yield chunk.text
accumulated_text += chunk.text
model_content = types.Content(
role="model",
parts=[types.Part(text=accumulated_text)]
)
self.history.append(model_content)
except Exception as e:
print(f"\n[Error during generation: {e}]")
def get_chat_response(session: SimpleChatSession, prompt: str):
print(f"\n--- User: {prompt} ---")
print("--- Model: ", end="")
stream_generator = session.send_message(prompt)
full_text = ""
for chunk_text in stream_generator:
full_text += chunk_text
print(chunk_text, end="", flush=True)
print()
return full_text
if __name__ == "__main__":
chat_session = SimpleChatSession(MODEL_ID)
get_chat_response(chat_session, "Hello.")
get_chat_response(chat_session, "In one short sentence summarize what is a tokenizer in the context of AI?")
get_chat_response(chat_session, "Are whales awesome or not?")
- Tekan enter dua kali untuk menjalankan dan melihat hasilnya.
- Beralih kembali ke instance kedua VM Instance py-vm1. Anda akan melihat hasil TCPDUMP. Anda akan melihat traffic masuk dan keluar serta alamat IP VM menggunakan alamat IP endpoint PSC untuk terhubung ke aiplatform.googleapis.com
Tutup semua sesi SSH ke Instance VM py-vm1
9. Pembersihan
- Buka Cloud Shell dan pastikan Anda berada di direktori terraform-build
cd terraform-build - Jalankan
terraform plan destroyuntuk melihat semua perubahan yang akan dilakukan
terraform plan -destroy
- Kemudian, jalankan perintah
terraform destroy, lalu ketikyes, dan semua resource yang Anda buat di project dengan Terraform akan dihapus.
terraform destroy
10. Selamat
Selamat, Anda telah berhasil terhubung ke Vertex dan menggunakan Gemini 3 pro melalui alamat API publik dan secara pribadi menggunakan Endpoint Private Service Connect untuk Google API. Fungsi ini dapat memperluas konektivitas API pribadi ke lingkungan lokal/cloud lain yang terhubung melalui (Interconnect, Cross-Cloud Interconnect, dan VPC).
Langkah berikutnya/Pelajari lebih lanjut
Anda dapat membaca lebih lanjut tentang jaringan Vertex AI
Codelab: Mengakses Anthropic Claude di Vertex AI dengan Python SDK melalui endpoint Private Service Connect
Ikuti lab berikutnya
Lanjutkan quest Anda dengan Google Cloud, dan pelajari lab Google Cloud Skills Boost lainnya: