Riak CS 如何获取所有存储桶和所有文件的列表

Riak CS how to get list of all buckets and all files

我很惊讶在文档中找不到非常简单问题的答案: 我如何获得我的 Riak CS 安装中所有存储桶和所有文件的列表? 此外,我需要使用某些 "root" 帐户访问所有存储桶中的所有这些文件 - 我该怎么做?

无论如何根据文档:http://docs.basho.com/riakcs/latest/cookbooks/Account-Management/ 用户列表请求的示例 URL 如下所示:

GET http://data.example.com/riak-cs/users -
or
s3curl --id admin -- http://data.mystorage.me/riak-cs/users

所以,我编辑了 .s3crul:

%awsSecretAccessKeys = (
adminname => {
id => 'key here',
key => 'secret here',
},
);

并将 s3curl 直接指向 riak cs:

s3curl.pl --id adminname -- http://192.168.0.20:8080/riak-cs/users

得到答案:

<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Access Denied</Message><Resource>/riak-cs/users</Resource><RequestId></RequestId></Error>

我确定 "adminname" 是 Riak CS 中的管理员帐户,我可以在 riac-cs-control 面板中看到它。

对于列表部分,尝试s3cmd la -r s3://

我不认为默认情况下有一个帐户可以访问所有内容,您必须将该帐户添加到每个存储桶的 ACL

我好像使用的是自定义主机库,所以你要做的是 告诉 s3curl.pl。如您所知,因为 S3(或 AWS v2) authentication 可以是路径样式,也可以是子域样式,s3curl.pl 可以 不要按原样使用 URL 的主机部分或主机 header。因此,它有一些 用于识别主机库的硬编码端点 [1]。

s3curl.pl的一些分支可以通过选项指定自定义端点 参数 [2]。如果将 cs_root_host 设置为 data.mystorage.me, 那么示例命令行如下所示:

s3curl --id admin --endpoint data.mystorage.me \
    -- http://data.mystorage.me/riak-cs/users

或按子域样式,

s3curl --id admin --endpoint data.mystorage.me \
    -- http://riak-cs.data.mystorage.me/users

获取所有用户信息后,您可以做任何事情,例如列出 特定用户的存储桶或列出特定存储桶中的所有 objects。

[1] https://github.com/ksauzz/s3curl/blob/master/s3curl.pl#L30-L34 [2] https://github.com/ksauzz/s3curl/blob/master/s3curl.pl#L121