(レポート) DEV204: C++ による高性能ネイティブクラウドアプリケーションの構築 #reinvent
毎度お馴染み流浪の動かしてみた & C 芸人の Fujimura です。
今さらながらですが、自分も発表スライドを読んで紹介することで、アメリカ気分を味わうことにしました。
AWS SDK for C++
AWS SDK for C++ は AWS のための現代的な C++ ライブラリで自動生成されたクライアントと高水準 API から構成されています。
ビルドには C++11 準拠のコンパイラと CMake およびプラットフォーム依存な HTTP ライブラリ (mac や linux では libcurl と libssl) が必要です。mac でのビルドについては以前、ブログにまとめましたので、ご参考ください。
このライブラリでは以下の機能が提供されています。また、これらの機能に利用者独自の拡張を追加することもできます。
- クレデンシャル管理
- Cognito 連携のプロバイダも実装されています。
- ロガー
- ライブラリ依存のない実装で、デフォルトではローカルに出力します。
- 非同期処理
- コールバックによるリクエストの非同期な処理ができます。
- 非同期処理はプラットフォームのスレッドで実現されます。
- 通信幅
- クライアント毎の細かな制御が可能です。
- デフォルトで最適な実装が提供されています。
- 例外
- 性能と安定性の面から例外は使用していません。
- リクエストが返す Outcome オブジェクトが成功時には結果を、失敗時にはエラー情報をそれぞれ保持します。
- 再試行
- クライアント毎の細かな制御が可能です。
- メモリ割り当て
- コンパイル時に設定します。(cmake -DCUSTOM_MEMORY_MANAGEMENT=1 で指定)
- 実行時に利用者定義のアロケータを定義することができます。(例 : dlmalloc を使ったアロケータへの差し替え)
- AWS で再定義された STL があります。(例 : AWS::Vector, AWS::String, etc...)
- これらは利用者定義のアロケータを使用します。
- Streaming requests and responses
- HTTP/TLS スタックの再定義
- 高水準 API
さいごに
以前、AWS SDK for C++ のブログを書いた時には資料が公式ブログの一記事しかなくて、動かした方を調べるのに苦労したのですが、今回まとまった資料が出てきたので、これを機に利用者が増えていくのではないかと期待しています。