pecoってAWS System Manager Session ManagerでEC2にアクセスする


SSHを使わずEC2にアクセスできることで話題になった(?)Session Manager

便利なんですが、いちいちコマンド打つのも面倒なので、pecoってみました。
即席なのでアドバイス頂けると歓喜します。

それでは行ってみましょう。

必要なもの

  • peco
  • aws-cli v1.16.12
  • aws ssm agent v2.3.50.0

こちらを参考にaws-cli, ssm agentをインストール/アップデートするといいと思います。
AWS Systems Manager Session Manager for Shell AccessでMacからLinux EC2インスタンスに端末でアクセスする

本題のssm-peco

  1. EC2のTag:Nameをpecoで一覧に出して選択
  2. 選択したTag:NameからInstance Idを取得
  3. ssm start-session
ssm-peco.sh
#!/bin/bash

# Tags.Name取得
export NAME_SSM2EC2=$(aws ec2 describe-instances \
    --query "Reservations[].Instances[].Tags[?contains(Key, \`Name\`)].Value[]" | \
    sed -e 's/[]" ,\[]//g' | \
    sed -e "/^$/d" | peco)

# instance-id取得
export ID_SSM2EC2=$(aws ec2 describe-instances --query "Reservations[].Instances[?contains(Tags[].Value, \`${NAME_SSM2EC2}\`)].InstanceId[]" | sed -e 's/[]" ,\[]//g' | sed -e '/^$/d')
aws ssm start-session --target ${ID_SSM2EC2}

使うとこんな感じ

  1. ./ssm-peco.shを実行

  2. 接続先を指定してEnter

さいごに

オンプレの踏み台使っているようなところはどういう対策をするのでしょうか。

CloudTrailで証跡取れるから要らなくなるのかな?