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:
Berikan peran
Editor
ke akun layanan default App Engine (PROJECT_ID@appspot.gserviceaccount.com
).Tinjau panduan Cloud Build tentang perubahan pada akun layanan default dan pilih tidak ikut perubahan default di project baru.
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:
- Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).
- Anda menyiapkan kebijakan retensi data untuk bucket
staging.PROJECT_ID.appspot.com
.
Untuk mengatasi masalah ini, ubah setelan berikut untuk bucket Anda:
- Tetapkan enkripsi ke Google-owned and Google-managed encryption keys.
- Hapus kebijakan retensi.
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.