Как отладить ошибку Access Denied от Riak CS?
На новом сервере Centos я установил Riak CS 2.1.1 поверх Riak 2.1.3 с Stanchion 2.1.1, используя официальное руководство.
Я смог создать новых пользователей, когда anonymous_user_creation
включен в файл конфигурации Riak CS. Но когда я отключаю его и пытаюсь создать нового пользователя с помощью 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 и admin.secret в конфигурациях Riak CS и Stanchion на значения, которые я получил при создании анонимного пользователя. Я попытался создать другого анонимного пользователя и дважды проверил, что я принимаю правильные значения для ключа и секрета.
В журналах Riak, Stanchion или Riak CS нет следов ошибок, кроме журналов доступа Riak CS, но это мало что говорит.
Я понятия не имею, что делать дальше. Любые предложения будут приветствоваться.
1 ответ
Благодаря помощи @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.