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で付けた名前をサーバー内から取得する

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

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