As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Personalize o cliente HTTP
O AWS SDK para Go usa um cliente HTTP padrão com valores de configuração padrão. Embora você possa alterar alguns desses valores de configuração, o cliente e o transporte HTTP padrão não estão suficientemente configurados para clientes que o usam AWS SDK para Go em um ambiente com requisitos de alta taxa de transferência e baixa latência. Para obter mais informações, consulte as recomendações de configuração, Perguntas frequentes pois as recomendações de configuração variam com base em cargas de trabalho específicas. Esta seção descreve como configurar um cliente HTTP personalizado e usar esse cliente para criar AWS SDK para Go chamadas.
Para ajudá-lo a criar um cliente HTTP personalizado, esta seção descreve como NewBuildableClient
Vamos definir o que queremos personalizar.
Substituindo durante o carregamento da configuração
Clientes HTTP personalizados podem ser fornecidos durante a chamada, LoadDefaultConfigLoadDefaultConfig
. Por exemplo, para se customClient
passar por nosso cliente:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
Timeout (Tempo limite)
O BuildableHTTPClient
pode ser configurado com um limite de tempo limite de solicitação. Esse tempo limite inclui o tempo para se conectar, processar qualquer redirecionamento e ler o corpo completo da resposta. Por exemplo, para modificar o tempo limite do cliente:
import "github.com/aws/aws-sdk-go-v2/aws/transport/http" // ... httpClient := http.NewBuildableClient().WithTimeout(time.Second*5)
Discador
BuildableHTTPClient
Ele fornece uma mecânica de construção para construir clientes com opções modificadas do DialerDialer
configurações de um cliente.
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 })
Configurações
Discador. KeepAlive
Essa configuração representa o período de manutenção de atividade de uma conexão de rede ativa.
Defina como um valor negativo para desativar os keep-alives.
Defina como 0 para ativar o keep-alives se suportado pelo protocolo e pelo sistema operacional.
Protocolos de rede ou sistemas operacionais que não suportam keep-alives ignoram esse campo. Por padrão, o TCP ativa o keep alive.
Consulte https://golang. org/pkg/net/#Dialer. KeepAlive
Definido KeepAlive
como time.Duration.
Dialer. Tempo limite
Essa configuração representa o tempo máximo que um dial espera pela criação de uma conexão.
O padrão é 30 segundos.
Consulte https://golang. org/pkg/net/#Dialer .Tempo
Definido Timeout
como time.Duration.
Transporte
BuildableHTTPClient
Fornece uma mecânica de construção para a construção de clientes com opções de transporte
Configurando um proxy
Se você não conseguir se conectar diretamente à Internet, poderá usar variáveis de ambiente compatíveis com Go (HTTP_PROXY
/HTTPS_PROXY
) ou criar um cliente HTTP personalizado para configurar seu proxy. O exemplo a seguir configura o cliente para ser usado PROXY_URL
como endpoint do 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) })
Outras configurações
Abaixo estão algumas outras Transport
configurações que podem ser modificadas para ajustar o cliente HTTP. Qualquer configuração adicional não descrita aqui pode ser encontrada na documentação do tipo de transporte
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 })
Transporte. ExpectContinueTimeout
Se a solicitação tiver um cabeçalho “Expect: 100-continue”, essa configuração representa o tempo máximo de espera pelos cabeçalhos da primeira resposta de um servidor após a gravação completa dos cabeçalhos da solicitação. Esse tempo não inclui o tempo para enviar o cabeçalho da solicitação. O cliente HTTP envia sua carga depois que esse tempo limite se esgota.
Padrão: 1 segundo.
Defina como 0 sem tempo limite e envie a carga útil da solicitação sem esperar. Um caso de uso é quando você se depara com problemas com proxies ou serviços de terceiros que realizam uma sessão semelhante ao uso do Amazon S3 na função mostrada posteriormente.
Consulte https://golang. org/pkg/net/http/#Transport. ExpectContinueTimeout
Definido ExpectContinue
como time.Duration.
Transporte. IdleConnTimeout
Essa configuração representa o tempo máximo para manter uma conexão de rede ociosa ativa entre as solicitações HTTP.
Defina como 0 sem limite.
Consulte https://golang. org/pkg/net/http/#Transport. IdleConnTimeout
Definido IdleConnTimeout
como time.Duration.
Transporte. MaxIdleConns
Essa configuração representa o número máximo de conexões ociosas (keep-alive) em todos os hosts. Um caso de uso para aumentar esse valor é quando você vê muitas conexões dos mesmos clientes em um curto período.
0 significa sem limite.
Consulte https://golang. org/pkg/net/http/#Transport. MaxIdleConns
MaxIdleConns
Defina como int.
Transporte. MaxIdleConnsPerHost
Essa configuração representa o número máximo de conexões ociosas (keep-alive) a serem mantidas por host. Um caso de uso para aumentar esse valor é quando você vê muitas conexões dos mesmos clientes em um curto período.
O padrão é duas conexões ociosas por host.
Defina como 0 para usar DefaultMaxIdleConnsPerHost (2).
Consulte https://golang. org/pkg/net/http/#Transport. MaxIdleConnsPerHost
MaxIdleConnsPerHost
Defina como int.
Transporte. ResponseHeaderTimeout
Essa configuração representa o tempo máximo de espera até que um cliente leia o cabeçalho da resposta.
Se o cliente não conseguir ler o cabeçalho da resposta dentro desse período, a solicitação falhará com um erro de tempo limite.
Tenha cuidado ao definir esse valor ao usar funções Lambda de longa duração, pois a operação não retorna nenhum cabeçalho de resposta até que a função Lambda tenha terminado ou atingido o tempo limite. No entanto, você ainda pode usar essa opção com a operação da API InvokeAsync ****.
O padrão é sem tempo limite; espere para sempre.
Consulte https://golang. org/pkg/net/http/#Transport. ResponseHeaderTimeout
Definido ResponseHeaderTimeout
como time.Duration.
Transporte. TLSHandshakeTempo limite
Essa configuração representa o tempo máximo de espera pela conclusão de um handshake TLS.
O padrão é 10 segundos.
Zero significa que não há tempo limite.
Consulte https://golang. org/pkg/net/http/#Transport. TLSHandshakeTempo limite
Definido TLSHandshakeTimeout
como time.Duration.