0

我很惊讶在文档中没有找到真正简单问题的答案:如何获取我的 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 面板中看到它。

4

2 回答 2

1

我似乎您使用自定义主机库,所以您要做的就是告诉它s3curl.pl. 如您所知,由于 S3(或 AWS v2)身份验证可以是路径样式或子域样式,s3curl.pl因此不能按原样使用 URL 的主机部分或主机标头。因此,它有一些硬编码的端点 [1] 用于识别主机库。

一些分支s3curl.pl可以通过选项参数 [2] 指定自定义端点。如果您设置cs_root_hostdata.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

于 2015-08-08T13:27:13.467 回答
1

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

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

于 2015-08-03T22:07:55.397 回答