2020年5月10日日曜日

dynamodb get_item (C++) 組み込み

SDKサンプルをいじって、get_itemルーチンを以下のように記述しました。 これを使って、dynamodbをポーリングします。ItemのAttribute Interruptが"On" になっていたら求解を停止します。
■Interrupt   
    On/Off
 


string get_item(string table_name,string item_name,string attribute_name)
  {
        const Aws::String table=table_name;//(argv[1]);
        const Aws::String name=item_name;//(argv[2]);
        const Aws::String projection="";//(argc > 3 ? argv[3] : "");

        // snippet-start:[dynamodb.cpp.get_item.code]
        Aws::Client::ClientConfiguration clientConfig;
        Aws::DynamoDB::DynamoDBClient dynamoClient(clientConfig);
        Aws::DynamoDB::Model::GetItemRequest req;

        // Set up the request
        req.SetTableName(table);
        Aws::DynamoDB::Model::AttributeValue hashKey;
        hashKey.SetS(name);
        req.AddKey("Name", hashKey);
        if (!projection.empty())
            req.SetProjectionExpression(projection);

        // Retrieve the item's fields and values
        const Aws::DynamoDB::Model::GetItemOutcome& result = dynamoClient.GetItem(req);
        if (result.IsSuccess())
        {
            // Reference the retrieved fields/values
            const Aws::Map& item = result.GetResult().GetItem();
            if (item.size() > 0)
            {
                // Output each retrieved field and its value
                for (const auto& i : item){
     if (i.first==trim(attribute_name)){
      return i.second.GetS();
     }
                    std::cout << i.first << ": " << i.second.GetS() << std::endl;
                }    
            }
            else
            {
                std::cout << "No item found with the key " << name << std::endl;
            }

        }
        else
        {
            std::cout << "Failed to get item: " << result.GetError().GetMessage();
        }
        return "";
        // snippet-end:[dynamodb.cpp.get_item.code]
    }

0 件のコメント:

コメントを投稿