1. Wprowadzenie
Z tego ćwiczenia dowiesz się, jak wdrożyć usługę pobierania danych z baz danych GenAI i utworzyć przykładową aplikację interaktywną przy użyciu wdrożonego środowiska.

Więcej informacji o usłudze pobierania informacji z generatywnej AI i przykładowej aplikacji znajdziesz tutaj.
Wymagania wstępne
- Podstawowa znajomość konsoli Google Cloud
- Podstawowe umiejętności w zakresie interfejsu wiersza poleceń i Cloud Shell w Google Cloud
Czego się nauczysz
- Jak utworzyć instancję Cloud SQL
- Łączenie się z instancją
- Konfigurowanie i wdrażanie usługi pobierania danych z baz danych GenAI
- Jak wdrożyć przykładową aplikację za pomocą wdrożonej usługi
Czego potrzebujesz
- Konto Google Cloud i projekt Google Cloud
- przeglądarka, np. Chrome;
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.
3. Zanim zaczniesz
Włącz API
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:
Identyfikator projektu jest zwykle wyświetlany w nawiasach w wierszu poleceń w Cloud Shell, jak pokazano na ilustracji:

gcloud config set project [YOUR-PROJECT-ID]
Następnie ustaw zmienną środowiskową PROJECT_ID na identyfikator projektu Google Cloud:
PROJECT_ID=$(gcloud config get-value project)
Włącz wszystkie niezbędne usługi:
gcloud services enable sqladmin.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
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable sqladmin.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. Tworzenie instancji Cloud SQL
utworzyć instancję Cloud SQL z włączoną obsługą wektorów;
Utwórz hasło
Określ hasło domyślnego użytkownika bazy danych. Możesz zdefiniować własne hasło lub użyć funkcji losowej, aby je wygenerować.
export CLOUDSQL_PASSWORD=`openssl rand -hex 12`
Zanotuj wygenerowaną wartość hasła.
echo $CLOUDSQL_PASSWORD
MySQL
Możesz włączyć flagę cloudsql_vector podczas tworzenia instancji. Obecnie obsługujemy wektory w MySQL w wersjach 8.0.36 i 8.0.37.
export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=MYSQL_8_0_36 --database-flags=cloudsql_vector=ON --root-password=$CLOUDSQL_PASSWORD
Oczekiwane dane wyjściowe konsoli (adres IP został zamazany):
student@cloudshell:~ export region=us-central1 gcloud sql instances create my-cloudsql-instance --region=$region --database-version=MYSQL_8_0_36 --database-flags=cloudsql_vector=ON --root-password=$CLOUDSQL_PASSWORD Creating Cloud SQL instance for MYSQL_8_0_36...done. Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance]. NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS my-cloudsql-instance MYSQL_8_0_36 us-central1-a db-n1-standard-1 00.000.00.00 - RUNNABLE
PostgreSQL
Rozszerzenie pgvector jest oferowane w wersjach >= 11.
export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=POSTGRES_15 --tier=db-g1-small
Oczekiwane dane wyjściowe konsoli (adres IP został zamazany):
student@cloudshell:~ export region=us-central1 gcloud sql instances create my-cloudsql-instance --region=$region --database-version=POSTGRES_15 --tier=db-g1-small Creating Cloud SQL instance for POSTGRES_15...done. Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance]. NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS my-cloudsql-instance POSTGRES_15 us-central1-a db-g1-small 00.000.00.00 - RUNNABLE
Po utworzeniu instancji musimy zdefiniować hasło dla domyślnego użytkownika w instancji i sprawdzić, czy możemy się połączyć za pomocą tego hasła. Gdy pojawi się prośba o połączenie, wpisz hasło.
gcloud sql users set-password postgres \
--instance=my-cloudsql-instance \
--password=$CLOUDSQL_PASSWORD
gcloud sql connect my-cloudsql-instance --user=postgres
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~ (test-project-402417)$ gcloud sql users set-password postgres \
--instance=my-cloudsql-instance \
--password=$CLOUDSQL_PASSWORD
gcloud sql connect my-cloudsql-instance --user=postgres
Updating Cloud SQL user...done.
Allowlisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [postgres].Password:
psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 15.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=>
Zakończ sesję psql:
exit
5. Przygotowywanie maszyny wirtualnej GCE
Utwórz konto usługi
Ponieważ będziemy używać maszyny wirtualnej do wdrażania usługi GenAI Databases Retrieval i hostowania przykładowej aplikacji, pierwszym krokiem jest utworzenie konta usługi Google (GSA). Konto usługi Google będzie używane przez maszynę wirtualną GCE i musimy przyznać mu uprawnienia niezbędne do pracy z innymi usługami.
W Cloud Shell wykonaj to polecenie:
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/cloudsql.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/cloudsql.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
Wdrażanie maszyny wirtualnej GCE
Utwórz maszynę wirtualną GCE w tym samym regionie i sieci VPC co instancja Cloud SQL.
W Cloud Shell wykonaj to polecenie:
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
Oczekiwane dane wyjściowe konsoli:
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
Autoryzowanie maszyny wirtualnej do nawiązywania połączenia z Cloud SQL
Musimy dodać publiczny adres IP maszyny wirtualnej do listy autoryzowanych sieci instancji Cloud SQL. W Cloud Shell wykonaj to polecenie:
VM_EXTERNAL_IP=$(gcloud compute instances describe instance-1 --zone=us-central1-a --format='get(networkInterfaces[0].accessConfigs[0].natIP)')
gcloud sql instances patch my-cloudsql-instance --authorized-networks=$VM_EXTERNAL_IP
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a
student@cloudshell:~ (test-project-402417)$ VM_EXTERNAL_IP=$(gcloud compute instances describe instance-1 --zone=us-central1-a --format='get(networkInterfaces[0].accessConfigs[0].natIP)')
gcloud sql instances patch my-cloudsql-instance --authorized-networks=$VM_EXTERNAL_IP
When adding a new IP address to authorized networks, make sure to also include any IP addresses that have already been authorized. Otherwise, they will be overwritten and de-authorized.
Do you want to continue (Y/n)? Y
The following message will be used for the patch API method.
{"name": "my-cloudsql-instance", "project": "test-project-402417", "settings": {"ipConfiguration": {"authorizedNetworks": [{"value": "34.71.252.173"}]}}}
Patching Cloud SQL instance...done.
Updated [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance].
Instalowanie klienta bazy danych
MySQL
Zainstaluj oprogramowanie klienta MySQL na wdrożonej maszynie wirtualnej.
Połącz się z maszyną wirtualną:
gcloud compute ssh instance-1 --zone=us-central1-a
Oczekiwane dane wyjściowe konsoli:
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:~$
Zainstaluj oprogramowanie, uruchamiając w maszynie wirtualnej to polecenie:
sudo apt-get update
sudo apt-get install --yes default-mysql-client
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ sudo apt-get update sudo apt-get install --yes mysql-client Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libgdbm-compat4 libperl5.32 libterm-readkey-perl mariadb-client-10.5 mariadb-client-core-10.5 perl perl-modules-5.32 Suggested packages: libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libtap-harness-archive-perl The following NEW packages will be installed: default-mysql-client libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libgdbm-compat4 libperl5.32 libterm-readkey-perl mariadb-client-10.5 mariadb-client-core-10.5 perl Perl-modules-5.32 ...redacted... Processing triggers for libc-bin (2.31-13+deb11u10) ...
PostgreSQL
Zainstaluj oprogramowanie klienta PostgreSQL na wdrożonej maszynie wirtualnej.
Połącz się z maszyną wirtualną:
gcloud compute ssh instance-1 --zone=us-central1-a
Oczekiwane dane wyjściowe konsoli:
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:~$
Zainstaluj oprogramowanie, uruchamiając w maszynie wirtualnej to polecenie:
sudo apt-get update
sudo apt-get install --yes postgresql-client
Oczekiwane dane wyjściowe konsoli:
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) ...
Łączenie się z instancją
MySQL
Połącz się z instancją podstawową z maszyny wirtualnej za pomocą MySQL.
Kontynuuj otwartą sesję SSH na maszynie wirtualnej. Jeśli połączenie zostało przerwane, nawiąż je ponownie za pomocą tego samego polecenia co powyżej.
Użyj wcześniej zanotowanego hasła $CLOUDSQL_PASSWORD i nazwy instancji, aby połączyć się z Cloud SQL z maszyny wirtualnej GCE:
export CLOUDSQL_PASSWORD=<Noted password>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export INSTANCE_NAME=my-cloudsql-instance
export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ export CLOUDSQL_PASSWORD=P9... student@instance-1:~$ export REGION=us-central1 student@instance-1:~$ export INSTANCE_NAME=my-cloud-sql-instance student@instance-1:~$ export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)") student@instance-1:~$ mysql –host=$INSTANCE_IP –user=root –password=$CLOUDSQL_PASSWORD –sslmode=require Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 2824706 Server version: 8.0.36-google (Google) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
Wyjdź z sesji MySQL, zachowując połączenie SSH:
exit
Oczekiwane dane wyjściowe konsoli:
MySQL [(none)]> exit Bye student@instance-1:~$
PostgreSQL
Połącz się z instancją podstawową z maszyny wirtualnej za pomocą psql.
Kontynuuj otwartą sesję SSH na maszynie wirtualnej. Jeśli połączenie zostało przerwane, nawiąż je ponownie za pomocą tego samego polecenia co powyżej.
Użyj zapisanego wcześniej hasła $CLOUDSQL_PASSWORD i nazwy instancji, aby połączyć się z PostgreSQL z maszyny wirtualnej GCE:
export PGPASSWORD=<Noted password (CLOUDSQL_PASSWORD)>
export CLOUDSQL_PASSWORD=$PGPASSWORD
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export INSTANCE_NAME=my-cloudsql-instance
export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ export CLOUDSQL_PASSWORD=P9...
student@instance-1:~$ export REGION=us-central1
student@instance-1:~$ export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
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=>
Wyjdź z sesji psql, zachowując połączenie SSH:
exit
Oczekiwane dane wyjściowe konsoli:
postgres=> exit student@instance-1:~$
6. Inicjowanie bazy danych
Użyjemy naszej maszyny wirtualnej klienta jako platformy do wypełnienia bazy danych danymi i hostowania aplikacji. Pierwszym krokiem jest utworzenie bazy danych i wypełnienie jej danymi.
Utwórz bazę danych
MySQL
Utwórz bazę danych o nazwie „assistantdemo”.
W sesji maszyny wirtualnej GCE wykonaj to polecenie:
mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD -e "CREATE DATABASE assistantdemo"
Oczekiwane dane wyjściowe konsoli (brak danych wyjściowych):
student@instance-1:~$ mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD -e "CREATE DATABASE assistantdemo" student@instance-1:~$
PostgreSQL
Utwórz bazę danych o nazwie „assistantdemo”.
W sesji maszyny wirtualnej GCE wykonaj to polecenie:
psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo" CREATE DATABASE student@instance-1:~$
Włącz rozszerzenie pgvector.
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector"
Oczekiwane dane wyjściowe konsoli (brak danych wyjściowych):
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector" CREATE EXTENSION student@instance-1:~$
Przygotuj środowisko Pythona
Aby kontynuować, użyjemy przygotowanych skryptów w Pythonie z repozytorium GitHub, ale zanim to zrobimy, musimy zainstalować wymagane oprogramowanie.
Na maszynie wirtualnej GCE wykonaj te czynności:
sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Oczekiwane dane wyjściowe konsoli:
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:~$
Sprawdź wersję Pythona.
Na maszynie wirtualnej GCE wykonaj te czynności:
python -V
Oczekiwane dane wyjściowe konsoli:
(.venv) student@instance-1:~$ python -V Python 3.11.2 (.venv) student@instance-1:~$
Przygotowywanie pliku konfiguracji
Sklonuj z GitHuba repozytorium z kodem usługi pobierania i przykładowej aplikacji.
Na maszynie wirtualnej GCE wykonaj te czynności:
git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git
Oczekiwane dane wyjściowe konsoli:
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.
MySQL
Na maszynie wirtualnej GCE wykonaj te czynności:
cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
cp example-config-cloudsql.yml config.yml
sed -i s/engine/mysql/g config.yml
sed -i s/my-project/$PROJECT_ID/g config.yml
sed -i s/my-region/$REGION/g config.yml
sed -i s/my-instance/$INSTANCE_NAME/g config.yml
sed -i s/my-password//g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/root/g config.yml
cat config.yml
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service cp example-config-cloudsql.yml config.yml sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml sed -i s/my-password/$CLOUDSQL_PASSWORD/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 MySQL kind: "cloudsql-mysql" host: 10.65.0.2 # port: 5432 database: "assistantdemo" user: "root" password: "P9..."
Postgres
Na maszynie wirtualnej GCE wykonaj te czynności:
cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
sed -i s/engine/postgres/g config.yml
sed -i s/my-project/$PROJECT_ID/g config.yml
sed -i s/my-region/$REGION/g config.yml
sed -i s/my-instance/$INSTANCE_NAME/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
Oczekiwane dane wyjściowe konsoli:
student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service cp example-config-cloudsql.yml config.yml sed -i s/engine/postgres/g config.yml sed -i s/my-project/$PROJECT_ID/g config.yml sed -i s/my-region/$REGION/g config.yml sed -i s/my-instance/$INSTANCE_NAME/g config.yml sed -i s/my-password/$CLOUDSQL_PASSWORD/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 Postgres kind: "cloudsql-postgres" host: 10.65.0.2 # port: 5432 database: "assistantdemo" user: "postgres" password: "P9..."
Wypełnianie bazy danych
Wypełnij bazę danych przykładowym zbiorem danych. Pierwsze polecenie dodaje wszystkie wymagane pakiety do naszego wirtualnego środowiska Pythona, a drugie polecenie wypełnia naszą bazę danych danymi.
Na maszynie wirtualnej GCE wykonaj te czynności:
cd ~/genai-databases-retrieval-app/retrieval_service
pip install -r requirements.txt
python run_database_init.py
Oczekiwane dane wyjściowe konsoli (z redakcją):
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. Wdrażanie usługi pobierania w Cloud Run
Teraz możemy wdrożyć usługę pobierania w Cloud Run. Usługa odpowiada za współpracę z bazą danych i wyodrębnianie z niej niezbędnych informacji na podstawie żądania aplikacji AI.
Utwórz konto usługi
Utwórz konto usługi dla usługi pobierania i przyznaj mu niezbędne uprawnienia.
Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

Na nowej karcie Cloud Shell wykonaj to polecenie:
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"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/cloudsql.client"
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~ (gleb-test-short-003)$ gcloud iam service-accounts create retrieval-identity Created service account [retrieval-identity].
Zamknij kartę, wpisując na niej polecenie „exit”:
exit
Wdrażanie usługi pobierania
Na pierwszej karcie, na której masz połączenie z maszyną wirtualną przez SSH, wdróż usługę.
W sesji SSH maszyny wirtualnej wykonaj to polecenie:
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
Oczekiwane dane wyjściowe konsoli:
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$
Weryfikacja usługi
Teraz możemy sprawdzić, czy usługa działa prawidłowo, a maszyna wirtualna ma dostęp do punktu końcowego. Do pobierania punktu końcowego usługi pobierania używamy narzędzia gcloud. Możesz też sprawdzić tę wartość w konsoli Cloud i zastąpić nią w poleceniu curl ciąg "$(gcloud run services list –filter="(retrieval-service)".
W sesji SSH maszyny wirtualnej wykonaj to polecenie:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
Oczekiwane dane wyjściowe konsoli:
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$
Jeśli zobaczymy komunikat „Hello World”, oznacza to, że nasza usługa działa i obsługuje żądania.
8. Wdrażanie przykładowej aplikacji
Teraz, gdy usługa pobierania działa, możemy wdrożyć przykładową aplikację, która będzie z niej korzystać. Aplikację można wdrożyć na maszynie wirtualnej lub w dowolnej innej usłudze, takiej jak Cloud Run, Kubernetes, a nawet lokalnie na laptopie. Pokażemy, jak wdrożyć go na maszynie wirtualnej.
Przygotuj środowisko
Nadal pracujemy na maszynie wirtualnej w ramach tej samej sesji SSH. Aby uruchomić aplikację, musimy dodać kilka modułów Pythona. Polecenie zostanie wykonane w katalogu aplikacji w tym samym wirtualnym środowisku Pythona.
W sesji SSH maszyny wirtualnej wykonaj to polecenie:
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
Oczekiwane dane wyjściowe (z redakcją):
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) ...
Przygotuj identyfikator klienta
Aby korzystać z funkcji rezerwacji w aplikacji, musimy przygotować identyfikator klienta OAuth 2.0 za pomocą konsoli Cloud. Dzieje się to podczas logowania się w aplikacji, ponieważ rezerwacja wykorzystuje dane logowania klientów do zapisywania danych rezerwacji w bazie danych.
W konsoli Cloud otwórz Interfejsy API i usługi, kliknij „Ekran zgody OAuth” i wybierz użytkownika „Wewnętrzny”.

Następnie kliknij „Utwórz” i postępuj zgodnie z instrukcjami na następnym ekranie.

Musisz wypełnić wymagane pola, takie jak „Nazwa aplikacji” i „Adres e-mail pomocy dla użytkowników”. Możesz też dodać domenę, która ma się wyświetlać na ekranie zgody, oraz „Informacje kontaktowe dewelopera”.

Następnie kliknij przycisk „Zapisz i kontynuuj” u dołu strony, aby przejść do następnej strony.

Nie musisz tam nic zmieniać, chyba że chcesz określić zakresy. Na koniec potwierdź, ponownie klikając przycisk „Zapisz i kontynuuj”. Spowoduje to skonfigurowanie ekranu zgody na aplikację.
Następnym krokiem jest utworzenie identyfikatora klienta. W panelu po lewej stronie kliknij „Dane logowania”, aby przejść do danych logowania OAuth2.

U góry kliknij „Utwórz dane logowania” i wybierz „Identyfikator klienta OAuth”. Następnie otworzy się kolejny ekran.

Z menu typu aplikacji wybierz „Aplikacja internetowa” i wpisz identyfikator URI aplikacji (oraz opcjonalnie port) jako „Autoryzowane źródła JavaScript”. Aby móc korzystać z wyskakującego okienka autoryzacji, musisz dodać do sekcji „Autoryzowane identyfikatory URI przekierowania” hosta aplikacji z dodanym na końcu ciągiem „/login/google”. Na powyższym obrazie widać, że jako podstawowy identyfikator URI aplikacji użyłem adresu http://localhost.
Po kliknięciu przycisku „Utwórz” pojawi się wyskakujące okienko z danymi logowania klienta.

Identyfikator klienta (i opcjonalnie tajny klucz klienta) będzie nam później potrzebny do użycia w naszej aplikacji.
Uruchom aplikację Asystent
Zanim uruchomisz aplikację, musisz skonfigurować zmienne środowiskowe. Podstawowe funkcje aplikacji, takie jak wyszukiwanie lotów i udogodnień na lotnisku, wymagają tylko zmiennej BASE_URL, która kieruje aplikację do usługi pobierania. Możemy go uzyskać za pomocą polecenia gcloud .
W sesji SSH maszyny wirtualnej wykonaj to polecenie:
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
Oczekiwane dane wyjściowe (z redakcją):
student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
Aby korzystać z bardziej zaawansowanych funkcji aplikacji, takich jak rezerwowanie i zmienianie lotów, musimy zalogować się w niej za pomocą konta Google. W tym celu musimy podać zmienną środowiskową CLIENT_ID, używając identyfikatora klienta OAuth z rozdziału Przygotowywanie identyfikatora klienta:
export CLIENT_ID=215....apps.googleusercontent.com
Oczekiwane dane wyjściowe (z redakcją):
student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export CLIENT_ID=215....apps.googleusercontent.com
Teraz możemy uruchomić aplikację:
python run_app.py
Oczekiwane dane wyjściowe:
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)
Połącz się z aplikacją
Z aplikacją działającą na maszynie wirtualnej możesz połączyć się na kilka sposobów. Możesz na przykład otworzyć port 8081 na maszynie wirtualnej za pomocą reguł zapory sieciowej w sieci VPC lub utworzyć moduł równoważenia obciążenia z publicznym adresem IP. Użyjemy tunelu SSH do maszyny wirtualnej, który przetłumaczy lokalny port 8080 na port 8081 maszyny wirtualnej.
Nawiązywanie połączenia z urządzenia lokalnego
Jeśli chcemy połączyć się z maszyny lokalnej, musimy uruchomić tunel SSH. Możesz to zrobić za pomocą polecenia gcloud compute ssh:
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081
Oczekiwane dane wyjściowe:
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:~$
Teraz możemy otworzyć przeglądarkę i użyć adresu http://localhost:8081, aby połączyć się z aplikacją. Powinien pojawić się ekran aplikacji.

Nawiązywanie połączenia z Cloud Shell
Możemy też użyć Cloud Shell do połączenia. Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

Na nowej karcie Cloud Shell uruchom tunel do maszyny wirtualnej, wykonując to polecenie gcloud:
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
Wyświetli się błąd „Nie można przypisać żądanego adresu” – zignoruj go.
Oto oczekiwane dane wyjściowe:
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:~$
Otwiera port 8080 w Cloud Shell, który można wykorzystać w przypadku „Podglądu w przeglądarce”.
W prawym górnym rogu Cloud Shell kliknij przycisk „Podgląd w przeglądarce”, a następnie z menu wybierz „Podejrzyj na porcie 8080”.

W przeglądarce otworzy się nowa karta z interfejsem aplikacji. Powinna pojawić się strona „Asystent obsługi klienta Cymbal Air”. Na pasku adresu strony widzimy identyfikator URI strony podglądu. Musimy usunąć część „/?authuser=0&redirectedPreviously=true” na końcu.

Pierwszą część identyfikatora URI, np. „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/”, pozostaw w oknie przeglądarki i podaj jako „Autoryzowane źródła JavaScript” i „Autoryzowane identyfikatory URI przekierowania” w przypadku danych logowania utworzonych w rozdziale „Przygotowywanie identyfikatora klienta”, zastępując lub dodając pierwotnie podane wartości http://localhost:8080. Górna wartość będzie wyglądać tak: „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev”, a dolna tak: „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/login/google”.

Logowanie w aplikacji
Gdy wszystko będzie skonfigurowane i aplikacja będzie otwarta, możemy użyć przycisku „Zaloguj się” w prawym górnym rogu ekranu aplikacji, aby podać dane logowania. Jest to opcjonalne i wymagane tylko wtedy, gdy chcesz wypróbować funkcję rezerwacji w aplikacji.

Otworzy się wyskakujące okienko, w którym możemy wybrać dane logowania.
Po zalogowaniu aplikacja jest gotowa do użycia. Możesz zacząć wpisywać prośby w polu u dołu okna.
Prezentacja asystenta obsługi klienta Cymbal Air. Cymbal Air to fikcyjne linie lotnicze. Asystent to chatbot AI, który pomaga podróżnym zarządzać lotami i wyszukiwać informacje o węźle Cymbal Air na międzynarodowym lotnisku w San Francisco (SFO).
Bez logowania (bez CLIENT_ID) może pomóc w odpowiedzi na pytania użytkowników, takie jak:
Kiedy jest następny lot do Denver?
Czy w pobliżu bramy C28 znajdują się jakieś luksusowe sklepy?
Gdzie mogę kupić kawę w pobliżu bramki A6?
Gdzie mogę kupić prezent?
Zarezerwuj lot do Denver z wylotem o 10:35
Po zalogowaniu się w aplikacji możesz wypróbować inne funkcje, takie jak rezerwowanie lotów czy sprawdzanie, czy przypisane Ci miejsce jest przy oknie czy przy przejściu.

Aplikacja korzysta z najnowszych modeli podstawowych Google do generowania odpowiedzi i wzbogaca je o informacje o lotach i udogodnieniach z operacyjnej bazy danych Cloud SQL. Więcej informacji o tej aplikacji demonstracyjnej znajdziesz na stronie projektu w GitHubie.
9. Zwalnianie miejsca w środowisku
Gdy wszystkie zadania zostaną wykonane, możemy zwolnić miejsce w naszym środowisku.
Usuwanie usługi Cloud Run
W Cloud Shell wykonaj to polecenie:
gcloud run services delete retrieval-service --region us-central1
Oczekiwane dane wyjściowe konsoli:
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].
Usuwanie konta usługi dla usługi Cloud Run
W Cloud Shell wykonaj to polecenie:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
Oczekiwane dane wyjściowe konsoli:
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)$
Usuwanie instancji Cloud SQL
Po zakończeniu ćwiczenia usuń instancję Cloud SQL.
W Cloud Shell zdefiniuj projekt i zmienne środowiskowe, jeśli połączenie zostało przerwane i wszystkie poprzednie ustawienia zostały utracone:
export INSTANCE_NAME=my-cloudsql-instance
export PROJECT_ID=$(gcloud config get-value project)
Usuń instancję:
gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~$ gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID All of the instance data will be lost when the instance is deleted. Do you want to continue (Y/n)? y Deleting Cloud SQL instance...done. Deleted [https://sandbox.googleapis.com/v1beta4/projects/test-project-001-402417/instances/my-cloudsql-instance].
Teraz możemy usunąć maszynę wirtualną.
Usuwanie maszyny wirtualnej GCE
W Cloud Shell wykonaj to polecenie:
export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
Oczekiwane dane wyjściowe konsoli:
student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
Deleted
Usuń konto usługi dla maszyny wirtualnej GCE i usługi pobierania.
W Cloud Shell wykonaj to polecenie:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
Oczekiwane dane wyjściowe konsoli:
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. Gratulacje
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Jak utworzyć instancję Cloud SQL
- Jak połączyć się z instancją Cloud SQL
- Konfigurowanie i wdrażanie usługi pobierania danych z baz danych GenAI
- Jak wdrożyć przykładową aplikację za pomocą wdrożonej usługi