インフラ

pecoを使ってSSMセッションマネージャー経由のEC2接続を簡単にする

ssm

こんにちは、ちゃりおです。

SSMセッションマネージャー便利ですよね。

接続にインスタンスIDが必要です。
しかし、インスタンスIDを覚えておいたりどこかに書いておくのは面倒です。

毎回awscliで取得してきてもいいのですが、pecoを使ってインスタンスを選択できるようにしてみました。

Contents

pecoを使ったSSMセッションマネージャー経由のEC2接続

デモとやり方です。

デモ

ssmsession_resize

事前準備

以下のインストールが必要です。

シェルスクリプトと解説

INSID=$(aws ec2 describe-instances --output=text \
  --query 'Reservations[].Instances[].{id:InstanceId,ip:PrivateIpAddress,name:Tags[?Key==`Name`].Value|[0]}' \
  | peco | cut -f -1)
aws ssm start-session --target $INSID

awscliが便利でシンプルにできました。
絞り込みにはjqを使ってもいいですが、今回やりたい事的にはqueryで十分でした。

ざっくり解説します。

まずdescribe-instancesでEC2のインスタンスIDをプライベートIP、Nameのタグを取得しています。

describe-instanceだけ実行するとこんな感じです。

aws ec2 describe-instances --output=text \
  --query 'Reservations[].Instances[].{id:InstanceId,ip:PrivateIpAddress,name:Tags[?Key==`Name`].Value|[0]}'
i-0XXXXXXXXXXXXXXXX     172.31.XX.XX   hoge
i-0XXXXXXXXXXXXXXXX     172.31.XX.XX    hoge

この結果をpecoに渡して、選択できる形にしました。

ssm start-sessionには、EC2インスタンスIDが必要なためpecoで受け取った結果からインスタンスIDだとを抜き出しています。
最後に、受け取ったインスタンスIDを使ってSSMで接続しています。

まとめ

pecoを使って、インスタンスIDを選択してSSMできるようにしてみました。
1から作ると大変そうですが、pecoやawscliなど便利なツールのおかげで簡単に実現できました。

Aamzonで「AWS」の本を見てみる

楽天で「AWS」の本をみてみる!!

awsロゴ
AWS SSO環境でaws2-wrapを使ってCDK実行時の認証情報コピペを不要にするこんにちは、ちゃりおです。 CDKを使うことがあるのですが、現状CDKはSSOのprofileに対応していません。(2021年3月時点...
ECR
ECRにイメージをpush/pullするときに便利なawscliコマンドこんにちは、ちゃりおです。 今回は、ECRにdockerイメージをpush/pullする際に便利なawsコマンドについてです。 aw...
aws ssm
AWS SSMセッションマネージャTips AWS CLIこんにちは、ちゃりおです。 SSMセッションマネージャを使えば、EC2インスタンスにSSH不要で入れます。 マネジメントコンソールから...