AWS EC2 の初期設定

AWS EC2 の初期設定で実施したことをまとめておこうと思います。

yum のアップデート

AWS に初めてログインすると、「Run "sudo yum update" to apply all updates.」と出力されるので、yum を
アップデートします。

# yum update -y

作業ディレクトリの作成

続いて、local で作業するためのディレクトリを作成します。

$ mkdir -p ~/usr/bin
$ mkdir -p ~/usr/projects
$ mkdir -p ~/usr/src
$ mkdir -p ~/usr/tmp
$ echo "export PATH=~/usr/bin:\${PATH}" >> ~/.bashrc

ssh のポート変更

WELL KNOWN PORT NUMBERS の 0 〜 1023 番以外の任意のポート番号に変更します。

# vim /etc/ssh/sshd_config
#Port 22
  ↓
Port 14022

上記のように変更したら、sshd を再起動して、設定を反映させます。
また、Security Groups に変更したポート番号を追加し、22(SSH)を削除して、『Apply Rule Changes』
ボタンをクリックします。

f:id:somathor:20130503181440j:plain

サーバ再起動時に EIP を自動でセットする

以下のサイトを参考にさせていただき、EC2インスタンス起動時にEIP(固定IP)が自動でセットされるように設定します。

EC2 API Tools のインストール

Amazon EC2 API Tools : Developer Tools : Amazon Web Services

上記URLから Amazon EC2API Tools(ec2-api-tools.zip)をダウンロードし、以下の手順でインストールします。

# yum install -y java-1.7.0-openjdk
# unzip ec2-api-tools.zip
# mv ec2-api-tools-1.6.7.2 /usr/local/bin/
# ln -s /usr/local/bin/ec2-api-tools-1.6.7.2 /usr/local/bin/ec2-api-tools
秘密鍵とX.509証明書の取得

以下のURLから取得します。
Amazon Webサービス – [アカウント/コンソール] – [セキュリティ証明書]

  • 秘密鍵:pk-*****************************.pem
  • 証明書:cert-******************************.pem

これらをEC2 インスタンスの適当なパスに置きます。

/home/ec2-user/ec2keys
├── cert-******************************.pem
└── pk-*****************************.pem
環境変数の設定

.bashrc に以下を追加し、設定を反映させます。

$ vim ~/.bashrc
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre"
export EC2_HOME="/usr/local/bin/ec2-api-tools"
export EC2_PRIVATE_KEY="~/ec2keys/pk-********************************.pem"
export EC2_CERT="~/ec2keys/cert-********************************.pem"
export EC2_URL="https://ec2.us-west-2.amazonaws.com"
export PATH="${EC2_HOME}/bin:${PATH}"

$ source ~/.bashrc
EC2 API の確認

EC2 API が使用できるか確認します。

$ ec2-describe-regions
REGION  eu-west-1       ec2.eu-west-1.amazonaws.com
REGION  sa-east-1       ec2.sa-east-1.amazonaws.com
REGION  us-east-1       ec2.us-east-1.amazonaws.com
REGION  ap-northeast-1  ec2.ap-northeast-1.amazonaws.com
REGION  us-west-2       ec2.us-west-2.amazonaws.com
REGION  us-west-1       ec2.us-west-1.amazonaws.com
REGION  ap-southeast-1  ec2.ap-southeast-1.amazonaws.com
REGION  ap-southeast-2  ec2.ap-southeast-2.amazonaws.com
EIP を確保する

割り当てるEIPが確保されていない場合は、EC2 API を使用して、EIPを取得します。

$ ec2-allocate-address 
ADDRESS ***.***.***.***    standard
EIP を自動設定するためのシェルスクリプトを作成する

~/usr/bin ディレクトリ配下に、以下の内容のシェルスクリプトを作成します。

#!/bin/sh
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre"
export EC2_HOME="/usr/local/bin/ec2-api-tools"
export EC2_PRIVATE_KEY="~/ec2keys/pk-********************************.pem"
export EC2_CERT="~/ec2keys/cert-********************************.pem"

INSTANCE_ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`
EIP=***.***.***.***
REGION=us-west-2

${EC2_HOME}/bin/ec2-associate-address -i ${INSTANCE_ID} ${EIP} --region ${REGION}

ファイル作成後、chmod で実行権限を与えて実行してみて、EIPが設定されるか確認します。

$ source ~/usr/bin/set-eip
ADDRESS ***.***.***.***    i-********
サーバ再起動時に EIP を自動でセットする

サーバ再起動時に自動で実行させるために cronを使用します。

# crontab -e
@reboot /bin/sh ~/usr/bin/set-eip

再起動時して、EIPが自動でセットされるか確認します。
設定したEIPでインスタンスにアクセスできれば完了です。