允许您从aws参数存储读取参数,并对结果进行字典操作。

ssmenv的Python项目详细描述


ssmenv

mastercoveragePyPIPythonLicence
Build StatusCoverage StatusPyPI

ssmenv允许您从AWS Parameter Store中读取参数,并像在字典中那样对结果进行操作。

安装

唯一的要求是安装boto3

pip install ssmenv

读取参数

假设在/service/my-service名称空间下有两个参数tokenurl。 读取这两个参数就像初始化类对象一样简单。

fromssmenvimportSSMEnvparams=SSMEnv("/service/my-service")

完成!现在我们可以在params变量中访问/service/my-service/token/service/my-service/url

现在params可以作为python dict类型访问。

SSMEnv实例交互

如您现在所知,python中的SSMEnv实例可以作为任何dict访问,这意味着您可以执行如下操作:

fromssmenvimportSSMEnvparams=SSMEnv("/service/my-service")# 1. Access value directlytoken=params["SERVICE_MY_SERVICE_TOKEN"]# 2. Get list of all loaded parameter's nameslist(params.keys())# 3. Get list of all loaded parameter's valueslist(params.values())# and so on...

一次获取多个命名空间

在现实世界中,大多数情况下,您将访问来自不同名称空间的参数,您可以使用SSMEnv轻松做到这一点 通过传递tuple

fromssmenvimportSSMEnvparams=SSMEnv("/service/my-service","/resource/mysql")

现在params将拥有来自/service/my-service/resource/mysql的所有参数

AWS Lambda装饰器

如果您使用AWS lambda,您可能会找到方便的ssmenv装饰器它的行为与手动初始化SSMEnv相同,但它还将SSMEnv的实例注入context.params属性。

fromssmenvimportssmenv@ssmenv("/service/my-service")defhandler(event,context):returncontext.params

填充os.environ

您可以使用os.environdict来隐藏SSMEnv的用法。

importosfromssmenvimportSSMEnvos.environ={**os.environ,**SSMEnv("/service/my-service")}

删除常用前缀

通过整个名称空间访问参数有时可能不方便 尤其是你的名字很长的时候

因此,为什么可以使用prefixes参数来使代码更干净。

fromssmenvimportSSMEnvparams=SSMEnv("/service/my-service",prefixes=("/service/my-service",))params["TOKEN"]

如果没有aws上下文,则返回dict

您可能希望在没有aws的情况下运行应用程序,例如通过本地计算机上的docker和mock参数。 为此,您可以使用no_aws_default属性。

importosfromssmenvimportSSMEnvos.environ["SERVICE_MY_SERVICE_TOKEN"]="mocked-token"# that might be set in docker-composeparams=SSMEnv("/service/my-service",no_aws_default=os.environ)

通过您自己的BOTO3客户机

你也可以通过你自己的boto3客户端

importboto3fromssmenvimportSSMEnvssm_client=boto3.client("ssm")params=SSMEnv("/service/my-service",ssm_client=ssm_client)

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

推荐PyPI第三方库


热门话题
java HikariCP连接池Tomcat调试启用   java如何在javascript中访问JSON数组的元素?   jasper使用HttpServlet报告Java空白PDF   用于存储海量数据的java最佳集合   JBPM&springboot组织。流口水。坚持不懈jta。JtaTransactionManager在JNDI位置[java:comp/UserTransaction]未找到任何UserTransaction   java Grails maven插件需要Groovy 2.4.2   获取列表中访问最少的元素(Java 8)   java在IntelliJ中下载cn1lib不起作用   java Akka构造函数通过spring进行布线   swing在Java中创建JList时,如何更改条目的背景颜色?   为什么Java8Lambda允许访问非最终类变量?   javajavax。邮政MessaginException:无法连接到SMTP主机   java Android Webview高度在滚动后增加