ヘプタゴンの技術ブログ

サーバ/ネットワーク/linux/AWSとか青森を拠点でやってます

ec2の起動時にElastic IPを自動割当

EC2ではインスタンスがstop/startする際に
固定IP(Elastic IP)が自動では割り振られないので、
それを自動でやるシェルを用意したときのメモ。

環境はCentOS6です。

ますは、api-toolsをインストール。

yum -y install java-1.6.0-openjdk
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
unzip ec2-api-tools.zip
mkdir /root/ec2keys/
mv ec2-api-tools-1.6.5.1 ec2-api-tools

弄りやすいように環境変数をセット。
環境に合わせて適宜変更。

vi .bashrc
------------------
export JAVA_HOME="/usr/"
export EC2_HOME="/root/ec2-api-tools"
export EC2_PRIVATE_KEY="/root/ec2keys/pk-xxxxxxxxx.pem"
export EC2_CERT="/root/ec2keys/cert-xxxxxxxxx.pem"
export EC2_URL="http://ec2.ap-northeast-1.amazonaws.com"
export PATH="${PATH}:${EC2_HOME}/bin"
------------------

. .bashrc

これでapi-toolsは使えるようになる。

Elastic IPの割当は、ec2-associate-address
Elastic IPの解除は、ec2-disassociate-address
で行える。

起動時に自動で行えるようにシェルを作成。

vi /etc/init.d/aws_elastic_ip
------------------
#! /bin/sh
##Shell For Associate Elastic IP##
###################################
EC2_ELASTIC_IP="IPアドレス"
EC2_INSTANCE_ID="インスタンスID"
###################################
export JAVA_HOME="/usr/"
export EC2_HOME="/root/ec2-api-tools"
export EC2_PRIVATE_KEY="/root/ec2keys/pk-xxxxxxxxx.pem"
export EC2_CERT="/root/ec2keys/cert-xxxxxxxxx.pem"
export EC2_URL="http://ec2.ap-northeast-1.amazonaws.com"
export PATH="${PATH}:${EC2_HOME}/bin"
###################################

case "$1" in
start)
echo "Associate Elastic IP"
ec2-associate-address $EC2_ELASTIC_IP -i $EC2_INSTANCE_ID >/dev/null 2>&1
;;

stop)
echo "Deassociate Elastic IP"
ec2-disassociate-address $ELASTIC_IP_ADDRESS >/dev/null 2>&1
;;
esac

exit 0
------------------

あとはこれを起動時に実行されるようにして設定完了。

chmod 755 /etc/init.d/aws_elastic_ip

ln -s /etc/init.d/aws_elastic_ip /etc/rc3.d/S98aws_elastic_ip
ln -s /etc/init.d/aws_elastic_ip /etc/rc0.d/K98aws_elastic_ip