Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pertanyaan yang Sering Diajukan
Bagaimana cara mengkonfigurasi klien HTTP SDK saya? Apakah ada pedoman atau praktik terbaik?
Kami tidak dapat memberikan panduan kepada pelanggan tentang cara mengkonfigurasi alur kerja HTTP mereka dengan cara yang paling efektif untuk beban kerja khusus mereka. Jawaban untuk ini adalah produk dari persamaan multivariat, dengan faktor input termasuk tetapi tidak terbatas pada:
-
jejak jaringan aplikasi (TPS, throughput, dll.)
-
Layanan yang digunakan
-
karakteristik komputasi dari penyebaran
-
sifat geografis dari penyebaran
-
perilaku aplikasi yang diinginkan atau kebutuhan aplikasi itu sendiri (SLAs, timing, dll.)
Bagaimana saya harus mengonfigurasi batas waktu operasi?
Sama seperti pertanyaan sebelumnya, itu tergantung. Elemen yang perlu dipertimbangkan di sini meliputi:
-
Semua faktor di atas mengenai konfigurasi klien HTTP
-
Waktu aplikasi Anda sendiri atau kendala SLA (misalnya jika Anda sendiri melayani lalu lintas ke konsumen lain)
Jawaban atas pertanyaan ini hampir TIDAK PERNAH didasarkan pada pengamatan empiris murni dari perilaku hulu - misalnya “Saya membuat 1000 panggilan ke operasi ini, butuh paling banyak 5 detik jadi saya akan mengatur batas waktu berdasarkan itu dengan faktor keamanan 2x hingga 10 detik”. Kondisi lingkungan dapat berubah, layanan dapat menurun sementara, dan jenis asumsi ini dapat menjadi salah tanpa peringatan.
Permintaan yang dibuat oleh SDK habis waktu atau terlalu lama, bagaimana cara memperbaikinya?
Kami tidak dapat membantu panggilan operasi yang diperpanjang atau habis waktu karena waktu yang lama dihabiskan untuk kabel. “Wire time” di SDK didefinisikan sebagai salah satu dari berikut ini:
-
Waktu yang dihabiskan dalam metode klien SDK
HTTPClient.Do() -
Waktu yang dihabiskan di
Read()s pada badan respons HTTP yang telah diteruskan ke pemanggil (mis.)GetObject
Jika Anda mengalami masalah karena latensi operasi atau batas waktu, tindakan pertama Anda harus mendapatkan telemetri siklus hidup operasi SDK untuk menentukan gangguan waktu antara waktu yang dihabiskan pada kabel dan overhead operasi di sekitarnya. Lihat panduan tentang pengaturan waktu operasi SDK, yang berisi cuplikan kode yang dapat digunakan kembali yang dapat mencapai hal ini.
Bagaimana cara memperbaiki read: connection reset kesalahan?
SDK mencoba ulang kesalahan apa pun yang cocok dengan connection reset pola secara default. Ini akan mencakup penanganan kesalahan untuk sebagian besar operasi, di mana respons HTTP operasi sepenuhnya dikonsumsi dan dideserialisasi ke dalam tipe hasil modelnya.
Namun, kesalahan ini masih dapat terjadi dalam konteks di luar loop coba lagi: operasi layanan tertentu secara langsung meneruskan badan respons HTTP API ke pemanggil untuk dikonsumsi dari kabel secara langsung melalui io.ReadCloser (misalnya GetObject muatan objek). Anda mungkin mengalami kesalahan ini saat melakukan a Read pada badan respons.
Kesalahan ini menunjukkan bahwa host Anda, layanan, atau pihak perantara mana pun (misalnya gateway NAT, proxy, penyeimbang beban) menutup koneksi saat mencoba membaca respons.
Ini dapat terjadi karena beberapa alasan:
-
Anda tidak mengkonsumsi badan respons untuk beberapa waktu setelah respons itu sendiri diterima (setelah operasi layanan dipanggil). Kami menyarankan Anda menggunakan badan respons HTTP sesegera mungkin untuk jenis operasi ini.
-
Anda tidak menutup badan respons yang diterima sebelumnya. Ini dapat menyebabkan koneksi disetel ulang pada platform tertentu. Anda HARUS menutup
io.ReadCloserinstans apa pun yang disediakan dalam respons operasi, terlepas dari apakah Anda mengkonsumsi isinya.
Selain itu, coba jalankan tcpdump untuk koneksi yang terpengaruh di tepi jaringan Anda (misalnya setelah proxy apa pun yang Anda kontrol). Jika Anda melihat bahwa AWS titik akhir tampaknya mengirim RST TCP, Anda harus menggunakan konsol AWS dukungan untuk membuka kasus terhadap layanan yang melanggar. Bersiaplah untuk memberikan permintaan IDs dan stempel waktu tertentu saat masalah terjadi.
Mengapa saya mendapatkan kesalahan “tanda tangan tidak valid” saat menggunakan proxy HTTP dengan SDK?
Algoritma tanda tangan untuk AWS layanan (umumnya sigv4) terkait dengan header permintaan serial, lebih khusus lagi sebagian besar header diawali dengan. X- Proxy cenderung memodifikasi permintaan keluar dengan menambahkan informasi penerusan tambahan (seringkali melalui X-Forwarded-For header) yang secara efektif merusak tanda tangan yang dihitung SDK.
Jika Anda menggunakan proxy HTTP dan mengalami kesalahan tanda tangan, Anda harus bekerja untuk menangkap permintaan karena muncul keluar dari proxy dan menentukan apakah itu berbeda.