Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Sesuaikan Klien HTTP
AWS SDK untuk Go Menggunakan klien HTTP default dengan nilai konfigurasi default. Meskipun Anda dapat mengubah beberapa nilai konfigurasi ini, klien HTTP default dan transport tidak cukup dikonfigurasi untuk pelanggan yang menggunakan AWS SDK untuk Go dalam lingkungan dengan throughput tinggi dan persyaratan latensi rendah. Untuk informasi lebih lanjut, silakan lihat rekomendasi konfigurasi Pertanyaan yang Sering Diajukan as bervariasi berdasarkan beban kerja tertentu. Bagian ini menjelaskan cara mengkonfigurasi klien HTTP kustom, dan menggunakan klien tersebut untuk membuat AWS SDK untuk Go panggilan.
Untuk membantu Anda dalam membuat klien HTTP kustom, bagian ini menjelaskan cara NewBuildableClient
Mari kita definisikan apa yang ingin kita sesuaikan.
Mengganti Selama Pemuatan Konfigurasi
Klien HTTP kustom dapat diberikan saat memanggil LoadDefaultConfigLoadDefaultConfig
. Misalnya, untuk lulus customClient
sebagai klien kami:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
Waktu habis
BuildableHTTPClient
Dapat dikonfigurasi dengan batas waktu tunggu permintaan. Batas waktu ini mencakup waktu untuk terhubung, memproses pengalihan apa pun, dan membaca badan respons lengkap. Misalnya, untuk memodifikasi batas waktu klien:
import "github.com/aws/aws-sdk-go-v2/aws/transport/http" // ... httpClient := http.NewBuildableClient().WithTimeout(time.Second*5)
Dialer
BuildableHTTPClient
Ini menyediakan mekanisme pembangun untuk membangun klien dengan opsi DialerDialer
pengaturan klien.
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net" // ... httpClient := awshttp.NewBuildableClient().WithDialerOptions(func(d *net.Dialer) { d.KeepAlive = -1 d.Timeout = time.Millisecond*500 })
Pengaturan
Dialer. KeepAlive
Pengaturan ini mewakili periode keep-alive untuk koneksi jaringan aktif.
Setel ke nilai negatif untuk menonaktifkan keep-alives.
Setel ke 0 untuk mengaktifkan keep-alives jika didukung oleh protokol dan sistem operasi.
Protokol jaringan atau sistem operasi yang tidak mendukung keep-alives mengabaikan bidang ini. Secara default, TCP memungkinkan tetap hidup.
Lihat https://golang. org/pkg/net/#Dialer. KeepAlive
Tetapkan KeepAlive
sebagai time.Duration.
Dialer.Timeout
Pengaturan ini mewakili jumlah maksimum waktu dial menunggu koneksi dibuat.
Defaultnya adalah 30 detik.
Lihat https://golang. org/pkg/net/#Dialer .Timeout
Tetapkan Timeout
sebagai time.Duration.
Transportasi
BuildableHTTPClient
Ini menyediakan mekanisme pembangun untuk membangun klien dengan opsi Transportasi
Mengkonfigurasi Proxy
Jika Anda tidak dapat langsung terhubung ke internet, Anda dapat menggunakan variabel lingkungan yang didukung GO (HTTP_PROXY
/HTTPS_PROXY
) atau membuat klien HTTP khusus untuk mengonfigurasi proxy Anda. Contoh berikut mengonfigurasi klien untuk digunakan PROXY_URL
sebagai titik akhir proxy:
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { proxyURL, err := url.Parse("PROXY_URL") if err != nil { log.Fatal(err) } tr.Proxy = http.ProxyURL(proxyURL) })
Pengaturan Lainnya
Di bawah ini adalah beberapa Transport
pengaturan lain yang dapat dimodifikasi untuk menyetel klien HTTP. Pengaturan tambahan apa pun yang tidak dijelaskan di sini dapat ditemukan di dokumentasi tipe Transport
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { tr.ExpectContinueTimeout = 0 tr.MaxIdleConns = 10 })
Transportasi. ExpectContinueTimeout
Jika permintaan memiliki header “Expect: 100-continue”, pengaturan ini mewakili jumlah waktu maksimum untuk menunggu header respons pertama server setelah sepenuhnya menulis header permintaan, Kali ini tidak termasuk waktu untuk mengirim header permintaan. Klien HTTP mengirimkan payloadnya setelah batas waktu ini habis.
Default 1 detik.
Setel ke 0 tanpa batas waktu dan kirim payload permintaan tanpa menunggu. Salah satu kasus penggunaan adalah ketika Anda mengalami masalah dengan proxy atau layanan pihak ketiga yang mengambil sesi yang mirip dengan penggunaan Amazon S3 dalam fungsi yang ditampilkan nanti.
Lihat https://golang. org/pkg/net/http/#Transport. ExpectContinueTimeout
Tetapkan ExpectContinue
sebagai time.Duration.
Transportasi. IdleConnTimeout
Pengaturan ini mewakili jumlah maksimum waktu untuk menjaga koneksi jaringan idle tetap hidup antara permintaan HTTP.
Setel ke 0 tanpa batas.
Lihat https://golang. org/pkg/net/http/#Transport. IdleConnTimeout
Tetapkan IdleConnTimeout
sebagai time.Duration.
Transportasi. MaxIdleConns
Pengaturan ini mewakili jumlah maksimum koneksi idle (keep-alive) di semua host. Salah satu kasus penggunaan untuk meningkatkan nilai ini adalah ketika Anda melihat banyak koneksi dalam waktu singkat dari klien yang sama
0 berarti tidak ada batas.
Lihat https://golang. org/pkg/net/http/#Transport. MaxIdleConns
Tetapkan MaxIdleConns
sebagai int.
Transportasi. MaxIdleConnsPerHost
Pengaturan ini mewakili jumlah maksimum koneksi idle (keep-alive) untuk disimpan per host. Salah satu kasus penggunaan untuk meningkatkan nilai ini adalah ketika Anda melihat banyak koneksi dalam waktu singkat dari klien yang sama
Default adalah dua koneksi idle per host.
Setel ke 0 untuk menggunakan DefaultMaxIdleConnsPerHost (2).
Lihat https://golang. org/pkg/net/http/#Transport. MaxIdleConnsPerHost
Tetapkan MaxIdleConnsPerHost
sebagai int.
Transportasi. ResponseHeaderTimeout
Pengaturan ini mewakili jumlah waktu maksimum untuk menunggu klien membaca header respons.
Jika klien tidak dapat membaca header respons dalam durasi ini, permintaan gagal dengan kesalahan batas waktu.
Hati-hati menyetel nilai ini saat menggunakan fungsi Lambda yang berjalan lama, karena operasi tidak mengembalikan header respons apa pun hingga fungsi Lambda selesai atau habis waktu. Namun, Anda masih dapat menggunakan opsi ini dengan operasi API InvokeAsync ** **.
Default adalah tidak ada batas waktu; tunggu selamanya.
Lihat https://golang. org/pkg/net/http/#Transport. ResponseHeaderTimeout
Tetapkan ResponseHeaderTimeout
sebagai time.Duration.
Transportasi. TLSHandshakeBatas waktu
Pengaturan ini mewakili jumlah waktu maksimum menunggu jabat tangan TLS selesai.
Default-nya 10 detik.
Nol berarti tidak ada batas waktu.
Lihat https://golang. org/pkg/net/http/#Transport. TLSHandshakeBatas waktu
Tetapkan TLSHandshakeTimeout
sebagai time.Duration.