Help us understand the problem. What is going on with this article?

RiakCSにアタッチして、簡単なAPIを検証する

More than 3 years have passed since last update.

RiakCSは大量なデータを保存する手段の一つで、プライベートストレージに使うのはいい選択でもあります。

RiakCSを動かすにはRiak, Stanchion, RiakCSが必要です。

RiakCSのインストールに関してはここに記述されています。

RiakCSはErlangに書かれているため、起動されると、ErlangのRuntime Systemが動きます。

RiakCSにアタッチするとRiakCSが提供している全てのPublic APIが使えるようになります。

いくつかのAPIを試してみたいと思います。まずRiakCSにアタッチします。

# sudo su
# riak-cs attach

まずユーザー作成します。

1> {ok, User} = riak_cs_user:create_user("fake-name", "fake-name@example.com").
{ok,{rcs_user_v2,"fake-name","fake-name",
                 "fake-name@example.com","LIF-FUEJDLPZWENSZEGH",
                 "MaWqrVs04OEVUPn9oGbu4ov-BSsh01v12LWUiw==",
                 "3fcf010cfbc6baa2c8dae4857b4399498f015f373cb3ca46ac1bb15ef69e2b44",
                 [],enabled}}

2> User.
{rcs_user_v2,"fake-name","fake-name",
             "fake-name@example.com","LIF-FUEJDLPZWENSZEGH",
             "MaWqrVs04OEVUPn9oGbu4ov-BSsh01v12LWUiw==",
             "3fcf010cfbc6baa2c8dae4857b4399498f015f373cb3ca46ac1bb15ef69e2b44",
             [],enabled}

上に作成されているUserはいろんなところで使うことができます。
このユーザーは管理者であるかどうかをチェックします。

3> riak_cs_user:is_admin(User).
false

falseなので、一般ユーザーになっています。

すべてのユーザーののキーをリストアップしてみます。

4> {ok, RcPid} = riak_cs_riak_client:checkout().
{ok,<0.571.0>}
5> riak_cs_user:fetch_user_keys(RcPid).
{ok,[<<"0HXABCDEFJ-BR4LQ9SCF">>,<<"2UEQRP_ABCDEFRKOEKOY">>,
     <<"COW-7ABCDEFAWY4H3-PN">>,<<"CZOCABCDEFWA_STA_UWK">>,
     <<"LIF-FUEJDLPABCDEFEGH">>,<<"WU2OZPPF-ABCDEFXRX7A">>]}

RiakCS中の特定のユーザーの情報を取得してみます。

6> riak_cs_user:get_user("LIF-FUEJDLPZWENSZEGH", RcPid).
{ok,{{rcs_user_v2,"fake-name","fake-name",
                  "fake-name@example.com","LIF-FUEJDLPZWENSZEGH",
                  "MaWqrVs04OEVUPn9oGbu4ov-BSsh01v12LWUiw==",
                  "3fcf010cfbc6baa2c8dae4857b4399498f015f373cb3ca46ac1bb15ef69e2b44",
                  [],enabled},
     {riakc_obj,<<"moss.users">>,<<"LIF-FUEJDLPZWENSZEGH">>,
                <<107,206,97,96,96,96,204,96,202,5,82,60,202,156,255,126,
                  206,176,251,162,194,...>>,
                [{{dict,3,16,16,8,80,48,
                        {[],[],[],[],[],[],[],[],[],[],...},
                        {{[],[],[],[],[],[],[],[],...}}},
                  <<131,104,9,100,0,11,114,99,115,95,117,115,101,114,95,
                    118,50,...>>}],
                undefined,undefined}}}

バケットのアクセス権限を取得してみます。

riak_cs_acl:fetch_bucket_acl(<<"test9">>, RcPid).
{ok,{acl_v2,{"madfrogme001",
             "98e7c6cfe1a1bcbc85c2befdbfb43fe0b8339379d5cc0f2160fabc055039440a",
             "CZOC9SNTQRWA_STA_UWK"},
            [{{"madfrogme001",
               "98e7c6cfe1a1bcbc85c2befdbfb43fe0b8339379d5cc0f2160fabc055039440a"},
              ['FULL_CONTROL']}],
            {1445,953267,673635}}}

実際これらのAPIを使うにはソースコードの参照が必要で、
https://github.com/basho/riak_cs/tree/develop/src

実際にRiakCSがRiakと通信する時にriak-erlang-clientを大いに頼っています。
https://github.com/basho/riak-erlang-client/blob/master/src/riakc_pb_socket.erl

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away