developer's diary

最近はc#のエントリが多いです

AWS SDK for PHPを利用して、awsインスタンスを定時起動させる(Elastic IPsの割り当て)

クラウド(aws)を利用して弾力性のあるシステムを構築する(入門) - 4丁目よりで記述した方法では起動したインスタンスにIPアドレスが割り当てられていない。IPアドレスを割り当てるにはassociate_address(AWS SDK for PHP 1.5.15)を使って行うようです。

前回の起動スクリプトを改造する。

<?php
/*
 *起動スクリプト ec2_start.php
 */

//ec2を操作する為のライブラリ読み込み
require_once("AWSSDKforPHP/sdk.class.php");

//アクセスキーの設定
define('AWS_KEY', 'アクセスキーIDを記述');
define('AWS_SECRET_KEY', 'シークレットアクセスキーを記述');

//EC2を操作する為のオブジェクト生成
$ec2 = new AmazonEC2();

//リージョンを変更(東京リージョン)
$ec2->set_region(AmazonEC2::REGION_APAC_NE1);

//EC2のインスタンスを起動
$result= $ec2->start_instances('インスタンスIDを記述');
if(!$result->isOK()){
    error_log("AWS起動失敗",1,"メールアドレス設定");
}

//ipアドレスを割り当てる(このタイミングで割り当てると失敗します・・・)
$r = $ec2->associate_address('インスタンスIDを記述', 'Elastic IPsで取得したIPアドレス');
if(!$r->isOK()){
    error_log("ipアドレス割り当て失敗",1,"メールアドレス設定");
}

参考
AWS SDK for PHP 1.5.15(associate_addressのドキュメント)