LoginSignup
4
2

More than 5 years have passed since last update.

awsで固定管理していない(auto-scaling)サーバーにpecoで選択してsshしたい(.ssh/configの更新はしたくない)

Last updated at Posted at 2017-01-08

本番のwebサーバー等を適当に選んでsshしたいときがあったのでshellを書きました。

概要

image

aws-cli,peco,awkに依存
webサーバーについているtag Name(webB,webC)で絞り込む
web稼働しているやつでも絞り込む(state=running)
iam role等でdescribe-instancesが実行できるようにしておく必要あり
instance-idとprivate-ipを表示しているが、private-ipだけでいい、見た目の問題

.bashrc

# .bashrcに書き込めば使えるはず
function webssh () {
  host=$(aws ec2 describe-instances --filters "Name=tag-value,Values=webB,webC" "Name=tag-key,Values=Name" "Name=instance-state-name,Values=running" --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress]" --output text | peco | awk '{print $2}' | xargs -n 1)
  ssh -i ~/.ssh/hoge.pem $host
}
aws-cli部分
aws ec2 describe-instances \
  --filters \
    "Name=tag-value,Values=webB,webC" "Name=tag-key,Values=Name"\
    "Name=instance-state-name,Values=running"\
  --query \
    "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress]"
  --output text

参考

AWS Cli自分用Tips
AWS CLIのフィルターとクエリーの使い方についてまとめてみた
AWS CLIを使ってEC2インスタンスの情報を取得する

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2