Serverless

Serverless FrameworkでDynamoDB Localの環境を設定する。

Serverless Dynamodb-Local 起動方法

マナビト
マナビト
こんにちはマナビトです。
普段はフロントエンドエンジニアとしてJavaScript/TypeScript/Aangular/GraphQLを
メインに開発業務を行なっています。

最近、Serverless Frameworkを使用してDynamoDB Localの設定を行う機会が増えてきまして、その時に学んだDynamoDB Localの設定〜立ち上げ方法について記事にしていきたいと思います。

今回記事を執筆するにあたって、参考にした記事です。

DynamoDB Localの環境を整える

AWS上でDynamoDBを準備してローカルからアクセスする場合、基本的にクレデンシャルの管理やデプロイなど色々面倒な段階を踏まねばなりません。

そこでAWSではDynamoDBのサービスにアクセスすることなく開発することができるDynamoDB Localを準備してくれています。

パッケージのインストール

まずはserverless-dynamodb-localのパッケージをインストールします。
手順は下記ドキュメントを参照しながら進めていきます。

Serverless FrameworkからDynamoDB Localを操作できるようにする serverless-dynamodb-local プラグインをインストールします。

npm install --save serverless-dynamodb-local

serverless.ymlにserverless-dynamodb-localの設定を行います。
この記述を行うことで、npx sls dynamodb xxx コマンドを使用することが出来るようになります。

plugins:
  - serverless-dynamodb-local

DynamoDB Localをインストールします。

sls dynamodb install

DynamoDBを起動するために、serverless.ymlに設定を追加します。

custom:
  dynamodb:
    stages:
      - dev
    start:
      inMemory: true

inMemoryをtrueとすることで、データベースに格納されたデータやプログラミングコードなどを全てメインメモリ上に保持して扱うことが出来ます。(データは永続化されません。)

DynamoDB Localの起動

DynamoDB Localを下記コマンドで実行します。

npx sls dynamodb start

Dynamodb Local Started, Visit: http://localhost:8000/shell

表示されたURLにアクセスすることで、DynamoDB Local用のシェルにアクセスすることが出来ます。

migrationの実行

migrationを実行してみます。
公式ドキュメントの通り、serverless.ymlに設定を追加してDynamoDBのtableを定義します。

custom:
  dynamodb:
    start:
      inMemory: true
      migrate: true #追加

TableNameに今回のテーブル名、AttributeDefinitionsとKeySchemaでキースキーマ属性のデータ型、プライマリーキーに使用される属性を定義します。

resources:
  Resources:
    usersTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: usersTable
        AttributeDefinitions:
          - AttributeName: email
            AttributeType: S
        KeySchema:
          - AttributeName: email
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1

この状態で再度、sls dynamodb startを実行すると、user tableが作成されている事が確認出来ます。

sls dynamodb start

Dynamodb Local Started, Visit: http://localhost:8000/shell
Serverless: DynamoDB - created table usersTable

dynamodb-adminの導入

DynamoDB Localを操作する場合、「http://localhost:8000/shell」からアクセスして、データの操作、確認を行うことができますが、データを操作ためにコードを記載する必要があるなど、正直操作性があまり良くありません。

そこでGUIで簡単操作できるパッケージが存在します。

dynamodb-adminのパッケージをインストールします。

npm install -g dynamodb-admin

dynamodb-adminでDynamoDB Localを確認する場合、DynamoDB Localを先に立ち上げておく必要があります。

npx sls dynamodb start
Dynamodb Local Started, Visit: http://localhost:8000/shell
Serverless: DynamoDB - created table usersTable

あとは、dynamodb-adminを起動するだけです。

npx dynamodb-admin

DYNAMO_ENDPOINT is not defined (using default of http://localhost:8000)
dynamodb-admin listening on http://:::8001 (alternatively http://0.0.0.0:8001)

本日はここまでとなります。
最後までお読みいただきありがとうございました。

Twitterも時々更新してます。
もしご登録いただけると励みになります。

COMMENT

メールアドレスが公開されることはありません。