与aws系统管理器接口的python包
python-aws-ssm的Python项目详细描述
python aws ssm
与AWS System Manager接口的python包。
为什么要使用pythonawssm而不是boto3 ssm客户端?
这个包包着BOTO3-SSM客户端,隐藏了处理不太好的Python友好AWS SDK的复杂性。 当应用程序的安全参数存储到 AWS Parameter Store 使用路径层次结构。在应用程序启动期间,您可以使用此包获取它们并在应用程序中使用它们。
警告
默认情况下,SSM服务受速率限制。我们强烈建议使用
按路径检索ssm密钥,例如通过ParameterStore.get_parameters_by_path()
。
这需要按有用的路径对键进行分组,但会降低
你自己的服务价格也受到限制。
安装
pip install python-aws-ssm
示例
基本用法
frompython_aws_ssm.parametersimportParameterStore# Assuming you have the parameters in the following format:# my-service/dev/param-1 -> with value `a`# my-service/dev/param-2 -> with value `b`parameter_store=ParameterStore()# Requesting the base pathparameters=parameter_store.get_parameters_by_path("/my-service/dev/")# And getting a specific valuevalue=parameters.get("param-1")# value should be `a`
递归和嵌套选项
frompython_aws_ssm.parametersimportParameterStore# Assuming you have the parameters in the following format:# my-service/dev/param-1 -> with value `a`# my-service/dev/param-2 -> with value `b`parameter_store=ParameterStore()# Requesting the base pathparameters=parameter_store.get_parameters_by_path("/my-service/",recursive=True,nested=True)# And getting a specific valuedev_parameters=parameters.get("dev")# value should be {"param-1": "a", "param-2": "b"}
按名称获取参数
frompython_aws_ssm.parametersimportParameterStore# Assuming you have the parameters in the following format:# my-service/dev/param-1 -> with value `a`# common/dev/param-2 -> with value `b`parameter_store=ParameterStore()# Requesting the base pathparameters=parameter_store.get_parameters(["/my-service/dev/param-1","/common/dev/param-2"])# And getting a specific valuedev_parameters=parameters.get("/common/dev/param-2")# value should be `b`
使用自定义客户端
frompython_aws_ssm.parametersimportParameterStoreimportboto3# Initialise an SSM client to specify the source of the credentials.# e.g. locally a profile would be more likely; an AWS Lambda would most# likely not override the credentials source.ssm_client=boto3.Session(profile_name='dev').client('ssm')parameter_store=ParameterStore(ssm_client)parameters=parameter_store.get_parameters(["/service/path/"])
开发
frompython_aws_ssm.parametersimportParameterStore# Assuming you have the parameters in the following format:# my-service/dev/param-1 -> with value `a`# common/dev/param-2 -> with value `b`parameter_store=ParameterStore()# Requesting the base pathparameters=parameter_store.get_parameters(["/my-service/dev/param-1","/common/dev/param-2"])# And getting a specific valuedev_parameters=parameters.get("/common/dev/param-2")# value should be `b`
使用自定义客户端
frompython_aws_ssm.parametersimportParameterStoreimportboto3# Initialise an SSM client to specify the source of the credentials.# e.g. locally a profile would be more likely; an AWS Lambda would most# likely not override the credentials source.ssm_client=boto3.Session(profile_name='dev').client('ssm')parameter_store=ParameterStore(ssm_client)parameters=parameter_store.get_parameters(["/service/path/"])
开发
如果您缺少任何功能或发现了一个bug,请打开一个pr或一个新的github问题。
设置
这个项目使用诗歌来管理依赖关系和虚拟环境。 按照poetry网站(https://poetry.eustace.io/docs/#installation)的说明配置本地环境。
完成诗歌设置后,可以运行以下命令创建虚拟环境:
make setup
测试
测试由pytest运行
make test
代码样式
- mypy用于类型注释(https://github.com/python/mypy)
- 黑色格式化程序(https://github.com/psf/black)用于保持编码样式的一致性。
- isort(https://github.com/timothycrosley/isort)用于对导入进行排序。 要格式化代码库,只需运行:
make format
在按下之前检查:
make lint