Obtener permiso denegado al acceder al cónsul con Python

Obtener permiso denegado al acceder al cónsul con Python

Al intentar depurarpatroniconexión con el cónsul, intenté escribir un conector de Python simple para el cónsul yo mismo.

Eso es lo que estoy haciendo (python3, Centos7)

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

Eso es lo que recibo (el mismo error que produce 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 funciona bien con esa ficha.

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
  }
]

¿Alguna idea sobre qué estoy haciendo mal? Gracias.

Respuesta1

Su rastreo apunta acónsul/base.py:554:

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

Como estás pasando la clave, '/v1/kv/some/long/path/bar'llegará al punto finalhttp://host-cónsul:puerto/v1/kv/v1/kv/some/long/path/bary nohttp://host-cónsul:puerto/v1/kv/some/long/path/bar

información relacionada