typedconfig包的aws配置源
typed-config-aws-sources的Python项目详细描述
键入配置AWS源
typed-config包的aws配置源。
pip install typed-config-aws-sources
需要Python3.6或更高版本。
基本用法
请先阅读typed-config的自述文件。
# my_app/config.pyfromtypedconfig_awssourceimportIniS3ConfigSourcefromtypedconfigimportConfig,key,section@section('database')classAppConfig(Config):port=key(cast=int)config=AppConfig()config.add_source(IniS3ConfigSource('my_bucket_name','config_key.cfg'))config.read()
# my_app/main.pyfrommy_app.configimportconfigprint(config.host)
提供的配置源
IniS3ConfigSource
这将从存储在s3 bucket中的ini文件加载配置
fromtypedconfig_awssourceimportIniS3ConfigSourcesource=IniS3ConfigSource('bucket_name','key_name.cfg',encoding='utf8',must_exist=True)
- 提供bucket名称和key名称作为前两个参数
encoding
如果未提供,则默认为'utf8'
。must_exist
如果未提供,则默认为True
。如果must_exist
是False
,并且找不到bucket或key,或者AWS凭据失败,则不会抛出任何错误,并且此配置源将返回,而不是每次都找不到请求的配置值
示例ini文件可能如下所示:
[database]port=2000
DynamoDBConfigSource
这将从DynamoDB表读取配置该表应该有一个包含配置节的分区键、一个包含配置键名称的排序键和另一个包含配置值的字符串的“列”。
因此,dynamodb中与上述ini文件示例相对应的项如下所示
{"section":"database","key":"port","value":"2000"}
创建DynamoDBConfigSource
如下:
fromtypedconfig_awssourceimportDynamoDbConfigSourcesource=DynamoDbConfigSource('table_name',section_attribute_name='config_section_column_name',key_attribute_name='config_key_column_name',value_attribute_name='config_value_column_name')
- 第一个参数是dynamodb表名,它是必需的
- 其他三个参数是可选的,它们提供表中的属性(或“列”)名称,表中存储定义配置参数(节、键和值)的三个内容。
- 默认属性名是
"section"
、"key"
和"value"
SecretsManagerConfigSource
这将从机密管理器读取机密值。需要获得阅读AWS机密的许可。应该为每个名为prefix/section
的配置节存储一个机密,并包含json键值对。例如,对于名为myproject
的项目,可能有一个名为myproject/database
的秘密,其中包含以下值请注意,即使是数值也应存储为字符串。
{"user":"secretuser","password":"secretpassword"}
创建SecretsManagerConfigSource
如下:
fromtypedconfig_awssourceimportSecretsManagerConfigSourcesource=SecretsManagerConfigSource('myproject',must_exist=False)
- 传入前缀的参数,该前缀放在机密名称中
/
之前。因此,当我尝试获取数据库密码时,将检索机密myproject/database
,解析json并返回字段password
的值。 - 参数
must_exist
指定在无法访问aws secretsmanager时是否出错。默认值是False
。
贡献
欢迎提出新功能和请求。减贫战略必须包括测试。这是使用Python3.7开发的,但Travis测试也使用V3.6运行。
开发设置
- 克隆git存储库
- 创建虚拟环境
virtualenv venv
- 激活环境
venv/scripts/activate
- 安装开发依赖项
pip install -r requirements.txt
运行测试
pytest
在覆盖范围内运行:
pytest --cov
部署到pypi
如果你没有的话,你需要pip install twine
typedconfig_awssource/__version__.py
中的凹凸版本号- 用git
git tag -a v0.1.0 -m "Message"
标记发布
python setup.py sdist bdist_wheel
twine check dist/*
- 上传到测试PyPI
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
- 在https://test.pypi.org/project/typed-config-aws-sources
- 上传到实时pypi
twine upload dist/*
这里是a good tutorial关于将包发布到pypi的内容。