Halaman ini menjelaskan cara memecahkan masalah error yang Anda terima dalam respons dari permintaan ke API Anda.
BAD_GATEWAY
Jika Anda menerima kode error 13 dan pesan BAD_GATEWAY, hal ini menunjukkan bahwa Extensible Service Proxy (ESP) tidak dapat menjangkau backend layanan.
Periksa hal-hal berikut:
- Pastikan layanan backend berjalan. Cara melakukannya bergantung pada backend.
-
Untuk lingkungan fleksibel App Engine, kode error untuk pesan
BAD_GATEWAYmungkin502. Lihat bagian Error khusus untuk lingkungan fleksibel App Engine untuk mengetahui informasi selengkapnya. - Untuk Compute Engine, lihat Memecahkan masalah Cloud Endpoints di Compute Engine untuk mengetahui detailnya.
-
Untuk GKE, Anda harus menggunakan SSH untuk mengakses pod dan menggunakan
curl. Lihat Memecahkan Masalah Endpoints di Google Kubernetes Engine untuk mengetahui detailnya.
-
Untuk lingkungan fleksibel App Engine, kode error untuk pesan
- Port alamat IP yang benar dari layanan backend ditentukan:
-
Untuk GKE, periksa nilai tanda
--backendESP (opsi singkatnya adalah-a) di file manifes deployment Anda (sering disebutdeployment.yaml). -
Untuk Compute Engine, periksa nilai flag ESP
--backend(opsi singkatnya adalah-a) dalam perintahdocker run.
-
Untuk GKE, periksa nilai tanda
reset reason: connection failure
Jika Anda menerima kode HTTP 503 atau kode gRPC 14 dan pesan upstream connect error or disconnect/reset before headers. reset reason: connection failure, hal ini menunjukkan bahwa ESPv2 tidak dapat menjangkau backend layanan.
Untuk memecahkan masalah, periksa kembali item di bawah.
Alamat Backend
ESPv2 harus dikonfigurasi dengan alamat backend yang benar. Masalah yang umum mencakup:
- Skema alamat backend harus cocok dengan jenis aplikasi backend.
Backend OpenAPI harus berupa
http://dan backend gRPC harus berupagrpc://. - Untuk ESPv2 yang di-deploy di Cloud Run, skema alamat backend harus berupa
https://ataugrpcs://.smemberi tahu ESPv2 untuk menyiapkan TLS dengan backend.
Pencarian DNS
Secara default, ESPv2 mencoba me-resolve nama domain ke alamat IPv6. Jika resolusi IPv6 gagal, ESPv2 akan melakukan penggantian ke alamat IPv4.
Untuk beberapa jaringan, mekanisme penggantian mungkin tidak berfungsi sebagaimana mestinya.
Sebagai gantinya, Anda dapat memaksa ESPv2 menggunakan alamat IPv4 melalui
flag --backend_dns_lookup_family.
Error ini sering terjadi jika Anda mengonfigurasi Konektor VPC Serverless untuk ESPv2 yang di-deploy di Cloud Run. VPC tidak mendukung traffic IPv6.
API is not enabled for the project
Jika Anda mengirim kunci API dalam permintaan, pesan error seperti "API my-api.endpoints.example-project-12345.cloud.goog is not enabled for the project" menunjukkan bahwa kunci API dibuat di project Google Cloud yang berbeda dengan API. Untuk memperbaikinya, Anda dapat membuat kunci API di project Google Cloud yang sama dengan project yang terkait dengan API, atau Anda dapat mengaktifkan API di project Google Cloud tempat kunci API dibuat.
Service control request failed with HTTP response code 403
Jika Anda menerima kode error 14 dan pesan Service control request failed
with HTTP response code 403, hal ini menunjukkan bahwa Service Control API
(servicecontrol.googleapis.com) tidak diaktifkan di project.
Lihat Memeriksa layanan yang diperlukan untuk memastikan bahwa semua layanan yang diperlukan Endpoints dan ESP telah diaktifkan di project Anda.
Lihat Memeriksa izin yang diperlukan untuk memastikan bahwa semua izin yang diperlukan untuk akun layanan yang terkait dengan instance yang menjalankan ESP.
Method doesn't allow unregistered callers
ESP merespons dengan error,
Method doesn't allow unregistered callers, jika Anda telah menentukan kunci API
di bagian security dalam dokumen OpenAPI, tetapi permintaan ke API
tidak memiliki kunci API yang ditetapkan ke parameter kueri bernama key.
Jika Anda perlu membuat kunci API untuk melakukan panggilan ke API, lihat Membuat kunci API.
Method does not exist
Respons, Method does not exist, berarti metode HTTP
(GET, POST, atau lainnya) di jalur URL yang ditentukan tidak ditemukan. Untuk
memecahkan masalah, bandingkan konfigurasi layanan yang telah Anda deploy untuk memastikan
nama metode dan jalur URL yang Anda kirim dalam permintaan
cocok:
Di konsol Google Cloud , buka halaman Endpoints Services untuk project Anda.
Jika Anda memiliki lebih dari satu API, pilih API yang Anda kirimi permintaan.
Klik tab Histori deployment.
Pilih deployment terbaru untuk melihat konfigurasi layanan.
Jika Anda tidak melihat metode yang Anda panggil yang ditentukan di bagian paths
dokumen OpenAPI, tambahkan metode tersebut, atau tambahkan tanda x-google-allow
di tingkat teratas file:
x-google-allow: all
Flag ini berarti Anda dapat menghindari pencantuman semua metode yang didukung di backend dalam dokumen OpenAPI. Saat all digunakan, semua panggilan—dengan atau tanpa
kunci API atau autentikasi pengguna—diteruskan melalui ESP ke
API Anda. Lihat
x-google-allow
untuk mengetahui informasi selengkapnya.
Error khusus untuk lingkungan fleksibel App Engine
Bagian ini menjelaskan respons error dari API yang di-deploy di lingkungan fleksibel App Engine.
Kode error 502 atau 503
App Engine mungkin memerlukan waktu beberapa menit untuk merespons permintaan dengan berhasil.
Jika Anda mengirim permintaan dan mendapatkan HTTP 502, 503, atau error server lainnya, tunggu sebentar, lalu coba permintaan lagi.
Pesan error BAD_GATEWAY
Kode error 502 dengan BAD_GATEWAY dalam pesan biasanya menunjukkan bahwa
App Engine menghentikan aplikasi karena kehabisan memori.
VM fleksibel App Engine default hanya memiliki memori 1 GB, dengan hanya
600 MB yang tersedia untuk container aplikasi.
Untuk memecahkan masalah kode error 502:
Di konsol Google Cloud , buka halaman Logging:
Pilih project Google Cloud yang sesuai di bagian atas halaman.
Pilih Google App Engine Application dan buka
vm.syslog.Cari entri log yang mirip dengan berikut ini:
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:0kBJika Anda melihat entri
Out of memorydi log:Tambahkan kode berikut ke file
app.yamlAnda untuk meningkatkan ukuran VM default:resources: memory_gb: 4Deploy ulang API Anda:
gcloud app deploy
Jika Anda menentukan opsi rollout_strategy: managed di bagian
endpoints_api_service pada file app.yaml, gunakan perintah berikut
untuk men-deploy ulang API Anda:
gcloud app deploy
Lihat Men-deploy API dan ESP untuk mengetahui informasi selengkapnya.
Memeriksa log Cloud Logging
Untuk menggunakan log Cloud Logging guna membantu memecahkan masalah error respons:
Di konsol Google Cloud , buka halaman Logging.
Di bagian atas halaman, pilih Google Cloud project.
Gunakan menu drop-down di sebelah kiri, pilih Produced API > [YOUR_SERVICE_NAME].
Sesuaikan rentang waktu hingga Anda melihat baris yang menunjukkan error respons.
Luaskan payload JSON dan cari
error_cause.Jika
error_causedisetel keapplication, hal ini menunjukkan adanya masalah dalam kode Anda.Jika
error causeadalah hal lain dan Anda tidak dapat memperbaiki masalah tersebut, ekspor log dan sertakan dalam komunikasi apa pun yang Anda lakukan dengan Google.
Lihat informasi selengkapnya di sini:
Untuk mengetahui detail tentang struktur log di Logs Explorer, lihat Referensi log endpoint
Mulai menggunakan Logs Explorer.
Gunakan Kueri log lanjutan untuk pemfilteran lanjutan, seperti mendapatkan semua permintaan dengan latensi lebih besar dari 300 milidetik.
Masalah pada Invoke-WebRequest contoh
Pada beberapa versi Windows PowerShell, contoh Invoke-WebRequest dalam
tutorial
gagal. Kami juga telah menerima laporan bahwa respons berisi daftar byte yang tidak ditandatangani yang harus dikonversi menjadi karakter. Jika contoh
Invoke-WebRequest tidak menampilkan hasil yang diharapkan, coba kirim permintaan
menggunakan aplikasi lain. Berikut beberapa saran:
- Mulai Cloud Shell dan ikuti langkah-langkah Linux dalam tutorial yang Anda gunakan untuk mengirim permintaan.
Menginstal aplikasi pihak ketiga, seperti ekstensi browser Chrome Postman (yang ditawarkan oleh
www.getpostman.com). Saat membuat permintaan di Postman:- Pilih
POSTsebagai kata kerja HTTP. - Untuk header, pilih kunci
content-typedan nilaiapplication/json. - Untuk isi, masukkan:
{"message":"hello world"} Di URL, gunakan kunci API sebenarnya, bukan variabel lingkungan. Contoh:
- Di lingkungan fleksibel App Engine:
https://example-project-12345.appspot.com/echo?key=AIza... - Di backend lain:
http://192.0.2.0:80/echo?key=AIza...
- Di lingkungan fleksibel App Engine:
- Pilih
Download dan instal
curl, yang Anda jalankan di command prompt. Karena Windows tidak menangani tanda petik ganda yang disarangkan di dalam tanda petik tunggal, Anda harus mengubah opsi--datadalam contoh menjadi:--data "{\"message\":\"hello world\"}"