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