Configuração geral usando Aws::SDKOptions no AWS SDK para C++ - AWS SDK para C++

Configuração geral usando Aws::SDKOptions no AWS SDK para C++

A estrutura Aws::SDKOptions contém opções de configuração do SDK. Aws::SDKOptions se concentra na configuração geral do SDK, enquanto a estrutura ClientConfiguration se concentra na configuração da comunicação com Serviços da AWS.

Uma instância de Aws::SDKOptions é transmitida para os métodos Aws::InitAPI e Aws::ShutdownAPI. A mesma instância deve ser enviada aos dois métodos.

Os exemplos a seguir demonstram algumas das opções disponíveis.

  • Ativar o registro em log usando o registrador padrão.

    Aws::SDKOptions options; options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options);
  • Substituir a fábrica de clientes HTTP padrão.

    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 recebe um encerramento (também chamado de função anônima ou expressão lambda) em vez de um std::shared_ptr. Cada uma das funções de fábrica do SDK opera dessa maneira porque, no momento em que ocorre a alocação de memória de fábrica, o gerenciador de memória ainda não foi instalado. Ao transmitir um encerramento para o método, o gerenciador de memória será chamado para realizar a alocação de memória quando for seguro fazer isso. Uma técnica simples para realizar esse procedimento é usar uma expressão Lambda.

  • Usar um manipulador SIGPIPE global

    Se você compilar o SDK para C++ com curl e OpenSSL, deverá especificar um manipulador de sinal. Se você não usa seu próprio manipulador de sinal personalizado, defina installSigPipeHandler como true.

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

    Quando installSigPipeHandler é true, o SDK para C++ usa um manipulador que ignora os sinais SIGPIPE. Para acessar mais informações sobre SIGPIPE, consulte Operation Error Signals no site do sistema operacional GNU. Para acessar mais informações sobre o manipulador de curl, consulte CURLOPT_NOSIGNAL explained no site do curl.

    As bibliotecas subjacentes do curl e do OpenSSL podem enviar um sinal SIGPIPE para notificar quando o lado remoto fecha uma conexão. Esses sinais devem ser processados pela aplicação. Para acessar mais informações sobre essa funcionalidade de curl, consulte libcurl thread safety no site do curl. Esse comportamento não é incorporado automaticamente ao SDK porque os manipuladores de sinais são globais para cada aplicação e a biblioteca é uma dependência do SDK.