Memecahkan masalah dengan streaming respons di API Gateway - Amazon API Gateway

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah dengan streaming respons di API Gateway

Panduan pemecahan masalah berikut dapat membantu menyelesaikan masalah dengan Anda APIs yang menggunakan streaming respons.

Pemecahan masalah umum

Anda dapat menggunakan tab pengujian TestInvokeMethodatau konsol untuk menguji respons streaming Anda. Pertimbangan berikut dapat memengaruhi penggunaan pemanggilan pengujian Anda untuk streaming respons:

  • Saat Anda menguji metode Anda, API Gateway menyangga payload respons yang dialirkan. Setelah salah satu kondisi berikut terpenuhi, API Gateway mengembalikan respons satu kali yang berisi muatan buffer:

    • Permintaan selesai

    • 35 detik telah berlalu

    • Lebih dari 1 MB payload respons telah di-buffer

  • Jika lebih dari 35 detik berlalu sebelum metode Anda mengembalikan status respons HTTP dan semua header, maka status respons yang dikembalikan adalah 0. TestInvokeMethod

  • API Gateway tidak menghasilkan log eksekusi apa pun.

Setelah menerapkan API, Anda dapat menguji respons streaming dengan menggunakan perintah curl. Kami menyarankan Anda menggunakan -i opsi untuk menyertakan header respons protokol dalam output. Untuk melihat data respons saat tiba, gunakan opsi curl --no-buffer

Memecahkan masalah kesalahan cURL

Jika Anda menguji integrasi dan Anda menerima kesalahancurl: (18) transfer closed with outstanding read data remaining, pastikan batas waktu integrasi Anda cukup lama. Jika Anda menggunakan fungsi Lambda, Anda perlu memperbarui batas waktu respons fungsi Lambda. Untuk informasi selengkapnya, lihat Mengonfigurasi batas waktu fungsi Lambda.

Memecahkan masalah menggunakan pencatatan akses

Anda dapat menggunakan log akses untuk tahap REST API untuk mencatat dan memecahkan masalah aliran respons Anda. Selain variabel yang ada, Anda dapat menggunakan variabel log akses berikut:

$context.integration.responseTransferMode

Mode transfer respons integrasi Anda. Ini bisa salah satu BUFFERED atauSTREAMED.

$context.integration.timeToAllHeaders

Waktu antara saat API Gateway menetapkan koneksi integrasi saat menerima semua header respons integrasi dari klien.

$context.integration.timeToFirstContent

Waktu antara saat API Gateway menetapkan koneksi integrasi saat menerima byte konten pertama.

$context.integration.latency atau $context.integrationLatency

Waktu ketika API Gateway menetapkan koneksi integrasi saat aliran respons integrasi selesai.

Gambar berikut menunjukkan bagaimana variabel log akses ini mewakili komponen yang berbeda dari aliran respons.

Akses variabel log untuk streaming respons di API Gateway

Untuk informasi selengkapnya tentang log akses, lihat Siapkan CloudWatch logging untuk REST APIs di API Gateway. Anda juga dapat menggunakan X-Ray untuk memantau aliran respons Anda. Untuk informasi selengkapnya, lihat Lacak permintaan pengguna ke REST APIs menggunakan X-Ray di API Gateway.