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 Images service App Engine ke layanan tersebut.
Migrasi ini tidak memerlukan penulisan ulang besar 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 memproses gambar menggunakan mesin Pillow open source melalui gRPC dan menampilkan hasilnya ke aplikasi App Engine Anda. Penyiapan ini menggantikan backend layanan Gambar App Engine lama dengan solusi modern yang cloud-native.
Batasan
Saat menggunakan layanan pemrosesan gambar kustom, Anda tidak dapat membuat URL penayangan. App Engine akan menampilkan pengecualian runtime saat Anda memanggil metode
getServingUrl(). Pembatasan ini mencegah ketergantungan pada backend lama untuk menyimpan dan menayangkan gambar.Untuk menayangkan gambar, sebaiknya Anda menayangkannya secara langsung dari URL Cloud Storage, atau menggunakan bucket Cloud Storage yang didukung oleh Cloud CDN, bergantung pada persyaratan aplikasi Anda.
URL yang sudah ada yang Anda buat menggunakan panggilan lama ke metode
getServingUrl()akan terus menayangkan gambar.Saat Anda mengupgrade versi SDK layanan App Engine, App Engine tidak otomatis merutekan panggilan App Engine ke layanan Cloud Run. Aplikasi Anda hanya 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 dikelola pengguna yang sama di Cloud Run yang Anda gunakan untuk App Engine. Anda atau administrator Anda harus memberikan peran IAM berikut kepada akun deployer dan akun layanan Cloud Build.
Klik untuk melihat peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang Anda perlukan untuk membangun 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) pada identitas layanan Cloud Run
Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build
Cloud Build secara otomatis menggunakan
akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan
resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran 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 Google Cloud
Anda, dan PROJECT_ID dengan project ID Google Cloud
Anda. 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 berlaku.
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 Library Klien Cloud, 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:
- Deploy layanan transformasi gambar di Cloud Run untuk mendapatkan URL layanan Anda.
- Konfigurasi file sumber App Engine dengan URL layanan Cloud Run dan flag perutean, lalu deploy atau deploy ulang aplikasi App Engine Anda.
- Uji aplikasi Anda untuk memeriksa fungsi pemrosesan gambar Anda.
Men-deploy layanan transformasi gambar di Cloud Run
Untuk men-deploy layanan transformasi gambar dan mengonfigurasi aksesnya ke Cloud Storage, ikuti langkah-langkah berikut:
Deploy container layanan transformasi gambar yang telah dibuat sebelumnya ke layanan Cloud Run. Pastikan Anda men-deploy dengan autentikasi yang diterapkan (
--no-allow-unauthenticated). App Engine Services SDK 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.
Catat URL layanan dari 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 Java agar menggunakan layanan transformasi gambar di Cloud Run, ikuti langkah-langkah berikut:
Perbarui file
pom.xmluntuk menyertakan dependensi berikut:Tambahkan atau perbarui dependensi
appengine-api-1.0-sdk:<dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>5.0.5-beta.1</version> </dependency>Tambahkan dependensi
google-auth-library-oauth2-httpuntuk komunikasi yang aman dengan Cloud Run:<dependency> <groupId>com.google.auth</groupId> <artifactId>google-auth-library-oauth2-http</artifactId> <version>1.20.0</version> </dependency>
Perbarui file
appengine-web.xmluntuk mengonfigurasi variabel lingkungan yang diperlukan:<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <runtime>RUNTIME</runtime> <!-- a supported Java runtime version --> <threadsafe>true</threadsafe> <!-- List the Images service --> <app-engine-bundled-services> <api>images</api> </app-engine-bundled-services> <env-variables> <!-- Enable the custom gRPC Images service --> <env-var name="APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE" value="true" /> <!-- The URL of the Cloud Run service you deployed --> <env-var name="APPENGINE_IMAGES_SERVICE_ENDPOINT" value="RUN_SERVICE_URL" /> </env-variables> </appengine-web-app>Ganti kode berikut:
- RUNTIME: versi runtime Java yang didukung.
- RUN_SERVICE_URL: URL layanan Cloud Run yang di-deploy.
Deploy aplikasi Anda ke App Engine:
mvn clean package appengine:deploy cleanLuncurkan browser Anda, dan akses layanan web Anda dengan menjalankan perintah berikut:
gcloud app browse
Menguji aplikasi Anda
Untuk memverifikasi bahwa aplikasi Anda berhasil menggunakan layanan transformasi gambar Cloud Run:
- Aktifkan fungsi pemrosesan gambar di aplikasi App Engine yang di-deploy.
- Periksa Logs Explorer untuk aplikasi App Engine Anda. Pastikan tidak ada error terkait panggilan
com.google.appengine.api.images. - Periksa log
image-processing-serviceCloud Run Anda untuk memverifikasi bahwa Cloud Run menerima dan memproses permintaan.