今回は、指定したEIPを自分自身(EC2)に付け替えるPHPスクリプトを紹介します。
#!/usr/bin/php require_once("/opt/aws/php/default/sdk.class.php"); define("EIP", "xxx.xxx.xxx.xxx"); $ec2 = new AmazonEC2(array( "key" => "ACCESS KEY", "secret" => "SECRET KEY" )); $ec2->set_region(AmazonEC2::REGION_APAC_NE1); $response = $ec2->disassociate_address(EIP); if(!$response->isOK()) { error_log("[" . $response->body->Errors->Error->Code . "] " . $response->body->Errors->Error->Message); } $response = $ec2->associate_address( file_get_contents("http://169.254.169.254/latest/meta-data/instance-id"), EIP ); if(!$response->isOK()) { error_log("[" . $response->body->Errors->Error->Code . "] " . $response->body->Errors->Error->Message); exit(1); } exit(0); ?>
もし、disassociate_addressで指定のEIPが他のEC2に付けられていたら外し、自分自身(EC2)に付け直すようにしています。
Heartbeat(Pacemaker)と連携させてみようと思います。