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