Memecahkan masalah error App Engine

Deployment

Jika Anda mengalami masalah saat men-deploy aplikasi menggunakan App Engine Admin API, halaman ini menampilkan pesan error yang mungkin Anda lihat dan memberikan saran terkait cara memperbaiki setiap error.

Pemanggil tidak memiliki izin untuk mengakses project

Error berikut terjadi saat Anda men-deploy aplikasi:

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

Error ini terjadi jika akun yang Anda gunakan untuk men-deploy aplikasi tidak memiliki izin untuk men-deploy aplikasi untuk project yang sedang berjalan.

Untuk mengatasi masalah ini, berikan peran App Engine Deployer (roles/appengine.deployer) ke akun tersebut. Untuk melihat akun mana yang Anda gunakan untuk men-deploy, lakukan salah satu hal 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.

Gagal mengambil metadata dari registry

Error berikut terjadi saat Anda men-deploy aplikasi:

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

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

Untuk mengatasi masalah ini, berikan peran Admin Penyimpanan ke akun layanan:

  • Untuk melihat akun mana yang Anda gunakan, jalankan perintah gcloud auth list.
  • Untuk memahami alasan mengapa penetapan peran App Engine Deployer (roles/appengine.deployer) saja mungkin tidak memadai dalam beberapa kasus, lihat peran App Engine.

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:

Gagal membuat cloud build

Error berikut terjadi saat Anda men-deploy aplikasi:

Failed to create cloud build: Permission denied

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

Untuk mengatasi masalah ini, berikan peran Cloud Build Editor ke akun layanan yang digunakan untuk men-deploy aplikasi Anda.

Untuk melihat akun mana yang Anda gunakan, jalankan perintah gcloud auth list.

Terjadi error saat mengambil izin aplikasi

Error berikut terjadi saat Anda men-deploy aplikasi:

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

Jika Anda menjalankan Google Cloud CLI versi 328 atau yang lebih baru, error berikut akan terjadi saat Anda men-deploy aplikasi:

Permissions error fetching application apps/app_name. Please
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.

Error ini terjadi jika akun yang Anda gunakan untuk men-deploy aplikasi tidak memiliki peran App Engine Deployer (roles/appengine.deployer).

Untuk mengatasi masalah ini, pastikan Anda telah memberikan peran App Engine Deployer ke akun layanan yang digunakan untuk men-deploy aplikasi Anda; berikan peran tersebut jika akun layanan tidak memilikinya. Untuk melihat akun mana yang digunakan untuk men-deploy aplikasi, lakukan salah satu langkah 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.

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 healthy

Berbagai faktor dapat menyebabkan error ini, seperti izin tidak ada, error kode, CPU atau memori tidak memadai, atau health check yang gagal. Error hanya terjadi di lingkungan fleksibel App Engine.

Untuk mengatasi masalah ini, abaikan kemungkinan penyebab berikut:

  1. Pastikan Anda telah memberikan peran Editor (roles/editor) ke akun layanan App Engine default.
  2. Periksa apakah kebijakan organisasi untuk project Anda membatasi akses ke alamat IP eksternal. Untuk mengetahui informasi selengkapnya, lihat masalah umum lingkungan fleksibel App Engine.
  3. Pastikan Anda telah memberikan peran berikut ke akun layanan yang Anda gunakan untuk menjalankan aplikasi (biasanya akun layanan default, app-id@appspot.gserviceaccount.com):

  4. Berikan peran jika akun layanan tidak memilikinya.

  5. Jika Anda melakukan deployment dalam konfigurasi VPC Bersama dan meneruskan instance_tag di app.yaml, lihat bagian ini untuk memperbaiki masalah.

Error izin saat men-deploy layanan dengan Konektor Akses VPC Serverless

Error berikut terjadi saat Anda men-deploy aplikasi:

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

Error ini terjadi saat pengguna atau akun layanan yang mencoba men-deploy aplikasi dengan Konektor VPC Serverless tidak memiliki izin yang diperlukan.

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

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

Error berikut muncul di Cloud Logging untuk instance Flex VM 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

Error ini disebabkan oleh masalah yang sedang sering terjadi di mana pengaturan instance_tag mengakibatkan error saat membuat instance.

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

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

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

Terjadi error saat 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 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 ke nilai di bawah batas ini atau menghapus beberapa layanan atau versi untuk membawa jumlah max_instances sesuai batas.

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, pastikan Anda telah memberikan peran Pengguna Jaringan Compute kepada akun layanan Agen Layanan lingkungan fleksibel Google API dan App Engine untuk project host; memberikan peran tersebut jika akun layanan tidak memilikinya.

Build selama deployment gagal tanpa adanya error di log build

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

Merujuk pada link dalam pesan error akan menunjukkan bahwa semua langkah build berhasil. Namun, aplikasi gagal dibangun.

Masalah ini terjadi jika Anda menggunakan Kunci enkripsi yang dikelola pelanggan (CMEK) atau telah menyiapkan kebijakan retensi data untuk bucket staging.PROJECT_ID.appspot.com.

Untuk mengatasi masalah ini, ubah setelan berikut untuk bucket staging.PROJECT_ID.appspot.com Anda:

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/[VERSSION]/[PROJECT_ID]/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project [PROJECT_ID].

Error ini dapat terjadi karena penerapan batasan kebijakan organisasi constraints/compute.disableGuestAttributesAccess saat men-deploy aplikasi Anda. Kebijakan ini diterapkan secara default untuk semua aplikasi di lingkungan fleksibel App Engine.

Untuk mengatasi masalah ini, Anda harus menonaktifkan batasan kebijakan organisasi constraints/compute.disableGuestAttributesAccess.

Error saat men-deploy ke versi lingkungan fleksibel yang ada

Error berikut mungkin terjadi saat men-deploy ke versi fleksibel App Engine yang ada:

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.

Saat ini, tidak ada rollback jika terjadi kegagalan versi.

Aktif

Bagian berikut membahas error inisialisasi dan penayangan aplikasi.

Terjadi error izin saat membuat aplikasi dengan akun layanan default

Jika Anda membuat aplikasi setelah mengaktifkan App Engine API untuk pertama kalinya, aplikasi akan gagal dengan menampilkan error berikut:

  • gcloud CLI:

    An internal error occurred while calling service consumer manager for service account.
    Creating  App Engine application in project [PROJECT__ID] and [REGION]....failed. DEBUG: (gcloud.app.create) Error Response: [13] an internal error has occurred
    
  • Log permintaan:

    Service account creation is not allowed on this project.
    
  • Konsol:

    Error while initialising App Engine.
    

Error ini dapat terjadi karena penerapan batasan kebijakan organisasi constraints/iam.disableServiceAccountCreation saat membuat aplikasi Anda. Kebijakan ini mencegah penyediaan akun layanan default App Engine PROJECT_ID@appspot.gserviceaccount.com. Akun layanan default diperlukan untuk pembuatan aplikasi dan tidak dapat dilewati. Hal ini juga berlaku saat Anda menggunakan akun layanan per versi.

Untuk mengatasi masalah ini, Anda harus menghapus batasan kebijakan organisasi constraints/iam.disableServiceAccountCreation untuk sementara agar pembuatan dan deployment akun layanan default App Engine dapat dilakukan. Selanjutnya, akun layanan default App Engine dapat dihapus atau diganti dengan akun layanan yang Anda buat setelah deployment berhasil.

Jika Anda menggunakan akun layanan yang Anda buat, tinjau Ringkasan rekomendasi peran untuk memahami cara menerapkan izin pembatasan, seperti memberikan peran pembuat token pada akun layanan yang Anda buat untuk agen layanan.

Nginx gagal terhubung atau menghubungi container aplikasi

Error berikut hanya terjadi di lingkungan fleksibel App Engine dan biasanya ditampilkan dengan error 502 segera setelah error:

recv() failed (104: Connection reset by peer) while reading response header from upstream

Error ini menunjukkan bahwa reverse proxy nginx (file bantuan nginx) tidak dapat menjangkau container aplikasi. Di log, Anda dapat membandingkan waktu tutup error 502 di log nginx dengan waktu log nginx.error. Nginx.error yang diikuti langsung dengan error nginx 502 kemungkinan menjadi penyebab error nginx 502.

Error ini sering terjadi saat waktu tunggu koneksi keepalive aplikasi lebih kecil daripada waktu tunggu keepalive nginx. Karena nginx di lingkungan fleksibel App Engine memiliki keepalive_timeout 650 detik, aplikasi harus menjaga koneksi tetap aktif setidaknya selama ini. Secara default, aplikasi Node.js memiliki keepAliveTimeout berdurasi 5.000 milidetik. Dalam hal ini, Anda dapat menetapkan server.keepAliveTimeout ke 700.000 milidetik.

Untuk memecahkan masalah, periksa log yang ditulis oleh kode yang berjalan di container aplikasi Anda dengan menghubungkan ke instance VM, dan tambahkan logging lainnya, jika perlu, untuk menemukan akar masalahnya.

Memori tidak cukup

Error berikut terjadi di lingkungan fleksibel App Engine dan biasanya ditampilkan dengan error 502:

kernel: [  133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child
kernel: [  133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0kB

Error ini menunjukkan bahwa App Engine telah menghentikan aplikasi.

Error ini terjadi saat instance tidak memiliki memori yang cukup. Secara default, lingkungan fleksibel App Engine memiliki memori 1 GB, dengan hanya 600 MB yang tersedia untuk container aplikasi.

Untuk memecahkan masalah, periksa log dan jika Anda melihat entri Kehabisan Memori. Perbarui konfigurasi memory_gb Anda, lalu deploy ulang.

Koneksi terbuka yang tidak memadai untuk menangani permintaan masuk

Aplikasi mungkin mengalami error 502 jika jumlah maksimum koneksi yang menunggu sama dengan atau lebih besar dari 75% dari jumlah koneksi aktif.

Untuk mengatasi masalah ini, periksa metrik Cloud Monitoring untuk mengetahui jumlah maksimum koneksi aktif dan menunggu, dan kurangi jumlah koneksi yang menunggu untuk memastikan jumlah maksimum koneksi yang menunggu kurang dari atau sama dengan 75% dari jumlah koneksi aktif.