typedconfig包的aws配置源

typed-config-aws-sources的Python项目详细描述


Build Statuscodecov

键入配置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_existFalse,并且找不到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运行。

开发设置

  1. 克隆git存储库
  2. 创建虚拟环境virtualenv venv
  3. 激活环境venv/scripts/activate
  4. 安装开发依赖项pip install -r requirements.txt

运行测试

pytest

在覆盖范围内运行:

pytest --cov

部署到pypi

如果你没有的话,你需要pip install twine

  1. typedconfig_awssource/__version__.py中的凹凸版本号
  2. 用gitgit tag -a v0.1.0 -m "Message"
  3. 标记发布
  4. python setup.py sdist bdist_wheel
  5. twine check dist/*
  6. 上传到测试PyPI twine upload --repository-url https://test.pypi.org/legacy/ dist/*
  7. https://test.pypi.org/project/typed-config-aws-sources
  8. 上传到实时pypi twine upload dist/*

这里是a good tutorial关于将包发布到pypi的内容。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用Spring和JSF向客户端授予临时权限   java除了Array/ArrayList之外,还有其他保存矩阵元素的方法吗   java BeanValidation不适用于单选按钮   通过java程序连接到配置单元数据库时出错   java如何使用maven解决二级依赖关系   JfreeChart/Java中带有图例的数据表   合并数组时发生java运行时错误   安全性如何在JavaEE中保护WebSocket端点?   java有没有一种方法可以使用insert方法为树插入值   java编程“静态”的另一种方式:代码可以吗?   java阅读文本文件时如何跳过3行   %04X在C中的含义以及如何在java中编写   java我如何验证一个方法不是仅在一个测试范围内对模拟调用的?   java如何在mac中使用启动appium desktop 1.6.1。球棒   仅匹配最多10位小数的java正则表达式