Parameter Store用来存储配置的信息还是蛮方便的,记录一下这方面的经验。

AWS CLI value值有http url时会尝试解析这个url

aws ssm put-parameter --name "/my-service/qa/service_url" --type String --overwrite --region us-east-1 --value "https://myservice/api/"

这条命令执行的时候会去访问https://myservice/api/,会出现各种问题。项目上这个值是内网的地址,必须要通过代理才能访问,执行这条命令后就死在那里了。具体可以通过aws –debug ssm这样去查看。 在github上面有人提到了同样的问题,据说这还是一个“特性”。解决方案是将这个关闭:

aws configure set cli_follow_urlparam false

命令行小工具

如果想要知道一个路径下面所有的值,在AWS的console界面里面非常的难找。要做数据迁移的时候非常的麻烦。在网上找到一个叫做aws-ssm-commander的小工具,能够非常方便的显示出某个路径下所有的参数的值,并且能够导入导出。

Python中使用Parameter Store

在Python中使用Parameter Store可以使用原生的boto3 API进行,但有时候想在配置文件里面融入Parameter Store的值,并且能够透明的读取的话,还是不是太方便。

后来发现了一个https://github.com/adobe/himl的库,能够满足所有的需要。但这个库有个问题是当AWS_PROFILE没有设置的时候,会无法取到值。比如在EKS里面运行的时候,就会没有,但boto3能够自行去寻找对应的aws认证参数,也能获取到Parameter Store的值。

我后来提交了一个Pull Request,等待官方合并。