Serverlesss(AWS Lambda)(4)ローカル環境

ローカル環境の作成

lambda 関数のローカル環境を構築

ローカル環境を作成することで lambda 関数をデプロイせずに確認することができる様になります。

プラグインの追加

serverless plugin install -n serverless-offline

ローカルで動かしてみる

serverless offline

エンドポイントが出力されるので curl により確認を行うと lambda 関数の結果を受け取ることができます。

offline コマンドが実行中に lambda 関数に変更を加えるとそれを検知し、実行可能な状態としてくれます。

dynamodb のローカル環境を構築

プラグインの追加

serverless plugin install -n serverless-dynamodb-local

serverless-offlineと同時に利用する際にはプラグインを以下の順で指定します。

plugins:
  - serverless-dynamodb-local
  - serverless-offline

serverless.ymlでプラグインに関連するデフォルト設定を行います。

custom:
  dynamodb:
    stages:
      - dev
    start:
      port: 8000
      migrate: true
      dbPath: ./dynamodb

dbPathを指定することでデータの永続化を行うことができます。

ローカルで起動

serverless dynamodb install
serverless dynamodb start

serverless offline startにより同時に起動することもできます。
※ severless offline ではないことに注意してくださいこちらのコマンドでは dynamodb を起動してくれません

Invalid directory for database creation.のエラーが発生する場合はmkdir dynamodbにより新規ディレクトリを作成してください。

ローカル用の documentClient の設定

lambda 関数でローカルの dynamodb を利用する際には対応した documentClient の設定が必要になります。

let options = {};

if (process.env.IS_OFFLINE) {
  options = {
    region: "localhost",
    endpoint: "http://localhost:8000",
  };
}

const documentClient = new AWS.DynamoDB.DocumentClient(options);

※ IS_OFFLINEserverless offlineを実行した際にデフォルトで定義される環境変数

ローカルでの dynamodb の確認方法

dynamodb-admin を利用するとデータの確認を GUI 上で行えます。

npx dynamodb-admin
Image from Gyazo

まとめ

以上で serverless framework をローカル環境で開発を行える様になりました。
ローカルでの確認はやはり必須事項なのでしっかりと使える状態にします。


参考