aws无服务器python系统的配置客户端

serverless-config的Python项目详细描述


https://img.shields.io/pypi/status/serverless-config.svghttps://travis-ci.org/oharaandrew314/serverless-config.svg?branch=masterhttps://img.shields.io/pypi/v/serverless-config.svghttps://img.shields.io/pypi/l/serverless-config.svghttps://img.shields.io/pypi/pyversions/serverless-config.svgcodecov.io

一个用于aws无服务器python系统的简单配置客户机。

还有一个jvm version

安装

pip install serverless-config

pipenv install serverless-config

aws lambda在其环境中包含boto3,因此serverless config不将其作为依赖项包含,以减小部署包的大小。 如果希望在本地使用serverless config,请确保也安装boto3

快速启动

fromserverless_configimportdefault_configconfig=default_config()string_prop=config.get_str('string_prop')int_prop=config.get_int('missing_int_prop',default_value=123)secret_prop=config.get_str('secret_prop',WithDecryption=True)

默认配置将搜索具有以下优先顺序的参数:system environmentaws ssm parameter store。你可以在下面了解更多。

支持的配置源

系统环境

系统环境是存储微服务特定参数的好地方。它们设置在lambda函数本身上。

fromserverless_configimportEnvConfigconfig=EnvConfig()config.get_str('string_prop')

aws ssm参数存储

ssm非常适合存储跨微服务共享的参数,以及存储加密的机密。它是完全管理的,不需要任何配置即可启动。

注意:iam角色需要amazonssmreadonlyaccess策略才能从ssm获取属性。

fromserverless_configimportSsmConfigconfig=SsmConfig()config.get_str('string_prop')

秘密可以在传输过程中被解密。这样,您就不必担心配置iam角色以访问kms密钥。

fromserverless_configimportSsmConfigconfig=SsmConfig()config.get_str('string_prop',WithDecryption=True)

复合配置

默认配置将首先在系统环境中搜索。如果参数不存在,则它将在aws ssm中搜索。

fromserverless_configimportdefault_configconfig=default_config()

自定义配置

您甚至可以实现自己的自定义配置和组合配置!

fromserverless_configimportConfigBase,CompositeConfig,EnvConfigclassDictConfig(ConfigBase):def__init__(self,prop_dict):self.prop_dict=prop_dictdefget_str(prop_name,default_value=None):ifprop_nameinself.prop_dict:returnself.prop_dict[prop_name]elifdefault_value:returndefault_value# You must raise a ValueError if the property is not foundraiseValueError('Property not found: '+prop_name)# You can make a standalone custom configprops=dict(foo='bar',toll='troll')map_config=DictConfig(props)# And you can make a custom composite config with your new configcustom_config=CompositeConfig(map_config,EnvConfig())

缓存

默认配置将缓存属性5分钟。如果希望使用特定或自定义配置,可以将cachedconfig包装起来。

fromserverless_configimportdefault_configconfig=default_config()value=config.get_str('prop')# getting value from env and ssmvalue=config.get_str('prop')# getting cached value
fromdatetimeimporttimedeltafromserverless_configimportEnvConfig,SsmConfig,CachedConfig,CompositeConfigCachedConfig(SsmConfig())# config with default 5 minute cache durationCachedConfig(SsmConfig(),timedelta(hours=1)# config with 1 hour cache durationCachedConfig(CompositeConfig(SsmConfig(),EnvConfig()))# you can even cache a composite config!

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

推荐PyPI第三方库


热门话题
JavaCenter是JavaFX2中不可执行的窗格   java Docker将容器连接到本地数据库   java无法通过Spring从Redis获得正确的值   java为什么要将数组转换为列表再转换为数组   Java泛型在方法中放入字符串或整数参数   在Cloud Bigtable SDK中找不到java类   java Mavensiteplugin无法加载生成的源(Jaxb)   java GWT序列化和Appengine通道Api   PrintWriter out=new PrintWriter(sWriter)和PrintWriter out=response之间的java差异。getWriter()   空手道DSL中的javascript,在java参数调用中传递变量时如何转义单引号   windows 64位java可以与32位tomcat一起使用   为for循环| Java输入参数   java您可以更改SWT选项卡项的背景和/或前景颜色吗?   用java生成6位pin码   java如何从另一个通量中排除通量中的所有元素   java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为null   将Java字符串与数组匹配时出现问题   java如何使用HttpsUrlConnection对SSL连接使用代理身份验证?   java如何检查XML元素是否包含CDATA?