22
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPAdvent Calendar 2016

Day 1

serverless frameworkでPHPを使用する

Last updated at Posted at 2016-12-01

公式にサポートはされていませんが、AWS LambdaでPHPを動かすことは可能です。
Linux用のPHP本体をアプリケーションと一緒にアップロードすることで、AWS LambdaでPHPのアプリケーションを動かすことができます。
といったことを、去年のAdvent CalendarやらPHPカンファレンスのLTで紹介しました。
しかし、これらを自分で一からやろうとすると、ちょっと面倒です。
カジュアルに用意できればいいのになーと思っていたところ・・・

Serverlessフレームワーク用のプラグイン serverless-php が先月に公開されました。
開発元のブログ→ http://blog.zerosharp.com/the-serverless-framework-and-php/
github→ https://github.com/ZeroSharp/serverless-php
これを使えば、簡単に、AWS LambdaでPHPを動かすことができます。

serverless-php の使い方

事前準備

アプリケーションの構築から実行まで

1. テンプレートの展開

serverless-phpのテンプレートを展開
[prompt]$ sls install --url https://github.com/ZeroSharp/serverless-php

2. serverless.yml の編集(必要であれば)

デフォルトでは、アイルランドリージョンに展開するように記述してあります。
日本リージョンに展開するように書き換えます。

serverless.yml
(前略)
provider:
  name: aws
  runtime: nodejs4.3
  region: ap-northeast-1
(後略)

3. デプロイ

アクセスキー、シークレットキーには、事前準備で生成したCredentialの情報を入力します。

アプリケーションのデプロイ
[prompt]$ AWS_ACCESS_KEY_ID=AKI********* \
AWS_SECRET_ACCESS_KEY=*********** \
sls deploy

デプロイに成功すると、APIのエンドポイントなどの情報が出力されます。

4. 実行

作成されたエンドポイントに対して、リクエストを行います。

デプロイしたアプリケーションの実行
[prompt]$ curl -i https://******.execute-api.ap-northeast-1.amazonaws.com/dev/hello

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 74
Connection: keep-alive
Date: Thu, 01 Dec 2016 10:50:05 GMT
x-amzn-RequestId: 892d80e2-b7ab-11e6-8ed0-8b69baa26de7
X-Amzn-Trace-Id: Root=1-583ff24d-e749cf3e97cb5ef4e73c2783
X-Cache: Miss from cloudfront
Via: 1.1 2587f87ca37d9b8f8c0f687522eec7f6.cloudfront.net (CloudFront)
X-Amz-Cf-Id: xGZWHF9VKDd1pJnMAHhck4R5uT5BFnZ5raZe3sajdpvFwqm2fFKSpg==

{"message":"Go Serverless v1.0! Your PHP function executed successfully!"}

このように簡単な手順で、アプリケーションを作成することができます。

任意のバージョンのphpを使用したい場合

PHPをビルドするためのdockerfileが同梱されていますので、それを編集し、動かせば、好きなバージョン・好きなビルドオプションのphpを使用することができます。

アプリケーションによっては、うまく動かない場合がある

動かしたいアプリケーションによっては、必要なライブラリがAWS Lambda上に無いなどの理由で、エラーが発生してしまうことがあります。
そのような場合には、必要なライブラリもアップロードする必要があります。
ライブラリのアップロード・使用については、こちらが参考になるかもしれません。

22
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?