こんにちは、ちゃりおです。
SSMセッションマネージャー便利ですよね。
接続にインスタンスIDが必要です。
しかし、インスタンスIDを覚えておいたりどこかに書いておくのは面倒です。
毎回awscliで取得してきてもいいのですが、pecoを使ってインスタンスを選択できるようにしてみました。
pecoを使ったSSMセッションマネージャー経由のEC2接続
デモとやり方です。
デモ
事前準備
以下のインストールが必要です。
シェルスクリプトと解説
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など便利なツールのおかげで簡単に実現できました。
AWS SSO環境でaws2-wrapを使ってCDK実行時の認証情報コピペを不要にするこんにちは、ちゃりおです。
CDKを使うことがあるのですが、現状CDKはSSOのprofileに対応していません。(2021年3月時点...
ECRにイメージをpush/pullするときに便利なawscliコマンドこんにちは、ちゃりおです。
今回は、ECRにdockerイメージをpush/pullする際に便利なawsコマンドについてです。
aw...
AWS SSMセッションマネージャTips AWS CLIこんにちは、ちゃりおです。
SSMセッションマネージャを使えば、EC2インスタンスにSSH不要で入れます。
マネジメントコンソールから...