ハンズオン(簡易版): SSM基礎 セッションマネージャ

おまけ1. EC2キーペアの作成 (handson-cli-ssm-session-manager-keypair)

手順の目的 [why]

EC2キーペア"handson-cli-ssm-session-manager-keypair"を作成します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

0. リージョンの指定

リージョンを指定します。

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

1. EC2キーペア名

EC2キーペア名を指定します。

変数の設定:

EC2_KEY_PAIR_NAME="handson-cli-ssm-session-manager-keypair"

2. 鍵ファイルディレクトリ

鍵ファイルディレクトリを指定します。

変数の設定:

DIR_KEY="${HOME}/.ssh"

ディレクトリが存在することを確認します。

コマンド:

ls -d ${DIR_KEY}

結果(例:存在する場合):

${HOME}/.ssh

存在しない場合は作成します。 (パーミッションは700にします。)

コマンド:

mkdir -p ${DIR_KEY} \
  && chmod 700 ${DIR_KEY}

結果(例):

(出力なし)

3. 秘密鍵ファイル名

AWS IDを取得します。

コマンド:

AWS_ID=$( \
  aws sts get-caller-identity \
    --query 'Account' \
    --output text \
) \
  && echo ${AWS_ID}

結果(例):

XXXXXXXXXXXX

変数の設定:

FILE_KEY_PAIR_SECRET="${DIR_KEY}/${EC2_KEY_PAIR_NAME}-${AWS_ID}-${AWS_DEFAULT_REGION}-ec2.pem" \
  && echo ${FILE_KEY_PAIR_SECRET}

結果(例):

${HOME}/.ssh/handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1-ec2.pem

4. 一時ファイル用ディレクトリ

一時ファイル用ディレクトリを指定します。

変数の設定:

DIR_TMP="${HOME}/environment/tmp-handson-cli-ssm-session-manager"

ディレクトリが存在することを確認します。

コマンド:

ls -d ${DIR_TMP}

結果(例:存在する場合):

${HOME}/environment/tmp-handson-cli-ssm-session-manager

ディレクトリが存在しない場合は作成します。

コマンド:

mkdir -p ${DIR_TMP}

設定値の確認

各変数に正しい設定値が格納されていることを確認しながら保存します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. EC2_KEY_PAIR_NAME:"handson-cli-ssm-session-manager-keypair"
       EC2_KEY_PAIR_NAME="${EC2_KEY_PAIR_NAME}"
  # 2. DIR_KEY:"${HOME}/.ssh"
       DIR_KEY="${DIR_KEY}"
  # 3. FILE_KEY_PAIR_SECRET:"${HOME}/.ssh/handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1-ec2.pem"
       FILE_KEY_PAIR_SECRET="${FILE_KEY_PAIR_SECRET}"
  # 4. DIR_TMP:"${HOME}/environment/tmp-handson-cli-ssm-session-manager"
       DIR_TMP="${DIR_TMP}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

一時ファイル名を指定します。

変数の設定:

FILE_TMP_EC2_KEY_PAIR="${DIR_TMP}/$(date +%Y-%m-%d)-key_pair-${EC2_KEY_PAIR_NAME}-${AWS_ID}-${AWS_DEFAULT_REGION}.json" \
  && echo ${FILE_TMP_EC2_KEY_PAIR}

結果(例):

${HOME}/environment/tmp-handson-cli-ssm-session-manager/2021-04-09-key_pair-handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1.json

EC2キーペアを作成します。

変数の確認:

cat << END

  # EC2_KEY_PAIR_NAME:"handson-cli-ssm-session-manager-keypair"
    EC2_KEY_PAIR_NAME="${EC2_KEY_PAIR_NAME}"
  # FILE_TMP_EC2_KEY_PAIR:"${HOME}/environment/tmp-handson-cli-ssm-session-manager/2021-04-09-key_pair-handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1.json"
    FILE_TMP_EC2_KEY_PAIR="${FILE_TMP_EC2_KEY_PAIR}"

END

コマンド:

aws ec2 create-key-pair \
  --key-name ${EC2_KEY_PAIR_NAME} \
  > ${FILE_TMP_EC2_KEY_PAIR}

cat ${FILE_TMP_EC2_KEY_PAIR}

結果(例):

{
  "KeyFingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
  "KeyMaterial": "-----BEGIN RSA PRIVATE KEY-----nMIIEogIBAAKCAQEAmvjImp15UwXayJS0Q3w75bZ7+h95is3gGFRrki94ix4/URkdL28hzO/s96yDn02MZMJGc7W+DNTWQAyCqJZWAkuHa73YrRBpoEHxQmTjEtTNbcc5oPP1nOz4xix3D3OzWI5fjIbLrnvrUFXtZkQJ/eVeeg4EeoLpfORIqMmdXR6IgKYHNJMLeExr1kvePNgBLLDvaZfSb0f58lhemhOd5ZnEeVff5gMUcoana2Piu9wh4yDC3TpUtqmUGOWC++uV0fThPMWDAsVj5g3SDm4GdWHalkcbkGUNbGknd07Z6rl16Q8Md6O+psrUs2eVDoiIVH64YtzsbMzV/z+S/bQV+l5pYwIDAQABAoIBADgnO3Ei7GpTn7cHOeD8XzhBffi7UptLP5IqMVGok/1XRgPne0r90UlgS+9eG0EGRX/hEWwuB45YtMWCgvmZd9LfEnVPN96xGDS//lO8M5WbWaxWDIfObUn0pNL+CLyYPM4Y8GI0v7rAZvS2Hg53SvOP4Brz51WJCBe0FEnvsujOas6xuqzNvRF1jV8/RvRHvWzULGpZN9AnLBEnWHIJrIj5mwPxvxPiJhr5EkW7wHiMLJe60T7nPqQzC7nfiMmq0XR2ddQ3zjADq/NLd5oUFP0XYNSPQmUkV3o8fOdl1ryx0qPif278WmrxapyaIRe4n3vGJt2O642MFzBvdpoKNIXD0jkkCgYEA3ijHNlgS9PZPFcAqjh9UC1caS+TudpT1sxEVN8zXgWLHnDVaTTlM0/ZMY6h6vOySLvS/ADPc9t6zkSTX/jtjmeuGbI0O5XifeH+WVLzIgXSpFc/UMVhipyB+anNOzN08vxIiGFvoNKTAGyrRSjnVtZMHygFGYyUtu1y4DnjQny9ccCgYEAspP+Sbk7M1vW99heDG6dnzM5FmXLclyIRxZyEX6fhe5EVFOqVi1aZM8x71DCXKACX/f4MCM+iUrlTF//NWu7qtK8ODkYzz+5Fnfh2kMGhd4LJpant8RzdumzhQ75uAPzqnRk8ML+ctYSQZbNAOZLB1aeodlylg/LODBtdYvmMRf4UCngYAhvS2r+io+251dH0cXOHjKFBthRU5V4f+Ch2iihdCAzOCQDQLoFUjp7coN3EUehUlXnQXcsjvEnRlSRLcs3BYfTR6oI7AMd4o4gZ/yFI2a432+W0bNi6/H0+5+uw/vqW4GufkrSiRvieSuKj6Tdg/8Cnlxq0nmSsIsP0OQpxZ/5nBwKBgAC2ECww/ahdtER2ayF3i09WfvZ2e6RqcVGtJuXOoFpCoKfdq0zLnwn5vUQruSpvRLMnJKjkawpW7wTX2QdYb33lqvQ6XfvtUApjW+2Fp+P29GChhZ4RNFzatCb16jA80nZ5gjFnRWYlrhruw9A+Goxj7uvMFuW8GF4X60etj/QgGVAoGAJuFae/DmSVMVCmu+ySjNGIKeFXQKnvun94xuGUGlaO6/MXcUDbkZMzAN1AAGLHWTVntC2kwh4V0YUlrdGl0H4lLxX8G9ZDANtk4+cCosen/UwsNyy2b4hogOsJfKym2knWTnFci62Dj8xsnDknkEgh/KCugnwzSqdeUuLSi0vlMDg=n-----END RSA PRIVATE KEY-----",
  "KeyName": "handson-cli-ssm-session-manager-keypair",
  "KeyPairId": "key-xxxxxxxxxxxxxxxxx"
}

コマンド:

cat ${FILE_TMP_EC2_KEY_PAIR} \
  | jp.py 'KeyMaterial' \
  | sed 's/\"//g' \
  | sed 's/\\n/\
/g' \
  > ${FILE_KEY_PAIR_SECRET} \
  && chmod 400 ${FILE_KEY_PAIR_SECRET} \
  && cat ${FILE_KEY_PAIR_SECRET} 

結果(例):

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAmvjImp15UwXayJS0Q3w75bZ7+h95is3gGFRrki94ix4/URkdL28hzO/s96yD\n02MZMJGc7W+DNTWQAyCqJZWAkuHa73YrRBpoEHxQmTjEtTNbcc5oPP1nOz4xix3D3OzWI5fjIbLr\nvrUFXtZkQJ/eVeeg4EeoLpfORIqMmdXR6IgKYHNJMLeExr1kvePNgBLLDvaZfSb0f58lhemhOd5Z\nEeVff5gMUcoana2Piu9wh4yDC3TpUtqmUGOWC++uV0fThPMWDAsVj5g3SDm4GdWHalkcbkGUNbGk\nd07Z6rl16Q8Md6O+psrUs2eVDoiIVH64YtzsbMzV/z+S/bQV+l5pYwIDAQABAoIBADgnO3Ei7GpT\n7cHOeD8XzhBffi7UptLP5IqMVGok/1XRgPne0r90UlgS+9eG0EGRX/hEWwuB45YtMWCgvmZd9LfE\nVPN96xGDS//lO8M5WbWaxWDIfObUn0pNL+CLyYPM4Y8GI0v7rAZvS2Hg53SvOP4Brz51WJCBe0FE\nvsujOas6xuqzNvRF1jV8/RvRHvWzULGpZN9AnLBEnWHIJrIj5mwPxvxPiJhr5EkW7wHiMLJe60T7\nPqQzC7nfiMmq0XR2ddQ3zjADq/NLd5oUFP0XYNSPQmUkV3o8fOdl1ryx0qPif278WmrxapyaIRe4\n3vGJt2O642MFzBvdpoKNIXD0jkkCgYEA3ijHNlgS9PZPFcAqjh9UC1caS+TudpT1sxEVN8zXgWLH\nDVaTTlM0/ZMY6h6vOySLvS/ADPc9t6zkSTX/jtjmeuGbI0O5XifeH+WVLzIgXSpFc/UMVhipyB+a\nNOzN08vxIiGFvoNKTAGyrRSjnVtZMHygFGYyUtu1y4DnjQny9ccCgYEAspP+Sbk7M1vW99heDG6d\nzM5FmXLclyIRxZyEX6fhe5EVFOqVi1aZM8x71DCXKACX/f4MCM+iUrlTF//NWu7qtK8ODkYzz+5F\nfh2kMGhd4LJpant8RzdumzhQ75uAPzqnRk8ML+ctYSQZbNAOZLB1aeodlylg/LODBtdYvmMRf4UC\ngYAhvS2r+io+251dH0cXOHjKFBthRU5V4f+Ch2iihdCAzOCQDQLoFUjp7coN3EUehUlXnQXcsjvE\nRlSRLcs3BYfTR6oI7AMd4o4gZ/yFI2a432+W0bNi6/H0+5+uw/vqW4GufkrSiRvieSuKj6Tdg/8C\nlxq0nmSsIsP0OQpxZ/5nBwKBgAC2ECww/ahdtER2ayF3i09WfvZ2e6RqcVGtJuXOoFpCoKfdq0zL\nwn5vUQruSpvRLMnJKjkawpW7wTX2QdYb33lqvQ6XfvtUApjW+2Fp+P29GChhZ4RNFzatCb16jA80\nZ5gjFnRWYlrhruw9A+Goxj7uvMFuW8GF4X60etj/QgGVAoGAJuFae/DmSVMVCmu+ySjNGIKeFXQK\nvun94xuGUGlaO6/MXcUDbkZMzAN1AAGLHWTVntC2kwh4V0YUlrdGl0H4lLxX8G9ZDANtk4+cCose\n/UwsNyy2b4hogOsJfKym2knWTnFci62Dj8xsnDknkEgh/KCugnwzSqdeUuLSi0vlMDg=
-----END RSA PRIVATE KEY-----

完了確認

「EC2キーペア"handson-cli-ssm-session-manager-keypair"が存在する。」ことを確認します。

コマンド:

aws ec2 describe-key-pairs \
  --query "KeyPairs[?KeyName == \`${EC2_KEY_PAIR_NAME}\`].KeyName" \
  --output text

結果(例):

handson-cli-ssm-session-manager-keypair

「秘密鍵"${HOME}/.ssh/handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1-ec2.pem"が存在する。」ことを確認します。

コマンド:

ls ${FILE_KEY_PAIR_SECRET}

結果(例):

${HOME}/.ssh/handson-cli-ssm-session-manager-keypair-XXXXXXXXXXXX-ap-northeast-1-ec2.pem

一時ファイルを削除します。

コマンド:

rm ${FILE_TMP_EC2_KEY_PAIR}

結果:

(出力なし)

手順の完了