Code Monkey home page Code Monkey logo

acm-sdk-python's Issues

MissingParameter The parameter KeyId needed but no provided

I get this error when publish a data item.

script:

import acm
from os import environ

ENDPOINT = "acm.aliyun.com"
NAMESPACE = environ['NAMESPACE']
AK = environ['ALI_MY_AK']
SK = environ['ALI_MY_SK']


c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
c.set_options(kms_enabled=True, region_id="cn-shanghai")
c.publish("cipher-dataId", None, "plainText")

output:

ERROR:aliyunsdkcore.client:ServerException occurred. Host:kms.cn-shanghai.aliyuncs.com SDK-Version:2.13.5 ServerException:HTTP Status: 400 Error:MissingParameter The parameter  KeyId  needed but no provided. RequestID: 44250351-8679-4a5b-8099-4140fd4b291a
Traceback (most recent call last):
  File "deploy/fetch_env.py", line 15, in <module>
    c.publish("cipher-dataId", None, "plainText")
  File "/home/mymusise/pro/trade-server/env/lib/python3.7/site-packages/acm/client.py", line 360, in publish
    content = self.encrypt(content)
  File "/home/mymusise/pro/trade-server/env/lib/python3.7/site-packages/acm/client.py", line 885, in encrypt
    resp = json.loads(self.kms_client.do_action_with_exception(req).decode("utf8"))
  File "/home/mymusise/pro/trade-server/env/lib/python3.7/site-packages/aliyunsdkcore/client.py", line 456, in do_action_with_exception
    raise exception
aliyunsdkcore.acs_exception.exceptions.ServerException: HTTP Status: 400 Error:MissingParameter The parameter  KeyId  needed but no provided. RequestID: 44250351-8679-4a5b-8099-4140fd4b291a

watcher with gevent will throw BlockingIOError:

bug recurrence:
acm watcher script with code
"from gevent import monkey; monkey.patch_all()" or
gunicorn start service with "-k gevent"

Traceback (most recent call last):
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
super(ThreadWorker, self).init_process()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
import(module)
File "xxxxxxxxx", line 32, in
xxxxxxxxxxxx
File "xxxxxxxxx", line 12, in init
self.client.add_watcher(xxxxxxxxxxx)
File "/root/anaconda3/lib/python3.6/site-packages/acm/commons.py", line 10, in synced_func
return func(*args, **kws)
File "/root/anaconda3/lib/python3.6/site-packages/acm/client.py", line 557, in add_watcher
self.add_watchers(data_id, group, [cb])
File "/root/anaconda3/lib/python3.6/site-packages/acm/commons.py", line 10, in synced_func
return func(*args, **kws)
File "/root/anaconda3/lib/python3.6/site-packages/acm/client.py", line 602, in add_watchers
key_list = self.process_mgr.list()
File "/root/anaconda3/lib/python3.6/multiprocessing/managers.py", line 662, in temp
token, exp = self._create(typeid, *args, **kwds)
File "/root/anaconda3/lib/python3.6/multiprocessing/managers.py", line 554, in _create
conn = self._Client(self._address, authkey=self._authkey)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 493, in Client
answer_challenge(c, authkey)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 732, in answer_challenge
message = connection.recv_bytes(256) # reject large message
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 216, in recv_bytes
buf = self._recv_bytes(maxlength)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes
buf = self._recv(4)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 379, in _recv
chunk = read(handle, remaining)
BlockingIOError: [Errno 11] Resource temporarily unavailable

ModuleNotFoundError: No module named 'fcntl'

python 3.6 使用
import acm

ENDPOINT = "acm.aliyun.com:8080"
NAMESPACE = "base-dev"
AK = "××××××××××"
SK = "×××××××××××××××××"

get config

client = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
data_id = "cn.jfhealthcare.devops:opssampler.ini"
group = "DEFAULT_GROUP"

add watch

#import time
#client.add_watcher(data_id, group, lambda x:print("config change detected: " + x))
#time.sleep(5) # wait for config changes

if(name=='main'):
print(client.get(data_id, group))
#client.list_all()

Bug in AcmClient with ram_role_name as auth

When I'm trying to do following:

import acm

ENDPOINT = ''
NAMESPACE = ''
RAM_ROLE = ''
DATA_ID = ''
GROUP = ''

c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
c.set_options(kms_enabled=True, region_id="cn-beijing")
print(c.get(DATA_ID, GROUP))

I get following error:

    print(c.get(DATA_ID, GROUP))
  File "/usr/local/lib/python3.8/dist-packages/acm/client.py", line 397, in get
    return self.decrypt(content)
  File "/usr/local/lib/python3.8/dist-packages/acm/client.py", line 897, in decrypt
    resp = json.loads(self.kms_client.do_action_with_exception(req).decode("utf8"))
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/client.py", line 473, in do_action_with_exception
    status, headers, body, exception = self._implementation_of_do_action(acs_request)
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/client.py", line 308, in _implementation_of_do_action
    return self._handle_retry_and_timeout(endpoint, request, signer)
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/client.py", line 376, in _handle_retry_and_timeout
    status, headers, body, exception = self._handle_single_request(endpoint,
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/client.py", line 398, in _handle_single_request
    http_response = self._make_http_response(endpoint, request, read_timeout, connect_timeout,
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/client.py", line 264, in _make_http_response
    header, url = signer.sign(self._region_id, request)
  File "/usr/local/lib/python3.8/dist-packages/aliyunsdkcore/auth/signers/ecs_ram_role_signer.py", line 42, in sign
    self._check_session_credential()
  File "/usr/local/lib/python3.8/dist-packages/acm/client.py", line 74, in _check_session_credential_patch
    expiration = self._expiration if isinstance(self._expiration, (float, int)) \
AttributeError: 'EcsRamRoleSigner' object has no attribute '_expiration'

不设置环境变量DIAMOND_SERVER_IPS导致异常exception 'NoneType' object has no attribute 'split' occur

ERROR:root:[get-config] exception 'NoneType' object has no attribute 'split' occur
Traceback (most recent call last):
File "/Users/alsc/work/.pyodps/lib/python3.9/site-packages/acm/client.py", line 439, in get_raw
resp = self._do_sync_req("/diamond-server/config.co", None, params, None, timeout or self.default_timeout)
File "/Users/alsc/work/.pyodps/lib/python3.9/site-packages/acm/client.py", line 663, in _do_sync_req
server_info = self.get_server()
File "/Users/alsc/work/.pyodps/lib/python3.9/site-packages/acm/client.py", line 284, in get_server
server_list = get_server_list(self.endpoint, 443 if self.tls_enabled else 8080, self.cai_enabled,
File "/Users/alsc/work/.pyodps/lib/python3.9/site-packages/acm/server.py", line 43, in get_server_list
for server_addr in server_addresses.split(","):
AttributeError: 'NoneType' object has no attribute 'split'

有些环境下,不需要设置DIAMOND_SERVER_IPS,但目前版本,必须设置,否则会抛异常中断后续流程,获取不到data;

建议加个server_addresses的NoneType判断,再进行server_addresses.split(",")

def get_server_list(endpoint, default_port=8080, cai_enabled=True, unit_name=None):
server_list = list()

import os
server_addresses = os.getenv('DIAMOND_SERVER_IPS')
for server_addr in server_addresses.split(","):
    if server_addr is not "" and parse_nacos_server_addr(server_addr):
        server_list.append(parse_nacos_server_addr(server_addr.strip()))
if len(server_list) > 0:
    return server_list

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.