omuronの備忘録

個人的な備忘録

「ssm start-session コマンドを楽にする」をやってみた #AWSStartup

aws-startup-community.connpass.com

先日受講した「AWS Startup Tech Meetup Online #3」にて、ssm start-session を楽にするというのを紹介していたのでやってみました。

やってみる

macOS 10.15 のターミナル( zsh )で試してみます。

peco インストール

brew で楽にインストール。

brew install peco  

EC2 情報取得

ec2 describe-instances を利用して、「インスタンス ID」「名前」「プライベートIP」を取得する。

aws ec2 describe-instances --output text --query "Reservations[].Instances[].[InstanceId,KeyName,PrivateIpAddress]" 
i-0000000000000000  name1   172.31.30.76
i-9999999999999999  name2   172.31.21.225

追記
(Tags[?Key=='Name'].Value)[0] も、クエリに入れると名前が見えて良さそう。

peco で選択

peco をパイプでつなぐ。

aws ec2 describe-instances --output text --query "Reservations[].Instances[].[InstanceId,KeyName,PrivateIpAddress]"  | peco
QUERY>                                                      IgnoreCase [2 (1/1)]
i-0000000000000000  name1   172.31.30.76
i-9999999999999999  name2   172.31.21.225

選択したインスタンス ID を取得

awk で、 peco で選択したインスタンス ID だけを取得する。

aws ec2 describe-instances --output text --query "Reservations[].Instances[].[InstanceId,KeyName,PrivateIpAddress]"  | peco | awk '{print $1}'`
i-0000000000000000

SSM で接続

aws ssm start-sessiontarget に渡して、SSM で接続する。

aws ssm start-session --target `aws ec2 describe-instances --output text --query "Reservations[].Instances[].[InstanceId,KeyName,PrivateIpAddress]" | peco | awk '{print $1}'`

Starting session with SessionId: botocore-session-9999999-999999999999

いけました。
あとはこれを aliase にするなり、 function にするなりすれば使いまわせそうです。

セッション資料

かんたんコンテナロギング選手権

speakerdeck.com

AWS Systems Manager で実現する、 SSH レスでセキュアなクラウド運用

speakerdeck.com

AWSエンジニア特化のマッチングプラットフォームを開発した話

speakerdeck.com

セッションアーカイブ

youtu.be

所感

Kyash はお金を扱っているだけにセキュリティにはかなり気を使っているのがわかりました。
決済会社とはそれぞれ Direct Connect したりしてるんですね。
センシティブな情報も多くログの管理や、SSM の利用方法など参考になる情報が多く勉強になりました。