sitateruでサービス・プロダクトを担当している北爪です。
インフラを見ることもあり、ec2サーバーのアドレス管理についてCLIで行う方法を紹介します。
目的
ec2のインスタンスはアドレスが構築するたびに変わり、負荷や新しいプロジェクトが立ち上がると増えたり減ったりします。
そのため、動的にサーバーアドレスを取得する必要があります。
AWS consoleに入ることなく、awsコマンドからサーバーリストを取得し、CLI filterのpecoを使って、SSHまでおこないます。
使い方
Command+\
でpecoを起動
やじるしの ↑↓
か、キーワードで絞る
SSHするサーバーを選んでEnterを押す
SSHコマンドがはかれる
準備
zshを使っているのを前提に説明します。
必要ソフトのインストール
Shellの設定
ec2 コマンドを作る
AWS CLIから、ec2をリスト化するコマンドを作成し、shellに設定します。(zshrc)
alias ec2="aws ec2 describe-instances --query 'Reservations[].Instances[].{PublicDnsName:PublicDnsName,InstanceId:InstanceId,Tags:Tags[?Key==\`Name\`].Value|[0],InstanceType:InstanceType,State:State.Name}' --output table"
peco-ec2コマンドを作る
zshrc
にpeco-ec2
をつくります- ログインユーザーをdeployにしています
function peco-ec2 () {
local selected=$(ec2 | peco --query "$LBUFFER")
if [ -n "$selected" ]; then
BUFFER="ssh deploy@$(echo $selected | awk 'match($0, /ec2.*\.amazonaws\.com/) {print substr($0, RSTART, RLENGTH)}')"
zle accept-line
fi
zle clear-screen
}
- さらに、好きなキーにバインドします。
- ここでは、
Command-\
につけています
zle -N peco-ec2
bindkey '^\' peco-ec2
まとめ
ec2をリスト化し、すぐにそこからsshを選べるようにしました。