LoginSignup
15
7

More than 1 year has passed since last update.

.env などにある環境変数を[一括で|まとめて] パラメーターストアに登録するスクリプトを書いたよ

Last updated at Posted at 2022-08-08

環境変数を追加するのが面倒

パラメーターストアに環境変数をぽちぽち登録するのが苦行で仕方がありませんでした。
12個ぐらい一気に追加されると、それをポチポチすると5-10分かかってしまいます。
そこで、慣れないシェルスクリプトをつかって一括登録できるようにスクリプトを書きました。
慣れないので2時間ぐらいかかりました。笑

前提

AWS CLI が必要です。

シェルスクリプト

put_env.sh
#!/bin/bash

## Default値
profile='default'
data_type='String'
desc='from post_envs.sh'
prefix=''
##

function usage {
  cat <<EOM
Usage: $(basename "$0") [OPTION]... filename
  -h Help    	  Display usage.
  -a Prefix       Prefix of parameter store's key.
  -d Description  Parameter Description.
  -t Data Type    Data type of parameter store. Default value is "String".
  -p Aws Pofile   Default value is "default". 
EOM

  exit 2
}

echo $@
while getopts ":a:d:p:t:" optKey; do
  case "$optKey" in
    a)
      prefix=${OPTARG}
      ;;
    d)
      desc=${OPTARG}
      ;;
    p)
      profile=${OPTARG}
      ;;
    t)
      data_type=${OPTARG}
      ;;
    '-h'|'--help'|* )
			usage
      ;;
  esac
done

# オプションとその値のかずだけ引数配列からshiftさせる
shift $(($# - 1))

if [ "$1" != "" ]; then
  filename=$1
fi

if [ "$filename" = "" ]; then
	echo "\n[missing argv error] missing argv filename.\n"
  usage
fi

cat ${filename} | while read line
do
  key=`echo ${line} | cut -d '=' -f 1 | grep -v '^\s*#'`
  val=`echo ${line} | cut -d '=' -f 2`
	if [ "$key" != "" ]; then
		echo "[sending...] ${prefix}${key}=${val}"
		aws ssm --profile ${profile} put-parameter --name "${prefix}${key}" --value "${val}" --type ${data_type} --description "${desc}"
	fi
done

使用例

例えば、環境変数をまとめて以下のようなファイルがあったとします。

.env-to-post
# hogeにつかう
HOGE=hoge
# fugaにつかう
FUGA=fuga

その場合は、

sh put_env.sh .env-to-post 

で登録できます。

オプション

オプション 備考
-a パラメータのキーにプレフィックスをつけることができます。
-d パラメータの説明分を指定できます。一括で同じものになります。
-p AWS CLI のプロファイル名です。
-t パラメータのタイプです。String以外にもSecureStringなどがあります。

コメント

せっかく作ったので、どなたかの参考になったら 幸甚の至り です。
シェルスクリプト筋がか細いので、シェルスクリプトつよつよの方がいたら改善案等お待ちしております :bow:

15
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
7