Configuración de clientes de servicio en código de AWS SDK para C++ - 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 de clientes de servicio en código de AWS SDK para C++

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 determinado tipo de Servicio de AWS o la configuración para una instancia de cliente de servicio específica.

El AWS SDK para C++ incluye clases de clientes de Servicio de AWS que proporcionan funciones para interactuar con los Servicios de AWS que se utilizan en la aplicación. En el SDK para C++, puede cambiar la configuración de cliente predeterminada. Esto le resultará útil si desea:

  • 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

ClientConfiguration es una estructura del SDK para C++ para la que puede crear una instancia y utilizar en el código. El siguiente fragmento de código 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 estructura ClientConfiguration declara las siguientes variables de 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 las variables de configuración

En la siguiente lista se describen las variables de miembro de ClientConfiguration que puede utilizar para personalizar el comportamiento de clientes.

accountId

Especifica el ID de la Cuenta de AWS para el enrutamiento de puntos de conexión basado en cuentas. Utilice el formato 111122223333. El enrutamiento de puntos de conexión basado en cuentas mejora el rendimiento de las solicitudes para algunos servicios.

accountIdEndpointMode

Controla el comportamiento del enrutamiento de los puntos de conexión basado en cuentas. Los valores válidos son "required", "disabled" o "preferred". El valor predeterminado es "preferred". Configúrelo como "disabled" para desactivar el enrutamiento de puntos de conexión basado en cuentas cuando sea necesario.

allowSystemProxy

Controla si el cliente HTTP descubre la configuración del proxy del sistema. El valor predeterminado es false. Establézcalo en true para habilitar la detección automática del proxy.

IdAplicación

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

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 de OpenSSL. No es necesario que configure 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 responseChecksumValidation con el valor predeterminado WHEN_SUPPORTED.

configFactories

Especifica los métodos de fábrica para inicializar las clases de utilidades de cliente, como Executor y 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 para que el tiempo de espera de una solicitud HTTP se agote. Por ejemplo, considere la posibilidad de aumentar estos tiempos cuando transfiera archivos de gran tamaño.

credentialProviderConfig

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

disableExpectHeader

Aplicable solo a clientes HTTP CURL. De forma predeterminada, CURL añade el encabezado "Expect: 100-Continue" en una solicitud HTTP para que no se envíe la carga útil HTTP en los casos en los 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, CURL recibe la instrucción de enviar juntos el encabezado y la carga útil del cuerpo de la solicitud HTTP.

disableIMDS

Controla si las llamadas al servicio de metadatos de instancias (IMDS) están deshabilitadas. El valor predeterminado es false. Establézcalo en true para deshabilitar las llamadas IMDS cuando se ejecutan fuera de las instancias EC2.

disableImdsV1

Controla si las llamadas de IMDSv1 están deshabilitadas y, al mismo tiempo, se permiten las llamadas de IMDSv2. El valor predeterminado es false. Si se establece en true, solo se deshabilitan las llamadas de IMDSv1 para mejorar la seguridad.

enableClockSkewAdjustment

Controla si el sesgo del reloj se ajusta después de cada intento HTTP. El valor predeterminado es false.

enableEndpointDiscovery

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

enableHostPrefixInjection

Controla si el host HTTP añade un prefijo "data-" a las solicitudes de DiscoverInstances. De manera predeterminada, el comportamiento está habilitado. Para deshabilitarlo, establezca la variable en false.

enableHttpClientTrace

Controla si el rastreo de clientes HTTP está habilitado con fines de depuración. El valor predeterminado es false. Establézcalo en true para habilitar el registro detallado de solicitudes y respuestas HTTP.

enableTcpKeepAlive

Controla si se envían paquetes TCP keep-alive. El valor predeterminado es true. Utilícelo junto con la variable tcpKeepAliveIntervalMs. Esta variable no se aplica a WinInet ni al cliente IXMLHTTPRequest2.

endpointOverride

Especifica un punto de conexión HTTP de anulación con el que comunicarse con un servicio.

executor

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

followRedirects

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.

httpLibPerfMode

Especifica el modo de rendimiento de la biblioteca HTTP. El valor predeterminado es LOW_LATENCY. Puede ajustar esta configuración para optimizarla en función de distintas características de rendimiento.

httpRequestTimeoutMs

Especifica el tiempo de espera de la solicitud HTTP en milisegundos. El valor predeterminado del tiempo de espera 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 1 byte/segundo. Esta variable solo se aplica a los clientes CURL.

maxConnections

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

nonProxyHosts

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

profileName

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

proxyCaFile

Especifica la ruta al archivo de la entidad de certificación para las conexiones de proxy cuando es diferente de la predeterminada.

proxyCaPath

Especifica la ruta al almacén de confianza de la autoridad de certificación para las conexiones de proxy cuando es diferente de la predeterminada.

proxyScheme, proxyHost, proxyPort, proxyUserName y proxyPassword

Se utilizan 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.

proxySSLCertPath

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

proxySSLCertType

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

proxySSLKeyPassword

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

proxySSLKeyPath

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

proxySSLKeyType

Especifica el tipo de clave privada SSL para las conexiones de proxy. Los tipos más frecuentes 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 limitación, implemente una subclase de RateLimiterInterface y asigne una instancia a estas variables.

region

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

requestCompressionConfig

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

retryStrategy

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

scheme

Especifica el esquema de direccionamiento URI: 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 keep-alive predeterminado es de 30 segundos. La configuración mínima es de 15 segundos. Esta variable no se aplica a WinInet ni al cliente IXMLHTTPRequest2.

telemetryProvider

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

userAgent

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

useDualStack

Controla si se deben utilizar puntos de conexión IPv4 e IPv6 de doble pila. Tenga en cuenta que no todos los servicios de AWS admiten IPv6 en todas las regiones.

useFIPS

Controla si se deben utilizar módulos criptográficos validados por los Estándares de procesamiento de la información federal (FIPS) 140-2. El valor predeterminado es false. Se establece en true cuando se requiere conformidad con FIPS.

verifySSL

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

versión

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

winHTTPOptions

Contiene opciones de configuración HTTP específicas de Windows. Incluye useAnonymousAuth con la configuración predeterminada false.