1. บทนำ
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีทำให้บริการการดึงข้อมูลฐานข้อมูล GenAI ใช้งานได้ และสร้างแอปพลิเคชันแบบอินเทอร์แอกทีฟตัวอย่างโดยใช้สภาพแวดล้อมที่ติดตั้งใช้งาน
ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการการดึงข้อมูล GenAI และตัวอย่างแอปพลิเคชันได้ที่นี่
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ Google Cloud Console
- ทักษะพื้นฐานในอินเทอร์เฟซบรรทัดคำสั่งและ Google Cloud Shell
สิ่งที่คุณจะได้เรียนรู้
- วิธีทำให้คลัสเตอร์ AlloyDB ใช้งานได้
- วิธีเชื่อมต่อกับ AlloyDB
- วิธีกำหนดค่าและทำให้บริการดึงข้อมูลฐานข้อมูล GenAI ใช้งานได้
- วิธีทำให้แอปพลิเคชันตัวอย่างใช้งานได้โดยใช้บริการที่ทำให้ใช้งานได้
สิ่งที่ต้องมี
- บัญชี Google Cloud และโปรเจ็กต์ Google Cloud
- เว็บเบราว์เซอร์ เช่น Chrome
2. การตั้งค่าและข้อกําหนด
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่อีกครั้ง หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะซ้ำกันไม่ได้ในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ปกติจะระบุเป็น
PROJECT_ID
) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าอุปกรณ์พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้ และชื่อนี้จะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณก็ลบทรัพยากรที่สร้างไว้หรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า $300 USD
เริ่ม Cloud Shell
แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน ดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ คุณทํางานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย
3. ก่อนเริ่มต้น
เปิดใช้ API
เอาต์พุต:
ใน Cloud Shell ให้ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์แล้ว โดยทำดังนี้
โดยปกติแล้ว รหัสโปรเจ็กต์จะแสดงในวงเล็บในพรอมต์คำสั่งในเชลล์ระบบคลาวด์ดังที่แสดงในภาพ
gcloud config set project [YOUR-PROJECT-ID]
จากนั้นตั้งค่าตัวแปรสภาพแวดล้อม PROJECT_ID เป็นรหัสโปรเจ็กต์ Google Cloud ดังนี้
PROJECT_ID=$(gcloud config get-value project)
เปิดใช้บริการที่จำเป็นทั้งหมด
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com
ผลลัพธ์ที่คาดหวัง
student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.googleapis.com \ compute.googleapis.com \ cloudresourcemanager.googleapis.com \ servicenetworking.googleapis.com \ vpcaccess.googleapis.com \ aiplatform.googleapis.com \ cloudbuild.googleapis.com \ artifactregistry.googleapis.com \ run.googleapis.com \ iam.googleapis.com Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.
4. ติดตั้งใช้งานคลัสเตอร์ AlloyDB
ก่อนสร้างคลัสเตอร์ AlloyDB เราต้องมีช่วง IP ส่วนตัวที่พร้อมใช้งานใน VPC เพื่อให้อินสแตนซ์ AlloyDB ในอนาคตใช้ หากไม่มี เราจะต้องสร้าง กำหนดให้บริการภายในของ Google นำไปใช้ แล้วหลังจากนั้นจึงจะสร้างคลัสเตอร์และอินสแตนซ์ได้
สร้างช่วง IP ส่วนตัว
เราต้องกำหนดค่าการเข้าถึงบริการส่วนตัวใน VPC สำหรับ AlloyDB สมมติฐานของเราคือเรามีเครือข่าย VPC "เริ่มต้น" ในโปรเจ็กต์และจะใช้เครือข่ายดังกล่าวสําหรับการดำเนินการทั้งหมด
สร้างช่วง IP ส่วนตัวดังนี้
gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
สร้างการเชื่อมต่อส่วนตัวโดยใช้ช่วง IP ที่จัดสรรไว้
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
เอาต์พุตคอนโซลที่คาดไว้:
student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \ --global \ --purpose=VPC_PEERING \ --prefix-length=24 \ --description="VPC private service access" \ --network=default Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range]. student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=psa-range \ --network=default Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully. student@cloudshell:~ (test-project-402417)$
สร้างคลัสเตอร์ AlloyDB
สร้างคลัสเตอร์ AlloyDB ในภูมิภาค us-central1
กำหนดรหัสผ่านสำหรับผู้ใช้ postgres คุณสามารถกําหนดรหัสผ่านของคุณเองหรือใช้ฟังก์ชันสุ่มเพื่อสร้างรหัสผ่าน
export PGPASSWORD=`openssl rand -hex 12`
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`
จดรหัสผ่าน PostgreSQL ไว้ใช้ในอนาคต
echo $PGPASSWORD
เอาต์พุตคอนโซลที่คาดไว้:
student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD bbefbfde7601985b0dee5723
กำหนดชื่อภูมิภาคและคลัสเตอร์ AlloyDB เราจะใช้ภูมิภาค us-central1 และ alloydb-aip-01 เป็นชื่อคลัสเตอร์
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
เรียกใช้คําสั่งเพื่อสร้างคลัสเตอร์
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
เอาต์พุตคอนโซลที่คาดหวัง
export REGION=us-central1 export ADBCLUSTER=alloydb-aip-01 gcloud alloydb clusters create $ADBCLUSTER \ --password=$PGPASSWORD \ --network=default \ --region=$REGION Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4 Creating cluster...done.
สร้างอินสแตนซ์หลักของ AlloyDB
สร้างอินสแตนซ์หลัก AlloyDB สําหรับคลัสเตอร์ของเราในเซสชัน Cloud Shell เดียวกัน หากถูกตัดการเชื่อมต่อ คุณจะต้องกําหนดตัวแปรสภาพแวดล้อมชื่อคลัสเตอร์และภูมิภาคอีกครั้ง
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--cluster=$ADBCLUSTER
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \ --instance-type=PRIMARY \ --cpu-count=2 \ --region=$REGION \ --availability-type ZONAL \ --cluster=$ADBCLUSTER Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721 Creating instance...done.
5. เตรียมเครื่องเสมือน GCE
สร้างบัญชีบริการ
เนื่องจากเราจะใช้ VM เพื่อติดตั้งใช้งานบริการการดึงข้อมูลฐานข้อมูล GenAI และโฮสต์แอปพลิเคชันตัวอย่าง ขั้นตอนแรกคือการสร้างบัญชีบริการ Google (GSA) GCE จะนำ GSA ไปใช้และเราจะต้องให้สิทธิ์ที่จำเป็นในการทำงานร่วมกับบริการอื่นๆ
ใน Cloud Shell ให้ดำเนินการต่อไปนี้
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create compute-aip --project $PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/serviceusage.serviceUsageConsumer"
ติดตั้งใช้งาน VM ใน GCE
สร้าง GCE VM ในภูมิภาคและ VPC เดียวกันกับคลัสเตอร์ AlloyDB
ใน Cloud Shell ให้ดำเนินการต่อไปนี้
export ZONE=us-central1-a
gcloud compute instances create instance-1 \
--zone=$ZONE \
--create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
เอาต์พุตคอนโซลที่คาดไว้:
student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a gcloud compute instances create instance-1 \ --zone=$ZONE \ --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \ --scopes=https://www.googleapis.com/auth/cloud-platform Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/zones/us-central1-a/instances/instance-1]. NAME: instance-1 ZONE: us-central1-a MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.0.2 EXTERNAL_IP: 34.71.192.233 STATUS: RUNNING
ติดตั้งไคลเอ็นต์ Postgres
ติดตั้งซอฟต์แวร์ไคลเอ็นต์ PostgreSQL ใน VM ที่ติดตั้งใช้งาน
เชื่อมต่อกับ VM โดยใช้คำสั่งต่อไปนี้
gcloud compute ssh instance-1 --zone=us-central1-a
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417]. Updating project ssh metadata...done. Waiting for SSH key to propagate. Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts. Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
ติดตั้งคำสั่งเรียกใช้ซอฟต์แวร์ภายใน VM โดยทำดังนี้
sudo apt-get update
sudo apt-get install --yes postgresql-client
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ sudo apt-get update sudo apt-get install --yes postgresql-client Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:4 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B] Hit:7 https://packages.cloud.google.com/apt google-compute-engine-bookworm-stable InRelease Get:8 https://packages.cloud.google.com/apt cloud-sdk-bookworm InRelease [1652 B] Get:2 https://deb.debian.org/debian bookworm InRelease [151 kB] Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB] ...redacted... update-alternatives: using /usr/share/postgresql/15/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode Setting up postgresql-client (15+248) ... Processing triggers for man-db (2.11.2-2) ... Processing triggers for libc-bin (2.36-9+deb12u7) ...
เชื่อมต่อกับอินสแตนซ์
เชื่อมต่อกับอินสแตนซ์หลักจาก VM โดยใช้ psql
ดำเนินการต่อด้วยเซสชัน SSH ที่เปิดอยู่ไปยัง VM หากคุณถูกตัดการเชื่อมต่อ ให้เชื่อมต่ออีกครั้งโดยใช้คำสั่งเดียวกับด้านบน
ใช้ $PGASSWORD และชื่อคลัสเตอร์ที่ระบุไว้ก่อนหน้านี้เพื่อเชื่อมต่อกับ AlloyDB จาก GCE VM
export PGPASSWORD=<Noted password>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ export PGPASSWORD=P9... student@instance-1:~$ export REGION=us-central1 student@instance-1:~$ export ADBCLUSTER=alloydb-aip-01 student@instance-1:~$ export INSTANCE_IP=export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)") student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres sslmode=require" psql (13.11 (Debian 13.11-0+deb11u1), server 14.7) WARNING: psql major version 13, server major version 14. Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=>
ออกจากเซสชัน psql โดยที่การเชื่อมต่อ SSH ยังคงอยู่
exit
เอาต์พุตคอนโซลที่คาดหวัง
postgres=> exit student@instance-1:~$
6. เริ่มต้นฐานข้อมูล
เราจะใช้ VM ของลูกค้าเป็นแพลตฟอร์มในการป้อนข้อมูลลงในฐานข้อมูลและโฮสต์แอปพลิเคชัน ขั้นตอนแรกคือการสร้างฐานข้อมูลและป้อนข้อมูล
สร้างฐานข้อมูล
สร้างฐานข้อมูลชื่อ "assistantdemo"
ดำเนินการต่อไปนี้ในเซสชัน VM ของ GCE
psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo" CREATE DATABASE student@instance-1:~$
เปิดใช้ส่วนขยาย pgVector
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector"
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector" CREATE EXTENSION student@instance-1:~$
เตรียมสภาพแวดล้อม Python
ในการดำเนินการต่อ เราจะใช้สคริปต์ Python ที่เตรียมไว้จากที่เก็บ GitHub แต่ก่อนที่จะดำเนินการดังกล่าว เราจำเป็นต้องติดตั้งซอฟต์แวร์ที่จำเป็น
ในการดำเนินการ VM ของ GCE ให้ทำดังนี้
sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
เอาต์พุตคอนโซลที่คาดไว้:
student@instance-1:~$ sudo apt install -y python3.11-venv git python3 -m venv .venv source .venv/bin/activate pip install --upgrade pip Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl Suggested packages: git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc The following NEW packages will be installed: git git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl python3.11-venv 0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded. Need to get 12.4 MB of archives. After this operation, 52.2 MB of additional disk space will be used. Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] ...redacted... Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 23.0.1 Uninstalling pip-23.0.1: Successfully uninstalled pip-23.0.1 Successfully installed pip-24.0 (.venv) student@instance-1:~$
ยืนยันเวอร์ชัน Python
ในการดำเนินการ VM ของ GCE ให้ทำดังนี้
python -V
เอาต์พุตคอนโซลที่คาดหวัง
(.venv) student@instance-1:~$ python -V Python 3.11.2 (.venv) student@instance-1:~$
ป้อนข้อมูลฐานข้อมูล
โคลนที่เก็บ GitHub ที่มีโค้ดสําหรับบริการการดึงข้อมูลและแอปพลิเคชันตัวอย่าง
ใน GCE VM ให้ทำดังนี้
git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git Cloning into 'genai-databases-retrieval-app'... remote: Enumerating objects: 525, done. remote: Counting objects: 100% (336/336), done. remote: Compressing objects: 100% (201/201), done. remote: Total 525 (delta 224), reused 179 (delta 135), pack-reused 189 Receiving objects: 100% (525/525), 46.58 MiB | 16.16 MiB/s, done. Resolving deltas: 100% (289/289), done.
เตรียมไฟล์การกําหนดค่า
ใน GCE VM ให้ทำดังนี้
cd genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/postgres/g config.yml
cat config.yml
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service cp example-config.yml config.yml sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml sed -i s/my-password/$PGPASSWORD/g config.yml sed -i s/my_database/assistantdemo/g config.yml sed -i s/my-user/postgres/g config.yml cat config.yml host: 0.0.0.0 # port: 8080 datastore: # Example for AlloyDB kind: "postgres" host: 10.65.0.2 # port: 5432 database: "assistantdemo" user: "postgres" password: "P9..."
ป้อนข้อมูลชุดข้อมูลตัวอย่างลงในฐานข้อมูล คำสั่งแรกจะเพิ่มแพ็กเกจที่จำเป็นทั้งหมดลงในสภาพแวดล้อมเสมือนของ Python และคำสั่งที่ 2 จะป้อนข้อมูลลงในฐานข้อมูล
ในการดำเนินการ VM ของ GCE ให้ทำดังนี้
pip install -r requirements.txt
python run_database_init.py
ผลลัพธ์ที่คาดหวังจากคอนโซล(ปกปิดบางส่วน)
student@instance-1:~/genai-databases-retrieval-app/retrieval_service$ pip install -r requirements.txt python run_database_init.py Collecting asyncpg==0.28.0 (from -r requirements.txt (line 1)) Obtaining dependency information for asyncpg==0.28.0 from https://files.pythonhosted.org/packages/77/a4/88069f7935b14c58534442a57be3299179eb46aace2d3c8716be199ff6a6/asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata Downloading asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.3 kB) Collecting fastapi==0.101.1 (from -r requirements.txt (line 2)) ... database init done. student@instance-1:~/genai-databases-retrieval-app/retrieval_service$
7. ทำให้บริการดึงข้อมูลใช้งานได้กับ Cloud Run
ตอนนี้ เราสามารถทำให้บริการดึงข้อมูลใช้งานได้กับ Cloud Run แล้ว บริการมีหน้าที่รับผิดชอบในการจัดการกับฐานข้อมูลและดึงข้อมูลที่จำเป็นออกจากฐานข้อมูลตามคำขอจากแอปพลิเคชัน AI
สร้างบัญชีบริการ
สร้างบัญชีบริการสําหรับบริการดึงข้อมูลและมอบสิทธิ์ที่จําเป็น
เปิดแท็บ Cloud Shell อื่นโดยใช้เครื่องหมาย "+" ที่ด้านบน
ดำเนินการต่อไปนี้ในแท็บ Cloud Shell ใหม่
export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create retrieval-identity
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (gleb-test-short-003)$ gcloud iam service-accounts create retrieval-identity Created service account [retrieval-identity].
ปิดแท็บด้วยคำสั่งการดำเนินการ "exit" ในแท็บ
exit
ทำให้บริการการเรียกข้อมูลใช้งานได้
ดำเนินการต่อในแท็บแรกที่คุณเชื่อมต่อกับ VM ผ่าน SSH ด้วยการทำให้บริการใช้งานได้
ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้
cd ~/genai-databases-retrieval-app
gcloud alpha run deploy retrieval-service \
--source=./retrieval_service/\
--no-allow-unauthenticated \
--service-account retrieval-identity \
--region us-central1 \
--network=default \
--quiet
เอาต์พุตคอนโซลที่คาดหวัง
student@instance-1:~/genai-databases-retrieval-app$ gcloud alpha run deploy retrieval-service \ --source=./retrieval_service/\ --no-allow-unauthenticated \ --service-account retrieval-identity \ --region us-central1 \ --network=default This command is equivalent to running `gcloud builds submit --tag [IMAGE] ./retrieval_service/` and `gcloud run deploy retrieval-service --image [IMAGE]` Building using Dockerfile and deploying container to Cloud Run service [retrieval-service] in project [gleb-test-short-003] region [us-central1] X Building and deploying... Done. ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/6ebe74bf-3039-4221-b2e9-7ca8fa8dad8e?project=1012713954588]. ✓ Creating Revision... ✓ Routing traffic... Setting IAM Policy... Completed with warnings: Setting IAM policy failed, try "gcloud beta run services remove-iam-policy-binding --region=us-central1 --member=allUsers --role=roles/run.invoker retrieval-service" Service [retrieval-service] revision [retrieval-service-00002-4pl] has been deployed and is serving 100 percent of traffic. Service URL: https://retrieval-service-onme64eorq-uc.a.run.app student@instance-1:~/genai-databases-retrieval-app$
ยืนยันบริการ
ตอนนี้เราตรวจสอบได้ว่าบริการทำงานอย่างถูกต้องและ VM มีสิทธิ์เข้าถึงอุปกรณ์ปลายทางหรือไม่ เราใช้ยูทิลิตี gcloud เพื่อรับปลายทางบริการดึงข้อมูล หรือจะตรวจสอบในคอนโซลระบบคลาวด์และแทนที่ "$(gcloud run services list –filter="(retrieval-service)" ในคําสั่ง curl ด้วยค่าจากตรงนั้นก็ได้
ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
เอาต์พุตคอนโซลที่คาดไว้:
student@instance-1:~/genai-databases-retrieval-app$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)") {"message":"Hello World"}student@instance-1:~/genai-databases-retrieval-app$
หากเห็นข้อความ "Hello World" แสดงว่าบริการของเราพร้อมให้บริการและกำลังดำเนินการตามคำขอ
8. ทำให้แอปพลิเคชันตัวอย่างใช้งานได้
ในตอนนี้เมื่อเรามีบริการดึงข้อมูลและเรียกใช้ เราสามารถทำให้แอปพลิเคชันตัวอย่างซึ่งจะใช้บริการนั้นได้ แอปพลิเคชันสามารถทําให้ใช้งานได้ใน VM หรือบริการอื่นๆ เช่น Cloud Run, Kubernetes หรือแม้แต่ในเครื่องแล็ปท็อป ตอนนี้ เราจะแสดงวิธีติดตั้งใช้งานบน VM
เตรียมสภาพแวดล้อม
เราจะดำเนินการกับ VM โดยใช้เซสชัน SSH เดียวกันต่อไป เราต้องเพิ่มโมดูล Python บางรายการเพื่อเรียกใช้แอปพลิเคชัน ระบบจะเรียกใช้คําสั่งจากไดเรกทอรีแอปพลิเคชันในสภาพแวดล้อมเสมือนของ Python เดียวกัน
ในเซสชัน SSH ของ VM ให้ดำเนินการต่อไปนี้
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)
student@instance-1:~$ cd ~/genai-databases-retrieval-app/llm_demo pip install -r requirements.txt Collecting fastapi==0.104.0 (from -r requirements.txt (line 1)) Obtaining dependency information for fastapi==0.104.0 from https://files.pythonhosted.org/packages/db/30/b8d323119c37e15b7fa639e65e0eb7d81eb675ba166ac83e695aad3bd321/fastapi-0.104.0-py3-none-any.whl.metadata Downloading fastapi-0.104.0-py3-none-any.whl.metadata (24 kB) ...
เตรียมรหัสไคลเอ็นต์
หากต้องการใช้ฟังก์ชันการจองของแอปพลิเคชัน เราต้องเตรียมรหัสไคลเอ็นต์ OAuth 2.0 โดยใช้ Cloud Console จะเป็นตอนที่เราลงชื่อเข้าใช้แอปพลิเคชัน เนื่องจากการจองใช้ข้อมูลเข้าสู่ระบบของลูกค้าเพื่อบันทึกข้อมูลการจองในฐานข้อมูล
ใน Cloud Console ให้ไปที่ API และบริการ แล้วคลิก "หน้าจอขอความยินยอม OAuth" แล้วเลือกผู้ใช้ "ภายใน"
จากนั้นกด "สร้าง" แล้วทำตามในหน้าจอถัดไป
คุณต้องกรอกข้อมูลในช่องที่ต้องกรอก เช่น "ชื่อแอป" และ "อีเมลการสนับสนุนผู้ใช้" นอกจากนี้ คุณยังเพิ่มโดเมนที่ต้องการแสดงในหน้าจอขอความยินยอม และ "ข้อมูลติดต่อของนักพัฒนาแอป" ได้ด้วย
จากนั้นกดปุ่ม "บันทึกและดำเนินการต่อ" ที่ด้านล่างของหน้า ซึ่งจะนำคุณไปยังหน้าถัดไป
คุณไม่จําเป็นต้องเปลี่ยนแปลงอะไรในนั้น เว้นแต่ว่าคุณต้องการระบุขอบเขต สุดท้าย ให้คุณยืนยันโดยการกดปุ่ม "บันทึกและดำเนินการต่อ" อีกครั้ง ซึ่งจะเป็นการตั้งค่าหน้าจอคำยินยอมของแอปพลิเคชัน
ขั้นตอนถัดไปคือการสร้างรหัสไคลเอ็นต์ ในแผงด้านซ้าย ให้คลิก "ข้อมูลเข้าสู่ระบบ" ซึ่งจะนำคุณไปยังข้อมูลเข้าสู่ระบบสำหรับ OAuth2
ที่นี่ ให้คลิก "สร้างข้อมูลเข้าสู่ระบบ" ที่ด้านบน แล้วเลือก "รหัสไคลเอ็นต์ OAuth" จากนั้นหน้าจอจะเปิดขึ้นอีกหน้าจอ
เลือก "เว็บแอปพลิเคชัน" จากรายการแบบเลื่อนลงสำหรับประเภทแอปพลิเคชัน แล้วใส่ URI ของแอปพลิเคชัน (และพอร์ต หากต้องการ) เป็น "ต้นทาง JavaScript ที่ได้รับอนุญาต" และคุณต้องเพิ่ม "URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต" ของโฮสต์แอปพลิเคชันที่มี "/login/google" ต่อท้ายเพื่อให้ใช้หน้าจอป๊อปอัปการให้สิทธิ์ได้ ในรูปภาพด้านบน คุณจะเห็นว่าเราใช้ http://localhost เป็น URI ของแอปพลิเคชันพื้นฐาน
หลังจากกดปุ่ม "สร้าง" คุณจะเห็นหน้าต่างป๊อปอัปที่มีข้อมูลเข้าสู่ระบบของลูกค้า
เราจะต้องใช้รหัสไคลเอ็นต์ (และรหัสลับไคลเอ็นต์ (ไม่บังคับ)) เพื่อใช้กับแอปพลิเคชันของเราในภายหลัง
เรียกใช้แอปพลิเคชัน Assistant
ก่อนเริ่มแอปพลิเคชัน เราจำเป็นต้องตั้งค่าตัวแปรสภาพแวดล้อมบางรายการ ฟังก์ชันพื้นฐานของแอปพลิเคชัน เช่น การค้นหาเที่ยวบินและสิ่งอำนวยความสะดวกในสนามบิน ต้องใช้เพียง BASE_URL ซึ่งจะชี้แอปพลิเคชันไปยังบริการการเรียกข้อมูล เรารับข้อมูลได้โดยใช้คําสั่ง gcloud
ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)
student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
หากต้องการใช้ความสามารถขั้นสูงเพิ่มเติมของแอปพลิเคชัน เช่น การจองและการเปลี่ยนแปลงเที่ยวบิน เราต้องลงชื่อเข้าใช้แอปพลิเคชันโดยใช้บัญชี Google และเพื่อวัตถุประสงค์ดังกล่าว เราต้องระบุตัวแปรสภาพแวดล้อม CLIENT_ID โดยใช้รหัสไคลเอ็นต์ OAuth จากบทเตรียมรหัสไคลเอ็นต์ ดังนี้
export CLIENT_ID=215....apps.googleusercontent.com
ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)
student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export CLIENT_ID=215....apps.googleusercontent.com
และตอนนี้เราสามารถเรียกใช้แอปพลิเคชันของเรา:
python run_app.py
เอาต์พุตที่คาดไว้:
student@instance-1:~/genai-databases-retrieval-app/llm_demo$ python main.py INFO: Started server process [28565] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
เชื่อมต่อกับแอปพลิเคชัน
การเชื่อมต่อกับแอปพลิเคชันที่ทำงานบน VM ทำได้หลายวิธี ตัวอย่างเช่น คุณสามารถเปิดพอร์ต 8081 บน VM โดยใช้กฎไฟร์วอลล์ใน VPC หรือสร้างตัวจัดสรรภาระงานที่มี IP สาธารณะ ในที่นี้เราจะใช้อุโมงค์ SSH ไปยัง VM ที่แปลพอร์ต 8080 ในเครื่องไปยังพอร์ต VM 8081
การเชื่อมต่อจากเครื่อง
เมื่อต้องการเชื่อมต่อจากเครื่องในเครื่อง เราต้องเรียกใช้อุโมงค์ SSH ซึ่งทำได้โดยใช้ gcloud compute ssh
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081
ผลลัพธ์ที่คาดหวัง
student-macbookpro:~ student$ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 Warning: Permanently added 'compute.7064281075337367021' (ED25519) to the list of known hosts. Linux instance-1.us-central1-c.c.gleb-test-001.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
ตอนนี้เราเปิดเบราว์เซอร์และใช้ http://localhost:8081 เพื่อเชื่อมต่อกับแอปพลิเคชันได้แล้ว เราควรจะเห็นหน้าจอแอปพลิเคชัน
การเชื่อมต่อจาก Cloud Shell
หรือจะใช้ Cloud Shell เพื่อเชื่อมต่อก็ได้ เปิดแท็บ Cloud Shell อีกแท็บโดยใช้เครื่องหมาย "+" ที่ด้านบน
ใน Cloud Shell ใหม่ ให้รับ URI ต้นทางและ URI การเปลี่ยนเส้นทางสําหรับเว็บไคลเอ็นต์ที่เรียกใช้คําสั่ง gcloud
echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
ผลลัพธ์ที่คาดหวังมีดังนี้
student@cloudshell:~ echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google" origin: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev redirect: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev/login/google
และใช้ต้นทางและการเปลี่ยนเส้นทางของ URI เป็น "ต้นทางของ JavaScript ที่ได้รับอนุญาต" และ "URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต" สำหรับข้อมูลเข้าสู่ระบบที่เราสร้างขึ้นในบท "เตรียมรหัสไคลเอ็นต์" โดยแทนที่หรือเพิ่มค่า http://localhost:8080 ที่ระบุไว้ตั้งแต่แรก
ในแท็บ Cloud Shell ใหม่ ให้เริ่มอุโมงค์ไปยัง VM โดยเรียกใช้คำสั่ง gcloud ดังนี้
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
โดยจะแสดงข้อผิดพลาด "ไม่สามารถกำหนดที่อยู่ที่ขอ" โปรดอย่าสนใจ
ผลลัพธ์ที่คาดหวังมีดังนี้
student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 bind [::1]:8081: Cannot assign requested address inux instance-1.us-central1-a.c.gleb-codelive-01.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat May 25 19:15:46 2024 from 35.243.235.73 student@instance-1:~$
ซึ่งจะเปิดพอร์ต 8080 ใน Cloud Shell ที่ใช้สำหรับ "ตัวอย่างเว็บ" ได้
คลิกปุ่ม "ตัวอย่างเว็บ" ที่ด้านขวาบนของ Cloud Shell แล้วเลือก "แสดงตัวอย่างบนพอร์ต 8080" จากเมนูแบบเลื่อนลง
ซึ่งจะเปิดแท็บใหม่ในเว็บเบราว์เซอร์ที่มีอินเทอร์เฟซแอปพลิเคชัน คุณควรเห็นหน้า "ผู้ช่วยฝ่ายบริการลูกค้าของ Cymbal Air"
ลงชื่อเข้าใช้แอปพลิเคชัน
เมื่อตั้งค่าทุกอย่างและเปิดแอปพลิเคชันแล้ว เราจะใช้ปุ่ม "ลงชื่อเข้าใช้" ที่ด้านขวาบนของหน้าจอแอปพลิเคชันเพื่อระบุข้อมูลเข้าสู่ระบบได้ ซึ่งไม่บังคับและจำเป็นเฉพาะในกรณีที่คุณต้องการลองใช้ฟังก์ชันการจองของแอปพลิเคชันเท่านั้น
หน้าต่างป๊อปอัปที่เราจะเลือกข้อมูลเข้าสู่ระบบได้
หลังจากลงชื่อเข้าใช้แล้ว แอปพลิเคชันจะพร้อมใช้งานและคุณสามารถเริ่มโพสต์คำขอในช่องที่ด้านล่างของหน้าต่างได้
การสาธิตนี้แสดงให้เห็นผู้ช่วยฝ่ายบริการลูกค้าของ Cymbal Air Cymbal Air เป็นสายการบินโดยสารสมมติ ผู้ช่วยดังกล่าวเป็นแชทบ็อต AI ที่ช่วยนักเดินทางจัดการเที่ยวบินและค้นหาข้อมูลเกี่ยวกับฮับของ Cymbal Air ที่สนามบินนานาชาติซานฟรานซิสโก (SFO)
โดยไม่ต้องลงชื่อเข้าใช้ (ไม่มี CLIENT_ID) ข้อมูลนี้จะช่วยตอบคําถามของผู้ใช้ เช่น
เที่ยวบินถัดไปไปเดนเวอร์คือเมื่อไร
มีร้านค้าหรูแถวประตู C28 ไหม
ฉันจะซื้อกาแฟใกล้กับประตู A6 ได้จากที่ไหน
ฉันจะซื้อของขวัญได้ที่ไหน
โปรดจองเที่ยวบินไปเดนเวอร์ที่ออกเดินทางเวลา 10:35 น.
เมื่อลงชื่อเข้าใช้แอปพลิเคชันแล้ว คุณจะลองใช้ความสามารถอื่นๆ ได้ เช่น การจองเที่ยวบิน หรือตรวจสอบว่าที่นั่งที่กำหนดให้คุณเป็นที่นั่งริมหน้าต่างหรือริมทางเดิน
แอปพลิเคชันใช้โมเดลพื้นฐานล่าสุดของ Google เพื่อสร้างคำตอบและเสริมด้วยข้อมูลเกี่ยวกับเที่ยวบินและสิ่งอำนวยความสะดวกจากฐานข้อมูล AlloyDB ที่ใช้งานอยู่ อ่านข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชันสาธิตนี้ได้ในหน้า GitHub ของโปรเจ็กต์
9. ล้างสภาพแวดล้อม
เมื่องานทั้งหมดเสร็จสิ้นแล้ว เราจะล้างข้อมูลในสภาพแวดล้อมได้
ลบบริการ Cloud Run
ใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud run services delete retrieval-service --region us-central1
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1 Service [retrieval-service] will be deleted. Do you want to continue (Y/n)? Y Deleting [retrieval-service]...done. Deleted service [retrieval-service].
ลบบัญชีบริการสำหรับบริการ Cloud Run
ใน Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
เอาต์พุตคอนโซลที่คาดไว้:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-222] student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
ทำลายอินสแตนซ์และคลัสเตอร์ AlloyDB เมื่อใช้ห้องทดลองเสร็จแล้ว
ลบคลัสเตอร์ AlloyDB และอินสแตนซ์ทั้งหมด
ระบบจะทำลายคลัสเตอร์ด้วยตัวเลือก "บังคับ" ซึ่งจะลบอินสแตนซ์ทั้งหมดของคลัสเตอร์ด้วย
ใน Cloud Shell ให้กำหนดตัวแปรของโปรเจ็กต์และสภาพแวดล้อมหากคุณยกเลิกการเชื่อมต่อและการตั้งค่าก่อนหน้านี้ทั้งหมดจะหายไป ดังนี้
gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)
ลบคลัสเตอร์
gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force All of the cluster data will be lost when the cluster is deleted. Do you want to continue (Y/n)? Y Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f Deleting cluster...done.
ลบข้อมูลสํารอง AlloyDB
ลบข้อมูลสำรอง AlloyDB ทั้งหมดของคลัสเตอร์
for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
เอาต์พุตคอนโซลที่คาดไว้:
student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f Deleting backup...done.
ตอนนี้เราทำลาย VM ได้
ลบ VM ใน GCE
ใน Cloud Shell ให้ดำเนินการต่อไปนี้
export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1 export ZONE=us-central1-a gcloud compute instances delete $GCEVM \ --zone=$ZONE \ --quiet Deleted
ลบบัญชีบริการสำหรับ GCE VM และบริการการเรียกข้อมูล
ใน Cloud Shell ให้ดำเนินการต่อไปนี้
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
เอาต์พุตคอนโซลที่คาดหวัง
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet Your active configuration is: [cloudshell-222] deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
10. ขอแสดงความยินดี
ขอแสดงความยินดีที่เรียน Codelab จนจบ
สิ่งที่เราได้พูดถึง
- วิธีติดตั้งใช้งานคลัสเตอร์ AlloyDB
- วิธีเชื่อมต่อกับ AlloyDB
- วิธีกำหนดค่าและทำให้บริการดึงข้อมูลฐานข้อมูล GenAI ใช้งานได้
- วิธีทำให้แอปพลิเคชันตัวอย่างใช้งานได้โดยใช้บริการที่ทำให้ใช้งานได้
11. แบบสำรวจ
เอาต์พุต: