1. Pengantar
Di lab ini, Anda akan menggunakan Gemini, kolaborator berteknologi AI di Google Cloud, untuk memecahkan masalah pada deployment Cloud Function dengan menganalisis log error, mengidentifikasi akar masalah, dan menemukan cara memperbaikinya.
Yang akan Anda lakukan ...
- Anda akan menggunakan Terminal Cloud Shell dan gcloud CLI untuk menyiapkan lingkungan, termasuk mengaktifkan Google API yang relevan dan membuat Cloud Function dari kode yang disediakan
- Anda akan menggunakan ringkasan log Cloud Logging untuk membuat ringkasan log guna memahami informasi yang terekam.
- Anda akan memulai percakapan dengan Gemini untuk mendapatkan bantuan Gemini dalam memecahkan dan menyelesaikan masalah.
Yang akan Anda pelajari ...
- Cara menggunakan Gemini dengan Google Cloud Observability dan untuk pemecahan masalah.
- Cara menemukan dan memahami log Cloud Function dengan bantuan Gemini.
Yang akan Anda butuhkan ...
- Browser web Chrome
- Project Google Cloud yang mengaktifkan penagihan
- Akun Google dengan izin akses ke project yang memungkinkan Anda mengaktifkan API dan memanipulasi resource
Lab ini ditujukan bagi engineer DevOps dan platform serta developer software dari semua level, termasuk para pemula. Fokus kita adalah mendapatkan pengalaman langsung dengan kemampuan Gemini dalam memecahkan masalah.
2. Penyiapan
Bagian ini membahas semua hal yang perlu Anda lakukan untuk memulai lab ini.
Mengonfigurasi lingkungan
1. Login ke Konsol Cloud dengan membuka https://console.cloud.google.com.
2. Pilih project Google Cloud yang akan Anda gunakan untuk lab ini.

3. Buka halaman Cloud Functions di Konsol. Anda dapat melakukannya dengan memilih Cloud Functions dari menu navigasi (ikon kiri atas ☰ di jendela Konsol).

Atau, Anda dapat menelusuri "cloud functions" di area penelusuran konsol:

Klik tombol Buat Fungsi di bagian atas daftar fungsi 
Jika Anda belum pernah menggunakan Cloud Functions di project ini, Anda akan diminta untuk mengaktifkan Google API agar dapat menggunakannya.

Klik AKTIFKAN untuk melanjutkan.
4. Tentukan properti dasar Cloud Function baru.
- Tetapkan nama menjadi "
codelab-cf" - Pilih opsi Izinkan pemanggilan tanpa autentikasi

Untuk menyelesaikan langkah ini, klik tombol BERIKUTNYA di area kiri bawah jendela:

Setelah mengklik BERIKUTNYA, Anda mungkin diminta untuk mengaktifkan Google API tambahan. Seperti pada langkah 4, klik AKTIFKAN.

Menyiapkan runtime dan kode Cloud Function
CodeLab ini menggunakan Python sebagai bahasa pemrograman. Jangan khawatir jika Anda belum terbiasa dengan Python. Untuk menyelesaikan CodeLab ini, Anda tidak memerlukan pengetahuan tentang Python.
5. Pilih Python 3.11 sebagai Runtime fungsi

Perhatikan bahwa perubahan runtime mengubah kode sumber yang ditampilkan di Editor Inline.
6. Salin kode di bawah ke Inline Editor untuk mengubah contoh panduan memulai yang dibuat otomatis.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Kode ini membaca atribut path dari permintaan GET, mengurai jalur untuk mengambil nama bucket, dan memanggil Google Cloud Storage API untuk mendapatkan daftar objek yang disimpan di jalur ini. Fungsi (get_object_list) menerima permintaan yang merupakan objek Flask sebagai argumen input dan menampilkan nama objek sebagai array JSON.
7. Pilih file requirements.txt dari daftar file yang tersisa di Editor Inline. Ganti daftar dependensi saat ini dengan yang baru dengan menyalin kode di bawah ke Inline Editor.
google-cloud-storage
8. Untuk men-deploy Cloud Function, klik DEPLOY di kiri bawah.

Anda mungkin perlu menunggu beberapa menit hingga proses deployment selesai. Jika Anda mengikuti petunjuk penyiapan dengan cermat, Anda akan melihat deployment dilaporkan sebagai gagal.
3. Menemukan dan menyelesaikan masalah
Di bagian ini, Anda akan menggunakan fitur Penjelasan log dan bantuan Gemini lainnya untuk mengidentifikasi masalah dan cara mengatasinya.
1. Deployment gagal. Anda akan melihat pesan error yang memberi tahu Anda tentang hal ini dengan informasi tambahan dan opsi untuk melihat log deployment. Klik LIHAT LOG untuk melihat log deployment.

PERHATIKAN bahwa log deployment akan dibuka di tab terpisah di browser yang sama. Anda harus berpindah-pindah tab untuk menyelesaikan CodeLab ini.
PERHATIKAN bahwa Anda mungkin tidak melihat baris log saat mengklik LIHAT LOG atau hanya melihat beberapa baris. Dalam peristiwa tersebut, gunakan pemilih rentang waktu di panel kueri pada Penjelajah log, lalu pilih 30 menit terakhir.

2. Tinjau log di tab yang terbuka. Perhatikan bahwa ringkasan log terlihat seperti beberapa baris callstack pengecualian. Hal ini karena Cloud Function mengambil teks yang dicetak ke stdout atau stderr dan menulis setiap baris sebagai entri log terpisah. Baris log lainnya merangkum informasi tentang kode error keluar serta informasi tambahan yang dilaporkan oleh Cloud Functions dan Cloud Run API.

Anda dapat mengklik salah satu baris untuk melihat informasi selengkapnya tentang log tertentu. Log yang diperluas memiliki elemen UI tambahan yang jika diklik akan memungkinkan Anda menyalin semua informasi tentang log, meluaskan semua kolom untuk menampilkan semua data entri log, dan menjelaskan entri log menggunakan Gemini.
4. Callstack pengecualian tidak terlalu informatif. Lihat log untuk menemukan akhir log stack trace pengecualian. Baris tersebut bertuliskan "Container called exit(1)". Ringkasan log berikut menyatakan:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Sepertinya ini kandidat yang baik untuk diselidiki. Klik baris ini untuk meluaskan entri log. Kemudian, klik tombol "Explain this log entry" untuk melihat informasi tambahan tentang log yang dipilih.

Jika Gemini belum pernah digunakan dalam project ini, Anda akan diminta untuk mengaktifkan API yang diperlukan. Jika Anda diminta untuk mengaktifkan API, klik AKTIFKAN untuk melanjutkan.

PERHATIKAN bahwa terkadang Anda mungkin mendapatkan error saat memberikan perintah kepada Gemini. Jika hal itu terjadi, ulangi operasi perintah Anda sekali lagi untuk mendapatkan respons. Misalnya, klik tombol "Explain this log entry" lagi.
5. Tinjau penjelasan yang diberikan oleh Gemini. Jika penjelasan yang diberikan tidak memadai atau tidak jelas, minta Gemini untuk memberikan informasi selengkapnya dengan menggunakan salah satu perintah berikut atau menyusun pertanyaan Anda sendiri
Dapatkah Anda memberikan informasi lebih lanjut tentang log ini?
Dapatkah Anda memberikan informasi lebih lanjut tentang error ini?
6. Kemudian, minta saran dari Gemini untuk menyelesaikan masalah tersebut. Misalnya, minta Gemini
Bagaimana cara menyelesaikan masalah ini?
Sarankan solusi untuk mengatasi error ini
Sarankan cara memperbaiki error ini
Respons Gemini dapat bervariasi, bergantung pada konteks saat ini serta kata-kata dan format perintah Anda. Gemini diharapkan akan merekomendasikan untuk memastikan bahwa kode sumber Cloud Function memiliki fungsi dengan nama hello_http.
7. Saat ini Anda melihat tab yang menampilkan log Cloud Functions. Pilih tab sebelumnya yang menampilkan halaman deployment Cloud Function dengan error, lalu klik EDIT.

8. Pastikan autentikasi masih disetel ke Izinkan pemanggilan tanpa autentikasi dan perbarui pilihan jika perlu.

9. Klik BERIKUTNYA di bagian bawah untuk melihat Editor Sebaris. Ikuti rekomendasi Gemini dan ubah nama fungsi dari get_order_list menjadi hello_http.
Setelah selesai mengedit, klik DEPLOY.
Anda mungkin perlu menunggu beberapa menit hingga proses deployment selesai. Pastikan deployment berhasil diselesaikan dan tidak ada pesan error yang muncul.
PERHATIKAN bahwa Konsol dapat terus menampilkan pesan error terakhir hingga proses deployment selesai.
10. Periksa apakah Cloud Function beroperasi dengan mengirim permintaan HTTPS berikut menggunakan curl. Anda dapat menggunakan Cloud Shell atau melakukannya dari terminal mana pun yang telah menginstal CLI curl dan gcloud dengan menjalankan perintah berikut dari Terminal Cloud Shell.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
PERHATIKAN bahwa untuk menjalankan perintah ini dari terminal, Anda harus melakukan autentikasi menggunakan gcloud CLI dan menetapkan nilai project ID Anda ke variabel lingkungan GOOGLE_CLOUD_PROJECT.
Bonus
Nama fungsi hello_http ditentukan sebagai titik entri default untuk Cloud Function yang dipicu HTTP saat runtime Python dipilih. Solusi alternatifnya adalah mempertahankan get_order_list sebagai nama fungsi dalam kode sumber dan memperbarui kolom titik entri Cloud Function yang berada di atas Inline Editor di sebelah kanan dari kolom Runtime:

Mengubah titik entri dari hello_http ke get_order_list akan menyelesaikan masalah deployment.
4. Pembersihan
Untuk membersihkan, Anda dapat mematikan project atau menghapus instance Cloud Function. Anda dapat menghapus Cloud Functions menggunakan Konsol atau dengan perintah CLI seperti di bawah:
gcloud functions delete codelab-cf --region=us-central1
5. Selamat!
Selamat! Anda telah berhasil menggunakan Gemini untuk memecahkan masalah dan menyelesaikan masalah pada aplikasi Anda, serta kini memahami cara Gemini dapat membantu memahami log dan mendapatkan jawaban atas pertanyaan tentang Google Cloud.