2016-02-04 29 views
0

在全新的Centos服务器上,我在Riak 2.1.3的基础上安装了Riak CS 2.1.1,使用的是Stanchion 2.1.1,使用的是official guide如何调试Riak CS的访问拒绝错误?

当在Riak CS conf文件中启用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> 

我设置admin.key和管理Riak CS和Stanchion中的.secret配置为创建匿名用户的值。我试图创建另一个匿名用户,并重复检查我为密钥和秘密采取了正确的值。

在Riak,Stanchion或Riak CS日志中没有任何错误 - 除了Riak CS访问日志,但这并没有多大意义。

我不知道下一步该怎么做。欢迎大家提出意见。

+1

如果您在Riak CS和s3curl中启用调试日志记录,则它们都应该记录字符串到符号值 - 确保首先是相同的。如果是,并且您仍然被拒绝,请检查每一方使用哪种签名算法,我隐约记得有关Riak CS不支持最新版本的讨论。 – Joe

+0

@Joe,如何在Riak CS中启用调试日志记录?在[配置参考]中没有提到这一点(http://docs.basho.com/riakcs/latest/cookbooks/configuration/configuration-reference/) – skaurus

+1

请遵循http://docs.basho.com/中的链接riakcs/latest/cookbooks/configuration/configuration-reference /#记录到https://github.com/basho/lager/blob/master/README.md#configuration,然后用level调试添加一个新的文件后端,或者提升现有的console.log – Joe

回答

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控制。