从aws系统管理器参数存储获取值的简单python包装器

ssm-parameter-store的Python项目详细描述


SSM参数存储

PyPI versionBuild statusCoveragePython versionsGithub license

说明

这是一个简单的python包装器,用于从aws系统管理器获取值 参数存储。

该模块支持获取单个参数、多个参数或与特定路径匹配的所有参数。

所有参数都作为pythondict返回。

安装

安装时使用pip

pip install ssm-parameter-store

用法

导入模块并创建EC2ParameterStore的新实例。

fromssm_parameter_storeimportEC2ParameterStorestore=EC2ParameterStore()

AWS证书

ssm-parameter-store在引擎盖下使用boto3,因此继承 查找aws凭据的相同机制。见configuring credentials 在Boto 3文档中获取更多信息。

EC2ParameterStore接受所有boto3客户端参数作为关键字参数。

例如:

fromssm_parameter_storeimportEC2ParameterStorestore=EC2ParameterStore(aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,aws_session_token=SESSION_TOKEN,# optionalregion_name='us-west-2')

示例

给定以下参数:

# set default AWS regionAWS_DEFAULT_REGION=us-west-2

# add parameters
aws ssm put-parameter --name "param1" --value "value1" --type SecureString
aws ssm put-parameter --name "param2" --value "value2" --type SecureString

# add parameters organised by hierarchy
aws ssm put-parameter --name "/dev/app/secret" --value "dev_secret" --type SecureString
aws ssm put-parameter --name "/dev/db/postgres_username" --value "dev_username" --type SecureString
aws ssm put-parameter --name "/dev/db/postgres_password" --value "dev_password" --type SecureString
aws ssm put-parameter --name "/prod/app/secret" --value "prod_secret" --type SecureString
aws ssm put-parameter --name "/prod/db/postgres_username" --value "prod_username" --type SecureString
aws ssm put-parameter --name "/prod/db/postgres_password" --value "prod_password" --type SecureString

获取单个参数

parameter=store.get_parameter('param1',decrypt=True)assertparameter=={'param1':'value1'}

获取多个参数

parameters=store.get_parameters(['param1','param2'])assertparameters=={'param1':'value1','param2':'value2',}

按路径获取参数

parameters=store.get_parameters_by_path('/dev/',recursive=True)assertparameters=={'secret':'dev_secret','postgres_username':'dev_username','postgres_password':'dev_password',}

默认情况下,get_parameters_by_path从每个参数名中删除路径。要返回参数的全名,请将strip_path设置为False

parameters=store.get_parameters_by_path('/dev/',strip_path=False,recursive=True)assertparameters=={'/dev/app/secret':'dev_secret','/dev/db/postgres_username':'dev_username','/dev/db/postgres_password':'dev_password'}

使用原始层次结构获取参数

您也可以按路径获取参数,但在为路径层次结构建模的嵌套结构中。

parameters=store.get_parameters_with_hierarchy('/dev/')assertparameters=={'app':{'secret':'dev_secret',},'db':{'postgres_username':'dev_username','postgres_password':'dev_password',},}

默认情况下get_parameters_with_hierarchy将删除前导路径组件。返回选定参数 使用完整的层次结构,将strip_path设置为False

parameters=store.get_parameters_with_hierarchy('/dev/',strip_path=False)assertparameters=={'dev':{'app':{'secret':'dev_secret',},'db':{'postgres_username':'dev_username','postgres_password':'dev_password',},},}

填充环境变量

该模块在EC2ParameterStore上包含一个静态方法,用于帮助填充环境变量。当与^{}这样的库集成时,这会很有帮助。

示例

给定以下参数:

aws ssm put-parameter --name "/prod/django/SECRET_KEY" --value "-$y_^@69bm69+z!fawbdf=h_10+zjzfwr8_c=$$&j@-%p$%ct^" --type SecureString
aws ssm put-parameter --name "/prod/django/DATABASE_URL" --value "psql://user:pass@db-prod.xyz123.us-west-2.rds.amazonaws.com:5432/db" --type SecureString
aws ssm put-parameter --name "/prod/django/REDIS_URL" --value "redis://redis-prod.edc1ba.0001.usw2.cache.amazonaws.com:6379" --type SecureString
importenvironfromssm_parameter_storeimportEC2ParameterStoreenv=environ.Env(DEBUG=(bool,False))# Get parameters and populate os.environ (region not required if AWS_DEFAULT_REGION environment variable set)parameter_store=EC2ParameterStore(region_name='us-west-2')django_parameters=parameter_store.get_parameters_by_path('/prod/django/',strip_path=True)EC2ParameterStore.set_env(django_parameters)# False if not in os.environDEBUG=env('DEBUG')# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environSECRET_KEY=env('SECRET_KEY')DATABASES={# read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found'default':env.db(),}CACHES={'default':env.cache('REDIS_URL'),}

相关项目

  • param-store- python模块将机密存储在机密存储中
  • ssm-cache- 用于python的aws系统管理器参数存储缓存客户端

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

推荐PyPI第三方库


热门话题
junit有没有办法在Java中重新初始化静态类?   在浏览器中点击应用程序时java Play框架挂起   文件Java错误中的NullPointerException   使用Java中的SNMP查找网络中计算机的登录名   java包装服务器引导程序已弃用,有什么替代方案?   当客户在等待理发时,java信号量值是否存在问题?   java如何使用JavaMail仅下载特定类型的附件   如何在java中将十进制转换为十六进制   java Slick2D粒子系统不会生成粒子   java检测更改事件来自何处   将Java集合类型参数类设置为数组   java如何从eclipse导出为可运行JAR文件?   java EntityManager对象未注入Glassfish和Spring   swing从actionPerformed和actionListener Java返回字符串   java在给定另一个等价键对象的情况下获取映射项的当前键   无论输入如何,java网络都会产生相同的输出