2016年10月28日金曜日

AWS SDK for PHP

PHPから手軽にAWSの情報にアクセスして操作できるのは非常に楽です。
よくあるタグでEC2インスタンスを検索する方法を紹介。
検索で出てくる情報が古い(非推奨)だったりなので、書き止めます。

公式リファレンス
https://aws.amazon.com/jp/sdk-for-php/

composerを使わない手軽な方法は、pharファイルを使う事です。
pharは、PHPのクラスファイル群を1ファイルにまとめたライブラリです。
右のインストールボタン[AWS SDK for PHP]を押すと、説明ページが出てきて、そこにダウンロードリンクがあります。

require 'aws.phar';

$config = array(
   'region' => 'ap-northeast-1', //東京リージョン指定
   'version' => 'latest', //Service APIsにあるAPI Version。latestだとアップデートで動かなくなるから注意
);
$client = new Aws\Ec2\Ec2Client($config); //EC2操作なので、EC2のクライアントをインスタンス化
$result = $client->describeInstances(array(//インスタンスの詳細情報を取得
   'Filters' => array( //検索条件を指定
      array(
         'Name' => 'instance-state-name',
         'Values' => array('running'), //起動中インスタンス指定
      ),array(
         'Name' => 'tag:Name', // タグキー名が Name
         'Values' => array('hoge'), /./ 値が hoge
      ),
   ),
));
$reservations = $result['Reservations'];
foreach ($reservations as $reservation) {
   $instances = $reservation['Instances'];
   foreach ($instances as $instance) {
      // ここでインスタンスごとの情報を使った処理ができます 
   }
}
ロードバランサを使っていても、各インスタンスのローカルIPを引っ張ってきてrestによる操作なんてことも手軽で良いですね。
詳しくは APIリファレンス に全て書かれていますが、全て英語です。