支持异步的acm的python客户端。
aioacm-sdk-python的Python项目详细描述
用户指南
简介
支持异步的用于acm的python sdk。
功能
- 使用rest api从acm服务器获取/发布/删除配置。
- 从服务器监视配置更改。
- 服务器故障时自动故障转移。
- 支持TLS。
- 支持地址服务器。
- 支持阿里云ACM和独立部署。
支持的python:
- 巨蟒3.5
- python 3.6
支持的ACM版本
- ACM 1.0
更改日志
安装
对于python 3.5及以上版本:
pip install aioacm-sdk-python
开始
importaioacmENDPOINT="acm.aliyun.com:8080"NAMESPACE="**********"AK="**********"SK="**********"# get configclient=aioacm.ACMClient(ENDPOINT,NAMESPACE,AK,SK)data_id="com.alibaba.cloud.acm:sample-app.properties"group="group"print(asyncio.get_event_loop().run_until_complete(client.get(data_id,group)))# add watchimporttimeclient.add_watcher(data_id,group,lambdax:print("config change detected: "+x))asyncio.get_event_loop().run_until_complete(asyncio.sleep(5))# wait for config changes
配置
client = ACMClient(endpoint, namespace, ak, sk)
- 端点-必需-ACM服务器地址。
- 命名空间-命名空间。|默认值:
默认租户
- AK-阿里云ACM的AccessKey。|默认值:
无
- SK-阿里云ACM的SecretKey。|默认值:
无
附加选项
可通过设置选项设置额外选项,如下所示:
client.set_options({key}={value})
可配置的选项有:
- 默认超时-从服务器获取配置的默认超时(秒)。
- TLS U已启用-是否使用https。
- 已启用身份验证-是否使用身份验证功能。
- CAI_已启用-是否使用地址服务器。
- 拉入超时-长轮询超时(秒)。
- 拉取配置大小-一个轮询进程监听的最大配置项目数。
- 回调线程数-调用回调的并发性。
- 故障转移库-存储故障转移配置文件的目录。
- 快照库-存储快照配置文件的目录。
- 应用程序名称-客户端应用程序标识符。
- 无快照-若要禁用默认快照行为,可以通过get方法中的paramno_snapshot重写此操作。
API参考
获取配置
< Buff行情>acmclient.get(数据标识、组、超时、无快照)
param
数据id数据id.param
组如果未指定组,请使用默认组。param
请求服务器超时(秒)。param
没有快照服务器不可用时是否使用本地快照。返回
W 按优先级获取一个配置项的值:步骤1-从本地故障转移目录获取(默认值:
${cwd}/acm/data
)。- 可以提前从快照目录(默认:
${cwd}/acm/snapshot
)手动复制故障转移目录。 - 这有助于抑制已知服务器故障的影响。
- 可以提前从快照目录(默认:
步骤2-从一台服务器获取,直到获取值或尝试所有服务器。
- 从服务器获取内容后,内容将保存到快照目录。
步骤3-从快照目录获取。
添加观察者
< Buff行情>acmclient.add_watchers(数据id,组,cb_list)
param
数据id数据id.param
group组,使用de>默认组如果未指定组。param
cb_list要添加的回调函数列表。返回
将监视程序添加到指定的配置项。
- 更改或删除项目后,将调用回调函数。
- 如果该项已存在于服务器中,则回调函数将被调用一次。
- 允许对一个项进行多次回调,并且所有回调函数都由
threading.thread
- 回调函数是从当前进程调用的。
删除监视程序
< Buff行情>acmclient.remove_watcher(数据ID、组、CB、全部删除)
param
数据id数据id.param
组如果未指定组,请使用"默认组"。param
cb要删除的回调函数。param
全部删除是删除所有出现的回调还是只删除一次。返回
从指定的键中删除观察程序。
列出所有配置
< Buff行情>acmclient.list_all(组,前缀)
param
组只返回组匹配的数据标识,默认为无。param
group只返回带前缀的dataid startswith,默认值为none区分大小写返回
数据项列表。
获取当前命名空间的所有配置项,仅包含dataid和组信息。
- 警告:如果命名空间中有大量配置,则此函数可能需要一些时间。
发布配置
< Buff行情>acmclient.publish(数据标识、组、内容、超时)
param
数据id数据id.param
组如果未指定组,请使用"默认组"。参数
内容配置值。param
请求服务器超时(秒)。如果成功或将引发异常,则返回
true。
向ACM发布一个数据项。
- 如果数据密钥不存在,请先创建一个。
- 如果数据密钥存在,请更新到指定的内容。
- 内容不能设置为"无",如果需要删除配置项,请改用"删除"功能。
删除配置
< Buff行情>acmclient.remove_watcher(数据ID、组、CB、全部删除)
param
数据id数据id.param
组如果未指定组,请使用"默认组"。param
请求服务器超时(秒)。如果成功或将引发异常,则返回
true。
从ACM中删除一个数据项。
调试模式
调试模式(如果有助于获得更详细的控制台登录信息)。
调试模式可通过设置:
ACMClient.set_debugging()
# only effective within the current process
cli工具
一个cli工具与python sdk一起,可以方便地访问和管理acm服务器中的配置项。
安装后,可以直接使用acm{subcommand}
,可用的子命令如下:
add add a namespace use switch to a namespace current show current endpoint and namespace show show all endpoints and namespaces list get list of dataIds pull get one config content push push one config exportexport dataIds to local files import import files to ACM server
使用acm-h
查看详细手册。
数据安全选项
ACM允许您在加密数据的同时,还可以使用阿里云提供的密钥管理服务(也称为KMS)对数据进行加密。
要使用此功能,您可以执行以下步骤:
- 通过
pip安装aliyun python sdk kms来安装kms sdk
- 用
密码-
前缀命名数据ID。 - 获取并填充所有需要的配置在
acmclient
上,需要的信息有:region\u id
,kms\u ak
,kms\u secret
,key\u id
- 只需调用api,sdk就会自动处理数据加密和解密。
示例:
c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
c.set_options(kms_enabled=True, kms_ak=KMS_AK, kms_secret=KMS_SECRET, region_id=REGION_ID, key_id=KEY_ID)
# publish an encrypted config item.
await c.publish("cipher-dataId", None, "plainText")
# get the content of an encrypted config item.
await c.get("cipher-dataId", None)
其他资源
- 阿里云ACM主页:https://www.aliyun.com/product/acm rel="nofollow">https://www.aliyun.com/product/acm