Serverless Framework で AWS Lambda のローカル開発環境を整備する手順をご紹介します。
 
npm install --save-dev serverless-offline
serverless.yml
plugins:
  - serverless-offline
functions:
  test:
    handler: handler.index
    events:
      - http:
          path: testpath
          method: get
上記のようなとき serverless offline start コマンドでプロジェクトを起動できます。
$ serverless offline start
Serverless: Starting Offline: undefined/undefined.
Serverless: Routes for crawling:
Serverless: GET /testpath
Serverless: (none)
Serverless: Offline listening on http://localhost:3000
curl http://localhost:3000/testpath
のようにアクセスすると handler.index を実行できます。
npm install --save-dev serverless-offline-scheduler
serverless.yml
plugins:
  - serverless-offline
  - serverless-offline-scheduler
functions:
  test:
    handler: handler.index
    events:
      - schedule: rate(1 minutes)
上記のようなとき events:schedule は serverless schedule コマンドで cron 形式で確認できます。
$ serverless schedule
Serverless: scheduler: scheduling test/handler with */1 * * * *
また、serverless offline start コマンドで実行できます。
$ serverless offline start
Serverless: scheduler: scheduling test/handler with */1 * * * *
Serverless: Starting Offline: undefined/undefined.
Serverless: Routes for index:
Serverless: (none)
Serverless: Offline listening on http://localhost:3000
Serverless: scheduler: running scheduled job: testnpm install --save-dev serverless-dynamodb-local
serverless.yml
plugins:
  - serverless-dynamodb-local
  - serverless-offline
  - serverless-offline-scheduler
custom:
  dynamodb:
    start:
      port: 8000
serverless-offline を利用している場合 serverless offline start コマンドで serverless-dynamodb-local も併せて起動できます。
serverless offline start
DynamoDB Local だけを起動したい場合 serverless dynamodb start コマンドで起動できます。
$ serverless dynamodb start
Dynamodb Local Started, Visit: http://localhost:8000/shell
http://localhost:8000/shell/ にアクセスすると DynamoDB JavaScript Shell をブラウザから操作できます。
以上、Serverless Framework で AWS Lambda のローカル開発環境を整備したい、現場からお送りしました。