AWS SDK for C++を使ってみる【cloudpack 大阪 BLOG】
AWSの公式ブログで、SDK for C++が紹介されていたので触ってみました。
環境
準備
cmakeが未インストールであればインストールしておきます。
dmg形式で配布されているので簡単です。
ダウンロードサイトより、dmgを落として、インストールしましょう。
GUIツールを起動後、Toolsから、「How to Install For Command Line Use」とあるので、こちらを参考にCUIでも使えるようにしておきましょう。
いろいろ方法があるようですが、ここでは環境変数に追加する方法を採りました。
GitHubにコードがあるのでダウンロードしてきます。コチラから。
ReadMeのとおり、以下の手順でインストールします。
# mkdir aws-sdk-cpp-bin # cd aws-sdk-cpp-bin/ # cmake -DCMAKE_BUILD_TYPE=Release ../aws-sdk-cpp-master/ # make # sudo make install
実装
ブログのサンプルコード(DynamoDB)の方を実装してみます。
※結果を先に言いますと、まだ動きません(;´д`)
ブログのコードを元に、ごにょごにょ#includeなどをすすめていきます。
結果はこんな感じに。
#include <aws/core/utils/Outcome.h> #include <aws/dynamodb/DynamoDBClient.h> #include <aws/dynamodb/model/AttributeValue.h> #include <aws/dynamodb/model/AttributeValueValue.h> #include <aws/dynamodb/model/PutItemRequest.h> #include <stdint.h> using namespace Aws::DynamoDB::Model; AttributeValue& AttributeValue::SetS(const Aws::String& s) { m_value = Aws::MakeShared("AttributeValue", s); return *this; } int main(int argc, char** argv) { Aws::DynamoDB::DynamoDBClient dynamoDbClient; PutItemRequest putItemRequest; putItemRequest.WithTableName("TableName"); AttributeValue hashKeyAttribute; hashKeyAttribute.SetS("KeyName"); putItemRequest.AddItem("HashKey", hashKeyAttribute); AttributeValue valueAttribute; valueAttribute.SetS("SampleValue"); putItemRequest.AddItem("Value", valueAttribute); auto putItemOutcome = dynamoDbClient.PutItem(putItemRequest); if(putItemOutcome.IsSuccess()) { std::cout << "OK!!\n"; // std::cout << "PutItem Success Using IOPS " << putItemOutcome.GetResult().GetConsumedCapacity(); } else { std::cout << "NG!!\n"; std::cout << "PutItem failed with error " << putItemOutcome.GetError().GetMessage(); } }
sdkのインストール時に、dylibが生成されているのでリンクします。 そのままだと、実行時にエラーがでるので、事前にlnしておきます。 その他、もろもろエラーをつぶしつつ、ビルドを通しました。
$ sudo ln -s /usr/local/lib/mac/Release/libaws-cpp-sdk-core.dylib /usr/lib/libaws-cpp-sdk-core.dylib $ sudo ln -s /usr/local/lib/mac/Release/libaws-cpp-sdk-dynamodb.dylib /usr/lib/libaws-cpp-sdk-dynamodb.dylib $ gcc -std=c++0x -lc++ -lm /usr/local/lib/mac/Release/libaws-cpp-sdk-core.dylib -lm /usr/local/lib/mac/Release/libaws-cpp-sdk-dynamodb.dylib -o test.o test.cpp
実行
。。。アウト(;´д`)
Credentialも設定していないので当たり前ですが。
$ ./test.o NG!! PutItem failed with error Request is missing Authentication Token
Cognito辺りと連携が必要?
とりあえず、今日はここまで。