Memecahkan masalah deployment di App Engine

Beberapa faktor dapat menyebabkan error deployment di App Engine, termasuk izin yang tidak ada, perubahan pada kebijakan organisasi, dan masalah dalam konfigurasi aplikasi Anda.

Halaman ini menjelaskan error deployment umum berikut di App Engine dan metode untuk memecahkan masalahnya:

Error izin

Bagian ini menjelaskan error yang mungkin terjadi saat Anda men-deploy aplikasi karena izin akun tidak ada atau perubahan pada kebijakan organisasi.

Untuk mengidentifikasi akun aktif yang Anda gunakan untuk mengakses Google Cloud CLI dan alat lainnya di Google Cloud Platform, lakukan salah satu tindakan berikut:

  • Jika Anda menggunakan Google Cloud CLI untuk melakukan deployment, jalankan perintah gcloud auth list.

  • Jika Anda melakukan deployment dari IDE, lihat setelan untuk plugin Cloud Tools.

Untuk memahami alasan mengapa penetapan peran App Engine Deployer (roles/appengine.deployer) saja mungkin tidak memadai dalam beberapa kasus, lihat peran App Engine.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Deployment gagal untuk project baru

Anda mungkin melihat error berikut saat men-deploy aplikasi untuk pertama kalinya di project baru:

ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: com.google.net.rpc3.client.RpcClientException:..........invalid bucket "staging.PROJECT_ID.appspot.com"; service account PROJECT_ID@appspot.gserviceaccount.com does not have access to the bucket

Untuk mengatasi masalah ini, berikan peran Storage Admin (roles/storage.admin) ke akun layanan default. Untuk mengetahui informasi selengkapnya, lihat Menyimpan log build di bucket yang dibuat pengguna.

Jika Anda telah memberikan peran Storage Admin, beserta peran lain yang diperlukan berdasarkan error izin yang berbeda yang Anda alami selama deployment, dan masih tidak dapat men-deploy aplikasi, hal ini mungkin karena perubahan kebijakan organisasi berikut:

  • Mulai Mei 2024, Google Cloud akan menerapkan kebijakan organisasi aman secara default untuk semua resource organisasi. Kebijakan ini mencegah App Engine memberikan peran Editor ke akun layanan default App Engine.

  • Pada Juni 2024, Cloud Build mengubah perilaku default untuk cara Cloud Build menggunakan akun layanan di project baru. Hal ini dijelaskan dalam Perubahan akun layanan Cloud Build. Akibat perubahan ini, project baru yang men-deploy versi untuk pertama kalinya mungkin menggunakan akun layanan App Engine default dengan izin yang tidak memadai untuk men-deploy versi.

Untuk menyelesaikan masalah ini, lakukan tindakan berikut:

Pemanggil tidak memiliki izin untuk mengakses project

Error berikut terjadi jika akun layanan tidak memiliki izin untuk men-deploy aplikasi dalam project saat ini:

User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist).

Untuk mengatasi masalah ini, berikan peran App Engine Deployer (roles/appengine.deployer) ke akun layanan.

Gagal mengambil metadata dari registry

Error berikut terjadi jika Anda menggunakan perintah gcloud app deploy dari akun layanan yang tidak memiliki peran Storage Admin (roles/storage.admin):

Failed to fetch metadata from the registry, with reason: generic::permission_denied

Untuk mengatasi masalah ini, berikan peran Storage Admin ke akun layanan.

Akun layanan harus memiliki izin untuk gambar

Error berikut terjadi saat Anda men-deploy aplikasi:

The App Engine appspot and App Engine flexible environment service accounts must
have permissions on the image IMAGE_NAME

Error ini terjadi karena salah satu alasan berikut:

  • Akun layanan App Engine default tidak memiliki peran Storage Object Viewer (roles/storage.objectViewer).

    Untuk mengatasi masalah ini, berikan peran Storage Object Viewer ke akun layanan.

  • Project Anda memiliki perimeter layanan Kontrol Layanan VPC yang membatasi akses ke Cloud Storage API menggunakan tingkat akses.

    Untuk mengatasi masalah ini, tambahkan akun layanan yang Anda gunakan untuk men-deploy aplikasi ke accessPolicies perimeter layanan Kontrol Layanan VPC yang sesuai.

  • Setelah 15 Mei 2024, Artifact Registry menghosting image untuk domain gcr.io di Google Cloud project tanpa penggunaan Container Registry sebelumnya. Jika Anda men-deploy aplikasi yang ada di project baru yang dibuat setelah tanggal ini, akun layanan mungkin tidak memiliki izin yang diperlukan untuk men-deploy aplikasi. Untuk memberikan izin yang diperlukan, lihat Men-deploy ke App Engine.

Gagal membuat Cloud Build

Error berikut terjadi jika Anda menggunakan perintah gcloud app deploy dari akun layanan yang tidak memiliki peran Cloud Build Editor (roles/cloudbuild.builds.editor).

Failed to create cloud build: Permission denied

Untuk mengatasi masalah ini, berikan peran Cloud Build Editor ke akun layanan.

Terjadi error saat mengambil aplikasi

Error berikut terjadi saat akun layanan yang Anda gunakan untuk men-deploy aplikasi tidak memiliki peran App Engine Deployer.

Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

If you are running Google Cloud CLI version 328 or later, the following error occurs
when you deploy your app:

make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.

Untuk mengatasi masalah ini, berikan peran App Engine Deployer ke akun layanan yang Anda gunakan untuk men-deploy aplikasi.

Error saat men-deploy layanan dengan konektor Akses VPC Serverless

Error berikut terjadi saat pengguna atau akun layanan yang mencoba men-deploy aplikasi dengan konektor Akses VPC Serverless tidak memiliki izin yang diperlukan:

Please ensure you have [compute.globalOperations.get] on the service project

Untuk mengatasi masalah ini, pastikan pengguna atau akun layanan yang digunakan untuk deployment memiliki peran Serverless VPC Access User dan Compute Viewer IAM.

Error deployment umum

Bagian ini menjelaskan strategi pemecahan masalah untuk error konfigurasi di aplikasi atau project Anda.

Terjadi error nilai tidak valid saat men-deploy dalam konfigurasi VPC Bersama

Error berikut muncul di Cloud Logging untuk instance VM fleksibel saat Anda men-deploy aplikasi:

Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert

Ini adalah masalah umum saat menetapkan instance_tag dalam file app.yaml Anda akan mengakibatkan error saat membuat instance.

Untuk mengatasi masalah ini, hapus kolom instance_tag dari file app.yaml, lalu deploy ulang.

Error saat men-deploy aplikasi dengan maksimal tiga instance atau kurang

Aplikasi yang di-deploy dengan max_instances disetel ke tiga atau kurang mungkin akan mengalami error atau periode nonaktif yang tidak terduga. Untuk mengatasi masalah ini, tentukan setidaknya empat instance maksimum di file app.yaml Anda, lalu deploy ulang.

Melebihi batas pada instance maksimum

Error berikut terjadi saat Anda men-deploy aplikasi:

You may not have more than 'xx' total max instances in your project.

Ada batas untuk jumlah maksimum instance yang dapat Anda buat per project. Permintaan untuk membuat instance tambahan akan gagal jika Anda melebihi batas ini.

Untuk mengatasi masalah ini, tetapkan nilai max_instances di file app.yaml pada nilai kurang dari batas ini atau hapus beberapa layanan atau versi agar jumlahnya max_instances sesuai batas.

Build selama deployment gagal tanpa adanya error di log

Error berikut terjadi saat Anda men-deploy aplikasi:

ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details

Jika Anda mengklik link dalam pesan error dan mendapati bahwa semua langkah build berhasil, tetapi aplikasi masih gagal di-build, hal ini mungkin disebabkan oleh salah satu alasan berikut:

Untuk mengatasi masalah ini, ubah setelan berikut untuk bucket Anda:

Build gagal saat menjalankan aplikasi Node.js

Kegagalan build mungkin terjadi saat Anda men-deploy aplikasi Node.js.

Secara default, runtime Node.js akan menjalankan npm run build jika skrip build terdeteksi dalam file package.json. Hal ini dapat menyebabkan perilaku yang tidak terduga, seperti build yang berjalan lama, atau error kehabisan memori.

Untuk mengatasi masalah ini, tentukan NODE_ENV=development di file app.yaml Anda untuk memastikan eksekusi memiliki semua dependensi yang diperlukan.

Meskipun terjadi error, Anda dapat memaksa produksi dengan menentukan NODE_ENV: 'production' di bawah build-env-variables dalam file app.yaml Anda:

  build_env_variables:
    NODE_ENV: 'production'

Untuk mengetahui informasi selengkapnya, lihat Menjalankan langkah-langkah build kustom selama deployment.