MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの応用 - AWSのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの応用 - AWS
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == AWS SDK for C++は、Amazon Web Services (AWS) 向けのモダンなC++ 11以降のインターフェースを提供するSDKである。<br> ほぼ全てのAWS機能に対して高レベルAPIと低レベルAPIの両方を提供しており、依存関係を最小限に抑えながら、Windows、MacOS、Linux、モバイルでのプラットフォーム移植性を実現している。<br> <br> パフォーマンスを重視して設計されており、低レベルと高レベルの両方のSDKを完全に機能させながら、依存関係を最小限に抑えている。<br> <br> 300以上のAWSサービスに対応しており、コンピューティング (EC2、Lambda、ECS等)、ストレージ (S3、EBS、Glacier等)、データベース (DynamoDB、RDS、Redshift等)、<br> 機械学習 (SageMaker、Bedrock、Rekognition等) などの主要なサービスが含まれている。<br> <br> Standard Template Library (STL) との連携、C++11機能の使用とサポート、例外安全性、広範囲で設定可能なロギング、デフォルトの認証情報プロバイダー等の特徴がある。<br> <br> AWS SDK for C++は現在General Availability (一般提供) で、本番環境での使用が推奨されている。<br> <br><br> == AWS SDK for C++のインストール == RHEL、SUSE、Debianの標準パッケージ管理システムからAWS SDK for C++を直接インストールすることは公式にはサポートされていない。<br> そのため、ソースコードからAWS SDK for C++をインストールすることが推奨される。<br> <br> * システム要件 *: 4[GB]以上のRAMが必要となるため、t2.micro、t2.small等の小さいEC2インスタンスではメモリ不足でビルドが失敗する可能性がある。 *: <br> * 必要なコンパイラ ** Visual Studio 2015以降 ** GCC 4.9以降 ** Clang 3.3以降 <br> ==== Linux ==== AWS SDK for C++のビルドに必要なライブラリをインストールする。<br> # RHEL sudo dnf install libcurl-devel openssl-devel libuuid-devel pulseaudio-libs-devel # SUSE sudo zypper install zlib-devel libcurl-devel libopenssl-devel libopenssl-3-devel # Debian sudo apt install cmake libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev <br> AWS SDK for C++のソースコードをダウンロードする。<br> git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp cd aws-sdk-cpp <br> AWS SDK for C++をビルドおよびインストールする。<br> cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=<AWS SDK for C++のインストールディレクトリ> \ -DBUILD_ONLY="dynamodb;s3;lambda" \ # DynamoDB, S3, Lambdaのみを使用する場合 .. make -j $(nproc) make install <br> ==== Windows ==== vcpkgパッケージマネージャは外部コントリビューターによって管理されているパッケージマネージャであり、AWSから直接提供されているものではない。<br> <br> vcpkgパッケージマネージャをインストールする。<br> git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install <br> AWS SDK for C++をインストールする。<br> ./vcpkg install aws-sdk-cpp <br> ==== BUILD_ONLYオプション ==== <center> {| class="wikitable" |+ AWS SDK for C++ BUILD_ONLYパラメータ一覧 |- ! カテゴリ !! BUILD_ONLYパラメータ !! サービス名 |- | rowspan="6" | コンピューティング系 || ec2 || Amazon EC2 |- | ecs || Amazon ECS |- | eks || Amazon EKS |- | lambda || AWS Lambda |- | batch || AWS Batch |- | lightsail || Amazon Lightsail |- | rowspan="6" | ストレージ系 || s3 || Amazon S3 |- | s3-crt || Amazon S3 (CRT client) |- | glacier || Amazon Glacier |- | ebs || Amazon EBS |- | fsx || Amazon FSx |- | storage-gateway || AWS Storage Gateway |- | rowspan="7" | データベース系 || dynamodb || Amazon DynamoDB |- | rds || Amazon RDS |- | redshift || Amazon Redshift |- | neptune || Amazon Neptune |- | docdb || Amazon DocumentDB |- | timestream-write || Amazon Timestream (書き込み) |- | timestream-query || Amazon Timestream (クエリ) |- | rowspan="6" | 分析系 || athena || Amazon Athena |- | emr || Amazon EMR |- | kinesis || Amazon Kinesis |- | kinesis-analytics || Amazon Kinesis Analytics |- | glue || AWS Glue |- | quicksight || Amazon QuickSight |- | rowspan="9" | 機械学習・AI系 || sagemaker || Amazon SageMaker |- | rekognition || Amazon Rekognition |- | comprehend || Amazon Comprehend |- | translate || Amazon Translate |- | transcribe || Amazon Transcribe |- | polly || Amazon Polly |- | lex || Amazon Lex |- | bedrock || Amazon Bedrock |- | bedrock-runtime || Amazon Bedrock Runtime |- | rowspan="8" | ネットワーク・配信系 || cloudfront || Amazon CloudFront |- | route53 || Amazon Route 53 |- | elb || Elastic Load Balancing |- | elasticloadbalancing || Elastic Load Balancing |- | elbv2 || Elastic Load Balancing v2 |- | elasticloadbalancingv2 || Elastic Load Balancing v2 |- | apigateway || Amazon API Gateway |- | directconnect || AWS Direct Connect |- | rowspan="8" | セキュリティ・認証系 || iam || AWS IAM |- | cognito-identity || Amazon Cognito Identity |- | cognito-idp || Amazon Cognito Identity Provider |- | kms || AWS KMS |- | secretsmanager || AWS Secrets Manager |- | acm || AWS Certificate Manager |- | guardduty || Amazon GuardDuty |- | inspector || Amazon Inspector |- | rowspan="7" | 管理・監視系 || cloudwatch || Amazon CloudWatch |- | cloudwatch-logs || Amazon CloudWatch Logs |- | cloudtrail || AWS CloudTrail |- | config || AWS Config |- | organizations || AWS Organizations |- | cloudformation || AWS CloudFormation |- | ssm || AWS Systems Manager |- | rowspan="5" | メッセージング系 || sqs || Amazon SQS |- | sns || Amazon SNS |- | ses || Amazon SES |- | pinpoint || Amazon Pinpoint |- | eventbridge || Amazon EventBridge |- | rowspan="3" | 統合・ワークフロー系 || stepfunctions || AWS Step Functions |- | swf || Amazon SWF |- | mq || Amazon MQ |- | rowspan="4" | その他 || iot || AWS IoT |- | greengrass || AWS Greengrass |- | mediaconvert || AWS Elemental MediaConvert |- | elastictranscoder || Amazon Elastic Transcoder |} </center> <br> 上記は主要なサービスのリストであるが、実際には300以上のサービスがサポートされている。<br> そのため、最新の完全なリストは、GitHubリポジトリで直接確認することを推奨する。<br> <br> * サービス名の完全なリストを取得する方法 *: AWS SDK for C++おソースコードをダウンロードする。 *: <syntaxhighlight lang="text"> git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp </syntaxhighlight> *: <br> *: サービス名の一覧を表示する。 *: <syntaxhighlight lang="text"> cd aws-sdk-cpp ls -d aws-cpp-sdk-* | sed 's/aws-cpp-sdk-//' | sort </syntaxhighlight> <br> * vcpkg (Windows) を使用して利用可能な全ての機能を確認する場合 *: <syntaxhighlight lang="text"> vcpkg search aws-sdk-cpp </syntaxhighlight> <br><br> == AWS DynamoDB == [[Qtの応用 - AWS DynamoDB]]のページを参照すること。<br> <br><br> == AWS S3 == [[Qtの応用 - AWS S3]]のページを参照すること。<br> <br><br> == AWS SDKの初期化 : InitAPIメソッド == AWS SDK for C++を使用する前に、SDKの初期化を行う必要がある。<br> <br> <syntaxhighlight lang="c++"> Aws::SDKOptions options; Aws::InitAPI(options); </syntaxhighlight> <br><br> == SDK設定オプション : SDKOptionsオブジェクト == AWS SDK全体の動作を制御するグローバル設定を保持するクラスである。<br> ロギング、メモリ管理、HTTPクライアント、暗号化などの設定を含む。<br> <br> プログラム全体で1つのSDKOptionsインスタンスを使用する。<br> <br> 主要な設定オプションを以下に示す。<br> * ロギング設定 (loggingOptions) <syntaxhighlight lang="c++"> Aws::SDKOptions options; // ログレベルの設定 // LogLevel: Off, Fatal, Error, Warn, Info, Debug, Trace options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Warn; // カスタムロガーの設定 (ファイル出力) options.loggingOptions.logger_create_fn = []() { return Aws::MakeShared<Aws::Utils::Logging::DefaultLogSystem>( "MyApp", Aws::Utils::Logging::LogLevel::Debug, "aws_sdk_" // ログファイルのプレフィックス ); }; // コンソール出力ロガー options.loggingOptions.logger_create_fn = []() { return Aws::MakeShared<Aws::Utils::Logging::ConsoleLogSystem>( "MyApp", Aws::Utils::Logging::LogLevel::Info ); }; </syntaxhighlight> <br> * メモリ管理設定 (memoryManagementOptions) <syntaxhighlight lang="c++"> // カスタムメモリマネージャの設定 options.memoryManagementOptions.memoryManager = nullptr; // デフォルト使用 // または独自のメモリマネージャを実装 class MyMemoryManager : public Aws::Utils::Memory::MemorySystemInterface { public: void* AllocateMemory(std::size_t blockSize, std::size_t alignment, const char *allocationTag = nullptr) override { // カスタムメモリ割り当て return aligned_alloc(alignment, blockSize); } void FreeMemory(void* memoryPtr) override { // カスタムメモリ解放 free(memoryPtr); } }; // 使用例 auto myMemoryManager = std::make_shared<MyMemoryManager>(); options.memoryManagementOptions.memoryManager = myMemoryManager; </syntaxhighlight> <br> * HTTP設定 (httpOptions) <syntaxhighlight lang="c++"> // HTTP接続プール設定 options.httpOptions.initAndCleanupCurl = true; // libcurlの初期化/クリーンアップ // SIGPIPEシグナルハンドラのインストール (Linux / Unix) options.httpOptions.installSigPipeHandler = true; // カスタムHTTPクライアントファクトリ options.httpOptions.httpClientFactory_create_fn = []() { return Aws::MakeShared<Aws::Http::CurlHttpClientFactory>("MyFactory"); }; </syntaxhighlight> <br> * 暗号化設定 (cryptoOptions) <syntaxhighlight lang="c++"> // 暗号化プロバイダの初期化/シャットダウン options.cryptoOptions.initAndCleanupOpenSSL = true; // SecureRandomバイト生成の設定 options.cryptoOptions.secureRandomFactory_create_fn = []() { return Aws::MakeShared<Aws::Utils::Crypto::DefaultSecureRandomBytes>("MyApp"); }; </syntaxhighlight> <br> * デフォルト設定で使用する場合 <syntaxhighlight lang="c++"> // 最もシンプルな形式 (全てデフォルト値) Aws::SDKOptions options; Aws::InitAPI(options); </syntaxhighlight> <br><br> == SDK初期化メソッド : InitAPI == 全てのAWSクライアント (DynamoDBClient等) を作成する前に実行する。<br> これは、プログラム開始時に1回だけ呼び出す必要がある。<br> <br> InitAPIの役割を以下に示す。<br> * AWS SDK for C++のグローバルリソースを初期化する。 * HTTPクライアント、暗号化ライブラリ、ロガーなどの内部コンポーネントをセットアップする。 <br> InitAPIが行う処理は以下の通りである。<br> * libcurl (HTTPクライアント) の初期化 * OpenSSL (暗号化ライブラリ) の初期化 * メモリアロケータの設定 * ロギングシステムの初期化 * HTTP接続プールの作成 * スレッドプールの初期化 <br> 基本的な使用例を以下に示す。<br> <syntaxhighlight lang="c++"> #include <QCoreApplication> #include <aws/core/Aws.h> #include <aws/dynamodb/DynamoDBClient.h> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // ステップ 1 : SDKOptionsの設定 Aws::SDKOptions options; options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info; // ステップ 2 : SDK初期化 (プログラム開始時に1回だけ実行) Aws::InitAPI(options); { // ステップ 3 : AWSクライアントの作成と使用 Aws::Client::ClientConfiguration config; Aws::DynamoDB::DynamoDBClient client(config); // AWSサービス操作 // ...略 } // ステップ 4 : クライアントオブジェクトの破棄 // ステップ 5 : SDKシャットダウン (プログラム終了時に1回だけ実行) Aws::ShutdownAPI(options); return 0; } </syntaxhighlight> <br> <u>※注意</u><br> * <u>InitAPIメソッドはスレッドセーフではないため、メインスレッドで呼び出すこと。</u> * <u>InitAPIメソッドとShutdownAPIメソッドは、1対1で対応させること。</u> * <u>複数回のInitAPIメソッドの呼び出しは可能であるが、各呼び出しに対して対応するShutdownAPIメソッドが必要となる。</u> * <u>全てのAWSクライアントオブジェクトをShutdownAPIメソッド前に破棄すること。</u> <br><br> == 初期化からシャットダウンまでの基本フロー == # Aws::SDKOptionsオブジェクトでAWS SDK全体の設定を行う。 # Aws::InitAPIメソッドでSDKを初期化する。(1回のみ) # Aws::Client::ClientConfigurationでクライアント設定を行う。 # AWSサービスのオブジェクト (Aws::DynamoDB::DynamoDBClient等) を生成する。 # AWSサービスを操作する。 # クライアントオブジェクトを破棄する。 # Aws::ShutdownAPIメソッドでSDKをシャットダウンする。(1回のみ) <br> 重要なポイントを以下に示す。<br> * InitAPI / ShutdownAPIはメインスレッドで呼び出す。 * クライアントオブジェクトはスレッドセーフ。 * ShutdownAPIメソッドを実行する前に全てのクライアントを破棄する。 * 認証情報とリージョンは環境変数や設定ファイルから自動取得可能である。 * Qtではシングルトンパターンの使用を推奨する。 <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの応用 - AWS
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse