Tutorial ini menunjukkan cara menangani sesi di Cloud Run.
Banyak aplikasi memerlukan penanganan sesi untuk autentikasi dan preferensi pengguna. Framework Jetty dilengkapi dengan implementasi berbasis memori untuk menjalankan fungsi ini. Namun, implementasi ini tidak cocok untuk aplikasi yang dapat ditayangkan dari beberapa instance, karena sesi yang direkam dalam satu instance mungkin berbeda dengan instance lainnya. Tutorial ini menunjukkan cara menangani sesi di Cloud Run.
Tujuan
- Menulis aplikasi.
- Menjalankan aplikasi secara lokal.
- Men-deploy aplikasi di Cloud Run.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih sebagai berikut Google Cloud:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Di Google Cloud konsol, buka aplikasi di Cloud Shell.
Cloud Shell menyediakan akses command line ke resource cloud langsung dari browser. Buka Cloud Shell di browser Anda dan klik Lanjutkan untuk mendownload kode contoh dan mengubah ke direktori aplikasi.
-
Di Cloud Shell, konfigurasikan gcloud CLI untuk menggunakan
project baru Google Cloud Anda:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
-
Update Maven untuk menggunakan Java 11 secara default:
Saat diminta, masukkan angka untuk memilih Java 11. Catat jalur yang tercantum untuk versi tersebut.sudo update-alternatives --config java
- Ekspor jalur yang Anda salin pada langkah sebelumnya sebagai variabel lingkungan:
export JAVA_HOME=java-11-path
Aplikasi web
Aplikasi ini menampilkan sapaan dalam berbagai bahasa untuk setiap pengguna. Pengguna yang kembali selalu disambut dalam bahasa yang sama.
Sebelum aplikasi dapat menyimpan preferensi untuk pengguna, Anda memerlukan cara untuk menyimpan informasi tentang pengguna saat ini dalam sesi. Aplikasi contoh ini menggunakan WebFilter untuk mengambil dan memperbarui data sesi di Firestore.
Diagram berikut mengilustrasikan cara Firestore menangani sesi untuk aplikasi Cloud Run.
HttpServletRequest menggunakan cookie untuk menyimpan ID unik untuk sesi lokal, yang sesuai dengan dokumen di Firestore dengan detail sesi.
Menghapus sesi
Firestore tidak menghapus sesi lama atau yang sudah tidak berlaku. Anda dapat menghapus data sesi di Google Cloud konsol atau menerapkan strategi penghapusan otomatis. Jika Anda menggunakan solusi penyimpanan untuk sesi seperti Memcache atau Redis, sesi yang sudah tidak berlaku akan otomatis dihapus.
Menjalankan secara lokal
Mulai server HTTP:
mvn jetty:runLihat aplikasi di browser web Anda:
Cloud Shell
Di toolbar Cloud Shell, klik Pratinjau web
dan pilih Pratinjau di port 8080.Mesin lokal
Di browser Anda, buka
http://localhost:8080Anda akan melihat salah satu dari lima sapaan: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde", atau "Ciao Mondo". Bahasa akan berubah jika Anda membuka halaman di browser lain atau dalam mode penyamaran. Anda dapat melihat dan mengedit data sesi di Google Cloud konsol.

Untuk menghentikan server HTTP, di jendela terminal Anda, tekan
Control+C.
Men-deploy dan menjalankan di Cloud Run
Anda dapat menggunakan Cloud Run untuk membuat dan men-deploy aplikasi yang berjalan dengan andal dalam beban berat dan dengan data dalam jumlah besar.
Di jendela terminal Anda, buat dan deploy image kode Anda ke Google Container Registry (GCR) dengan plugin Maven Jib.
mvn clean package jib:build
Men-deploy aplikasi ke Cloud Run:
gcloud beta run deploy session-handling --image gcr.io/MY_PROJECT/session-handling
--platform managed --region us-central1 --memory 512MGanti
MY_PROJECTdengan ID Google Cloud project yang Anda buat. Buka URL yang ditampilkan oleh perintah ini untuk melihat cara data sesi tetap ada di antara pemuatan halaman.
Men-debug aplikasi
Jika Anda tidak dapat terhubung ke aplikasi Cloud Run, periksa hal berikut:
- Pastikan perintah deploy
gcloudberhasil diselesaikan dan tidak menampilkan error apa pun. Jika ada error (misalnya,message=Build failed), perbaiki, lalu coba deploy aplikasi Cloud Run lagi. Di Google Cloud konsol, buka halaman Logs Explorer.
Di daftar drop-down Recently selected resources, klik Cloud Run Application, lalu klik All module_id. Anda akan melihat daftar permintaan dari saat Anda mengunjungi aplikasi. Jika tidak melihat daftar permintaan, pastikan Anda memilih All module_id dari daftar drop-down. Jika Anda melihat pesan error yang dicetak ke Google Cloud konsol, pastikan kode aplikasi Anda cocok dengan kode di bagian tentang menulis aplikasi web.
Pastikan Firestore API diaktifkan.
Pembersihan
Menghapus project
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus instance Cloud Run
Hapus layanan dari Cloud Run.
- Di Google Cloud konsol, buka halaman Services untuk Cloud Run.
- Pilih layanan yang ingin Anda hapus.
- Klik Delete delete untuk menghapus layanan.
Langkah berikutnya
- Coba tutorial fungsi Cloud Run lainnya.
- Coba Cloud Run, yang memungkinkan Anda menjalankan container stateless di lingkungan yang terkelola sepenuhnya atau di cluster Google Kubernetes Engine Anda sendiri.