从aws系统管理器参数存储获取值的简单python包装器
ssm-parameter-store的Python项目详细描述
SSM参数存储
说明
这是一个简单的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系统管理器参数存储缓存客户端