4
5

More than 3 years have passed since last update.

LambdaでLaravelのコマンドを定期実行する

Last updated at Posted at 2020-10-16

Laravelで書いたバッチを実行するにあたって、EC2インスタンスだと実行タイミング以外もコストがかかるし、ECSタスクだとコンテナの管理がちょっと面倒。Lambdaで動かせればメンテも楽だし安く上がりそうなのでやってみた。

前提

brefphp を導入済の環境。

実行するのは Laravel で作成済みのコマンド、croncmd:exec。通常は php artisan croncmd:execで実行。

brefphp の導入については brefphpを使って簡単にLaravelをサーバレス環境で動かす - Qiita がとてもわかりやすいです。

serverless.yml

今回は serverles.yml の設定のみです。例として月曜から金曜まで 09:00-17:00まで5分ごとに定期実行する設定を記載します。

input 部分で実行するコマンドを、rate で実行タイミングを指定します。時間についてはGMTで設定することに注意してください。

service: test-app

provider:
    name: aws
    region: ap-northeast-1
    runtime: provided

plugins:
    - ./vendor/bref/bref

functions:
    artisan:
        handler: artisan
        timeout: 120 # in seconds
        layers:
            - ${bref:layer.php-73}
            - ${bref:layer.console}
        events:
          - schedule:
              rate: cron(0/5 0-8 ? * MON-FRI *) # GMT
              input: '"croncmd:exec"'

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