Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Personalización del cliente HTTP
AWS SDK for Go utiliza un cliente HTTP predeterminado con valores de configuración predeterminados. Si bien puede cambiar algunos de estos valores de configuración, el cliente y el transporte HTTP predeterminados no están suficientemente configurados para aquellos clientes que usan AWS SDK for Go en un entorno con requisitos de alto rendimiento y baja latencia. Para obtener más información, consulte la sección Preguntas frecuentes, ya que las recomendaciones de configuración varían en función de las cargas de trabajo específicas. En esta sección se describe cómo configurar un cliente HTTP personalizado y cómo usarlo para crear llamadas a AWS SDK for Go.
Para ayudarle a crear un cliente HTTP personalizado, en esta sección se describe cómo usar NewBuildableClient
Vamos a definir qué queremos personalizar.
Reemplazo durante la carga de la configuración
Se pueden proporcionar clientes HTTP personalizados al llamar a LoadDefaultConfigLoadDefaultConfig. Por ejemplo, para pasar customClient como nuestro cliente:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
Tiempo de espera
El objeto BuildableHTTPClient se puede configurar con un límite de tiempo de espera para las solicitudes. En este tiempo de espera se incluye el tiempo necesario para conectarse, procesar cualquier redireccionamiento y leer el cuerpo de respuesta completo. Por ejemplo, para modificar el tiempo de espera del cliente:
import "github.com/aws/aws-sdk-go-v2/aws/transport/http" // ... httpClient := http.NewBuildableClient().WithTimeout(time.Second*5)
Dialer
El objeto BuildableHTTPClient proporciona una mecánica de creación para crear clientes con opciones DialerDialer de un 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 })
Configuración
Dialer.KeepAlive
Esta configuración representa el período de conservación de una conexión de red activa.
Establézcala en un valor negativo para deshabilitar estos períodos.
Establézcala en 0 para habilitar los períodos de conservación si el protocolo y el sistema operativo los admiten.
Los protocolos de red o sistemas operativos que no admiten los períodos de conservación omiten este campo. De forma predeterminada, TCP habilita el período de conservación.
Consulte https://golang.org/pkg/net/#Dialer.KeepAlive
Establezca KeepAlive como time.Duration.
Dialer.Timeout
Esta configuración representa el tiempo máximo de espera de marcado para la creación de una conexión.
El valor predeterminado es de 30 segundos.
Consulte https://golang.org/pkg/net/#Dialer.Timeout
Establezca Timeout como time.Duration.
Transporte
El objeto BuildableHTTPClient proporciona una mecánica de creación destinada a crear clientes con opciones Transport
Configuración de un proxy
Si no puede conectarse directamente a Internet, puede utilizar variables de entorno compatibles con Go (HTTP_PROXY/HTTPS_PROXY) o crear un cliente HTTP personalizado para configurar el proxy. En el ejemplo siguiente se configura el cliente para usar PROXY_URL como punto de conexión del 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) })
Otras configuraciones
A continuación, se muestran otras configuraciones de Transport que se pueden modificar para ajustar el cliente HTTP. En la documentación del tipo 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 })
Transport.ExpectContinueTimeout
Si la solicitud tiene el encabezado “Expect: 100-continue”, esta configuración representa el tiempo máximo de espera para los primeros encabezados de respuesta de un servidor después de escribir por completo los encabezados de solicitud. En este tiempo no se incluye el tiempo necesario para enviar el encabezado de solicitud. El cliente HTTP envía su carga útil después de agotarse este tiempo de espera.
El valor predeterminado es de un segundo.
Establézcala en 0 para no definir ningún tiempo de espera y enviar la carga útil de la solicitud sin esperar. Un caso de uso se produce cuando tiene problemas con proxies o servicios de terceros que toman una sesión similar al uso de Amazon S3 en la función que se muestra más adelante.
Consulte https://golang.org/pkg/net/http/#Transport.ExpectContinueTimeout
Establezca ExpectContinue como time.Duration.
Transport.IdleConnTimeout
Esta configuración representa el tiempo máximo para mantener activa una conexión de red inactiva entre solicitudes HTTP.
Establézcala en 0 para que no haya límite.
Consulte https://golang.org/pkg/net/http/#Transport.IdleConnTimeout
Establezca IdleConnTimeout como time.Duration.
Transport.MaxIdleConns
Esta configuración representa el número máximo de conexiones inactivas (con mantenimiento activo) en todos los hosts. Un caso de uso para aumentar este valor es cuando se dan muchas conexiones de los mismos clientes en un período breve.
0 significa que no hay límite.
Consulte https://golang.org/pkg/net/http/#Transport.MaxIdleConns
Establezca MaxIdleConns como int.
Transport.MaxIdleConnsPerHost
Esta configuración representa el número máximo de conexiones inactivas (con mantenimiento activo) que se conservan por host. Un caso de uso para aumentar este valor es cuando se dan muchas conexiones de los mismos clientes en un período breve.
El valor predeterminado es de dos conexiones inactivas por host.
Establézcala en 0 para usar DefaultMaxIdleConnsPerHost (2).
Consulte https://golang.org/pkg/net/http/#Transport.MaxIdleConnsPerHost
Establezca MaxIdleConnsPerHost como int.
Transport.ResponseHeaderTimeout
Esta configuración representa el tiempo máximo de espera para que un cliente lea el encabezado de respuesta.
Si el cliente no puede leer el encabezado de la respuesta dentro de este período, se producirá un error de tiempo de espera de la solicitud.
Tenga cuidado al establecer este valor cuando utilice funciones de Lambda de ejecución prolongada, ya que la operación no devolverá ningún encabezado de respuesta hasta que la función de Lambda haya finalizado o se haya agotado su tiempo de espera. Sin embargo, puede seguir usando esta opción con la operación de la API ** InvokeAsync**.
El valor predeterminado es no establecer un tiempo de espera, es decir, una espera indefinida.
Consulte https://golang.org/pkg/net/http/#Transport.ResponseHeaderTimeout
Establezca ResponseHeaderTimeout como time.Duration.
Transport.TLSHandshakeTimeout
Esta configuración representa el tiempo máximo de espera para que se complete un establecimiento de comunicación TLS.
El valor predeterminado es de diez segundos.
Cero significa que no hay tiempo de espera.
Consulte https://golang.org/pkg/net/http/#Transport.TLSHandshakeTimeout
Establezca TLSHandshakeTimeout como time.Duration.