Отказано в разрешении при доступе к consul с помощью python

Пытаясь отладить соединение patroni с consul, я попытался написать простой коннектор python для самого себя consul.

Это то, что я » m do (python3, Centos7)

import consul
c = consul.Consul(host='consul-host',port=port,token='some-token')
c.kv.get('/v1/kv/some/long/path/bar')

Вот что я получаю (та же ошибка, что и patroni):

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/consul/base.py", line 554, in get
    params=params)
  File "/usr/local/lib/python3.6/site-packages/consul/std.py", line 22, in get
    self.session.get(uri, verify=self.verify, cert=self.cert)))
  File "/usr/local/lib/python3.6/site-packages/consul/base.py", line 223, in cb
    CB._status(response, allow_404=allow_404)
  File "/usr/local/lib/python3.6/site-packages/consul/base.py", line 181, in _status
    raise ACLPermissionDenied(response.body)
consul.base.ACLPermissionDenied: rpc error making call: Permission denied

Curl отлично работает с этим токеном.

curl --header "X-Consul-Token:some-token" http://consul-host:port/v1/kv/some/long/path/bar | jq .

[
  {
    "LockIndex": 0,
    "Key": "/v1/kv/some/long/path/bar",
    "Flags": 0,
    "Value": "Zm9v",
    "CreateIndex": 2951475,
    "ModifyIndex": 2951475
  }
]

Есть идеи, что я делаю не так? Спасибо.

0
задан 28 January 2020 в 10:03
1 ответ

Ваша трассировка указывает на consul/base.py:554:

return self.agent.http.get(
    CB.json(index=True, decode=decode, one=one),
    '/v1/kv/%s' % key,
    params=params)

Поскольку вы передаете ключ '/v1/kv/some/long/path/bar' ] он попадет в конечную точку http://consul-host:port/v1/kv/v1/kv/some/long/path/bar, а не http://consul-host:port /v1/kv/some/long/path/bar

0
ответ дан 14 May 2020 в 17:04

Теги

Похожие вопросы