AWS EC2 での bash プロンプトに、設定したEC2 Instance Nameを表示する

「ログインしたEC2 instance のプロンプトには Private IP address ベースのホスト名が表示されているだけで、どのマシンにログインしたのかパット見では分からない。なんとかならない?」という相談を受けたので、いろいろと考えてみた。

結論からすれば、EC2 Instance を立ち上げる時にホスト名をつけたり、Tagをつけたりするので、それを bash のプロンプトに表示させてしまえばOKだろう。
ということで、

  • EC2 Instance のIAMロールで、AmazonEC2ReadOnlyAccess を割り当てる。
  • /etc/profile.d/instance_name.sh に、下記のようなものを置いてみた。
#!/bin/bash

# get availability zone name
z="$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//g')"

# get instance-id myself
instance_id="$(curl -s http://169.254.169.254/latest/meta-data/instance-id/)"

# get Name from tags
aws_tag_name="$(aws --region $z ec2 describe-instances --instance-ids $instance_id --output text --query 'Reservations[].Instances[].Tags[?Key==`Name`].[Value]')"

PS1="[\u@\h ${aws_tag_name} \W]\n\$ "

元ネタ: EC2インスタンスにtagで付けた名前をサーバー内から取得する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください