Lazuli

らずり

AwsClientManager for PHP というライブラリを作った

What is AwsClientManager

app2641/AwsClientManagerForPHP · GitHub

AwsClientManager は PHPAws を操作する AWS SDK for PHP2 (以下、SDK)ライブリを容易に操作するためのライブラリ。

SDK には豊富な API が実装されていて Aws のサービスをプログラマブルに扱うことが出来る。
例えば EC2 を操作したい場合、クライアントクラスを factory メソッドを介してインスタンス化して処理を行う。

<?php
use Aws\Ec2\Ec2Client;

$ec2 = Ec2Client::factory(array(
    'key' => 'your_aws_access_key',
    'secret' => 'your_aws_secret_key',
    'region' => \Aws\Common\Enum\Region::TOKYO
));
$images = $ec2->describeImages();

Aws のサービスを簡単に使えるけど、Aws の恩恵をふんだんに受けているプロジェクトだとインスタンス化にいちいちキーやリージョン指定しないといけなくて面倒くさい。
AwsClientManager はクライアントクラスのインスタンス化を簡単に行える。

<?php
use Acm\Acm;

$ec2 = Acm::getEc2();
$images = $ec2->describeImages();

こんな感じ。

Install and Usage

インストールは Composer を使用する。
下記の composer.json を生成して、

{
    "require": {
        "app2641/aws-client-manager": "*"
    }
}

コマンドラインでインストールする。

$ composer.phar install

AwsClientManager ではアクセスキーなど Aws の接続に関わる情報を環境変数に入れて使用している。Aws のコマンドツール使ってる人などは既に設定してあるだろう。

$ export AWS_ACCESS_KEY_ID=your_aws_access_key
$ export AWS_SECRET_ACCESS_KEY=your_secret_key
$ export AWS_DEFAULT_REGION=your_region

環境変数が用意できれば Acm\Acm クラスを読み込んで使用出来る。
主要なクライアントは呼び出せるようにしてある。
第一引数に配列で設定値を与えてあげればリージョンなど上書きすることも可能。

<?php
use Acm\Acm;

$s3 = Acm::getS3(array('region' => \Aws\Common\Enum\Region::NORTHERN_VIRGINIA));
$response = $s3->getObject(....);

Aws クライアント使うのが少々楽になる。