Memecahkan Masalah Error Respons

Halaman ini menjelaskan cara memecahkan masalah error yang Anda terima dalam respons dari permintaan ke API.

Upstream backend unavailable

Jika Anda menerima kode error 14 dan pesan upstream backend unavailable, 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.

  • Port alamat IP yang benar dari layanan backend ditentukan:
    • Untuk GKE, periksa nilai tanda --backend ESP (opsi singkatnya adalah -a) dalam file manifes deployment Anda (sering kali disebut deployment.yaml).
    • Untuk Compute Engine, periksa nilai flag ESP --backend (opsi singkatnya adalah -a) dalam perintah docker run.

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 http:// dan backend gRPC harus grpc://.
  • Untuk ESPv2 yang di-deploy di Cloud Run, skema alamat backend harus berupa https:// atau grpcs://. s memberi 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 kembali 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 umum 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 tidak diaktifkan untuk 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 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.

  1. Lihat Memeriksa layanan yang diperlukan untuk memastikan bahwa semua layanan yang diperlukan Endpoint dan ESP diaktifkan di project Anda.

  2. Lihat Memeriksa izin yang diperlukan untuk memastikan bahwa semua izin yang diperlukan untuk akun layanan yang terkait dengan instance yang menjalankan ESP telah diberikan.

Method doesn't allow unregistered callers

ESP merespons dengan error, Method doesn't allow unregistered callers, saat Anda menentukan allow_unregistered_calls: false dalam file konfigurasi gRPC API, tetapi permintaan ke API Anda 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:

  1. Di konsol Google Cloud, buka halaman Endpoints Services untuk project Anda.

    Buka halaman Endpoints Services

  2. Jika Anda memiliki lebih dari satu API, pilih API yang Anda kirimkan permintaan.

  3. Klik tab Histori deployment.

  4. Pilih deployment terbaru untuk melihat konfigurasi layanan.

Transport is closing

Jika Anda menerima kode error 13 dan pesan transport is closing, hal ini menunjukkan bahwa ESP tidak dapat dijangkau.

Periksa log error ESP. Cara melakukannya bergantung pada backend. Lihat informasi selengkapnya di sini:

Respons tidak terduga

Jika respons HTTP terlihat seperti biner, hal ini mungkin menunjukkan bahwa permintaan mengakses API menggunakan port HTTP2 saat Anda ingin menggunakan port HTTP1.

Periksa opsi konfigurasi port Anda untuk ESP. Karena flag bentuk singkat, -p (untuk HTTP1) dan -P (untuk HTTP2), terlihat mirip, sebaiknya Anda menggunakan flag bentuk panjang: --http_port untuk HTTP1 dan --http2_port untuk HTTP2.

Kesalahan konfigurasi backend ESP juga dapat menyebabkan respons yang tidak terduga. Pastikan flag backend (-a atau --backend) ditetapkan ke URL gRPC seperti --backend=grpc://127.0.0.1:8081.

Untuk mengetahui detail selengkapnya tentang flag ESP, lihat Opsi startup ESP.

Memeriksa log Cloud Logging

Untuk menggunakan log Cloud Logging guna membantu memecahkan masalah error respons:

  1. Pada konsol Google Cloud, buka halaman Logging.

    Buka halaman Logs Explorer

  2. Di bagian atas halaman, pilih project Google Cloud.

  3. Dengan menggunakan menu drop-down di sebelah kiri, pilih Produced API > [YOUR_SERVICE_NAME].

  4. Sesuaikan rentang waktu hingga Anda melihat baris yang menampilkan error respons.

  5. Luaskan payload JSON dan cari error_cause.

    • Jika error_cause ditetapkan ke application, hal ini menunjukkan masalah dalam kode Anda.

    • Jika error cause adalah hal lain dan Anda tidak dapat memperbaiki masalahnya, 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.