AWS SDKを検証する為、軽くAmazonLinuxを使ってWebサーバを立ち上がってAWSのAPIとの連携を試しました。
- IAM Role作成
まず、EC2インスタンスにAWSへのアクセス権限を付与する為、IAMロール「Role-WebServer」を作って下記ポリシーを付けます。
信頼ポリシー(EC2インスタンスをPrincipalにする)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ロールポリシー(S3フールアクセス権限付与)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
- LAMPサーバ構築
「Role-WebServer」を使用してAmazon Linux EC2インスタンスを起動してLAMP構築手順に従ってLAMP環境を構築する。
システムのタイムゾーンを東京時間に設定する。
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
php設定ファイルのタイムゾーンを東京時間に設定する。
$ sudo vi /etc/php.ini ;date.timezone = ⇒ date.timezone = "Asia/Tokyo"
Apacheを再起動する。
$ sudo service httpd restart
- AWS PHP SDKをダウンロードする
下記コマンドラインでPHP SDKをインストールする。
Gitをインストールする
$ sudo yum install git -y
サンプルプロジェクトをダウンロードする。
$ git clone https://github.com/awslabs/aws-php-sample.git
続いてAWS PHP SDKをインストールする。
$ cd aws-php-sample $ curl -sS https://getcomposer.org/installer | php $ php composer.phar install
- 開発作業
下記手順でWebアプリを作成する。
検証ページファイル新規作成。
$ sudo vim /var/www/html/index.php #新規作成 <!DOCTYPE html> <html> <body> <form action="webtest.php" method="post"> BucketName: <input type="text" name="bucketname"><br> <input type="submit" value="submit"> </form> </body> </html>
AWS PHP SDKファイルを/var/www/html/の直下に置く。
$ cp -R ~/aws-php-sample/vendor/ /var/www/html/
Webサーバ処理プログラムwebtest.php作成。
$ sudo vim /var/www/html/webtest.php
#新規作成
<html>
<body>
<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
$client = S3Client::factory();
$bucket = $_POST["bucketname"];
echo "Creating bucket named {$bucket}\n";
$result = $client->createBucket(array(
'Bucket' => $bucket
));
?>
</body>
</html>
/var/www/html/下のファイルオーナーとグループを「apache」にする。
$ sudo chown -R apache:apache /var/www/html/
- 実行
ウェブブラウザに「EC2インスタンスのPublic DNS/index.php」を入力して、バケット名を指定して「submit」をクリックする。
S3にバケット新規作成を確認する。

以上です。

