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にバケット新規作成を確認する。
以上です。