在适用于 C++ 的 AWS SDK 中使用 Aws::SDKOptions 的常规配置 - 适用于 C++ 的 AWS SDK

在适用于 C++ 的 AWS SDK 中使用 Aws::SDKOptions 的常规配置

Aws::SDKOptions 结构包含 SDK 配置选项。Aws::SDKOptions 侧重于常规 SDK 配置,而 ClientConfiguration 结构则侧重于与 AWS 服务通信的配置。

Aws::SDKOptions 的实例被传递给 Aws::InitAPI 和 Aws::ShutdownAPI 方法。应将同一个实例发送给这两个方法。

以下示例演示了一些可用选项。

  • 使用默认记录器开启日志记录

    Aws::SDKOptions options; options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info; Aws::InitAPI(options); { // make your SDK calls here. } Aws::ShutdownAPI(options);
  • 覆盖默认 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);
    注意

    httpOptions 采用闭包(也称为匿名函数或 lambda 表达式)而不是 std::shared_ptr。每个 SDK 工厂函数都以这种方式运作,因为在工厂分配内存时,内存管理器尚未安装。通过向该方法传递闭包,将在安全的情况下调用内存管理器来执行内存分配。完成此过程的一种简单方法是使用 Lambda 表达式。

  • 使用全局 SIGPIPE 处理程序

    如果您使用 curl 和 OpenSSL 构建适用于 C++ 的 SDK,则必须指定信号处理程序。如果您不使用自己的自定义信号处理程序,请将 installSigPipeHandler 设置为 true

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

    installSigPipeHandlertrue 时,适用于 C++ 的 SDK 会使用忽略 SIGPIPE 信号的处理程序。有关 SIGPIPE 的更多信息,请参阅 GNU 操作系统网站上的 Operation Error Signals。有关 curl 处理程序的更多信息,请参阅 curl 网站上的 CURLOPT_NOSIGNAL 说明

    当远程端关闭连接时,curl 和 OpenSSL 的底层库可以发送一个 SIGPIPE 信号来进行通知。这些信号必须由应用程序处理。有关此 curl 功能的更多信息,请参阅 curl 网站上的 libcurl thread safety。此行为不会自动内置到 SDK 中,因为信号处理程序对于每个应用程序来说都是全局的,并且该库是 SDK 的依赖项。