EC2 Scripts |
December 9th, 2024 |
| cli, tech |
.bashrc, but still make
my life a lot easier.
The first one is start_ec2:
alias start_ec2='aws ec2 start-instances --instance-ids i-NNNN'
I have an instance I do most of my work on, and this command starts it. Way better than logging into the AWS Console like I used to do.
After a few seconds I run:
function ssh_ec2() {
ADDR="$(aws ec2 describe-instances \
--instance-ids i-NNNN \
--query 'Reservations[].Instances[].PublicDnsName'
--output text)"
if [ $? != 0 ] || [ -z "$ADDR" ]; then
echo "Instance not running."
return
fi
scp "ec2-user@$ADDR:.full_history" \
/path/to/ec2-full-history-backup.txt
ssh "ec2-user@$ADDR"
}
This figures out the IP of the instance, copies down my (very important) full shell history, and logs me in over ssh.
I don't have a command for shutting down remotely: I just run
sudo shutdown -h now while logged in.
The last command, and probably my favorite, is
resize_ec2:
function resize_ec2j() {
aws ec2 modify-instance-attribute \
--instance-id i-NNNN \
--instance-type "$1"
}
For example, resize_ec2 c6a.xlarge or
resize_ec2 c6a.32xlarge. Depending on what I'm doing I
might need very different specs, and I don't want to pay $4.90/hr when
I only need a $0.15/hr machine. It does take a mildly annoying few
minutes for a machine that has just shut down to transition into a
state where you can resize it, but it's not too bad.
Comment via: facebook, lesswrong, mastodon, bluesky, substack