我很惊讶没有在文档中找到关于非常简单的问题的答案: 如何获取Riak CS安装中所有存储桶和所有文件的列表? 此外,我需要使用一些“root”帐户访问所有存储桶中的所有文件 - 我该怎么做?
无论如何根据文件:http://docs.basho.com/riakcs/latest/cookbooks/Account-Management/ 用户列表请求的示例网址如下所示:
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控制面板中看到它。
答案 0 :(得分:1)
对于列表部分,请尝试s3cmd la -r s3://
我不认为默认情况下有一个帐户可以访问所有内容,您必须将帐户添加到每个存储分区的ACL
答案 1 :(得分:1)
我似乎使用自定义主机库,所以你需要做的就是
告诉它s3curl.pl
。如您所知,因为S3(或AWS v2)
身份验证可以是路径样式或子域样式,s3curl.pl
可以
不按原样使用URL或主机头的主机部分。因此,它有一些
用于识别主机基础的硬编码端点[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
获得所有用户信息后,您可以执行任何操作,例如列表 某些用户的存储桶或列出某个存储桶中的所有对象。
[1] https://github.com/ksauzz/s3curl/blob/master/s3curl.pl#L30-L34 [2] https://github.com/ksauzz/s3curl/blob/master/s3curl.pl#L121