Ringkasan pemecahan masalah

Halaman ini memberikan informasi pemecahan masalah umum untuk Gateway API.

Tidak dapat menjalankan perintah "gcloud api-gateway"

Untuk menjalankan perintah gcloud api-gateway ..., Anda harus mengupdate Google Cloud CLI dan mengaktifkan layanan Google yang diperlukan. Lihat Mengonfigurasi lingkungan pengembangan Anda untuk informasi selengkapnya.

Perintah "gcloud api-gateway api-configs create" menyatakan akun layanan tidak ada

Jika Anda menjalankan perintah gcloud api-gateway api-configs create ... dan menerima error dalam formulir:

ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION:
Service Account "projects/-/serviceAccounts/service_account_email" does not exist

Jalankan kembali perintah, tetapi kali ini sertakan opsi --backend-auth-service-account untuk secara eksplisit menentukan alamat email akun layanan yang akan digunakan:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION \
  --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

Pastikan Anda telah menetapkan izin yang diperlukan ke akun layanan seperti yang dijelaskan dalam Mengonfigurasi lingkungan pengembangan Anda.

Permintaan API menampilkan error HTTP 403

Jika permintaan ke API yang di-deploy menampilkan error HTTP 403 ke klien API, artinya URL yang diminta valid, tetapi akses dilarang karena alasan tertentu.

API yang di-deploy memiliki izin yang terkait dengan peran yang diberikan ke akun layanan yang Anda gunakan saat membuat konfigurasi API. Biasanya, alasan terjadinya error HTTP 403 adalah akun layanan tidak memiliki izin yang diperlukan untuk mengakses layanan backend.

Jika Anda menentukan API dan layanan backend dalam Project Google Cloud yang sama, pastikan akun layanan memiliki peran Editor yang ditetapkan padanya, atau peran yang diperlukan untuk mengakses layanan backend. Misalnya, jika layanan backend diimplementasikan menggunakan Cloud Functions, pastikan akun layanan memiliki peran Cloud Function Invoker yang ditetapkan padanya.

Permintaan API menampilkan error HTTP 401 atau 500

Jika permintaan ke API yang di-deploy menampilkan error HTTP 401 atau 500 ke klien API, mungkin ada masalah saat menggunakan akun layanan yang digunakan saat Anda membuat konfigurasi API untuk memanggil layanan backend.

API yang di-deploy memiliki izin yang terkait dengan peran yang diberikan ke akun layanan yang Anda gunakan saat membuat konfigurasi API. Akun layanan diperiksa untuk memastikan keduanya ada, dan dapat digunakan oleh gateway API ketika API di-deploy.

Jika akun layanan dihapus atau dinonaktifkan setelah gateway di-deploy, urutan peristiwa berikut dapat terjadi:

  1. Segera setelah akun layanan dihapus atau dinonaktifkan, Anda mungkin melihat respons HTTP 401 di log gateway. Jika kolom response_code_details ditetapkan ke "via_upstream" dalam jsonPayload entri log, hal ini menunjukkan bahwa menghapus atau menonaktifkan akun layanan adalah penyebab error.

  2. Anda juga mungkin melihat error HTTP 500 tanpa entri log yang sesuai di log gateway API. Jika tidak ada permintaan ke gateway Anda segera setelah akun layanan dihapus atau dinonaktifkan, Anda mungkin tidak akan melihat respons HTTP 401, tetapi error HTTP 500 tanpa log gateway API yang sesuai merupakan indikasi bahwa akun layanan gateway mungkin tidak lagi aktif.

Permintaan API latensi tinggi

Seperti Cloud Run dan Cloud Functions, Gateway API memiliki latensi "cold start". Jika gateway Anda belum menerima traffic selama 15 hingga 20 menit, permintaan yang dibuat ke gateway Anda dalam 10 hingga 15 detik pertama cold start akan mengalami latensi selama 3 hingga 5 detik.

Jika masalah berlanjut setelah periode "pemanasan" awal, periksa log permintaan untuk layanan backend yang Anda konfigurasikan di Konfigurasi API. Misalnya, jika layanan backend diterapkan menggunakan Cloud Functions, periksa entri Cloud Logging dari log permintaan Cloud Function yang terkait.

Tidak dapat melihat informasi log

Jika API Anda merespons dengan benar, tetapi log tidak berisi data, biasanya itu berarti Anda belum mengaktifkan semua layanan Google yang diperlukan oleh Gateway API.

Gateway API mengharuskan Anda mengaktifkan layanan Google berikut:

Nama Judul
apigateway.googleapis.com API Gateway API
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API

Untuk mengonfirmasi bahwa layanan yang diperlukan telah diaktifkan:

gcloud services list

Jika Anda tidak melihat layanan yang diperlukan tercantum, aktifkan layanan tersebut:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Untuk mengetahui informasi selengkapnya tentang layanan gcloud, lihat layanan gcloud.