LoginSignup
4
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-01

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4