AWS SDK for C++ での Aws::SDKOptions を使用した一般的な設定 - AWS SDK for C++

AWS SDK for C++ での 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);
    注記

    httpOptionsstd::shared_ptr ではなくクロージャ (匿名関数または Lambda 式とも呼ばれる) を受け取ります。SDK の各ファクトリ関数はこの方法で動作します。ファクトリのメモリ割り当てが行われる時点では、メモリマネージャーがまだインストールされていないためです。メソッドにクロージャを渡すことで、安全なタイミングでメモリマネージャーが呼び出され、メモリ割り当てが行われます。この処理を実現する簡単な方法は、Lambda 式を使用することです。

  • グローバル SIGPIPE ハンドラーを使用する

    curl と OpenSSL を使用して SDK for C++ をビルドする場合は、シグナルハンドラーを指定する必要があります。カスタムのシグナルハンドラーを使用しない場合は、installSigPipeHandlertrue に設定します。

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

    installSigPipeHandlertrue の場合、SDK for C++ は SIGPIPE シグナルを無視するハンドラーを使用します。SIGPIPE の詳細については、GNU オペレーティングシステムのウェブサイトで「Operation Error Signals」を参照してください。curl ハンドラーの詳細については、curl ウェブサイトで CURLOPT_NOSIGNAL の説明を参照してください。

    curl や OpenSSL の基盤ライブラリは、リモート側が接続を閉じたことを通知するために SIGPIPE シグナルを送信することがあります。これらのシグナルはアプリケーション側で処理する必要があります。curl のこの機能の詳細については、curl のウェブサイトで「libcurl thread safety」を参照してください。この動作は SDK に自動で組み込まれていません。シグナルハンドラーは各アプリケーションに対してグローバルであり、ライブラリが SDK の依存関係であるためです。