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
BUFFEREDatauSTREAMED. $context.integration.timeToAllHeadersWaktu antara saat API Gateway menetapkan koneksi integrasi saat menerima semua header respons integrasi dari klien.
$context.integration.timeToFirstContentWaktu antara saat API Gateway menetapkan koneksi integrasi saat menerima byte konten pertama.
$context.integration.latencyatau$context.integrationLatencyWaktu 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.
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.