2013年1月30日水曜日

EC2(VPC)の"Public IP"と"Private IP"を同時に切り替えるスクリプト

スズキです。

下記で紹介した切り替えはAWSコンソール上で手動で行うものでしたが、
EC2(VPC)の"Public IP"と"Private IP"を同時に切り替える
当然、APIが提供されているAWS、切り替えスクリプトも作成してみました。

まずは切り替え対象の二つのEC2のENIの確認です。

【アクティブEC2】


【スタンバイEC2】


上記の状態で、スタンバイEC2にて下記のスクリプトを、
#!/bin/sh

AZ=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
REGION=`echo $AZ | cut -c 1-$((${#AZ} - 1))`
MAC=`curl -s http://169.254.169.254/latest/meta-data/mac`
INTERFACE_ID=`curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/interface-id`

aws --region $REGION ec2 assign-private-ip-addresses \
--network-interface-id $INTERFACE_ID \
--private-ip-addresses 10.10.8.200 \
--allow-reassignment
次のように実行してみます。
# ./test.sh 
{
    "return": "true", 
    "requestId": "ddccfc4b-b387-4cbc-9161-718e6d96572b"
}
※Python版AWSコマンドラインツールを"IAM Role"で利用しています。
Python版AWSコマンドラインツールをCentOS6で使ってみた

すると、次のようにスタンバイEC2に両IPアドレスが移っています。


あとは、フェイルオーバースクリプトに組み込むだけ...
--------
http://www.suz-lab.com

0 コメント: