pecoでSSM start sessionの対象を選ぶ¶
最近踏み台サーバーをやめて、AWS SSM(System Manager)のstart-sessionでノードに入るようにしています。(そもそもノードに入ることが少ないのですが)
でも、CLIでいっぱいノードがある中で一台選ぶのが大変なので、 peco を使って接続するノードを選ぶ簡単なスクリプトを作りました。
#!/bin/bash
# fetch Inventory from SSM
INVENTORY=$(aws ssm get-inventory --filters "Key=AWS:InstanceInformation.InstanceStatus,Values=Terminated,Type=NotEqual" --output json | jq -r '.Entities[].Id' )
# select with Tag.Name by peco
EC2=$(aws ec2 describe-instances --instance-ids $INVENTORY --output json \
--query 'Reservations[].Instances[*].{Id:InstanceId,Name:Tags[?Key==`Name`].Value}' | jq -r '.[][0] | (.Id) + " " + (.Name[0])' | peco)
# parse instance-id
INSTANCE_ID=$(echo ${EC2} | cut -f 1 -d " ")
aws ssm start-session --target ${INSTANCE_ID}
おしまい。
(12/17追記: Terminatedなインスタンスを排除するように修正)
Comments
comments powered by Disqus