普段はフロントエンドエンジニアとして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も時々更新してます。
もしご登録いただけると励みになります。