Banyak aplikasi memerlukan pengelolaan sesi untuk autentikasi dan preferensi pengguna. ASP.NET core dilengkapi dengan middleware untuk menyimpan sesi dalam cache terdistribusi.
Cache terdistribusi default ASP.NET sebenarnya tidak terdistribusi sama sekali. Cache ini menyimpan data sesi dalam memori server web. Jika hanya satu server web yang menayangkan situs web, strategi ini tidak masalah. Namun, jika banyak server web yang menayangkan situs web, pengguna situs web dapat mengalami error dan kehilangan data.
Untuk menghindari error dan kehilangan data, aplikasi ASP.NET harus menggunakan cache terdistribusi yang menyimpan data di penyimpanan data persisten. Tutorial ini menunjukkan cara mengelola sesi di Cloud Run dengan menyimpannya di Firestore dan mengenkripsi cookie dengan Cloud Key Management Service.
Tujuan
- Men-deploy aplikasi di Cloud Run.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih sebagai berikut Cloud de Confiance by S3NS:
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
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Untuk membuat database Firestore dalam mode Native, selesaikan langkah-langkah berikut:
-
Di Cloud de Confiance Konsol, buka halaman Firestore viewer.
Buka Firestore viewer - Dari layar Select a Firestore mode, klik Select Native Mode.
- Pilih lokasi untuk database Firestore Anda. Setelan lokasi ini adalah lokasi Cloud de Confiance resource default untuk Cloud de Confiance project Anda. Lokasi ini digunakan untuk Cloud de Confiance layanan di Cloud de Confiance project Anda yang memerlukan setelan lokasi, khususnya, bucket Cloud Storage default dan aplikasi App Engine Anda.
- Klik Create Database.
-
Di Cloud de Confiance Konsol, buka halaman Firestore viewer.
-
Di Cloud Shell, buka kode sumber aplikasi.
Buka Cloud ShellCloud Shell menyediakan akses command line ke Cloud de Confiance resource Anda langsung dari browser.
- Untuk mendownload kode contoh dan mengubah ke direktori aplikasi, klik Proceed.
-
Di Cloud Shell, konfigurasikan gcloud CLI untuk menggunakan project baru Anda Cloud de Confiance :
# Configure gcloud for your project gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan Cloud de Confiance project ID yang Anda buat menggunakan Cloud de Confiance Konsol.Google Cloud CLI adalah cara utama Anda berinteraksi dengan Cloud de Confiance resource Anda dari command line. Dalam tutorial ini, Anda menggunakan gcloud CLI untuk men-deploy dan memantau aplikasi Anda.
Memeriksa kode sumber
Diagram berikut mengilustrasikan cara Firestore menangani sesi untuk aplikasi Cloud Run.
Metode ConfigureServices dalam file Startup.cs menyiapkan aplikasi untuk menggunakan Cloud KMS untuk enkripsi dan Cloud Storage untuk menyimpan kunci terenkripsi.
-
Di Cloud Shell, klik
untuk meluncurkan editor dan memeriksa file Startup.cs.
Menyiapkan Cloud de Confiance project
-
Di editor Cloud Shell, edit file
appsettings.jsondan ganti dua instanceYOUR-PROJECT-IDdengan project ID Cloud de Confiance Anda. Simpan file. -
Buat key ring Cloud Key Management Service baru bernama
dataprotectionprovider:gcloud kms keyrings create dataprotectionprovider --location global
-
Buat kunci Cloud Key Management Service baru bernama
masterkey:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Buat bucket Cloud Storage untuk menyimpan kunci terenkripsi:
gcloud storage buckets create gs://PROJECT_ID-bucket
Men-deploy dan menjalankan di Cloud Run
Anda dapat menggunakan Cloud Run untuk membangun dan men-deploy aplikasi yang berjalan dengan andal dalam beban berat dan dengan data dalam jumlah besar.
Tutorial ini menggunakan Cloud Run untuk men-deploy server.
Di Cloud Shell, publikasikan aplikasi Anda:
dotnet publish -c ReleaseGunakan Cloud Build untuk membangun container Docker dan memublikasikan ke Container Registry:
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Jalankan container dengan Cloud Run:
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Catat URL di output:
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Untuk melihat aplikasi aktif, buka URL yang Anda salin dari langkah sebelumnya.
Menghapus sesi
Anda dapat menghapus data sesi di Cloud de Confiance Konsol atau menerapkan strategi penghapusan otomatis. Jika Anda menggunakan solusi penyimpanan untuk sesi seperti Memcache atau Redis, sesi yang berakhir otomatis akan dihapus.
Men-debug aplikasi
Jika Anda tidak dapat terhubung ke aplikasi Cloud Run, periksa hal berikut:
- Pastikan perintah deployment
gcloudberhasil diselesaikan dan tidak menampilkan error apa pun. Jika ada error (misalnya,message=Build failed), perbaiki, lalu coba deploy aplikasi Cloud Run lagi. - Lihat panduan Cloud Run untuk melihat log.
Pembersihan
Menghapus project
- Di Cloud de Confiance Konsol, buka halaman Kelola resource.
- 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.