aws-startup-community.connpass.com
先日受講した「AWS Startup Tech Meetup Online #3」にて、ssm start-session を楽にするというのを紹介していたのでやってみました。
接続先が明示的にわかるからミスも減りそうだしこれ真似したい #AWSStartup pic.twitter.com/MAXTqTRabu
— おむろん (@omuron) 2021年3月25日
やってみる
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-session
の target
に渡して、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
にするなりすれば使いまわせそうです。
セッション資料
かんたんコンテナロギング選手権
AWS Systems Manager で実現する、 SSH レスでセキュアなクラウド運用
AWSエンジニア特化のマッチングプラットフォームを開発した話
セッションアーカイブ
所感
Kyash はお金を扱っているだけにセキュリティにはかなり気を使っているのがわかりました。
決済会社とはそれぞれ Direct Connect したりしてるんですね。
センシティブな情報も多くログの管理や、SSM の利用方法など参考になる情報が多く勉強になりました。