pict3の日記

AWSネタを中心に

AWS SDK for C++を使ってみる【cloudpack 大阪 BLOG】

f:id:pict3:20150904115238p:plain

AWSの公式ブログで、SDK for C++が紹介されていたので触ってみました。

 

環境

mac (OS X ver10.9.5)

 

準備

cmakeが未インストールであればインストールしておきます。

dmg形式で配布されているので簡単です。

ダウンロードサイトより、dmgを落として、インストールしましょう。

ただ、ここでインストールされるのはGUIツールのみです。

GUIツールを起動後、Toolsから、「How to Install For Command Line Use」とあるので、こちらを参考にCUIでも使えるようにしておきましょう。

f:id:pict3:20150904114310p:plain

 いろいろ方法があるようですが、ここでは環境変数に追加する方法を採りました。

 

次は、aws-sdk-cppのインストールです。

 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辺りと連携が必要?

とりあえず、今日はここまで。