Pocket

AWS SDK for PHP を用いて、EC2インスタンス情報を取得する方法

  • add this entry to hatena bookmark

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
#

ちゃんと表示されます!

今後、色々やってみたいと思います。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。