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.
Waktu tunggu hingga infrastruktur aplikasi responsif telah habis
Error berikut terjadi saat Anda men-deploy aplikasi:
Timed out waiting for the app infrastructure to become flex_await_healthy
Berbagai faktor dapat menyebabkan error ini, seperti izin tidak ada, error kode, CPU atau memori tidak memadai, atau health check yang gagal.
Untuk mengatasi masalah ini, abaikan kemungkinan penyebab berikut:
Periksa apakah kebijakan organisasi untuk project Anda membatasi akses ke alamat IP eksternal. Untuk mengetahui informasi selengkapnya, lihat masalah umum lingkungan fleksibel App Engine.
Pastikan Anda telah memberikan peran berikut ke akun layanan yang Anda gunakan untuk menjalankan aplikasi (biasanya akun layanan default,
app-id@appspot.gserviceaccount.com
):Berikan peran yang tersisa berdasarkan error deployment Anda, jika akun layanan tidak memilikinya.
Jika Anda men-deploy dalam konfigurasi VPC Bersama dan mengonfigurasi
instance_tag
di fileapp.yaml
, lihat Terjadi error nilai tidak valid saat men-deploy dalam konfigurasi VPC Bersama untuk memperbaiki masalah.
Error saat memulai ulang instance dalam versi yang sedang berjalan
Error berikut terjadi saat Anda men-deploy aplikasi:
error when restarting the instance under the running versions
Mulai Mei 2024, Google Cloud akan menerapkan kebijakan organisasi aman secara default untuk semua organisasi baru. Kebijakan ini mewajibkan semua instance VM yang dibuat di project baru untuk mengaktifkan VM Manager. Untuk project baru dan yang sudah ada, batasan ini mencegah pembaruan metadata yang menonaktifkan VM Manager di tingkat project atau instance.
Untuk mengatasi masalah ini, Anda harus menonaktifkan batasan kebijakan organisasi
Wajibkan Konfigurasi OS (constraints/compute.requireOsConfig
).
Jika masalah ini terus berlanjut, Anda juga harus menonaktifkan kebijakan organisasi berikut yang mungkin telah diaktifkan di level project atau organisasi:
Tentukan IP eksternal yang diizinkan untuk instance VM (
constraints/compute.vmExternalIpAccess
). Jika aplikasi Anda disiapkan untuk hanya menggunakan jaringan pribadi, Anda tidak perlu menonaktifkan batasan ini.Menonaktifkan Atribut Tamu metadata Compute Engine (
constraints/compute.disableGuestAttributesAccess
)
Izin compute.firewalls.list
yang diperlukan
Error berikut terjadi saat Anda men-deploy aplikasi di jaringan VPC Bersama:
Request to https://compute.googleapis.com/compute/v1/projects/projects/PROJECT_ID/global/firewalls?key failed, details: Required 'compute.firewalls.list' permission for 'projects/PROJECT_ID'
Error ini terjadi jika akun layanan berikut untuk project host tidak memiliki peran Pengguna Jaringan Compute (roles/compute.networkUser
):
Untuk mengatasi masalah ini, berikan peran Compute Network User ke akun layanan Agen Layanan Google API dan Agen Layanan lingkungan fleksibel App Engine untuk project host.
Deployment gagal karena batasan kebijakan organisasi
Error berikut terjadi saat Anda men-deploy aplikasi:
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred while processing task /app-engine-flex/....: Request to https://compute.googleapis.com/compute/VERSION/projects/PROJECT_ID/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project PROJECT_ID.
Hal ini mungkin disebabkan oleh penerapan batasan constraints/compute.disableGuestAttributesAccess
saat men-deploy aplikasi Anda. Semua aplikasi di lingkungan fleksibel App Engine menerapkan kebijakan organisasi ini secara default.
Untuk mengatasi masalah ini, Anda harus menonaktifkan
batasan constraints/compute.disableGuestAttributesAccess
.
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.
Error saat men-deploy ke versi App Engine yang ada
Error berikut mungkin terjadi saat men-deploy ke versi yang ada di lingkungan fleksibel App Engine:
ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while
processing task /app-engine-flex/flex_await_healthy/flex_await_healthy
Error ini menunjukkan bahwa memperbarui deployment yang tidak responsif dengan image Docker yang berfungsi tidak selalu menghasilkan deployment yang responsif. Hasilnya bergantung pada status instance dari deployment yang tidak responsif. Meskipun terjadi error, jika Anda memberikan image Docker yang baik, deployment pada akhirnya akan menjadi responsif. Mengupdate versi yang ada dengan image Docker baru, meskipun diizinkan, bukanlah praktik yang baik. Tidak ada rollback jika terjadi kegagalan versi.