#!/usr/bin/env bash # Retrieve list of AWS instances # Use enter to jump into their sessions with SSM # Specify AWS_PROFILE and AWS_REGION before running this script aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" | jq -r \ '.Reservations[] | .Instances[] | .InstanceId + " - " + (.PrivateIpAddress // "n/a") + " - " + (.PublicIpAddress // "n/a") + " - " + (.Tags // [] | from_entries | .Name // "n/a")' | fzf \ --height 100% \ --layout reverse \ --header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \ --preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \ --bind "enter:become(aws ssm start-session --target \$(echo {} | cut -d' ' -f1))"