Configuración general con el uso de Aws::SDKOptions en el AWS SDK para C++
La estructura Aws::SDKOptions contiene las opciones de configuración del SDK. Aws::SDKOptions se centra en la configuración general del SDK, mientras que la estructura ClientConfiguration se centra en la configuración de la comunicación con Servicios de AWS.
Se transfiere una instancia de Aws::SDKOptions a los métodos Aws::InitAPI y Aws::ShutdownAPI. Se debe enviar la misma instancia a ambos métodos.
En los siguientes ejemplos se muestran algunas de las opciones disponibles.
-
Activación del registro con el registrador predeterminado
Aws::SDKOptions options; options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options); -
Anulación de la fábrica predeterminada de clientes HTTP
Aws::SDKOptions options; options.httpOptions.httpClientFactory_create_fn = [](){ return Aws::MakeShared<MyCustomHttpClientFactory>( "ALLOC_TAG", arg1); }; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options);nota
httpOptionsutiliza un cierre (también denominado función anónima o expresión lambda) en lugar de unstd::shared_ptr. Cada una de las funciones de la fábrica del SDK funciona de esta manera porque, en el momento en que se realiza la asignación de memoria de fábrica, el administrador de memoria no se ha instalado todavía. Al transferir un cierre al método, se llamará al administrador de memoria para que realice la asignación de memoria cuando sea seguro hacerlo. Una técnica sencilla para llevar a cabo este procedimiento consiste en utilizar una expresión lambda. -
Uso de un controlador
SIGPIPEglobalSi compila el SDK para C++ con curl y OpenSSL, debe especificar un controlador de señales. Si no utiliza su propio controlador de señales personalizado, establezca
installSigPipeHandlerentrue.Aws::SDKOptions options; options.httpOptions.installSigPipeHandler = true; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options);Cuando
installSigPipeHandlerestrue, el SDK para C++ usa un controlador que ignora las señalesSIGPIPE. Para obtener más información sobreSIGPIPE, consulte Señales de error de operaciónen el sitio web del sistema operativo GNU. Para obtener más información sobre el controlador curl, consulte CURLOPT_NOSIGNAL en el sitio web de curl. Las bibliotecas subyacentes de curl y OpenSSL pueden enviar una señal
SIGPIPEpara notificar cuándo cierra el lado remoto una conexión. La aplicación debe gestionar estas señales. Para obtener más información sobre esta funcionalidad de curl, consulte libcurl thread safetyen el sitio web de curl. Este comportamiento no está integrado automáticamente en el SDK porque los controladores de señales son globales para cada aplicación y la biblioteca es una dependencia del SDK.