LoginSignup
5
2

また馬鹿なことを・・・

AWSって普通に使ってたらどんどんお値段が上がっていきますよね?我々のような弱小勢力にはお財布に大変厳しいことになりかねません。安くむしろ無料でどうにかなりませんかね、AWSさん・・・。
考えました。
そうだ、lambdaなら私達の無理難題を解決してくれるはずだ。

そもそも論としてlambdaでphpは動くのか

動きません。非推奨です。ただしカスタムランタイムをつかったりdockerイメージをデプロイしたりすれば使えます。でもめっちゃ面倒くさいですよね・・・。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-custom.html

lambdaだと何が嬉しいのか

  1. サーバ管理しなくてよい
  2. アクセス増えても勝手にスケールしてくれる
  3. 安い(限りなくゼロに近づけることが可能とおもわれ)

そこでbrefの出番です

brefをつかえば、一瞬にしてlaravelアプリケーションをlambdaにデプロイできます。
https://bref.sh/

まずはlaravelプロジェクトを

いつもの

composer create-project laravel/laravel myapp

最低限Laravelが動くように

cd myapp
cp .env.example .env
php artisan key:generate

aws cliのセットアップはがんばって

aws configure

serverlessコマンドも必要

npm install -g serverless

brefをインストール

composer require bref/bref bref/laravel-bridge --update-with-dependencies
php artisan vendor:publish --tag=serverless-config

serverless.ymlができるのでちょっとだけ修正

↓これはまあいじってもいじらなくてもどっちでもいいですけど

region: ap-northeast-1

これ以上は特になにもしなくても動きます。

デプロイ

sls deploy

これだけ!あとは裏でcloudformationが動いて、API Gatewayとlambdaを設定してデプロイしてくれます。最後にこのURLねって教えてくれるのでそこにアクセスすればLaravelのwelcomeページが表示されると思います。

注意点

ディスクには書き込めませんという大前提で。

  1. セッションはElastiCacheかCookieで
    • ElastiCacheにするとコストがかかる
  2. DBはS3にCSVとかおくかRDS(Aurora)で
    • RDSにするとコストがかかる
  3. 画像ファイルなどはS3におかなきゃいけない
  4. アクセスがないとコールドスタンバイ状態になるので上がるまで多少時間必要
    • 応答スピードが求められるサービスには不向きかも
  5. 実サービスに使えるのかどうかは吟味が必要

まとめ

ちょっとしたアプリケーションを限りなく無料で公開したい場合は、brefをつかったlaravelをlambdaにデプロイはとても使える手段ではないかと思います。lambdaのためにnodeとかpythonとか勉強したりせなあかんとか、それに付随するであろうフレームワーク覚えたり結構ハードルがあがると思います。

普段からlaravel書いてる人であれば、そのままデプロイできるというのはとても楽ですよね。あとはそれが実運用に耐えられるのかどうかを見極めれば実際のサービスでも使えなくはないのかななんて思いました。

ぜひ一度このlambdaでlaravelが動く感動を味わってみてください。

5
2
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
5
2