Configuración general con el uso de Aws::SDKOptions en el AWS SDK para C++ - AWS SDK para C++

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

    httpOptions utiliza un cierre (también denominado función anónima o expresión lambda) en lugar de un std::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 SIGPIPE global

    Si 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 installSigPipeHandler en true.

    Aws::SDKOptions options; options.httpOptions.installSigPipeHandler = true; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options);

    Cuando installSigPipeHandler es true, el SDK para C++ usa un controlador que ignora las señales SIGPIPE. Para obtener más información sobre SIGPIPE, consulte Señales de error de operación en 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 SIGPIPE para 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 safety en 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.