aws-ssm-envから改行のあるパラメータを取得するときに嵌った話

はじめに

雑に作るとき、設定ファイルにパスワードとかAPI Token、private key(Google関連のAPIとか)を良くないのだが面倒になって書くことがある

公開するときに誤って含まれる可能性もあるし、1回でもcommitしちゃうとlogからバレちゃうしで面倒なので最近は環境変数から渡すようにしている

最近、個人のツール諸々をAWSで動かしている

AWSの場合はAWS Systems Manager パラメータストアという便利な機能がありそれを使うことにした

aws-ssm-envを使えば

> export $(AWS_REGION=<aws-region> aws-ssm-env --paths=/ --tags=userservice,production)
> env
...
...
SECRET_1=123456
PASSWORD=productionpass

こんな感じで簡単に環境変数に入れることがきる (READMEより抜粋)

改行のあるパラメータで嵌った

api token とかパスワードのような1行の文字列は問題ないのだが、private keyのような改行があるものだと途中で改行されてしまいエラーになってしまった…

解決方法

結構強引なやり方だがこんな感じで読み込むことができたにはできた…

ただしプロセス置換を使用しているので bash,zsh じゃないと動かない

(cshではできないことを確認済み)

 $ source <(AWS_REGION=ap-northeast-1 aws-ssm-env -paths=/)
 $ export $(cut -d= -f1 <(AWS_REGION=ap-northeat-1 aws-ssm-env -paths=/))

sourceだけだとシェル変数になってしまいプログラムから環境変数を取得することができなかった。

参考URL