Bermigrasi dari layanan App Engine Images ke Cloud Run

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-besaran pada kode pemrosesan gambar atau hosting aplikasi App Engine Anda di Cloud Run. Sebagai gantinya, saat Anda mengonfigurasi aplikasi, SDK layanan App Engine akan menangkap panggilan layanan Images App Engine dan mengarahkannya 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 Images App Engine lama dengan solusi berbasis cloud yang modern.

Batasan

  • Saat Anda menggunakan layanan pemrosesan gambar kustom dengan APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE yang ditetapkan ke true, Anda tidak dapat membuat URL penayangan. App Engine menampilkan pengecualian runtime saat Anda memanggil metode get_serving_url(). Anda hanya dapat menggunakan metode ini jika APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE ditetapkan ke false atau tidak ditetapkan. Pembatasan ini mencegah ketergantungan pada backend lama untuk menyimpan dan menyajikan gambar.

    Untuk menyajikan gambar, sebaiknya Anda menyajikannya langsung dari URL Cloud Storage atau menggunakan bucket Cloud Storage yang didukung oleh Cloud CDN.

    URL yang sudah ada yang Anda buat menggunakan panggilan lama ke metode get_serving_url() akan terus menyajikan gambar.

  • Saat Anda mengupgrade versi SDK layanan App Engine, App Engine tidak akan otomatis merutekan panggilan ke layanan Cloud Run. Aplikasi Anda menerapkan perilaku baru hanya setelah Anda mengonfigurasi variabel lingkungan APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE dan APPENGINE_IMAGES_SERVICE_ENDPOINT.

Sebelum memulai

  1. Pastikan Anda memiliki akses ke kode sumber App Engine.

  2. Aktifkan Cloud Run Admin API dan Artifact Registry API:

    Aktifkan 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 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:

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 membangun kode sumber dan resource Cloud Run, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun 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@ \
      --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, lihat Membuat dan mengelola project.

Pemberian peran Cloud Run Builder ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk disebarkan.

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 APIGoogle Cloud , 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:

  1. Deploy layanan transformasi gambar di Cloud Run untuk mendapatkan URL layanan Anda.
  2. Konfigurasikan file sumber App Engine Anda dengan URL layanan Cloud Run dan flag perutean, lalu deploy atau deploy ulang aplikasi App Engine Anda.
  3. Uji aplikasi Anda 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:

  1. Deploy container layanan transformasi gambar bawaan 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/release/image-processing-service:latest \
        --no-allow-unauthenticated \
        --region=REGION
    

    Ganti 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..

  2. Berikan peran Cloud Run Invoker (roles/run.invoker) ke akun layanan App Engine default. Hal ini memungkinkan aplikasi App Engine Anda mengizinkan dan merutekan panggilan ke layanan Cloud Run pribadi:

    gcloud run services add-iam-policy-binding image-processing-service \
        --member="serviceAccount:PROJECT_ID@" \
        --role="roles/run.invoker" \
        --region=REGION
    
  3. Berikan 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@" \
        --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:

  1. Tambahkan dependensi berikut ke file requirements.txt Anda:

    appengine-python-standard>=3.0.2
    

    Atau, untuk menginstal dependensi secara lokal, jalankan:

    pip install "appengine-python-standard>=3.0.2"
    
  2. Perbarui file app.yaml Anda untuk 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.
  3. Deploy aplikasi Anda ke App Engine:

    gcloud app deploy
    

    Layanan App Engine Anda di-deploy di https://PROJECT_ID.REGION_ID.r.appspot.com.

  4. Luncurkan browser, 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:

  1. Picu fungsi pemrosesan gambar di aplikasi Anda.
  2. Periksa Logs Explorer untuk aplikasi App Engine Anda. Pastikan tidak ada error terkait panggilan google.appengine.api.images.
  3. Periksa log Cloud Run image-processing-service untuk memastikan bahwa Cloud Run menerima dan memproses permintaan.

Langkah berikutnya