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,等待官方合并。
网友评论