LambdaでPHPが動いた! PHP Layer For AWS Lambdaを使って、kokexaの画像を動的にランダム表示 #reInvent #kokexa #lambda #php

AWS運用自動化サービス「Cloud Automator」

http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/11/kokexa_top.png
 こんにちは、サーバーワークスのこけしの人、坂本(@t_sakam)です。
 
 re:Invent 2018のキーノートでLambdaの「Custom Runtimes」と「Layers」が発表されました。これにより、AWS公式での言語サポートではありませんが、パートナーの「Stackery」が公開している「PHP Layer For AWS Lambda」を使うことで、LambdaPHPが使えるので、簡単に試してみたいと思います。
 
 LambdaとPHPを使って、先日デビューした「New kokexa dot」、通称「ejixa」の画像を動的にランダム表示するページを作ってみたいと思います。

New kokexa dotについてはこちら

【Alexa】えじこってなぁに? New kokexa dot「ejixa」デビュー! #こけしクイズ スキルを作る(1) #Alexa #kokexa #こけし

手順

 「PHP Layer For AWS Lambda」に書いてある手順を参考に、足りないところは足しつつ進めてみます。

PHPをインストール

 開発環境のEC2にPHPが入っていませんでしたので、yumでインストールします。バージョンは、7.1です。

SAMをインストール

SAMも使ったことがなかったので、インストールします。

デプロイ用のS3バケットを作成

開発用のディレクトリを作成して中へ

template.ymlファイル作成

 中身は、「PHP Layer For AWS Lambda」に載っているtemplate.ymlそのままです。

以下の構造になるようにディレクトリを追加

kokexa-phpディレクトリの構造

index.phpの作成

 「xxx-xxx」というS3バケットにkokexaの画像が2枚置かれているイメージです。この2つをランダムに切り替えます。

デプロイ

アクセス

 API Gatewayのマネジメントコンソールで発行されたURLを確認して、アクセスしてみます。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/11/api.png
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/11/new_kokexa_dot_01.png
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/11/new_kokexa_dot_02.png
 「https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/index.php」にアクセスすると、S3に置かれた2枚のkokexaの画像のどちらかが表示されるようになりました。
 

まとめ

 今回は、「PHP Layer For AWS Lambda」を使って、LambdaでPHPを動かしてみました。これで、新しいkokexa dotの画像を簡単にランダムに表示できるようになりましたね!

 PHPはHTMLの中に簡単にコードを入れられるので、今回のようなちょっとした動的ページがこれからはLambdaでサクッと作れますね!

 いや〜、「PHP Layer For AWS Lambda」って本当にいいものですね!

AWS運用自動化サービス「Cloud Automator」