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.
Personaliza el HTTP cliente
AWS SDK para Go Utiliza un HTTP cliente predeterminado con valores de configuración predeterminados. Si bien puede cambiar algunos de estos valores de configuración, el HTTP cliente y el transporte predeterminados no están suficientemente configurados para los clientes que los utilizan AWS SDK para 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 HTTP cliente personalizado y cómo usarlo para crear AWS SDK para Go llamadas.
Para ayudarle a crear un HTTP cliente personalizado, en esta sección se describe cómo NewBuildableClient
Definamos lo que queremos personalizar.
Anulación durante la carga de la configuración
Se pueden proporcionar HTTP clientes personalizados al llamar LoadDefaultConfigLoadDefaultConfig
. Por ejemplo, para hacerse customClient
pasar por nuestro cliente:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
Tiempo de espera
Se BuildableHTTPClient
puede configurar con un límite de tiempo de espera de solicitud. Este tiempo de espera incluye el tiempo necesario para conectarse, procesar cualquier redireccionamiento y leer el cuerpo completo de la respuesta. 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)
Marcador
BuildableHTTPClient
Proporciona una mecánica de construcción para construir clientes con opciones de DialerDialer
ajustes 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
Marcador. KeepAlive
Esta configuración representa el período de mantenimiento activo de una conexión de red activa.
Establézcalo en un valor negativo para deshabilitar los keep-alives.
Establézcalo en 0 para habilitar los keep-alives si el protocolo y el sistema operativo lo admiten.
Los protocolos de red o los sistemas operativos que no admiten la función Keep-alives ignoran este campo. De forma predeterminada, TCP habilita Keep Alive.
Consulte https://golang. org/pkg/net/#Dialer. KeepAlive
Definir KeepAlive
como Time.Duration.
Marcador. Tiempo de espera
Esta configuración representa la cantidad máxima de tiempo que un dial espera a que se cree una conexión.
El valor predeterminado es 30 segundos.
Consulte https://golang. org/pkg/net/#Dialer .Timeout
Establece Timeout
como Time.Duration.
Transporte
BuildableHTTPClient
Proporciona una mecánica de construcción para construir clientes con opciones de transporte
Configuración de un proxy
Si no puedes conectarte directamente a Internet, puedes usar variables de entorno compatibles con GO (HTTP_PROXY
/HTTPS_PROXY
) o crear un HTTP cliente personalizado para configurar tu proxy. En el siguiente ejemplo, se configura el cliente para que se utilice PROXY_URL
como punto final 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)
})
Otros ajustes
A continuación se muestran algunos otros Transport
ajustes que se pueden modificar para ajustar el HTTP cliente. Puede encontrar cualquier configuración adicional que no se describa aquí en la documentación sobre el 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
Si la solicitud tiene el encabezado «Expect: 100-continue», esta configuración representa la cantidad máxima de tiempo de espera para que lleguen los encabezados de primera respuesta de un servidor después de haber escrito completamente los encabezados de la solicitud. Este tiempo no incluye el tiempo de envío del encabezado de la solicitud. El HTTP cliente envía su carga útil una vez agotado el tiempo de espera.
El valor predeterminado es de 1 segundo.
Establézcalo en 0 si no hay tiempo de espera y envía la carga útil de la solicitud sin esperas. Un caso de uso es cuando tiene problemas con los proxies o servicios de terceros que realizan una sesión similar a la que se utiliza Amazon S3 en la función que se muestra más adelante.
Consulte https://golang. org/pkg/net/http/#Transport. ExpectContinueTimeout
Definir ExpectContinue
como Time.Duration.
Transporte. IdleConnTimeout
Esta configuración representa la cantidad máxima de tiempo para mantener activa una conexión de red inactiva entre HTTP solicitudes.
Establézcalo en 0 si no hay límite.
Consulte https://golang. org/pkg/net/http/#Transport. IdleConnTimeout
Definir IdleConnTimeout
como Time.Duration.
Transporte. MaxIdleConns
Esta configuración representa el número máximo de conexiones inactivas (que se mantienen activas) en todos los hosts. Un caso práctico para aumentar este valor es cuando se ven muchas conexiones de los mismos clientes en un período corto
0 significa que no hay límite.
Consulte https://golang. org/pkg/net/http/#Transport. MaxIdleConns
MaxIdleConns
Definir como int.
Transporte. MaxIdleConnsPerHost
Esta configuración representa el número máximo de conexiones inactivas (que se mantienen activas) que se deben mantener por host. Un caso práctico para aumentar este valor es cuando se ven muchas conexiones de los mismos clientes en un período corto
El valor predeterminado es de dos conexiones inactivas por host.
Configúrelo en 0 para usar DefaultMaxIdleConnsPerHost (2).
Consulte https://golang. org/pkg/net/http/#Transport. MaxIdleConnsPerHost
MaxIdleConnsPerHost
Definir como int.
Transporte. 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 durante este período, la solicitud fallará y se generará un error de tiempo de espera.
Tenga cuidado al establecer este valor cuando utilice funciones Lambda de ejecución prolongada, ya que la operación no devuelve ningún encabezado de respuesta hasta que la función Lambda haya finalizado o se haya agotado el tiempo de espera. Sin embargo, puede seguir utilizando esta opción con la operación ** **. InvokeAsync API
El valor predeterminado es que no hay tiempo de espera; espere para siempre.
Consulte https://golang. org/pkg/net/http/#Transport. ResponseHeaderTimeout
Definir ResponseHeaderTimeout
como Time.Duration.
Transporte. TLSHandshakeTimeout
Esta configuración representa el tiempo máximo de espera para que se complete un TLS apretón de manos.
El valor predeterminado es de 10 segundos.
Cero significa que no hay tiempo de espera.
Consulte https://golang. org/pkg/net/http/#Transport. TLSHandshakeTimeout
Definir TLSHandshakeTimeout
como Time.Duration.