ID region
REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Untuk memodernisasi pemrosesan gambar di aplikasi App Engine yang ada, Anda dapat men-deploy layanan transformasi gambar dalam container ke Cloud Run dan merutekan panggilan layanan App Engine Images service ke layanan tersebut.
Migrasi ini tidak memerlukan penulisan ulang besar-besaran pada kode pemrosesan gambar atau hosting aplikasi App Engine di Cloud Run. Sebagai gantinya, saat Anda mengonfigurasi aplikasi, SDK layanan App Engine akan mencegat panggilan layanan App Engine Images dan merutekannya ke layanan Cloud Run. Layanan ini memproses gambar menggunakan mesin Pillow open source melalui gRPC dan menampilkan hasilnya ke aplikasi App Engine Anda. Penyiapan ini menggantikan backend layanan App Engine Images lama dengan solusi cloud-native modern.
Batasan
Saat menggunakan layanan pemrosesan gambar kustom, Anda tidak dapat membuat URL penayangan. App Engine akan menampilkan pengecualian runtime saat Anda memanggil metode
get_serving_url(). Pembatasan ini mencegah ketergantungan pada backend lama untuk menyimpan dan menayangkan gambar.Untuk menayangkan gambar, sebaiknya tayangkan gambar langsung dari URL Cloud Storage, atau gunakan bucket Cloud Storage yang didukung oleh Cloud CDN, bergantung pada persyaratan aplikasi Anda.
URL yang ada yang Anda buat menggunakan panggilan lama ke metode
get_serving_url()akan terus menayangkan gambar.Saat Anda mengupgrade versi SDK layanan App Engine, App Engine tidak akan otomatis merutekan panggilan App Engine ke layanan Cloud Run. Aplikasi Anda hanya akan menerapkan perilaku baru setelah Anda mengonfigurasi variabel lingkungan migrasi
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEdanAPPENGINE_IMAGES_SERVICE_ENDPOINT.
Sebelum memulai
Pastikan Anda memiliki akses ke kode sumber App Engine.
Aktifkan Cloud Run Admin API dan Artifact Registry API:
Peran yang diperlukan
Anda dapat memilih untuk membuat akun layanan baru atau menggunakan akun layanan yang sama yang dikelola pengguna di Cloud Run yang Anda gunakan untuk App Engine. Anda atau administrator harus memberikan peran IAM berikut ke akun deployer dan akun layanan Cloud Build.
Klik untuk melihat peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang diperlukan untuk mem-build dan men-deploy dari sumber, minta administrator untuk memberi Anda peran IAM berikut:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) di project Anda - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) di project Anda - Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di identitas layanan Cloud Run
Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build
Cloud Build otomatis menggunakan
akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk mem-build kode sumber dan
resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar
Cloud Build dapat mem-build sumber Anda, minta administrator untuk memberikan
Cloud Run Builder
(roles/run.builder) ke akun layanan default Compute Engine
di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ganti PROJECT_NUMBER dengan nomor project Anda Google Cloud, dan PROJECT_ID dengan project ID Anda Google Cloud. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project Anda,
lihat Membuat
dan mengelola project.
Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk diterapkan.
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Cloud Client Libraries, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Proses migrasi
Migrasi ini mencakup langkah-langkah berikut:
- Men-deploy layanan transformasi gambar di Cloud Run untuk mendapatkan URL layanan Anda.
- Mengonfigurasi file sumber App Engine dengan URL layanan dan flag perutean Cloud Run, lalu men-deploy atau men-deploy ulang aplikasi App Engine Anda.
- Menguji aplikasi untuk memeriksa fungsi pemrosesan gambar.
Men-deploy layanan transformasi gambar di Cloud Run
Untuk men-deploy layanan transformasi gambar dan mengonfigurasi aksesnya ke Cloud Storage, ikuti langkah-langkah berikut:
Men-deploy container layanan transformasi gambar yang telah dibuat sebelumnya ke layanan Cloud Run. Pastikan Anda men-deploy dengan autentikasi yang diterapkan (
--no-allow-unauthenticated). SDK layanan App Engine menangani autentikasi saat melakukan panggilan ke layanan ini:gcloud run deploy image-processing-service \ --image=us-central1-docker.pkg.dev/gae-bundled-services-images/image-processing-service-staging/image-processing-service:public-image-d476f7ef9d1b \ --no-allow-unauthenticated \ --region=REGIONGanti REGION dengan region tempat Anda men-deploy layanan Cloud Run. Sebaiknya deploy layanan di region yang sama dengan layanan App Engine Anda.
Perhatikan URL layanan Cloud Run yang di-deploy, misalnya,
https://image-processing-service-xyz-uc.a.run.app.Berikan peran Cloud Run Invoker (
roles/run.invoker) ke akun layanan App Engine default. Hal ini memungkinkan aplikasi App Engine Anda mengotorisasi dan merutekan panggilan ke layanan Cloud Run pribadi:gcloud run services add-iam-policy-binding image-processing-service \ --member="serviceAccount:PROJECT_ID@appspot.gserviceaccount.com" \ --role="roles/run.invoker" \ --region=REGIONBerikan peran Cloud Storage Object Viewer (
roles/storage.objectViewer) ke akun layanan Compute Engine default. Hal ini memungkinkan layanan transformasi gambar membaca gambar yang disimpan di Cloud Storage:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectViewer"Ganti kode berikut:
- PROJECT_ID: ID project tempat Anda men-deploy layanan Cloud Run.
- PROJECT_NUMBER: nomor project tempat Anda men-deploy layanan Cloud Run.
Mengonfigurasi file sumber
Untuk mengonfigurasi aplikasi Python agar menggunakan layanan transformasi gambar di Cloud Run, ikuti langkah-langkah berikut:
Tambahkan dependensi berikut ke file
requirements.txtAnda:appengine-python-standard>=3.0.0b0Atau, untuk menginstal dependensi secara lokal, jalankan:
pip install --pre "appengine-python-standard>=3.0.0b0"Perbarui file
app.yamluntuk mengaktifkan proxy API dan mengonfigurasi variabel lingkungan yang diperlukan:runtime: RUNTIME # a supported python version # List the Images service app_engine_bundled_services: - images env_variables: # Enable the custom gRPC Images service APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE: "true" # The URL of the Cloud Run service you deployed APPENGINE_IMAGES_SERVICE_ENDPOINT: "RUN_SERVICE_URL"Ganti kode berikut:
- RUNTIME: versi runtime Python yang didukung.
- RUN_SERVICE_URL: URL layanan Cloud Run yang di-deploy.
Deploy aplikasi Anda ke App Engine:
gcloud app deployLayanan App Engine Anda di-deploy di
https://PROJECT_ID.REGION_ID.r.appspot.com.Luncurkan browser Anda, dan akses layanan web Anda dengan menjalankan perintah berikut:
gcloud app browse
Menguji aplikasi
Untuk memverifikasi bahwa aplikasi Anda berhasil menggunakan layanan transformasi gambar Cloud Run:
- Aktifkan fungsi pemrosesan gambar di aplikasi Anda.
- Periksa Logs Explorer untuk aplikasi App Engine Anda. Pastikan tidak ada error terkait panggilan
google.appengine.api.images. - Periksa log Cloud Run
image-processing-serviceAnda untuk memverifikasi bahwa Cloud Run menerima dan memproses permintaan.