如何调试Riak CS的Access Denied错误?

时间:2016-02-04 19:03:21

标签: riak riak-cs

在新的Centos服务器上,我使用official guide在Stanchion 2.1.1的Riak 2.1.3之上安装了Riak CS 2.1.1。

在Riak CS配置文件中启用anonymous_user_creation时,我能够创建新用户。但是当我禁用它并尝试通过Riak Control(1.0.2)创建新用户时,我得到一个409 Conflict HTTP状态代码。或者当我尝试通过s3curl列出所有用户时(我已使用正确的凭据设置~/.s3curl文件并使用./s3curl.pl --id=cdn -- -k https://s3.example.com:8081/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>

我在Riak CS和Stanchion中设置了admin.key和admin.secret配置我创建匿名用户的值。我试图创建另一个匿名用户,并仔细检查我是否正确使用密钥和密钥值。

Riak,Stanchion或Riak CS日志中没有任何错误 - 除了Riak CS访问日志,但这并不能说明多少。

我不知道下一步该做什么。任何建议都会受到欢迎。

1 个答案:

答案 0 :(得分:0)

感谢@Joe帮助,我至少可以为s3curl调试此问题。

事实证明,我选择了Riak CS的“直接”配置而不是“代理”。这意味着我已经给它自己的主机名而不是“s3.amazonaws.com”(由于客户端的兼容性问题,Riak CS真的试图伪装成真正的S3)。

虽然Riak CS使用此字符串来计算校验和(以erlang-y格式):

["GET","\n",[],"\n",[],"\n",["Mon, 08 Feb 2016 14:00:58 +0000","\n"],[],["/riak-cs/users",[]]]

s3curl,遇到未知的主机名,使用了这个:

GET\n\n\nMon, 08 Feb 2016 14:10:28 +0000\n/s3.mydoma.in/riak-cs/users

导致Access Denied

修复 - 添加到~/.s3curl字符串,如:

push @endpoints, 's3.mydoma.in';

现在我将尝试调试Riak CS Control。