Configuración del AWS SDK para clientes de servicios de C++ en código - AWS SDK para C++

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.

Configuración del AWS SDK para clientes de servicios de C++ en código

Cuando la configuración se gestiona directamente en el código, el alcance de la configuración se limita a la aplicación que utiliza ese código. Dentro de esa aplicación, hay opciones para la configuración global de todos los clientes de servicio, la configuración para todos los clientes de un Servicio de AWS tipo determinado o la configuración para una instancia de cliente de servicio específica.

AWS SDK para C++ Incluye clases de Servicio de AWS clientes que proporcionan funciones para interactuar con las Servicios de AWS que se utilizan en la aplicación. En el SDK para C++, puedes cambiar la configuración predeterminada del cliente, lo que resulta útil cuando quieres hacer cosas como las siguientes:

  • Conectarse a Internet a través del proxy

  • Cambiar la configuración del transporte HTTP, como el tiempo de espera y los reintentos de solicitud de conexión

  • Especificar sugerencias del tamaño del búfer del socket TCP

ClientConfigurationes una estructura del SDK para C++ que puede instanciar y utilizar en el código. El siguiente fragmento ilustra el uso de esta clase para acceder a Amazon S3 a través de un proxy.

Aws::Client::ClientConfiguration clientConfig; clientConfig.proxyHost = "localhost"; clientConfig.proxyPort = 1234; clientConfig.proxyScheme = Aws::Http::Scheme::HTTPS; Aws::S3::S3Client(clientConfig);

Declaraciones de variables de configuración

La ClientConfiguration estructura declara las siguientes variables miembro:

Aws::String accountId; Aws::String accountIdEndpointMode = "preferred"; bool allowSystemProxy = false; Aws::String appId; Aws::String caPath; Aws::String caFile; struct { RequestChecksumCalculation requestChecksumCalculation = RequestChecksumCalculation::WHEN_SUPPORTED; ResponseChecksumValidation responseChecksumValidation = ResponseChecksumValidation::WHEN_SUPPORTED; } checksumConfig; ProviderFactories configFactories = ProviderFactories::defaultFactories; long connectTimeoutMs = 1000; struct CredentialProviderConfiguration { Aws::String profile; Aws::String region; struct { long metadataServiceNumAttempts = 1; long metadataServiceTimeout = 1; std::shared_ptr<RetryStrategy> imdsRetryStrategy; bool disableImdsV1; bool disableImds; } imdsConfig; struct STSCredentialsCredentialProviderConfiguration { Aws::String roleArn; Aws::String sessionName; Aws::String tokenFilePath; std::chrono::milliseconds retrieveCredentialsFutureTimeout = std::chrono::seconds(10); } stsCredentialsProviderConfig; } credentialProviderConfig; bool disableExpectHeader = false; bool disableIMDS = false; bool disableImdsV1 = false; bool enableClockSkewAdjustment = true; Aws::Crt::Optional<bool> enableEndpointDiscovery; bool enableHostPrefixInjection = true; bool enableHttpClientTrace = false; bool enableTcpKeepAlive = true; Aws::String endpointOverride; std::shared_ptr<Aws::Utils::Threading::Executor> executor = nullptr; FollowRedirectsPolicy followRedirects; Aws::Http::TransferLibType httpLibOverride; Aws::Http::TransferLibPerformanceMode httpLibPerfMode = Http::TransferLibPerformanceMode::LOW_LATENCY; long httpRequestTimeoutMs = 0; unsigned long lowSpeedLimit = 1; unsigned maxConnections = 25; Aws::Utils::Array<Aws::String> nonProxyHosts; Aws::String profileName; Aws::String proxyCaFile; Aws::String proxyCaPath; Aws::Http::Scheme proxyScheme; Aws::String proxyHost; unsigned proxyPort = 0; Aws::String proxyUserName; Aws::String proxyPassword; Aws::String proxySSLCertPath; Aws::String proxySSLCertType; Aws::String proxySSLKeyPath; Aws::String proxySSLKeyType; Aws::String proxySSLKeyPassword; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> readRateLimiter = nullptr; Aws::String region; Aws::Client::RequestCompressionConfig requestCompressionConfig; long requestTimeoutMs = 0; std::shared_ptr<RetryStrategy> retryStrategy = nullptr; Aws::Http::Scheme scheme; unsigned long tcpKeepAliveIntervalMs = 30000; std::shared_ptr<smithy::components::tracing::TelemetryProvider> telemetryProvider; Aws::String userAgent; bool useDualStack = false; bool useFIPS = false; bool verifySSL = true; Aws::Http::Version version = Http::Version::HTTP_VERSION_2TLS; struct WinHTTPOptions { bool useAnonymousAuth = false; } winHTTPOptions; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> writeRateLimiter = nullptr; static Aws::String LoadConfigFromEnvOrProfile(const Aws::String& envKey, const Aws::String& profile, const Aws::String& profileProperty, const Aws::Vector<Aws::String>& allowedValues, const Aws::String& defaultValue);

Descripciones de variables de configuración

En la siguiente lista se describen las variables ClientConfiguration miembros que puede utilizar para personalizar el comportamiento del cliente.

accountId

Especifica el Cuenta de AWS ID del enrutamiento de puntos finales basado en cuentas. Utilice el formato 111122223333. El enrutamiento de puntos finales basado en cuentas mejora el rendimiento de las solicitudes de algunos servicios.

accountIdEndpointModo

Controla el comportamiento del enrutamiento de los puntos finales basado en cuentas. Los valores válidos son «obligatorio», «deshabilitado» o «preferido». El valor predeterminado es «preferido». Configúrelo en «inhabilitado» para desactivar el enrutamiento de puntos finales basado en cuentas cuando sea necesario.

allowSystemProxy

Controla si el cliente HTTP descubre la configuración del proxy del sistema. La configuración predeterminada es false. Configúrelo en true para habilitar la detección automática del proxy.

appId

Especifica un identificador opcional específico de la aplicación. Cuando se establece, este valor se añade al User-Agent encabezado en el formato. App/{appId} Puede establecer este valor mediante la variable de AWS_SDK_UA_APP_ID entorno o el atributo de perfil de configuración sdk_ua_app_id compartido.

CApath, CAfile

Indica al cliente HTTP dónde encontrar el almacén de confianza de certificados SSL. Un ejemplo de almacén de confianza podría ser un directorio preparado con la utilidad c_rehash OpenSSL. No debería ser necesario configurar estas variables a menos que su entorno utilice enlaces simbólicos. Estas variables no tienen ningún efecto en los sistemas Windows y macOS.

CheckSumConfig

Contiene la configuración de cálculo y validación de la suma de verificación. Incluye requestChecksumCalculation y tiene el valor predeterminado responseChecksumValidation WHEN_SUPPORTED.

Config Factories

Especifica los métodos de fábrica para inicializar las clases de utilidades del cliente, como y. Executor RetryStrategy Utiliza las fábricas predeterminadas a menos que se anulen.

requestTimeoutMs y connectTimeoutMs

Especifica la cantidad de tiempo en milisegundos que se debe esperar antes de que se agote el tiempo de espera de una solicitud HTTP. Por ejemplo, considere la posibilidad de aumentar estos tiempos al transferir archivos de gran tamaño.

credentialProviderConfig

Contiene los ajustes de configuración para los proveedores de credenciales. Utilice esta estructura para personalizar la forma en que el SDK obtiene AWS las credenciales.

disableExpectHeader

Aplicable solo a los clientes HTTP CURL. De forma predeterminada, CURL añade el encabezado «Expect: 100-Continue» en una solicitud HTTP para evitar enviar la carga HTTP en situaciones en las que el servidor responde con un error inmediatamente después de recibir el encabezado. Este comportamiento puede ahorrar un viaje de ida y vuelta y resulta útil en situaciones en las que la carga útil es pequeña y la latencia de la red es relevante. La configuración predeterminada de la variable es false. Si se establece en true, se indica a CURL que envíe juntos el encabezado de la solicitud HTTP y la carga útil del cuerpo.

Deshabilite los IMDS

Controla si las llamadas al Servicio de metadatos de instancias (IMDS) están deshabilitadas. La configuración predeterminada es falsa. Establézcalo en true para deshabilitar las llamadas de IMDS cuando se ejecutan fuera de las EC2 instancias.

Deshabilite IMDS v1

Controla si las IMDSv1 llamadas se deshabilitan mientras se permiten. IMDSv2 La configuración predeterminada es falsa. Configúrelo en verdadero para deshabilitar solo IMDSv1 las llamadas para mejorar la seguridad.

enableClockSkewAjuste

Controla si la inclinación del reloj se ajusta después de cada intento de HTTP. La configuración predeterminada es falsa.

enableEndpointDiscovery

Controla si se utiliza la detección de puntos finales. De forma predeterminada, se utilizan puntos finales regionales o anulados. Para habilitar la detección de puntos finales, defina la variable en true.

enableHostPrefixInyección

Controla si el host HTTP añade un prefijo «data-» a DiscoverInstances las solicitudes. De forma predeterminada, este comportamiento está habilitado. Para deshabilitarlo, defina la variable en false.

enableHttpClientRastrear

Controla si el rastreo de clientes HTTP está habilitado con fines de depuración. La configuración predeterminada es falsa. Establézcalo en true para habilitar el registro detallado de solicitudes y respuestas HTTP.

enableTcpKeep¡Vivo

Controla si se envían paquetes TCP keep-alive. La configuración predeterminada es true. Utilícelo junto con la tcpKeepAliveIntervalMs variable. Esta variable no se aplica a Win INet ni al IXMLHTTPRequest2 cliente.

Anulación de Endpoint

Especifica un punto final HTTP principal con el que comunicarse con un servicio.

albacea

Hace referencia a la implementación del controlador Executor asíncrono. El comportamiento predeterminado es crear y separar un hilo para cada llamada asíncrona. Para cambiar este comportamiento, implementa una subclase de la Executor clase y asigna una instancia a esta variable.

Sigue los redireccionamientos

Controla el comportamiento al gestionar los códigos de redireccionamiento HTTP 300.

httpLibOverride

Especifica la implementación HTTP devuelta por la fábrica HTTP predeterminada. El cliente HTTP predeterminado para Windows es WinHTTP. El cliente HTTP predeterminado para todas las demás plataformas es CURL.

httpLibPerfModo

Especifica el modo de rendimiento de la biblioteca HTTP. La configuración predeterminada es LOW_LATENCY. Puede ajustar esta configuración para optimizarla según diferentes características de rendimiento.

httpRequestTimeoutSra

Especifica el tiempo de espera de la solicitud HTTP en milisegundos. El valor predeterminado es 0 (sin tiempo de espera). Considere la posibilidad de aumentar este valor al transferir archivos grandes.

lowSpeedLimit

Especifica la velocidad de transferencia mínima permitida en bytes por segundo. Si la velocidad de transferencia es inferior a la velocidad especificada, la operación de transferencia se interrumpe. La configuración predeterminada es de 1 byte/segundo. Esta variable solo se aplica a los clientes CURL.

Conexiones máximas

Especifica el número máximo de conexiones HTTP a un único servidor. El valor predeterminado es 25. No existe un valor máximo permitido que no sea el que su ancho de banda pueda soportar razonablemente.

nonProxyHosts

Especifica un conjunto de nombres de host que deben omitir la configuración del proxy. Use esta configuración para excluir hosts específicos de la configuración del proxy.

profileName

Especifica el nombre del AWS perfil que se va a usar en la configuración. El SDK carga los ajustes del perfil especificado en el archivo AWS de configuración.

proxyCaFile

Especifica la ruta al archivo de la entidad emisora de certificados para las conexiones proxy cuando es diferente de la predeterminada.

proxyCaPath

Especifica la ruta al almacén de confianza de la entidad emisora de certificados para las conexiones proxy cuando es diferente de la predeterminada.

ProxyScheme, ProxyHost, ProxyPort y ProxyPassword proxyUserName

Se utiliza para instalar y configurar un proxy para todas las comunicaciones con. AWS Algunos ejemplos de casos en los que esta funcionalidad puede resultar útil son la depuración junto con la suite Burp o el uso de un proxy para conectarse a Internet.

Ruta del proxy SSLCert

Especifica la ruta al archivo de certificado SSL para las conexiones proxy que requieren certificados de cliente.

SSLCerttipo de proxy

Especifica el tipo de certificado SSL para las conexiones proxy. Los tipos más comunes incluyen PEM y DER.

Contraseña de proxy SSLKey

Especifica la contraseña de la clave privada SSL utilizada en las conexiones proxy cuando la clave está protegida con contraseña.

Ruta de proxy SSLKey

Especifica la ruta al archivo de clave privada SSL para las conexiones proxy que requieren certificados de cliente.

SSLKeytipo de proxy

Especifica el tipo de clave privada SSL para las conexiones proxy. Los tipos más comunes incluyen PEM y DER.

writeRateLimiter y readRateLimiter

Referencias a las implementaciones de limitadores de velocidad de lectura y escritura que se utilizan para reducir el ancho de banda utilizado por la capa de transporte. De forma predeterminada, las velocidades de lectura y escritura no están limitadas. Para introducir la regulación, implementa una subclase de RateLimiterInterface y asigna una instancia a estas variables.

region

Especifica la AWS región que se va a utilizar, como us-east-1. De forma predeterminada, la región utilizada es la región predeterminada configurada en las credenciales aplicables AWS .

requestCompressionConfig

Contiene los ajustes de configuración para la compresión de solicitudes. Utilice esta estructura para controlar cuándo y cómo se comprimen las solicitudes antes de la transmisión.

Estrategia de reintento

Hace referencia a la implementación de la estrategia de reintento. La estrategia predeterminada implementa una política de retroceso exponencial. Para llevar a cabo una estrategia diferente, implementa una subclase de la RetryStrategy clase y asigna una instancia a esta variable.

scheme

Especifica el esquema de direccionamiento de la URI, ya sea HTTP o HTTPS. El esquema predeterminado es HTTPS.

tcpKeepAliveIntervalMs

Especifica el intervalo de tiempo en milisegundos en el que se debe enviar un paquete Keep-Alive a través de una conexión TCP. El intervalo predeterminado es de 30 segundos. La configuración mínima es de 15 segundos. Esta variable no se aplica a Win INet ni al IXMLHTTPRequest2 cliente.

Proveedor de telemetría

Hace referencia a la implementación del proveedor de telemetría para recopilar métricas y rastrear datos. Configure este ajuste para habilitar las funciones de observabilidad.

userAgent

Para uso interno únicamente. No cambie la configuración de esta variable.

useDualStack

Controla si se debe utilizar la doble pila IPv4 y los IPv6 puntos finales. Tenga en cuenta que no todos los AWS servicios son compatibles IPv6 en todas las regiones.

Utilice FIPS

Controla si se utilizan módulos criptográficos validados por las Normas Federales de Procesamiento de Información (FIPS) 140-2. La configuración predeterminada es falsa. Se establece en true cuando se requiere el cumplimiento de la norma FIPS.

Verifica el SSL

Controla si se deben verificar los certificados SSL. De forma predeterminada, los certificados SSL están verificados. Para deshabilitar la verificación, defina la variable en false.

versión

Especifica la versión HTTP que se va a utilizar para las solicitudes. La configuración predeterminada es HTTP_VERSION_2TLS (HTTP/2 sobre TLS).

ganar HTTPOptions

Contiene opciones de configuración HTTP específicas de Windows. Incluye useAnonymousAuth el valor predeterminado false.