LoginSignup
0
0

More than 3 years have passed since last update.

AWS CDKで使用するSystems Managerのパラメータの作成方法

Posted at

はじめに

AWS CDKを使用する時、ARNなどをコードにベタ書きすると、セキュリティ面がいまいちなので、Systems Managerのパラメータストアにセキュアにしたい値を入れて使いたいなと思いました。

もともとはパラメータストアのスタックもCDKのデプロイ時にcontextとかから、渡して作成したいなと思っていたのですが、現状それはできなさそうです。

じゃあどうすればいいのか?

それはAWSのドキュメントに書いてありました。
https://docs.aws.amazon.com/cdk/latest/guide/get_ssm_value.html#ssm_write
どうやらSystems Managerへのパラメータの登録はAWS CLIからのようです。つまりCDKからは厳しそうですね。

パラメータ登録用のスクリプト

CDKでは「必要なパラメータのリストを一覧して、多くのパラメータを一気に登録する」ということができなさそうだったので、登録用のスクリプトを作成しました。

create_parameters.sh
#!/bin/bash

#
# パラメータキーの一覧表示
#
key=("PARA1" "PARA2")
declare -a value
echo "登録が必要なパラメータキー一覧です"
echo
for ((i=0;i<${#key[@]};i++))
do
  echo "${key[i]}"
done

#
# パラメータキーの正誤確認
#
while :
do
  echo
  read -p "パラメータキー一覧は正しいですか?(y/n): " PARAM_CHECK
  case "$PARAM_CHECK" in
  [yY])
    echo
    echo "パラメータの値を入力してください"
    break
    ;;
  [nN])
    echo "パラメータキー一覧の編集をしてください"
    exit
    ;;
  *)
    echo "yかnのみ入力してください"
  esac
done

#
# パラメータ値の入力
#
for ((i=0;i<${#key[@]};i++))
do
  read -p "${key[i]}: " VALUE
  value[i]=$VALUE
done
echo
echo "入力した値の一覧です"
echo
for ((i=0;i<${#key[@]};i++))
do
  echo "${key[i]}: ${value[i]}"
done

#
# パラメータ値の入力内容確認
#
while :
do
  echo
  read -p "入力した値は正しいですか?(y/n): " VALUE_CHECK
  case "$VALUE_CHECK" in
    [yY])
      echo
      read -p "パラメータを登録するAWSプロファイル名を入力してください: " PROFILE
      break
      ;;
    [nN])
      echo "パラメータの値を入力し直してください"
      exit
      ;;
    *)
      echo "yかnのみ入力してください"
  esac
done

#
# パラメータの登録
#
echo
echo " パラメータを登録しています"

for ((i=0;i<${#key[@]};i++))
do
  aws ssm put-parameter --overwrite --name "${key[i]}" --type "SecureString" --value "${value[i]}" --profile $PROFILE
done
echo " 登録が完了しました。"

このshファイル内のkeyリストのところに登録したいパラメータキーを予め入力しておいて

$ sh create_parameters.sh

を実行し、表示された案内に沿って値を入力していけば、パラメータストアに値を登録することができます。(すでに登録されている場合は上書きされます。)

0
0
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
0
0