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」をクリックする。

0118-1

0118-2

S3にバケット新規作成を確認する。

0118-3

以上です。

TOP