AWS EC2 のインスタンス情報をPHPを用いて取得する方法として、AWS SDK for PHP を用いたPHPスクリプト実行までを記載しています。
AWS SDK for PHP2 という、より新しいバージョンも出ていますが、まだEC2に対応していないみたいですので、今回はAWS SDK for PHP を用いています。
1.PHP環境の確認
私の環境は、PHP 5.4.x をソースからインストールして使っています。
AWS SDK for PHP では、configure オプションで「–with-curl」が必要になります。このオプションを指定していなかったので、インストールをやり直しました。
2.AWS SDK for PHP を入手
SDKの入手方法はいくつかありますが、今回はGitを用いて入手しました。
# git clone git://github.com/amazonwebservices/aws-sdk-for-php.git AWSSDKforPHP (中略) Resolving deltas: 100% (862/862), done. # ls AWSSDKforPHP #
結構簡単です。
3.SDK の Security Credentials を設定
AWS マネジメントコンソールから自分の「Access Key ID」と「シークレットアクセスキー」を手元のメモ帳にでも控えておきます。
次に、先ほど入手した「AWSSDKforPHP」ディレクトリの中にあるconfigサンプルファイルを元に、「config.inc.php」をコピーします。
# ls AWSSDKforPHP # cd AWSSDKforPHP/ # cp config-sample.inc.php config.inc.php
次に、config.inc.php に「Access Key ID」と「シークレットアクセスキー」をセットします。以下の箇所に正しい値を設定します。
'key' => 'development-key', 'secret' => 'development-secret',
以上の情報で、自分のAWS情報にアクセスできるようになります。
4.サンプルPHPスクリプト
東京リージョンで動かしているEC2インスタンスの情報を取得するPHPスクリプト(sample.php)です。
<?php require_once('AWSSDKforPHP/sdk.class.php'); $regions = array( AmazonEC2::REGION_TOKYO, ); $ec2 = new AmazonEC2(); foreach ($regions as $region) { $ec2->set_region($region); $response = $ec2->describe_instances(); if (!empty($response->body->reservationSet->item)) { foreach ($response->body->reservationSet->item as $item) { printf("[%s] %s %s".PHP_EOL, $region, $item->instancesSet->item->instanceId, $item->instancesSet->item->instanceType); } } } ?>
2個のEC2インスタンス(micro)を動かしている場合は、実行時に以下のように表示されます。
# php sample.php [ec2.ap-northeast-1.amazonaws.com] i-c82d7bcd t1.micro [ec2.ap-northeast-1.amazonaws.com] i-f0d3e9f2 t1.micro #
ちゃんと表示されます!
今後、色々やってみたいと思います。