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

Amazon AWS の IAM を使って、共有アカウントを止めよう

皆様の会社とかでもAmazon AWSを使っているかと思いますが、AWSマネジメントコンソールへのログイン時のID, Passwordをメンバー皆が知って共有状態になっていませんか? メンバーの異動や退社時にログインの制御が出来なくて困りますよね。 共有アカウントって嫌ですよね。 ってことで、各AWSのアカウントにユーザを複数登録し、ユーザごとにIDパスワードを設定できる Amazon IAM (Identity and Access Management) について紹介します。

Amazon AWSさんからの資料は http://aws.amazon.com/jp/iam/ を御覧ください。

おおよその使い方の流れは、このようになります。

  • IAMの利用開始申込み
  • グループの作成
  • 上記のグループに対する権限を設定
  • 上記のグループに含むユーザの登録。 ユーザIDはメールアドレス、パスワードは任意という具合。
  • 登録ユーザには IAM ログイン用のURLと、ユーザIDなどを伝える。
  • 登録ユーザは指定されたURLからログイン
  • すると、指定された範囲の権限で操作可能

AWS Management ConsoleからIAM に入る部分

まずはAWS マネジメントコンソールから IAM を選択します。

IAMのユーザ追加Wizard開始

ページ中のグループとユーザ追加をクリックすると、新しいグループとユーザの登録ができます。

グループ名の選択

まずはグループ名の入力。 スペースなどの文字が使えないので、その警告が表示されています。

グループの権限を設定

グループ権限の設定。 標準的に準備されているのは、 Administrator, Power User, Read only の3種類です。 例えばRead Onlyにすると、EC2のインスタンス停止などが出来ないアカウントとなります。 その他、利用できる各サービスを JSON形式で編集して、もっと細かい設定ができるようです。

ユーザの追加

このグループに追加するユーザを作成したり選択します。

IAMグループとユーザ一覧

登録などが進むと、グループとユーザ一覧が出てきます。 後の操作はここから実施すればよいでしょう。

Sign In URL

IAM 用 Sign In は通常と別ページになっています。 ここのURLをユーザに伝えてください。

Sign In URL にAliasを設定

Sign In URL の部分はアカウントの番号になっており、これに Alias を設定することも可能です。

IAM のログインページ

IAMのログインURLを開くと、このようなログインページになります。

幾つか使ってみて気づいたことは、こんな感じです。

  • グループの権限はホワイトリスト形式のようです。
  • 一人のユーザがグループAとグループBに属している場合、and/or の OR 形式で、どちらか一方または両方から与えられた権限が利用できます。
  • 私の場合、複数のAWSアカウントにログインする必要があります。 違うAWSアカウントにログインする場合には、その都度IAMのログインURLをコピペしてログインしています。
  • どのAWSアカウントにログインしているかは、AWSマネジメントコンソールの右上の部分をご確認ください。