laravelをlambaにデプロイ簡単っていう人の嘘つき!!

2024/03/30に公開

めちゃ簡単でした

awsわからなすぎてlambaにデプロイすることすら詰まったので、詰まったこととその解消法を書いていきます。

デプロイに至るまで

https://ma-vericks.com/blog/serverless-laravel-app/ 
↑こちらの記事のとうりに進めていきました。デプロイまでは進めていけば問題ないのですが、、、

環境

amazon linux 2
laravel 9

デプロイできたのに、、

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.2.0".
You are running 8.1.27. in /var/task/vendor/composer/platform_check.php on line 24

phpのバージョンが足りてないよっていうエラー。
ああ、終わった、、色々やってましたが一生ハマる、、

解決法

ファイルを以下通りに変更

serverless.yml
service: laravel

provider:
  name: aws
  region: ap-northeast-1
  runtime: provided.al2
  environment:
    APP_ENV: production

package:
  patterns:
    - '!node_modules/**'
    - '!public/storage'
    - '!resources/assets/**'
    - '!storage/**'
    - '!tests/**'

functions:
  web:
    handler: public/index.php
    # runtime: php-81-fpm ここをコメントアウト
    layers:
        - ${bref:layer.php-82-fpm}
    timeout: 28
    events:
      - httpApi: '*'

  artisan:
    handler: artisan
    # runtime: php-81-fpm ここをコメントアウト
    layers:
        - ${bref:layer.php-82-fpm}
    timeout: 720

plugins:
  - ./vendor/bref/bref

起こっていたこと(多分)

そもそもlambaではlaravel(PHP)はそのまま動かせない(=ランタイムサポート対象外)。
brefっていうAWS Lambda 用の PHP ランタイムを使うことで動いてる。
だからruntimeに直接phpのバージョンを指定してもそんなん知らないってなっていた。(?)
今回のエラーでは8.2以上にしたかったので、brefを使って8.2を指定したら解決した。
自分の予想なので間違っていたら教えてください、、

Discussion