公私共にお世話になっているSSMですが、都度コマンドは何だっけと苦労してたのでaliasにしました。
正確には、引数を使う必要があったので、aliasではなくfunctionとして実装しました。以下のように利用できます。
$ setssm TEST_KEY test_val #登録して
$ getssm TEST_KEY #参照する
test_val #出力
$ setssm TEST_KEY2 "test space日本語" #スペース、日本語の処理も可
$ echo HOGE$(getssm TEST_KEY2)FUGA #コマンド上で展開し変数としても扱える
HOGEtest space日本語FUGA
$ listssm | grep TEST #一覧の出力からgrepで検索し、TESTを含むキーと値を出力
TEST_KEY test_val
TEST_KEY2 test space日本語
実装は~/.bash_profile
の終わりに以下を追加し、source ~/.bash_profile
で更新するだけです。
~/.bash_profile
function setssm() {
command aws ssm put-parameter --name $1 --type "String" --overwrite --value "$2";
}
function getssm() {
command aws ssm get-parameter --name $1 --query 'Parameter.Value' --output text;
}
function listssm() {
command aws ssm get-parameters-by-path --path "/" --query "Parameters[].[Name,Value]" --output text
}
```
個人的に最も捗るのはコマンドを会社用と自分用に分けてしまうことです。`setssm_private`と`setssm_corp`などコマンドを2パターン用意し、--profile引数をそれぞれに付与するとパーソナルな情報を会社のssmにアップしたりその逆を避けれます。
最近は認証情報もSSM経由で取り扱えるフレームワークが増えてきて、レポジトリに認証情報をアップするリスクや心配が無くなってきていいですね。皆様も良いAWSライフを。
参考
https://github.com/aws/aws-cli/issues/1961
https://hacknote.jp/archives/8043/
https://dev.classmethod.jp/articles/aws-cli-all-ssm-parameter-get/
https://qiita.com/tomoya_oka/items/a3dd44879eea0d1e3ef5